* sim/ucsim/cmd.src/cmdutil.cc: NUL device is detected as CG_FILE type
[fw/sdcc] / src / SDCCglobl.h
index 48c466e41f12578595e3711f563c0ac180e76951..61eac7b01b81940f6f866432e4d325587d7d3137 100644 (file)
 
 #define UNIX_DIR_SEPARATOR_CHAR    '/'
 
+#if defined(__BORLANDC__) || defined(_MSC_VER)
+#define STRCASECMP stricmp
+#define STRNCASECMP strnicmp
+#else
+#define STRCASECMP strcasecmp
+#define STRNCASECMP strncasecmp
+#endif
+
+#if defined(__MSDOS__) || defined(_WIN32) || defined(__OS2__) || defined (__CYGWIN__)
+
+#ifndef HAVE_DOS_BASED_FILE_SYSTEM
+#define HAVE_DOS_BASED_FILE_SYSTEM 1
+#endif
+
+#define IS_DIR_SEPARATOR(c)     ((c) == DIR_SEPARATOR_CHAR || (c) == UNIX_DIR_SEPARATOR_CHAR)
+/* Note that IS_ABSOLUTE_PATH accepts d:foo as well, although it is
+   only semi-absolute.  This is because the users of IS_ABSOLUTE_PATH
+   want to know whether to prepend the current working directory to
+   a file name, which should not be done with a name like d:foo.  */
+#define IS_ABSOLUTE_PATH(f)     (IS_DIR_SEPARATOR((f)[0]) || (((f)[0]) && ((f)[1] == ':')))
+#define FILENAME_CMP(s1, s2)    STRCASECMP(s1, s2)
+
+#else  /* not DOSish */
+
+#define IS_DIR_SEPARATOR(c)     ((c) == DIR_SEPARATOR_CHAR)
+#define IS_ABSOLUTE_PATH(f)     (IS_DIR_SEPARATOR((f)[0]))
+#define FILENAME_CMP(s1, s2)    strcmp(s1, s2)
+
+#endif /* not DOSish */
+
 #ifdef WIN32
 # define NATIVE_WIN32          1
 # ifndef __MINGW32__
@@ -255,6 +285,7 @@ struct options
     int no_std_crt0;            /* for the z80/gbz80 do not link default crt0.o*/
     int std_c99;                /* enable C99 keywords/constructs */
     int std_sdcc;               /* enable SDCC extensions to C */
+    int dollars_in_ident;       /* zero means dollar signs are punctuation */
     const char *code_seg;       /* segment name to use instead of CSEG */
     const char *const_seg;      /* segment name to use instead of CONST */
     /* sets */
@@ -277,8 +308,6 @@ extern char *dstPath;           /* path for the output files; */
 extern char *moduleName;        /* module name is source file without path and extension */
                                 /* can be NULL while linking without compiling */
 extern int seqPointNo;          /* current sequence point */
-extern int currLineno;          /* current line number    */
-extern int mylineno;            /* line number of the current file SDCC.lex */
 extern FILE *yyin;              /* */
 extern FILE *asmFile;           /* assembly output file */
 extern FILE *cdbFile;           /* debugger symbol file */