mirror of
https://github.com/reactos/reactos.git
synced 2024-07-04 11:44:33 +00:00
Make mkhive support also symbolic flag names (like TYPE_DWORD) instead of only numeric.
svn path=/trunk/; revision=21223
This commit is contained in:
parent
2ce816dbb7
commit
8f1b7df719
|
@ -52,7 +52,7 @@
|
||||||
|
|
||||||
void usage (void)
|
void usage (void)
|
||||||
{
|
{
|
||||||
printf ("Usage: mkhive <srcdir> <dstdir> <addinf>\n\n");
|
printf ("Usage: mkhive <srcdir> <dstdir> [addinf]\n\n");
|
||||||
printf (" srcdir - inf files are read from this directory\n");
|
printf (" srcdir - inf files are read from this directory\n");
|
||||||
printf (" dstdir - binary hive files are created in this directory\n");
|
printf (" dstdir - binary hive files are created in this directory\n");
|
||||||
printf (" addinf - additional inf files with full path\n");
|
printf (" addinf - additional inf files with full path\n");
|
||||||
|
|
|
@ -358,6 +358,37 @@ do_reg_operation(HKEY KeyHandle,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ULONG get_flags(PINFCONTEXT Context)
|
||||||
|
{
|
||||||
|
CHAR Buffer[MAX_INF_STRING_LENGTH], *p;
|
||||||
|
ULONG Ret = 0;
|
||||||
|
|
||||||
|
if (!InfHostGetStringField (Context, 4, Buffer, MAX_INF_STRING_LENGTH, NULL))
|
||||||
|
{
|
||||||
|
p = strtok(Buffer, " |");
|
||||||
|
while(p)
|
||||||
|
{
|
||||||
|
if(isdigit(*p))Ret|=strtol(p, NULL, 0);
|
||||||
|
else if(strcmp(p, "BINVALUETYPE")==0) Ret|= FLG_ADDREG_BINVALUETYPE;
|
||||||
|
else if(strcmp(p, "NOCLOBBER")==0) Ret|= FLG_ADDREG_NOCLOBBER;
|
||||||
|
else if(strcmp(p, "DELVAL")==0) Ret|= FLG_ADDREG_DELVAL;
|
||||||
|
else if(strcmp(p, "APPEND")==0) Ret|= FLG_ADDREG_APPEND;
|
||||||
|
else if(strcmp(p, "KEYONLY")==0) Ret|= FLG_ADDREG_KEYONLY;
|
||||||
|
else if(strcmp(p, "OVERWRITEONLY")==0) Ret|= FLG_ADDREG_OVERWRITEONLY;
|
||||||
|
else if(strcmp(p, "TYPE_SZ")==0) Ret|= FLG_ADDREG_TYPE_SZ;
|
||||||
|
else if(strcmp(p, "TYPE_MULTI_SZ")==0) Ret|= FLG_ADDREG_TYPE_MULTI_SZ;
|
||||||
|
else if(strcmp(p, "TYPE_EXPAND_SZ")==0) Ret|= FLG_ADDREG_TYPE_EXPAND_SZ;
|
||||||
|
else if(strcmp(p, "TYPE_BINARY")==0) Ret|= FLG_ADDREG_TYPE_BINARY;
|
||||||
|
else if(strcmp(p, "TYPE_DWORD")==0) Ret|= FLG_ADDREG_TYPE_DWORD;
|
||||||
|
else if(strcmp(p, "TYPE_NONE")==0) Ret|= FLG_ADDREG_TYPE_NONE;
|
||||||
|
else if(strcmp(p, "TYPE_MASK")==0) Ret|= FLG_ADDREG_TYPE_MASK;
|
||||||
|
p = strtok(NULL, " |");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* registry_callback
|
* registry_callback
|
||||||
|
@ -400,12 +431,7 @@ registry_callback (HINF hInf, PCHAR Section, BOOL Delete)
|
||||||
{
|
{
|
||||||
Flags = FLG_ADDREG_DELVAL;
|
Flags = FLG_ADDREG_DELVAL;
|
||||||
}
|
}
|
||||||
else
|
else Flags = get_flags(Context);
|
||||||
{
|
|
||||||
/* get flags */
|
|
||||||
if (InfHostGetIntField (Context, 4, (PLONG)&Flags) != 0)
|
|
||||||
Flags = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
DPRINT("Flags: %lx\n", Flags);
|
DPRINT("Flags: %lx\n", Flags);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue