Defedf is not needed any longer.

svn path=/trunk/; revision=11629
This commit is contained in:
Eric Kohl 2004-11-12 12:07:51 +00:00
parent 7cd6c44a8a
commit 83541672c0
3 changed files with 0 additions and 341 deletions

View file

@ -1,2 +0,0 @@
defedf
defedf.exe

View file

@ -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 */

View file

@ -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