mirror of https://github.com/lianthony/NT4.0
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.
174 lines
7.9 KiB
174 lines
7.9 KiB
/*++
|
|
|
|
Copyright (c) 1989 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
os2null.c
|
|
|
|
Abstract:
|
|
|
|
This is a test OS/2 application to test the LPC overhead for calling
|
|
the OS/2 Emulation Subsystem
|
|
|
|
Author:
|
|
|
|
Steve Wood (stevewo) 22-Aug-1989
|
|
|
|
Environment:
|
|
|
|
User Mode Only
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#define OS2_API32
|
|
#define INCL_OS2V20_MEMORY
|
|
#define INCL_OS2V20_QUEUES
|
|
#define INCL_OS2V20_SEMAPHORES
|
|
#define INCL_OS2V20_ERRORS
|
|
#define INCL_OS2V20_TASKING
|
|
#include <os2.h>
|
|
|
|
APIRET
|
|
Od2Canonicalize(
|
|
IN PSZ Path,
|
|
IN ULONG ExpectedType,
|
|
OUT PSTRING OutputString,
|
|
OUT PHANDLE OutputDirectory OPTIONAL,
|
|
OUT PULONG ParseFlags OPTIONAL,
|
|
OUT PULONG FileType OPTIONAL
|
|
);
|
|
|
|
#define CANONICALIZE_FILE_DEV_OR_PIPE 0x00000000
|
|
#define CANONICALIZE_FILE_OR_DEV 0x00000001
|
|
#define CANONICALIZE_SHARED_MEMORY 0x00000002
|
|
#define CANONICALIZE_SEMAPHORE 0x00000003
|
|
#define CANONICALIZE_QUEUE 0x00000004
|
|
|
|
|
|
PCHAR NullApiArguments[] = {
|
|
"String Number One",
|
|
"String Number Two",
|
|
"String Number Three",
|
|
NULL
|
|
};
|
|
|
|
#define EXP_SUCCESS (BOOLEAN)1
|
|
#define EXP_FAILURE (BOOLEAN)0
|
|
|
|
struct _TEST_PATHS {
|
|
char *Path;
|
|
ULONG ExpectedType;
|
|
BOOLEAN Success;
|
|
} TestPaths[] = {
|
|
".", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"\\sharemem\\a\\", CANONICALIZE_SHARED_MEMORY, EXP_FAILURE, // bad name
|
|
"\\sharemem\\a/", CANONICALIZE_SHARED_MEMORY, EXP_FAILURE, // bad name
|
|
"\\sharemem\\.", CANONICALIZE_SHARED_MEMORY, EXP_FAILURE, // bad name
|
|
"\\sharemem\\..", CANONICALIZE_SHARED_MEMORY, EXP_FAILURE, // bad name
|
|
"pmwin.dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"c:pmwin.dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"c:.\\pmwin.dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"\\pmwin.dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
".\\pmwin.dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"DLL\\..\\pmwin.dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"C:\\nt\\dll\\pmwin.dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"c:..\\DLL\\pmwin.dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_FAILURE, // back up too far
|
|
"c:..\\..\\NT\\.\\DLL\\pmwin.dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_FAILURE, // back up too far
|
|
"c:\\DLL\\..\\..\\pmwin.dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_FAILURE, // back up too far
|
|
"c:\\DLL\\..\\pmwin<dll", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_FAILURE, // invalid char
|
|
"c:\\DLL\\..\\pmwin.dll.bak", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"c:\\DLL\\..\\.pmwin", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"c:\\\\DLL\\\\..\\\\pmwin", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"c:\\012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\
|
|
0123456789\\12345", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"c:\\012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\
|
|
0123456789\\123456", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_FAILURE, // too long
|
|
"\\\\mach\\shr\\a\\b\\c", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"\\\\\\mach\\shr\\a\\b\\c", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"\\\\\\mach\\..\\shr\\a\\b\\c", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_FAILURE, // back up too far
|
|
"con", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"c:kbd$", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"\\a\\b\\c\\clock$", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"C:\\a\\b\\c\\screen$", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"\\pipe\\a\\b\\c\\pipe.C", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"c:\\pipe\\a\\b\\c\\pipe.C", CANONICALIZE_FILE_OR_DEV, EXP_SUCCESS,
|
|
"\\pipe\\a\\b\\c\\pipe.C", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_SUCCESS,
|
|
"C:\\pipe\\a\\b\\c\\pipe.C", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_FAILURE, // pipe in path
|
|
"C:\\pipe\\?a\\b\\c\\pipe.C", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_FAILURE, // metas
|
|
"C:\\pipe\\a\\b\\c\\p?ipe.C", CANONICALIZE_FILE_DEV_OR_PIPE, EXP_FAILURE, // metas
|
|
"\\queUES\\a\\b\\c\\..\\..\\..\\que.*", CANONICALIZE_QUEUE, EXP_FAILURE, // metas
|
|
"\\queUES\\a\\b\\c\\..\\..\\..\\que.", CANONICALIZE_QUEUE, EXP_SUCCESS,
|
|
"\\queUES\\..\\a\\b\\c\\..\\..\\..\\que.", CANONICALIZE_QUEUE, EXP_FAILURE, // back up too far
|
|
"\\shaREmem\\..\\a\\b\\c\\.\\mem.c", CANONICALIZE_SHARED_MEMORY, EXP_FAILURE, // back up too far
|
|
"\\shaREmem\\a\\b\\c\\.\\mem.c", CANONICALIZE_SHARED_MEMORY, EXP_SUCCESS,
|
|
"\\sharemem/aaaaa\\.\\..\\xxx. ", CANONICALIZE_SHARED_MEMORY, EXP_SUCCESS,
|
|
"\\sharemem/aaaaa\\xxx", CANONICALIZE_SHARED_MEMORY, EXP_SUCCESS,
|
|
"\\sem32\\..\\a\\b\\c\\..\\sem.b", CANONICALIZE_SEMAPHORE, EXP_FAILURE, // back up too far
|
|
"\\sem32\\a\\b\\c\\..\\sem.b", CANONICALIZE_SEMAPHORE, EXP_SUCCESS,
|
|
"\\queues\\a\\b\\c\\..\\sem.b", CANONICALIZE_SEMAPHORE, EXP_FAILURE, // incorrect prefix
|
|
"/sem32/a", CANONICALIZE_SEMAPHORE, EXP_SUCCESS,
|
|
"/sem32/a|b", CANONICALIZE_SEMAPHORE, EXP_FAILURE, // invalid char
|
|
NULL, 0, 0
|
|
};
|
|
|
|
int
|
|
main(
|
|
int argc,
|
|
char *argv[],
|
|
char *envp[]
|
|
)
|
|
{
|
|
APIRET rc;
|
|
PSZ Path;
|
|
ULONG i, ParseFlags, FileType;
|
|
STRING OutputString;
|
|
HFILE ReadHandle, WriteHandle;
|
|
|
|
DbgPrint( "*** Entering OS/2 Null Application\n" );
|
|
|
|
i = 0;
|
|
while( Path = TestPaths[ i ].Path ) {
|
|
FileType = -1;
|
|
rc = Od2Canonicalize( Path,
|
|
TestPaths[ i ].ExpectedType,
|
|
&OutputString,
|
|
NULL,
|
|
&ParseFlags,
|
|
&FileType
|
|
);
|
|
|
|
if (rc != NO_ERROR) {
|
|
if (TestPaths[ i ].Success) {
|
|
DbgPrint("FAILURE: Od2Canonicalize( %s ) failed - rc = %ld\n",
|
|
Path, rc
|
|
);
|
|
}
|
|
else {
|
|
DbgPrint("NT_SUCCESS: Od2Canonicalize( %s ) failed - rc = %ld\n",
|
|
Path, rc
|
|
);
|
|
}
|
|
}
|
|
else {
|
|
if (TestPaths[ i ].Success) {
|
|
DbgPrint( "NT_SUCCESS: Od2Canonicalize( %s ) success", Path );
|
|
}
|
|
else {
|
|
DbgPrint( "FAILURE: Od2Canonicalize( %s ) success", Path );
|
|
}
|
|
if (FileType != -1) {
|
|
DbgPrint( " - type = %lX", FileType );
|
|
}
|
|
|
|
DbgPrint( "\n String = %Z\n\n", &OutputString );
|
|
}
|
|
|
|
i++;
|
|
}
|
|
|
|
DbgPrint( "*** Exiting OS/2 Null Application\n" );
|
|
return( 0 );
|
|
}
|