mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 22:46:17 +00:00
Defedf is not needed any longer.
svn path=/trunk/; revision=11629
This commit is contained in:
parent
7cd6c44a8a
commit
83541672c0
3 changed files with 0 additions and 341 deletions
|
@ -1,2 +0,0 @@
|
|||
defedf
|
||||
defedf.exe
|
|
@ -1,315 +0,0 @@
|
|||
/* $Id: defedf.c,v 1.4 1999/10/28 23:34:47 rex Exp $
|
||||
*
|
||||
* reactos/iface/dll/defedf.c
|
||||
*
|
||||
* ReactOS Operating System
|
||||
*
|
||||
* Convert a *.def file for a PE image into an *.edf file,
|
||||
* to build the PE image with a clean exports table.
|
||||
*
|
||||
* Written by EA (19990703)
|
||||
*
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
#ifndef MAX_PATH
|
||||
# ifdef PATH_MAX
|
||||
# define MAX_PATH PATH_MAX
|
||||
# else
|
||||
# define MAX_PATH _MAX_PATH
|
||||
# endif
|
||||
#endif
|
||||
#include <string.h>
|
||||
|
||||
#define INPUT_BUFFER_SIZE 1024
|
||||
|
||||
//#define DEBUG
|
||||
|
||||
static const char * SUFFIX_DEF = ".def";
|
||||
static const char * SUFFIX_EDF = ".edf";
|
||||
|
||||
|
||||
int
|
||||
Usage ( const char * ImageName )
|
||||
{
|
||||
fprintf(
|
||||
stderr,
|
||||
"Usage: %s def_file [edf_file]\n",
|
||||
ImageName
|
||||
);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
AddSuffix (
|
||||
const char * Prototype,
|
||||
const char * Suffix
|
||||
)
|
||||
{
|
||||
char NewName [MAX_PATH];
|
||||
char * SuffixStart;
|
||||
|
||||
if (!Prototype) return NULL;
|
||||
strcpy( NewName, Prototype );
|
||||
SuffixStart =
|
||||
NewName
|
||||
+ strlen(NewName)
|
||||
- strlen(Suffix);
|
||||
if (strcmp(SuffixStart,Suffix))
|
||||
{
|
||||
strcat(NewName, Suffix);
|
||||
}
|
||||
return strdup(NewName);
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
MakeEdfName (
|
||||
const char * NameDef,
|
||||
const char * NameEdf
|
||||
)
|
||||
{
|
||||
if (NULL == NameEdf)
|
||||
{
|
||||
char NewName [MAX_PATH];
|
||||
char * Dot;
|
||||
|
||||
strcpy( NewName, NameDef );
|
||||
Dot = strrchr( NewName, '.');
|
||||
if (0 == strcmp(Dot, SUFFIX_DEF))
|
||||
{
|
||||
*Dot = '\0';
|
||||
}
|
||||
return AddSuffix( NewName, SUFFIX_EDF );
|
||||
}
|
||||
return AddSuffix( NameEdf, SUFFIX_EDF );
|
||||
}
|
||||
|
||||
|
||||
typedef
|
||||
enum
|
||||
{
|
||||
LineLibrary,
|
||||
LineExports,
|
||||
LineImports,
|
||||
LineSymbol,
|
||||
// LineSymbolCdecl,
|
||||
// LineSymbolStdcall,
|
||||
// LineSymbolFastcall,
|
||||
// LineSymbolData,
|
||||
LineComment,
|
||||
LineEmpty
|
||||
|
||||
} PARSING_EXIT_CODE;
|
||||
|
||||
|
||||
PARSING_EXIT_CODE
|
||||
ParseInput (
|
||||
char * InputBuffer,
|
||||
char * CleanName
|
||||
)
|
||||
{
|
||||
char * r;
|
||||
|
||||
r = strrchr( InputBuffer, '\n' );
|
||||
if (r) *r = '\0';
|
||||
#ifdef DEBUG
|
||||
printf("ParseInput(%s)\n",InputBuffer);
|
||||
#endif
|
||||
if (0 == strlen(InputBuffer))
|
||||
{
|
||||
#ifdef DEBUG
|
||||
printf("LineEmpty\n");
|
||||
#endif
|
||||
return LineEmpty;
|
||||
}
|
||||
/*
|
||||
* Skip blanks and tabs.
|
||||
*/
|
||||
for ( InputBuffer;
|
||||
(
|
||||
(*InputBuffer)
|
||||
&& (*InputBuffer == ' ')
|
||||
&& (*InputBuffer == '\t')
|
||||
);
|
||||
InputBuffer++
|
||||
);
|
||||
#ifdef DEBUG
|
||||
printf("1st=\"%c\" (%d)\n", *InputBuffer, (int) *InputBuffer );
|
||||
#endif
|
||||
r = InputBuffer;
|
||||
if (*r == ';')
|
||||
{
|
||||
strcpy( InputBuffer, r );
|
||||
#ifdef DEBUG
|
||||
printf("LineComment\n");
|
||||
#endif
|
||||
return LineComment;
|
||||
}
|
||||
r = strchr( InputBuffer, '=' );
|
||||
if (r)
|
||||
{
|
||||
printf( "Fatal error: can not process DEF files with aliases!\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
r = strchr( InputBuffer, '@' );
|
||||
if (r)
|
||||
{
|
||||
strcpy( CleanName, InputBuffer );
|
||||
r = strchr( CleanName, '@' );
|
||||
*r = '\0';
|
||||
#ifdef DEBUG
|
||||
printf("LineSymbol: \"%s\"=\"%s\"\n",InputBuffer,CleanName);
|
||||
#endif
|
||||
return LineSymbol;
|
||||
}
|
||||
/* can not recognize it; copy it verbatim */
|
||||
#ifdef DEBUG
|
||||
printf("LineComment\n");
|
||||
#endif
|
||||
return LineComment;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
DefEdf (
|
||||
const char * ImageName,
|
||||
const char * Def,
|
||||
const char * Edf
|
||||
)
|
||||
{
|
||||
FILE * fDef;
|
||||
FILE * fEdf;
|
||||
char InputBuffer [INPUT_BUFFER_SIZE];
|
||||
|
||||
printf(
|
||||
"%s --> %s\n",
|
||||
Def,
|
||||
Edf
|
||||
);
|
||||
fDef = fopen( Def, "r" );
|
||||
if (!fDef)
|
||||
{
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s: could not open \"%s\"\n",
|
||||
ImageName,
|
||||
Def
|
||||
);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
fEdf = fopen( Edf, "w" );
|
||||
if (!fEdf)
|
||||
{
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s: could not create \"%s\"\n",
|
||||
ImageName,
|
||||
Edf
|
||||
);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
while ( fgets( InputBuffer, sizeof InputBuffer, fDef ) )
|
||||
{
|
||||
char CleanName [MAX_PATH];
|
||||
|
||||
switch (ParseInput(InputBuffer,CleanName))
|
||||
{
|
||||
case LineLibrary:
|
||||
fprintf(fEdf,"%s\n",InputBuffer);
|
||||
break;
|
||||
|
||||
case LineExports:
|
||||
fprintf(fEdf,"EXPORTS\n");
|
||||
break;
|
||||
|
||||
case LineImports:
|
||||
fprintf(fEdf,"IMPORTS\n");
|
||||
break;
|
||||
|
||||
case LineSymbol:
|
||||
fprintf(
|
||||
fEdf,
|
||||
"%s=%s\n",
|
||||
CleanName,
|
||||
InputBuffer
|
||||
);
|
||||
break;
|
||||
|
||||
case LineComment:
|
||||
fprintf(
|
||||
fEdf,
|
||||
"%s\n",
|
||||
InputBuffer
|
||||
);
|
||||
break;
|
||||
|
||||
case LineEmpty:
|
||||
fprintf(
|
||||
fEdf,
|
||||
"\n"
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
fclose(fDef);
|
||||
fclose(fEdf);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(
|
||||
int argc,
|
||||
char * argv []
|
||||
)
|
||||
{
|
||||
char * NameDef;
|
||||
char * NameEdf;
|
||||
int rv;
|
||||
|
||||
|
||||
if ((argc != 2) && (argc != 3))
|
||||
{
|
||||
return Usage(argv[0]);
|
||||
}
|
||||
NameDef = AddSuffix(
|
||||
argv [1],
|
||||
SUFFIX_DEF
|
||||
);
|
||||
if (!NameDef)
|
||||
{
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s: can not build the def_file name\n",
|
||||
argv [0]
|
||||
);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
NameEdf = MakeEdfName(
|
||||
NameDef,
|
||||
argv [2]
|
||||
);
|
||||
if (!NameEdf)
|
||||
{
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s: can not build the edf_file name\n",
|
||||
argv [0]
|
||||
);
|
||||
free(NameDef);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
rv = DefEdf(
|
||||
argv [0],
|
||||
NameDef,
|
||||
NameEdf
|
||||
);
|
||||
free(NameDef);
|
||||
free(NameEdf);
|
||||
return rv;
|
||||
}
|
||||
|
||||
/* EOF */
|
|
@ -1,24 +0,0 @@
|
|||
# $Id: makefile,v 1.3 2000/08/18 22:26:58 dwelch Exp $
|
||||
#
|
||||
# ReactOS Operating System
|
||||
#
|
||||
# Generate:
|
||||
# - defedf
|
||||
#
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
TARGET = defedf
|
||||
|
||||
BASE_CFLAGS = -I../../include
|
||||
|
||||
all: $(TARGET)$(EXE_POSTFIX)
|
||||
|
||||
$(TARGET)$(EXE_POSTFIX): $(TARGET).c
|
||||
$(CC) -g $(TARGET).c -o $(TARGET)$(EXE_POSTFIX)
|
||||
|
||||
clean:
|
||||
- $(RM) $(TARGET)$(EXE_POSTFIX)
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
include ../../rules.mak
|
Loading…
Add table
Add a link
Reference in a new issue