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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user