From: cuz Date: Fri, 30 May 2003 20:49:19 +0000 (+0000) Subject: New filetype module X-Git-Tag: V2.12.0~1537 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d0bb32e6c68d22b690c7ae112d4c250d7edcd1d8;p=cc65 New filetype module git-svn-id: svn://svn.cc65.org/cc65/trunk@2181 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/src/common/filetype.c b/src/common/filetype.c new file mode 100644 index 000000000..488890bd9 --- /dev/null +++ b/src/common/filetype.c @@ -0,0 +1,109 @@ +/*****************************************************************************/ +/* */ +/* filetype.c */ +/* */ +/* Determine the type of a file */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#include + +/* common */ +#include "filetype.h" +#include "fname.h" + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* Table that maps extensions to file types */ +static const struct { + const char Ext[4]; + unsigned Type; +} FileTypes [] = { + { "c", FILETYPE_C }, + { "s", FILETYPE_ASM }, + { "asm", FILETYPE_ASM }, + { "a65", FILETYPE_ASM }, + { "o", FILETYPE_OBJ }, + { "obj", FILETYPE_OBJ }, + { "a", FILETYPE_LIB }, + { "lib", FILETYPE_LIB }, + { "grc", FILETYPE_GR }, + { "o65", FILETYPE_O65 }, + { "emd", FILETYPE_O65 }, + { "joy", FILETYPE_O65 }, + { "tgi", FILETYPE_O65 }, +}; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +int 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. + */ +{ + unsigned I; + + /* Determine the file type by the extension */ + const char* Ext = FindExt (Name); + + /* Do we have an extension? */ + if (Ext == 0) { + return FILETYPE_UNKNOWN; + } + + /* Skip the dot */ + ++Ext; + + /* Check for known extensions */ + for (I = 0; I < sizeof (FileTypes) / sizeof (FileTypes [0]); ++I) { + if (strcmp (FileTypes [I].Ext, Ext) == 0) { + /* Found */ + return FileTypes [I].Type; + } + } + + /* Not found, return the default */ + return FILETYPE_UNKNOWN; +} + + + diff --git a/src/common/filetype.h b/src/common/filetype.h new file mode 100644 index 000000000..b21f982d1 --- /dev/null +++ b/src/common/filetype.h @@ -0,0 +1,77 @@ +/*****************************************************************************/ +/* */ +/* filetype.h */ +/* */ +/* Determine the type of a file */ +/* */ +/* */ +/* */ +/* (C) 2003 Ullrich von Bassewitz */ +/* Römerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef FILETYPE_H +#define FILETYPE_H + + + +/*****************************************************************************/ +/* Data */ +/*****************************************************************************/ + + + +/* File types */ +enum { + FILETYPE_UNKNOWN = -1, /* Unknown file type */ + FILETYPE_C, /* C source file */ + FILETYPE_ASM, /* Assembler file */ + FILETYPE_OBJ, /* Object file */ + FILETYPE_LIB, /* Library file */ + FILETYPE_GR, /* GEOS resource file */ + FILETYPE_O65 /* O65 object file */ +}; + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +int 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. + */ + + + +/* End of filetype.h */ +#endif + + + diff --git a/src/common/make/gcc.mak b/src/common/make/gcc.mak index 9fac62f1f..e726ec7f1 100644 --- a/src/common/make/gcc.mak +++ b/src/common/make/gcc.mak @@ -19,6 +19,7 @@ OBJS = abend.o \ debugflag.o \ exprdefs.o \ filepos.o \ + filetype.o \ fname.o \ hashstr.o \ matchpat.o \ diff --git a/src/common/make/watcom.mak b/src/common/make/watcom.mak index 400ebc643..a213d53cf 100644 --- a/src/common/make/watcom.mak +++ b/src/common/make/watcom.mak @@ -51,6 +51,7 @@ OBJS = abend.obj \ debugflag.obj \ exprdefs.obj \ filepos.obj \ + filetype.obj \ fname.obj \ hashstr.obj \ matchpat.obj \