mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 13:26:17 +00:00
Added code to import REG_MULTI_SZ values.
svn path=/trunk/; revision=2873
This commit is contained in:
parent
23f679e571
commit
4e09f73d4d
1 changed files with 78 additions and 13 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: import.c,v 1.4 2001/11/25 18:28:00 ekohl Exp $
|
/* $Id: import.c,v 1.5 2002/04/27 19:00:14 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -64,7 +64,7 @@ computeKeyNameSize (PCHAR regChunk)
|
||||||
return copyCount;
|
return copyCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL
|
static BOOLEAN
|
||||||
allocateKeyName (PUNICODE_STRING newKeyName, int newKeySize)
|
allocateKeyName (PUNICODE_STRING newKeyName, int newKeySize)
|
||||||
{
|
{
|
||||||
if (newKeyName->MaximumLength < (newKeySize + 1) * sizeof (WCHAR))
|
if (newKeyName->MaximumLength < (newKeySize + 1) * sizeof (WCHAR))
|
||||||
|
@ -226,6 +226,14 @@ getKeyValueTypeFromChunk (PCHAR regChunk, PCHAR dataFormat, int *keyValueType)
|
||||||
if (*regChunk == ':')
|
if (*regChunk == ':')
|
||||||
regChunk++;
|
regChunk++;
|
||||||
}
|
}
|
||||||
|
else if (strncmp (regChunk, "multi", 5) == 0)
|
||||||
|
{
|
||||||
|
strcpy (dataFormat, "multi");
|
||||||
|
*keyValueType = REG_MULTI_SZ;
|
||||||
|
regChunk += 5;
|
||||||
|
if (*regChunk == ':')
|
||||||
|
regChunk++;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
@ -277,6 +285,36 @@ computeKeyValueDataSize (PCHAR regChunk, PCHAR dataFormat)
|
||||||
regChunk++;
|
regChunk++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (strcmp (dataFormat, "multi") == 0)
|
||||||
|
{
|
||||||
|
while (*regChunk == '\"')
|
||||||
|
{
|
||||||
|
regChunk++;
|
||||||
|
while (*regChunk != 0 && *regChunk != '\"')
|
||||||
|
{
|
||||||
|
dataSize++;
|
||||||
|
dataSize++;
|
||||||
|
regChunk++;
|
||||||
|
}
|
||||||
|
regChunk++;
|
||||||
|
dataSize++;
|
||||||
|
dataSize++;
|
||||||
|
if (*regChunk == ',')
|
||||||
|
{
|
||||||
|
regChunk++;
|
||||||
|
regChunk = skipWhitespaceInChunk (regChunk);
|
||||||
|
if (*regChunk == '\\')
|
||||||
|
{
|
||||||
|
regChunk++;
|
||||||
|
regChunk = skipWhitespaceInChunk (regChunk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
dataSize++;
|
||||||
|
dataSize++;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
@ -285,7 +323,7 @@ computeKeyValueDataSize (PCHAR regChunk, PCHAR dataFormat)
|
||||||
return dataSize;
|
return dataSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL
|
static BOOLEAN
|
||||||
allocateDataBuffer (PVOID * data, int * dataBufferSize, int dataSize)
|
allocateDataBuffer (PVOID * data, int * dataBufferSize, int dataSize)
|
||||||
{
|
{
|
||||||
if (*dataBufferSize < dataSize)
|
if (*dataBufferSize < dataSize)
|
||||||
|
@ -352,6 +390,33 @@ getKeyValueDataFromChunk (PCHAR regChunk, PCHAR dataFormat, PCHAR data)
|
||||||
}
|
}
|
||||||
memcpy(data, &ulValue, sizeof(ULONG));
|
memcpy(data, &ulValue, sizeof(ULONG));
|
||||||
}
|
}
|
||||||
|
else if (strcmp (dataFormat, "multi") == 0)
|
||||||
|
{
|
||||||
|
ptr = (PWCHAR)data;
|
||||||
|
while (*regChunk == '\"')
|
||||||
|
{
|
||||||
|
regChunk++;
|
||||||
|
while (*regChunk != 0 && *regChunk != '\"')
|
||||||
|
{
|
||||||
|
*ptr++ = (WCHAR)*regChunk++;
|
||||||
|
}
|
||||||
|
regChunk++;
|
||||||
|
*ptr++ = 0;
|
||||||
|
if (*regChunk == ',')
|
||||||
|
{
|
||||||
|
regChunk++;
|
||||||
|
regChunk = skipWhitespaceInChunk (regChunk);
|
||||||
|
if (*regChunk == '\\')
|
||||||
|
{
|
||||||
|
regChunk++;
|
||||||
|
regChunk = skipWhitespaceInChunk (regChunk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*ptr = 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
@ -360,7 +425,7 @@ getKeyValueDataFromChunk (PCHAR regChunk, PCHAR dataFormat, PCHAR data)
|
||||||
return *regChunk ? regChunk : 0;
|
return *regChunk ? regChunk : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL
|
static BOOLEAN
|
||||||
setKeyValue (HANDLE currentKey,
|
setKeyValue (HANDLE currentKey,
|
||||||
PUNICODE_STRING newValueName,
|
PUNICODE_STRING newValueName,
|
||||||
ULONG keyValueType,
|
ULONG keyValueType,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue