Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

259 lines
5.7 KiB

/*++
Copyright (c) 1994 Microsoft Corporation
Module Name:
wsnsplib.c
Abstract:
Service Registration and Resolution APIs tests
libraries
Author:
Hui-Li Chen (hui-lich) Microsoft, June 14, 1994
Revision History:
--*/
#include "wsnsp.h"
#define MAX_PRINT 10000
// global extern
FILE * logname = NULL;
BOOL gfServer = TRUE;
TCHAR gsServiceName[256];
CHAR gsLogName[256];
BOOL gfLog = FALSE;
#define SIZE_OF_SERVICE_NAME 256*sizeof(TCHAR)
////////////////////////////////////////////////////////////
//
// CreateLogFile
//
////////////////////////////////////////////////////////////
void CreateLogFile( char * slogname )
{
if ( gfLog ) {
if ( !slogname || !*slogname ) {
printf("Error creating %s log file\n", slogname );
ExitProcess ( 0 );
}
if ( ! (logname = fopen( slogname, "w")) ) {
printf("Error creating %s log file\n", slogname );
ExitProcess ( 0 );
}
}
return;
}
//////////////////////////////////////////////////////////////////////
//
// CloseLogFile
//
//////////////////////////////////////////////////////////////////////
void CloseLogFile()
{
if ( gfLog ) {
if ( ! logname )
return;
fclose( logname );
}
}
//////////////////////////////////////////////////////////////////////
//
// Regular print
//
// Prints to stdout and optionally to log.
//
//////////////////////////////////////////////////////////////////////
void _CRTAPI1
Print(
IN CHAR * Format,
...
)
{
INT count = 0;
char line[MAX_PRINT];
va_list arglist;
//
// add desired message
//
va_start( arglist, Format );
count += vsprintf(
line+count,
Format,
arglist
);
va_end( arglist );
printf( "%s", line );
if ( gfLog )
{
if ( logname )
{
fputs( line, logname );
fflush( logname );
}
}
}
//////////////////////////////////////////////////////////////////////
//
// Parse / set options
//
//////////////////////////////////////////////////////////////////////
BOOL ParseOptions(
int argc,
char *argv[])
{
register char * p; // tracks through args
char c;
char sServiceName[256];
//
// Loop until options exhausted
//
while (--argc, *++argv) { // command loop
//
// check that argument is option string
//
if ( (**argv == '-') || (**argv == '/') ) { // option string
p = *argv+1; // character after '-'
if (*p == '\0') // check invalid standalone '-'
return FALSE;
// loop until read all options in the argument
if ( ! _stricmp( p, "TCP" ) ) {
gTest = TEST_TCP;
continue;
}
if ( ! _stricmp( p, "NW" ) ) {
gTest = TEST_NW;
continue;
}
if ( ! _stricmp( p, "AT" ) ) {
gTest = TEST_AT;
continue;
}
while( p && *p ) {
c = *p;
p++;
switch ( c ) { // print usage
case 'h':
case '?':
return FALSE;
break;
case 'c': // client test
gfServer = FALSE;
break;
case 's': // server test
gfServer = TRUE;
break;
case 'n': // name
if ( !*p )
return FALSE;
switch ( *p ) {
case 's': // service name
p++;
if (!*p && (!--argc || !*(p = *++argv)))
return FALSE;
strcpy( sServiceName, p );
p = NULL;
break;
default:
return FALSE;
}
break;
case 'o': // output options
if ( !*p ) {
Print("Error usage for option -ol\n");
return FALSE;
}
switch ( *p ) {
case 'l': // give logfile name
gfLog = TRUE;
p++;
if (!*p && (!--argc || !*(p = *++argv))){
Print("Error usage for option -ol\n");
return FALSE;
}
strcpy(gsLogName, p);
break;
default:
Print("Error usage option for -ol\n");
return FALSE;
}
p = NULL;
break;
default:
return FALSE;
} // end of switch
} // end of while
} //end of if
} //end of while
#ifdef UNICODE
MultiByteToWideChar(CP_ACP, 0, sServiceName, -1, gsServiceName, SIZE_OF_SERVICE_NAME);
#else
strcpy( gsServiceName, sServiceName );
#endif
return TRUE;
}
//////////////////////////////////////////////////////////////////////
//
// End_Of_Tests
//
//////////////////////////////////////////////////////////////////////
void End_Of_Tests(
int total,
int passed,
int failed )
{
Print("\n\n Total Passed Failed\n");
Print(" ==============================\n");
Print("%10d%10d%10d\n", total, passed, failed);
}
//////////////////////////////////////////////////////////////////////
//
// End Of File
//
//////////////////////////////////////////////////////////////////////