140 lines
3.2 KiB
C
140 lines
3.2 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1989 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
zwapi.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This is the main module for the NT nt header file to zw
|
||
|
header file converter.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Mark Lucovsky (markl) 28-Jan-1991
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "zwapi.h"
|
||
|
|
||
|
|
||
|
char *ReturnType = "NTSTATUS";
|
||
|
char *Decoration = "NTSYSAPI";
|
||
|
char *CallType = "NTAPI";
|
||
|
char *ProcedureNamePrefix = "Nt";
|
||
|
char *EndPrototype = ");";
|
||
|
|
||
|
int
|
||
|
__cdecl main( argc, argv )
|
||
|
int argc;
|
||
|
char *argv[];
|
||
|
{
|
||
|
|
||
|
fUsage = 0;
|
||
|
|
||
|
if (!ProcessParameters( argc, argv )) {
|
||
|
fUsage = 1;
|
||
|
}
|
||
|
|
||
|
if (fUsage) {
|
||
|
fprintf( stderr, "usage: ZWAPI [-?] display this message\n" );
|
||
|
fprintf( stderr, " [-o filename ]\n" );
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
OutputFile = fopen(OutputFileName,"a");
|
||
|
if (!OutputFile) {
|
||
|
fprintf(stderr,"ZWAPI: Unable to open output file %s for write access\n",OutputFileName);
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
while ( SourceFileCount-- ) {
|
||
|
SourceFileName = *SourceFileList++;
|
||
|
SourceFile = fopen(SourceFileName,"r");
|
||
|
if (!SourceFile) {
|
||
|
fprintf(stderr,"ZWAPI: Unable to open source file %s for read access\n",SourceFileName);
|
||
|
return 1;
|
||
|
}
|
||
|
ProcessSourceFile();
|
||
|
}
|
||
|
return( 0 );
|
||
|
}
|
||
|
|
||
|
|
||
|
int
|
||
|
ProcessParameters(
|
||
|
int argc,
|
||
|
char *argv[]
|
||
|
)
|
||
|
{
|
||
|
char c, *p;
|
||
|
|
||
|
while (--argc) {
|
||
|
p = *++argv;
|
||
|
if (*p == '/' || *p == '-') {
|
||
|
while (c = *++p)
|
||
|
switch (toupper( c )) {
|
||
|
case '?':
|
||
|
fUsage = 1;
|
||
|
return 0;
|
||
|
break;
|
||
|
|
||
|
case 'O': {
|
||
|
argc--, argv++;
|
||
|
OutputFileName = *argv;
|
||
|
SourceFileList = &argv[1];
|
||
|
SourceFileCount = argc-1;
|
||
|
return 1;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ProcessSourceFile( void )
|
||
|
{
|
||
|
char *s;
|
||
|
int CallTypeFound;
|
||
|
|
||
|
while( s = fgets(StringBuffer,STRING_BUFFER_SIZE,SourceFile) ) {
|
||
|
if (strstr(s,ReturnType) == s) {
|
||
|
s = fgets(StringBuffer,STRING_BUFFER_SIZE,SourceFile);
|
||
|
if ( s && (strstr(s,CallType) == s) ) {
|
||
|
s = fgets(StringBuffer,STRING_BUFFER_SIZE,SourceFile);
|
||
|
CallTypeFound = TRUE;
|
||
|
}
|
||
|
else {
|
||
|
CallTypeFound = FALSE;
|
||
|
}
|
||
|
|
||
|
if ( s && (strstr(s,ProcedureNamePrefix) == s) ) {
|
||
|
if (!CallTypeFound) {
|
||
|
fprintf(stderr, "ZWAPI: '%s' call type missing for %s\n", CallType, s );
|
||
|
}
|
||
|
|
||
|
fprintf(OutputFile,"%s\n%s\n%s\nZw%s",
|
||
|
Decoration,
|
||
|
ReturnType,
|
||
|
CallType,
|
||
|
s + strlen(ProcedureNamePrefix)
|
||
|
);
|
||
|
while( s = fgets(StringBuffer,STRING_BUFFER_SIZE,SourceFile) ) {
|
||
|
fputs(s,OutputFile);
|
||
|
if (strstr(s,EndPrototype)) {
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|