Samba 3: added Samba 3.0.24 sources
[tomato.git] / release / src / router / samba3 / examples / libmsrpc / test / reg / regdelete.c
blob50b08ba468c3623ce7c201b81a3a782fbd1bd839
1 /*tests deleting a key or value*/
3 #include "libmsrpc.h"
4 #include "test_util.h"
6 int main(int argc, char **argv) {
7 CacServerHandle *hnd = NULL;
8 TALLOC_CTX *mem_ctx = NULL;
10 fstring tmp;
11 char input = 'v';
13 mem_ctx = talloc_init("regdelete");
15 hnd = cac_NewServerHandle(True);
17 cac_SetAuthDataFn(hnd, cactest_GetAuthDataFn);
19 cac_parse_cmd_line(argc, argv, hnd);
21 if(!cac_Connect(hnd, NULL)) {
22 fprintf(stderr, "Could not connect to server %s. Error: %s\n", hnd->server, nt_errstr(hnd->status));
23 exit(-1);
26 printf("enter key to open: \n");
27 cactest_readline(stdin, tmp);
29 struct RegOpenKey rok;
30 ZERO_STRUCT(rok);
32 rok.in.name = talloc_strdup(mem_ctx, tmp);
33 rok.in.access = REG_KEY_ALL;
35 if(!cac_RegOpenKey(hnd, mem_ctx, &rok)) {
36 fprintf(stderr, "Could not open key %s. Error %s\n", rok.in.name, nt_errstr(hnd->status));
37 exit(-1);
40 printf("getting version (just for testing\n");
42 struct RegGetVersion rgv;
43 ZERO_STRUCT(rgv);
45 rgv.in.key = rok.out.key;
47 if(!cac_RegGetVersion(hnd, mem_ctx, &rgv))
48 fprintf(stderr, "Could not get version. Error: %s\n", nt_errstr(hnd->status));
49 else
50 printf("Version: %d\n", rgv.out.version);
53 while(input == 'v' || input == 'k') {
54 printf("Delete [v]alue [k]ey or [q]uit: ");
55 scanf("%c", &input);
57 switch(input) {
58 case 'v':
59 printf("Value to delete: ");
60 cactest_readline(stdin, tmp);
62 struct RegDeleteValue rdv;
63 ZERO_STRUCT(rdv);
65 rdv.in.parent_key = rok.out.key;
66 rdv.in.name = talloc_strdup(mem_ctx, tmp);
68 if(!cac_RegDeleteValue(hnd, mem_ctx, &rdv))
69 fprintf(stderr, "Could not delete value %s. Error: %s\n", rdv.in.name, nt_errstr(hnd->status));
71 break;
72 case 'k':
73 printf("Key to delete: ");
74 cactest_readline(stdin, tmp);
76 struct RegDeleteKey rdk;
77 ZERO_STRUCT(rdk);
79 rdk.in.parent_key = rok.out.key;
80 rdk.in.name = talloc_strdup(mem_ctx, tmp);
82 printf("delete recursively? [y/n]: ");
83 cactest_readline(stdin, tmp);
85 rdk.in.recursive = (tmp[0] == 'y') ? True : False;
87 if(!cac_RegDeleteKey(hnd, mem_ctx, &rdk))
88 fprintf(stderr, "Could not delete key %s. Error %s\n", rdk.in.name, nt_errstr(hnd->status));
90 break;
93 cac_RegClose(hnd, mem_ctx, rok.out.key);
95 cac_FreeHandle(hnd);
97 talloc_destroy(mem_ctx);
99 return 0;