diff options
author | Richard Sharpe <sharpe@samba.org> | 2003-04-20 21:43:07 +0000 |
---|---|---|
committer | Richard Sharpe <sharpe@samba.org> | 2003-04-20 21:43:07 +0000 |
commit | 6f499782dcf6bd621f5e076046bffdc714fa01f9 (patch) | |
tree | 4d58181e398b0eacfc141cf43037048fce14b6e9 | |
parent | 963eff4b181cdd038e019c5a2a2bd0ab9dea222f (diff) | |
download | samba-6f499782dcf6bd621f5e076046bffdc714fa01f9.tar.gz samba-6f499782dcf6bd621f5e076046bffdc714fa01f9.tar.bz2 samba-6f499782dcf6bd621f5e076046bffdc714fa01f9.zip |
Well, we can now add keys and values and delete keys and values ...
Lots more to do, like handling regular expressions for keys, and input of
the security descriptors, etc. However, I now have to work on writing the
in-memory tree out to a file in a format that Windows can understand.
(This used to be commit 562b36510c704eba84b036aacdb1f984339afafc)
-rw-r--r-- | source3/utils/editreg.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/source3/utils/editreg.c b/source3/utils/editreg.c index 5e79df1a14..b35e278ab0 100644 --- a/source3/utils/editreg.c +++ b/source3/utils/editreg.c @@ -981,10 +981,10 @@ void *str_to_val(int type, char *val, int *len) if (!dwordp) return NULL; /* Allow for ddddd and 0xhhhhh and 0ooooo */ if (strncmp(val, "0x", 2) == 0 || strncmp(val, "0X", 2) == 0) { - sscanf(val, "0[xX]%X", dwordp); + sscanf(&val[2], "%X", dwordp); } else if (*val == '0') { - sscanf(val, "0%o", dwordp); + sscanf(&val[1], "%o", dwordp); } else { sscanf(val, "%d", dwordp); @@ -1018,7 +1018,9 @@ VAL_KEY *nt_add_reg_value(REG_KEY *key, char *name, int type, char *value) assert(type != REG_TYPE_DELETE); /* We never process deletes here */ for (i = 0; i < key->values->val_count; i++) { - if (strcmp(name, key->values->vals[i]->name) == 0){ /* Change the value */ + if ((!key->values->vals[i]->has_name && !*name) || + (key->values->vals[i]->has_name && + strcmp(name, key->values->vals[i]->name) == 0)){ /* Change the value */ free(key->values->vals[i]->data_blk); key->values->vals[i]->data_blk = str_to_val(type, value, & key->values->vals[i]->data_len); @@ -3272,7 +3274,7 @@ int main(int argc, char *argv[]) if (reg_val) nt_delete_val_key(reg_val); } else { - reg_val = nt_add_reg_value(tmp, reg_val->name, val->type, + reg_val = nt_add_reg_value(tmp, val->name, val->type, val->val); } |