1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-27 00:29:31 +00:00

Remember the type of the input file. This may be used later to create more

variants of dependency files.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4645 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2010-04-22 19:40:50 +00:00
parent bfd8f4e108
commit 2e6d218801
2 changed files with 19 additions and 10 deletions

View File

@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 2000-2009, Ullrich von Bassewitz */ /* (C) 2000-2010, Ullrich von Bassewitz */
/* Roemerstrasse 52 */ /* Roemerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@ -95,7 +95,7 @@ static Collection InputStack = STATIC_COLLECTION_INITIALIZER;
static IFile* NewIFile (const char* Name) static IFile* NewIFile (const char* Name, InputType Type)
/* Create and return a new IFile */ /* Create and return a new IFile */
{ {
/* Get the length of the name */ /* Get the length of the name */
@ -109,6 +109,7 @@ static IFile* NewIFile (const char* Name)
IF->Usage = 0; IF->Usage = 0;
IF->Size = 0; IF->Size = 0;
IF->MTime = 0; IF->MTime = 0;
IF->Type = Type;
memcpy (IF->Name, Name, Len+1); memcpy (IF->Name, Name, Len+1);
/* Insert the new structure into the IFile collection */ /* Insert the new structure into the IFile collection */
@ -200,7 +201,7 @@ static IFile* FindFile (const char* Name)
if (strcmp (Name, IF->Name) == 0) { if (strcmp (Name, IF->Name) == 0) {
/* Found, return the struct */ /* Found, return the struct */
return IF; return IF;
} }
} }
/* Not found */ /* Not found */
@ -216,7 +217,7 @@ void OpenMainFile (const char* Name)
/* Setup a new IFile structure for the main file */ /* Setup a new IFile structure for the main file */
IFile* IF = NewIFile (Name); IFile* IF = NewIFile (Name, IT_MAIN);
/* Open the file for reading */ /* Open the file for reading */
FILE* F = fopen (Name, "r"); FILE* F = fopen (Name, "r");
@ -264,7 +265,7 @@ void OpenIncludeFile (const char* Name, unsigned DirSpec)
*/ */
IF = FindFile (N); IF = FindFile (N);
if (IF == 0) { if (IF == 0) {
IF = NewIFile (N); IF = NewIFile (N, (DirSpec == INC_SYS)? IT_SYSINC : IT_USERINC);
} }
/* We don't need N any longer, since we may now use IF->Name */ /* We don't need N any longer, since we may now use IF->Name */

View File

@ -6,10 +6,10 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 2000-2004 Ullrich von Bassewitz */ /* (C) 2000-2010, Ullrich von Bassewitz */
/* Römerstrasse 52 */ /* Roemerstrasse 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
/* */ /* */
/* */ /* */
/* This software is provided 'as-is', without any expressed or implied */ /* This software is provided 'as-is', without any expressed or implied */
@ -46,11 +46,18 @@
/*****************************************************************************/ /*****************************************************************************/
/* data */ /* data */
/*****************************************************************************/ /*****************************************************************************/
/* An enum that describes different types of input files */
typedef enum {
IT_MAIN, /* Main input file */
IT_SYSINC, /* System include file (using <>) */
IT_USERINC, /* User include file (using "") */
} InputType;
/* The current input line */ /* The current input line */
extern StrBuf* Line; extern StrBuf* Line;
@ -65,6 +72,7 @@ struct IFile {
unsigned Usage; /* Usage counter */ unsigned Usage; /* Usage counter */
unsigned long Size; /* File size */ unsigned long Size; /* File size */
unsigned long MTime; /* Time of last modification */ unsigned long MTime; /* Time of last modification */
InputType Type; /* Type of input file */
char Name[1]; /* Name of file (dynamically allocated) */ char Name[1]; /* Name of file (dynamically allocated) */
}; };