Splitted the filetype module into the actual search function (now in fileid)

and the existing file types used by ld65 and cl65.


git-svn-id: svn://svn.cc65.org/cc65/trunk@5558 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz
2012-02-27 16:24:35 +00:00
parent 7a3e6abb13
commit ca624041a9
5 changed files with 164 additions and 30 deletions

View File

@@ -6,8 +6,8 @@
/* */
/* */
/* */
/* (C) 2003-2005, Ullrich von Bassewitz */
/* R<EFBFBD>merstrasse 52 */
/* (C) 2003-2012, Ullrich von Bassewitz */
/* Roemerstrasse 52 */
/* D-70794 Filderstadt */
/* EMail: uz@cc65.org */
/* */
@@ -37,8 +37,8 @@
#include <string.h>
/* common */
#include "fileid.h"
#include "filetype.h"
#include "fname.h"
@@ -48,13 +48,7 @@
/* Table that maps extensions to file types. Sorted alphabetically. */
typedef struct {
const char Ext[4];
FILETYPE Type;
} FileType;
static const FileType TypeTable[] = {
static const FileId TypeTable[] = {
/* Upper case stuff for obsolete operating systems */
{ "A", FILETYPE_LIB },
{ "A65", FILETYPE_ASM },
@@ -99,34 +93,16 @@ static const FileType TypeTable[] = {
static int Compare (const void* Key, const void* Type)
/* Compare function for bsearch */
{
return strcmp (Key, ((const FileType*) Type)->Ext);
}
FILETYPE GetFileType (const char* Name)
/* Determine the type of the given file by looking at the name. If the file
* type could not be determined, the function returns FILETYPE_UNKOWN.
*/
{
const FileType* FT;
/* Determine the file type by the extension */
const char* Ext = FindExt (Name);
/* Do we have an extension? */
if (Ext == 0) {
return FILETYPE_UNKNOWN;
}
/* Search for a table entry */
FT = bsearch (Ext+1, TypeTable, FILETYPE_COUNT, sizeof (FileType), Compare);
const FileId* F = GetFileId (Name, TypeTable, FILETYPE_COUNT);
/* Return the result */
return FT? FT->Type : FILETYPE_UNKNOWN;
return F? F->Id : FILETYPE_UNKNOWN;
}