diff options
Diffstat (limited to 'examples/libmsrpc/test/reg/regdelete.c')
-rw-r--r-- | examples/libmsrpc/test/reg/regdelete.c | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/examples/libmsrpc/test/reg/regdelete.c b/examples/libmsrpc/test/reg/regdelete.c new file mode 100644 index 0000000000..50b08ba468 --- /dev/null +++ b/examples/libmsrpc/test/reg/regdelete.c @@ -0,0 +1,102 @@ +/*tests deleting a key or value*/ + +#include "libmsrpc.h" +#include "test_util.h" + +int main(int argc, char **argv) { + CacServerHandle *hnd = NULL; + TALLOC_CTX *mem_ctx = NULL; + + fstring tmp; + char input = 'v'; + + mem_ctx = talloc_init("regdelete"); + + hnd = cac_NewServerHandle(True); + + cac_SetAuthDataFn(hnd, cactest_GetAuthDataFn); + + cac_parse_cmd_line(argc, argv, hnd); + + if(!cac_Connect(hnd, NULL)) { + fprintf(stderr, "Could not connect to server %s. Error: %s\n", hnd->server, nt_errstr(hnd->status)); + exit(-1); + } + + printf("enter key to open: \n"); + cactest_readline(stdin, tmp); + + struct RegOpenKey rok; + ZERO_STRUCT(rok); + + rok.in.name = talloc_strdup(mem_ctx, tmp); + rok.in.access = REG_KEY_ALL; + + if(!cac_RegOpenKey(hnd, mem_ctx, &rok)) { + fprintf(stderr, "Could not open key %s. Error %s\n", rok.in.name, nt_errstr(hnd->status)); + exit(-1); + } + + printf("getting version (just for testing\n"); + + struct RegGetVersion rgv; + ZERO_STRUCT(rgv); + + rgv.in.key = rok.out.key; + + if(!cac_RegGetVersion(hnd, mem_ctx, &rgv)) + fprintf(stderr, "Could not get version. Error: %s\n", nt_errstr(hnd->status)); + else + printf("Version: %d\n", rgv.out.version); + + + while(input == 'v' || input == 'k') { + printf("Delete [v]alue [k]ey or [q]uit: "); + scanf("%c", &input); + + switch(input) { + case 'v': + printf("Value to delete: "); + cactest_readline(stdin, tmp); + + struct RegDeleteValue rdv; + ZERO_STRUCT(rdv); + + rdv.in.parent_key = rok.out.key; + rdv.in.name = talloc_strdup(mem_ctx, tmp); + + if(!cac_RegDeleteValue(hnd, mem_ctx, &rdv)) + fprintf(stderr, "Could not delete value %s. Error: %s\n", rdv.in.name, nt_errstr(hnd->status)); + + break; + case 'k': + printf("Key to delete: "); + cactest_readline(stdin, tmp); + + struct RegDeleteKey rdk; + ZERO_STRUCT(rdk); + + rdk.in.parent_key = rok.out.key; + rdk.in.name = talloc_strdup(mem_ctx, tmp); + + printf("delete recursively? [y/n]: "); + cactest_readline(stdin, tmp); + + rdk.in.recursive = (tmp[0] == 'y') ? True : False; + + if(!cac_RegDeleteKey(hnd, mem_ctx, &rdk)) + fprintf(stderr, "Could not delete key %s. Error %s\n", rdk.in.name, nt_errstr(hnd->status)); + + break; + } + } + cac_RegClose(hnd, mem_ctx, rok.out.key); + + cac_FreeHandle(hnd); + + talloc_destroy(mem_ctx); + + return 0; +} + + |