]> git.sur5r.net Git - cc65/commitdiff
New filetype module
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 30 May 2003 20:49:19 +0000 (20:49 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 30 May 2003 20:49:19 +0000 (20:49 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2181 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/common/filetype.c [new file with mode: 0644]
src/common/filetype.h [new file with mode: 0644]
src/common/make/gcc.mak
src/common/make/watcom.mak

diff --git a/src/common/filetype.c b/src/common/filetype.c
new file mode 100644 (file)
index 0000000..488890b
--- /dev/null
@@ -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 <string.h>
+
+/* 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 (file)
index 0000000..b21f982
--- /dev/null
@@ -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
+
+
+
index 9fac62f1f006090cef476e71df9838311a4e8823..e726ec7f18eb5f4d677c5a44abe8bfc3ef4736a3 100644 (file)
@@ -19,6 +19,7 @@ OBJS =        abend.o         \
         debugflag.o     \
        exprdefs.o      \
        filepos.o       \
+        filetype.o      \
        fname.o         \
        hashstr.o       \
         matchpat.o      \
index 400ebc643f74e8bb9039ed30d0906d1147fe8e7c..a213d53cff8cec26b5e8eb64fdf0682d8184f303 100644 (file)
@@ -51,6 +51,7 @@ OBJS =        abend.obj       \
         debugflag.obj   \
        exprdefs.obj    \
        filepos.obj     \
+        filetype.obj    \
        fname.obj       \
        hashstr.obj     \
         matchpat.obj    \