mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
488 lines
14 KiB
488 lines
14 KiB
/*++
|
|
|
|
Copyright (c) 1990 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
tprof.c
|
|
|
|
Abstract:
|
|
|
|
Win32 Base API Test Program for Profile File Management calls
|
|
|
|
Author:
|
|
|
|
Steve Wood (stevewo) 26-Oct-1990
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#define WIN32_CONSOLE_APP
|
|
#include <windows.h>
|
|
|
|
|
|
void
|
|
DumpProfile(
|
|
LPTSTR ProfileFileName
|
|
)
|
|
{
|
|
LPTSTR Sections, Section;
|
|
LPTSTR Keywords, Keyword;
|
|
LPTSTR KeyValue;
|
|
|
|
Sections = LocalAlloc( 0, 4096 * sizeof( *Sections ) );
|
|
Keywords = LocalAlloc( 0, 4096 * sizeof( *Keywords ) );
|
|
KeyValue = LocalAlloc( 0, 1024 * sizeof( *KeyValue ) );
|
|
|
|
#ifdef UNICODE
|
|
printf( "\nDump of %ws\n",
|
|
#else
|
|
printf( "\nDump of %s\n",
|
|
#endif
|
|
ProfileFileName ? ProfileFileName : TEXT("win.ini")
|
|
);
|
|
*Sections = TEXT('\0');
|
|
if (!GetPrivateProfileString( NULL, NULL, NULL,
|
|
Sections, 4096 * sizeof( *Sections ),
|
|
ProfileFileName
|
|
)
|
|
) {
|
|
printf( "*** Unable to read - rc == %d\n", GetLastError() );
|
|
}
|
|
|
|
Section = Sections;
|
|
while (*Section) {
|
|
#ifdef UNICODE
|
|
printf( "[%ws]\n",
|
|
#else
|
|
printf( "[%s]\n",
|
|
#endif
|
|
Section
|
|
);
|
|
*Keywords = TEXT('\0');
|
|
GetPrivateProfileString( Section, NULL, NULL,
|
|
Keywords, 4096 * sizeof( *Keywords ),
|
|
ProfileFileName
|
|
);
|
|
Keyword = Keywords;
|
|
while (*Keyword) {
|
|
GetPrivateProfileString( Section, Keyword, NULL,
|
|
KeyValue, 1024 * sizeof( *KeyValue ),
|
|
ProfileFileName
|
|
);
|
|
#ifdef UNICODE
|
|
printf( " %ws=%ws\n",
|
|
#else
|
|
printf( " %s=%s\n",
|
|
#endif
|
|
Keyword, KeyValue
|
|
);
|
|
|
|
while (*Keyword++) {
|
|
}
|
|
}
|
|
|
|
while (*Section++) {
|
|
}
|
|
}
|
|
|
|
LocalFree( Sections );
|
|
LocalFree( Keywords );
|
|
LocalFree( KeyValue );
|
|
|
|
return;
|
|
}
|
|
|
|
void
|
|
DumpSection(
|
|
LPTSTR ProfileFileName,
|
|
LPTSTR SectionName
|
|
)
|
|
{
|
|
LPTSTR SectionValue;
|
|
LPTSTR s;
|
|
|
|
SectionValue = LocalAlloc( 0, 4096 * sizeof( TCHAR ) );
|
|
|
|
#ifdef UNICODE
|
|
printf( "\nDump of Section %ws in %ws\n",
|
|
#else
|
|
printf( "\nDump of Section %s in %s\n",
|
|
#endif
|
|
SectionName,
|
|
ProfileFileName ? ProfileFileName : TEXT("win.ini")
|
|
);
|
|
|
|
*SectionValue = TEXT('\0');
|
|
GetPrivateProfileSection( SectionName,
|
|
SectionValue, 4096 * sizeof( TCHAR ),
|
|
ProfileFileName
|
|
);
|
|
#ifdef UNICODE
|
|
printf( "[%ws]\n",
|
|
#else
|
|
printf( "[%s]\n",
|
|
#endif
|
|
SectionName
|
|
);
|
|
s = SectionValue;
|
|
while (*s) {
|
|
#ifdef UNICODE
|
|
printf( " %ws\n", s );
|
|
#else
|
|
printf( " %s\n", s );
|
|
#endif
|
|
|
|
while (*s++) {
|
|
}
|
|
}
|
|
|
|
LocalFree( SectionValue );
|
|
return;
|
|
}
|
|
|
|
#define MAX_SECTIONS 32
|
|
#define MAX_KEYWORDS 32
|
|
|
|
DWORD
|
|
main(
|
|
int argc,
|
|
char *argv[],
|
|
char *envp[]
|
|
)
|
|
{
|
|
ULONG n;
|
|
int SectionNumber, KeyNumber;
|
|
LPTSTR SectionValue, KeyValue, Keyword;
|
|
TCHAR SectionName[ 32 ], KeyName[ 32 ], KeyValueBuffer[ 32 ], Buffer[ 32 ];
|
|
FILE *fh;
|
|
|
|
printf( "TPROF: Entering Test Program\n" );
|
|
|
|
SectionValue = LocalAlloc( 0, 4096 * sizeof( TCHAR ) );
|
|
KeyValue = LocalAlloc( 0, 1024 * sizeof( TCHAR ) );
|
|
|
|
#if 0
|
|
for (SectionNumber=0; SectionNumber<MAX_SECTIONS; SectionNumber++) {
|
|
sprintf( SectionName, "Section%02u", SectionNumber );
|
|
for (KeyNumber=0; KeyNumber<MAX_KEYWORDS; KeyNumber++) {
|
|
sprintf( KeyName, "KeyName%02u", KeyNumber );
|
|
sprintf( KeyValueBuffer, "KeyValue%02u_%02u", SectionNumber, KeyNumber );
|
|
if (!WritePrivateProfileString( SectionName, KeyName, KeyValueBuffer, "foo.ini" )) {
|
|
fprintf( stderr, "WriteProfileString( test.ini, [%s].%s=%s ) errno == %u\n",
|
|
SectionName, KeyName, KeyValueBuffer, GetLastError()
|
|
);
|
|
}
|
|
|
|
GetPrivateProfileString( SectionName, KeyName, "bogus", Buffer, sizeof( Buffer ), "foo.ini" );
|
|
|
|
if (strcmp( Buffer, KeyValueBuffer )) {
|
|
fprintf( stderr, "Write: %s != %s, errno == %u\n", KeyValueBuffer, Buffer, GetLastError() );
|
|
}
|
|
}
|
|
}
|
|
|
|
for (SectionNumber=0; SectionNumber<MAX_SECTIONS; SectionNumber++) {
|
|
sprintf( SectionName, "Section%02u", SectionNumber );
|
|
for (KeyNumber=0; KeyNumber<MAX_KEYWORDS; KeyNumber++) {
|
|
sprintf( KeyName, "KeyName%02u", KeyNumber );
|
|
sprintf( KeyValueBuffer, "KeyValue%02u_%02u", SectionNumber, KeyNumber );
|
|
|
|
GetPrivateProfileString( SectionName, KeyName, "bogus", Buffer, sizeof( Buffer ), "foo.ini" );
|
|
|
|
if (strcmp( Buffer, KeyValueBuffer )) {
|
|
fprintf( stderr, "Read: %s != %s, errno == %u\n", KeyValueBuffer, Buffer, GetLastError() );
|
|
}
|
|
}
|
|
}
|
|
|
|
for (SectionNumber=0; SectionNumber<MAX_SECTIONS; SectionNumber++) {
|
|
sprintf( SectionName, "Section%02u", SectionNumber );
|
|
for (KeyNumber=0; KeyNumber<MAX_KEYWORDS; KeyNumber++) {
|
|
sprintf( KeyName, "KeyName%02u", KeyNumber );
|
|
sprintf( KeyValueBuffer, "KeyValue%02u_%02u", SectionNumber, KeyNumber );
|
|
|
|
if (!WritePrivateProfileString( SectionName, KeyName, NULL, "foo.ini" )) {
|
|
fprintf( stderr, "WriteProfileString( test.ini, [%s].%s (delete) ) errno == %u\n",
|
|
SectionName, KeyName, GetLastError()
|
|
);
|
|
}
|
|
|
|
GetPrivateProfileString( SectionName, KeyName, "bogus", Buffer, sizeof( Buffer ), "foo.ini" );
|
|
|
|
if (strcmp( Buffer, "bogus" )) {
|
|
fprintf( stderr, "Delete: bogus != %s, errno == %u\n", Buffer, GetLastError() );
|
|
}
|
|
}
|
|
}
|
|
|
|
exit( 0 );
|
|
#endif
|
|
|
|
WriteProfileString( TEXT("TESTINI"), TEXT("Key1"), TEXT("100abc") );
|
|
n = GetProfileString( TEXT("ports"), NULL, TEXT(""), SectionValue, 4096 * sizeof( TCHAR ) );
|
|
Keyword = SectionValue;
|
|
printf( "Keywords in win.ini[ports]\n" );
|
|
while (*Keyword) {
|
|
#ifdef UNICODE
|
|
printf( " %ws\n", Keyword );
|
|
#else
|
|
printf( " %s\n", Keyword );
|
|
#endif
|
|
while (*Keyword++) {
|
|
}
|
|
}
|
|
|
|
n = GetProfileString( TEXT("ports"), NULL, NULL, SectionValue, 4096 );
|
|
Keyword = SectionValue;
|
|
printf( "Keywords in win.ini[ports]\n" );
|
|
while (*Keyword) {
|
|
#ifdef UNICODE
|
|
printf( " %ws\n", Keyword );
|
|
#else
|
|
printf( " %s\n", Keyword );
|
|
#endif
|
|
while (*Keyword++) {
|
|
}
|
|
}
|
|
|
|
DeleteFile( TEXT("\\nt\\windows\\test.ini") );
|
|
fh = fopen( "\\nt\\windows\\test.ini", "w" );
|
|
fclose( fh );
|
|
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileString( TEXT("StrApp"), TEXT("StrKey"), TEXT("StrVal"), TEXT("test.ini"));
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
|
|
DeleteFile( TEXT("test.ini") );
|
|
fh = fopen( "\\nt\\test.ini", "w" );
|
|
fprintf( fh, "[IncompleteSectionWithoutTrailingBracket\n\n" );
|
|
fprintf( fh, "[StrApp]\n" );
|
|
fprintf( fh, "StrKey=xxxxxx\n" );
|
|
fclose( fh );
|
|
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
if (!WritePrivateProfileString( TEXT("StrApp"), TEXT("StrKey"), TEXT("StrVal"), TEXT("test.ini"))) {
|
|
printf( "*** Write failed - rc == %d\n", GetLastError() );
|
|
}
|
|
else {
|
|
DumpProfile( TEXT("test.ini") );
|
|
}
|
|
|
|
DeleteFile( "test.ini" );
|
|
|
|
fh = fopen( "\\nt\\windows\\test.ini", "w" );
|
|
fprintf( fh, "[a]\n" );
|
|
fprintf( fh, "a1=b1\n" );
|
|
fprintf( fh, "[b]\n" );
|
|
fprintf( fh, "a2=b2\n" );
|
|
fclose( fh );
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileSection( TEXT("Section2"),
|
|
TEXT("Keyword21=Value21\0Keyword22=Value22\0Keyword23=Value23\0Keyword24=\0"),
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
n = GetPrivateProfileString( TEXT("a"), TEXT("\0"), TEXT("Default"),
|
|
KeyValue, 1024 * sizeof( TCHAR ),
|
|
TEXT("test.ini")
|
|
);
|
|
#ifdef UNICODE
|
|
printf( "GetPrivateProfileString( a, \\0, Default ) == %ld '%ws'\n", n, KeyValue );
|
|
#else
|
|
printf( "GetPrivateProfileString( a, \\0, Default ) == %ld '%s'\n", n, KeyValue );
|
|
#endif
|
|
|
|
n = GetPrivateProfileInt( TEXT("a"), TEXT("\0"), 123, TEXT("test.ini") );
|
|
printf( "GetPrivateProfileString( a, \\0, 123 ) == %ld\n", n );
|
|
|
|
WritePrivateProfileString( TEXT("a"), NULL, NULL, TEXT("test.ini") );
|
|
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileString( TEXT("TESTINI"), TEXT("Key1"), TEXT("100abc"), TEXT("test.ini") );
|
|
|
|
WritePrivateProfileString( TEXT(" TESTINI "),
|
|
TEXT(" Key1 "),
|
|
TEXT(" Val1 "),
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
printf( "GetProfileInt( 123 ) == %ld\n",
|
|
GetProfileInt( TEXT("AAAAA"), TEXT("XXXXX"), 123 )
|
|
);
|
|
|
|
printf( "GetProfileInt( -123 ) == %ld\n",
|
|
GetProfileInt( TEXT("AAAAA"), TEXT("XXXXX"), -123 )
|
|
);
|
|
|
|
WritePrivateProfileString( TEXT("TESTINI"),
|
|
TEXT("Key1"),
|
|
NULL,
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileString( TEXT("TESTINI"),
|
|
TEXT("Key2"),
|
|
TEXT("Val2"),
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileString( TEXT("TESTINI"),
|
|
TEXT("Key2"),
|
|
TEXT(""),
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileString( TEXT("TESTINI"),
|
|
TEXT("Key2"),
|
|
NULL,
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileString( TEXT("TESTINI"),
|
|
TEXT("Key3"),
|
|
TEXT("Val3"),
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileString( TEXT("TESTINI"),
|
|
NULL,
|
|
TEXT("Something"),
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileString( TEXT("Section1"),
|
|
TEXT("Keyword11"),
|
|
TEXT("Value11"),
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileSection( TEXT("Section2"),
|
|
TEXT("Keyword21=Value21\0Keyword22=Value22\0Keyword23=Value23\0Keyword24=\0"),
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
WritePrivateProfileString( TEXT("Section1"),
|
|
TEXT("Keyword12"),
|
|
TEXT("Value12"),
|
|
TEXT("test.ini")
|
|
);
|
|
DumpProfile( TEXT("test.ini") );
|
|
|
|
n = GetPrivateProfileSection( TEXT("Section1"),
|
|
SectionValue, 4096 * sizeof( TCHAR ),
|
|
TEXT("test.ini")
|
|
);
|
|
#if 0
|
|
if (n != 36 ||
|
|
strcmp( SectionValue, "Keyword11=Value11" ) ||
|
|
strcmp( SectionValue+18, "Keyword12=Value12" )
|
|
) {
|
|
printf( "*** test.ini[ Section1 ] is incorrect (Length == %d)\n", n );
|
|
DumpSection( "test.ini", "Section1" );
|
|
}
|
|
|
|
n = GetPrivateProfileString( "Section2", "Keyword25", "Default25",
|
|
KeyValue, 1024,
|
|
"test.ini"
|
|
);
|
|
if (n != 9 || strcmp( KeyValue, "Default25" )) {
|
|
printf( "*** test.ini[ Section2 ].Keyword25 is incorrect (Length == %d)\n", n );
|
|
DumpSection( "test.ini", "Section2" );
|
|
}
|
|
|
|
n = GetPrivateProfileString( "Section2", "Keyword24", NULL,
|
|
KeyValue, 1024,
|
|
"test.ini"
|
|
);
|
|
if (n || strcmp( KeyValue, "" )) {
|
|
printf( "*** test.ini[ Section2 ].Keyword24 is incorrect (Length == %d)\n", n );
|
|
DumpSection( "test.ini", "Section2" );
|
|
}
|
|
|
|
n = GetPrivateProfileString( "Section2", "Keyword23", NULL,
|
|
KeyValue, 1024,
|
|
"test.ini"
|
|
);
|
|
if (n != 7 || strcmp( KeyValue, "Value23" )) {
|
|
printf( "*** test.ini[ Section2 ].Keyword23 is incorrect (Length == %d)\n", n );
|
|
DumpSection( "test.ini", "Section2" );
|
|
}
|
|
|
|
n = GetPrivateProfileString( "Section2", "Keyword22", NULL,
|
|
KeyValue, 1024,
|
|
"test.ini"
|
|
);
|
|
if (n != 7 || strcmp( KeyValue, "Value22" )) {
|
|
printf( "*** test.ini[ Section2 ].Keyword22 is incorrect (Length == %d)\n", n );
|
|
DumpSection( "test.ini", "Section2" );
|
|
}
|
|
|
|
n = GetPrivateProfileString( "Section2", "Keyword21", NULL,
|
|
KeyValue, 1024,
|
|
"test.ini"
|
|
);
|
|
if (n != 7 || strcmp( KeyValue, "Value21" )) {
|
|
printf( "*** test.ini[ Section2 ].Keyword21 is incorrect (Length == %d)\n", n );
|
|
DumpSection( "test.ini", "Section2" );
|
|
}
|
|
|
|
DumpProfile( "test.ini" );
|
|
|
|
printf( "Deleting [Section1]Keyword11\n" );
|
|
WritePrivateProfileString( "Section1",
|
|
"Keyword11",
|
|
NULL,
|
|
"test.ini"
|
|
);
|
|
DumpProfile( "test.ini" );
|
|
|
|
printf( "Deleting all keywords in [Section1]\n" );
|
|
WritePrivateProfileSection( "Section1",
|
|
"",
|
|
"test.ini"
|
|
);
|
|
DumpProfile( "test.ini" );
|
|
|
|
printf( "Deleting [Section1]\n" );
|
|
WritePrivateProfileString( "Section1",
|
|
NULL,
|
|
NULL,
|
|
"test.ini"
|
|
);
|
|
DumpProfile( "test.ini" );
|
|
|
|
printf( "Setting [Section2]Keyword21=\n" );
|
|
WritePrivateProfileString( "Section2",
|
|
"Keyword21",
|
|
"",
|
|
"test.ini"
|
|
);
|
|
#endif
|
|
DumpProfile( TEXT("test.ini") );
|
|
DumpProfile( NULL );
|
|
DumpSection( NULL, TEXT("Extensions") );
|
|
|
|
printf( "TPROF: Exiting Test Program\n" );
|
|
|
|
return 0;
|
|
}
|