1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-07 17:18:11 +03:00

Getting ready for code that actually writes a registry file out.

This commit is contained in:
Richard Sharpe 0001-01-01 00:00:00 +00:00
parent 40d370bec6
commit 22e61a7e77

View File

@ -2983,7 +2983,7 @@ REGF_HDR *nt_get_reg_header(REGF *regf)
int nt_store_registry(REGF *regf)
{
REGF_HDR *reg;
int fkey;
int fkey, fd;
/*
* Get a header ... and partially fill it in ...
@ -2991,10 +2991,26 @@ int nt_store_registry(REGF *regf)
reg = nt_get_reg_header(regf);
/*
* Store the first key
* Store the first key, which will store the whole thing
*/
fkey = nt_store_reg_key(regf, regf->root);
/*
* At this point we have the registry as a series of blocks, so
* run down that series of blocks and save them ...
*/
if (!regf->outfile_name) {
fprintf(stderr, "Cannot write file without a name!\n");
return 0;
}
if ((fd = open(regf->outfile_name, O_WRONLY, 0666)) < 0) {
fprintf(stderr, "Unable to create file %s: %s\n", regf->outfile_name,
strerror(errno));
return 0;
}
return 1;
}
@ -3870,7 +3886,7 @@ int main(int argc, char *argv[])
extern int optind;
int opt, print_keys = 0;
int regf_opt = 1; /* Command name */
int commands = 0;
int commands = 0, modified = 0;
char *cmd_file_name = NULL;
char *out_file_name = NULL;
CMD_FILE *cmd_file = NULL;
@ -4001,11 +4017,9 @@ int main(int argc, char *argv[])
/* If we found it, apply the other bits, else create such a key */
if (!tmp)
if (!tmp) {
tmp = nt_add_reg_key(regf, cmd->key, True);
if (tmp) {
modified = 1;
}
while (cmd->val_count) {
@ -4015,10 +4029,12 @@ int main(int argc, char *argv[])
if (val->type == REG_TYPE_DELETE) {
reg_val = nt_delete_reg_value(tmp, val -> name);
if (reg_val) nt_delete_val_key(reg_val);
modified = 1;
}
else {
reg_val = nt_add_reg_value(tmp, val->name, val->type,
val->val);
modified = 1;
}
cmd->val_spec_list = val->next;
@ -4036,6 +4052,7 @@ int main(int argc, char *argv[])
*/
nt_delete_key_by_name(regf, cmd->key);
modified = 1;
break;
}
}
@ -4051,5 +4068,13 @@ int main(int argc, char *argv[])
nt_key_iterator(regf, regf->root, 0, "", print_key, print_sec, print_val);
}
/*
* If there was an out_file_name and the tree was modified, print it
*/
if (modified && out_file_name)
if (!nt_store_registry(regf)) {
fprintf(stdout, "Error storing registry\n");
}
return 0;
}