r829: Implement 'hive' command
authorJelmer Vernooij <jelmer@samba.org>
Sun, 23 May 2004 12:12:50 +0000 (12:12 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:53:53 +0000 (12:53 -0500)
(This used to be commit 2a87981bd0a79f0d685441d690e2f810d6ed86d0)

source4/lib/registry/common/reg_objects.c
source4/lib/registry/tools/regshell.c

index 0109a1f8feabd5663aca9fccd84e09b737ab8010..168ee946e810644fd0734f176c42bea004c41e30 100644 (file)
@@ -93,6 +93,11 @@ uint32 reg_val_type( REG_VAL *val )
 /**********************************************************************
  *********************************************************************/
 
+REG_HANDLE *reg_key_handle (REG_KEY *key) 
+{
+       return key->handle;
+}
+
 char *reg_key_name( REG_KEY *key )
 {
        return key->name;
index dbddaa5dcf77a25b938d0e73910dfb4446fa27c3..b843e9112072243748f28b90afa2fb53a507235c 100644 (file)
@@ -147,7 +147,21 @@ static REG_KEY *cmd_rmval(REG_KEY *cur, int argc, char **argv)
 
 static REG_KEY *cmd_hive(REG_KEY *cur, int argc, char **argv)
 {
-       /* FIXME */
+       int i;
+       WERROR error = WERR_OK;
+       for(i = 0; W_ERROR_IS_OK(error); i++) {
+               REG_KEY *hive;
+               error = reg_get_hive(reg_key_handle(cur), i, &hive);
+               if(!W_ERROR_IS_OK(error)) break;
+
+               if(argc == 1) {
+                       printf("%s\n", reg_key_name(hive));
+               } else if(!strcmp(reg_key_name(hive), argv[1])) {
+                       return hive;
+               } 
+               reg_key_free(hive);
+       }
+       return NULL;
 }
 
 static REG_KEY *cmd_exit(REG_KEY *cur, int argc, char **argv)