OSDN Git Service

- Add TEXFLAG_ADDOFFSET definition, so that all the flags for Line_SetTextureOffset...
[zandronum/zandronum-acc.git] / misc.c
diff --git a/misc.c b/misc.c
index f7144ea..db4f84e 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -171,6 +171,22 @@ int MS_LoadFile(char *name, char **buffer)
        return size;\r
 }\r
 \r
+\r
+//==========================================================================\r
+//\r
+// MS_FileExists\r
+//\r
+// Pascal 21/11/08\r
+//\r
+//==========================================================================\r
+boolean MS_FileExists(char *name)\r
+{\r
+       struct stat info;\r
+       int ret = stat(name, &info);\r
+       return (ret == 0);\r
+}\r
+\r
+\r
 //==========================================================================\r
 //\r
 // MS_SaveFile\r
@@ -263,8 +279,7 @@ void MS_SuggestFileExt(char *base, char *extension)
        char *search;\r
 \r
        search = base+strlen(base)-1;\r
-       while(*search != ASCII_SLASH && *search != ASCII_BACKSLASH\r
-               && search != base)\r
+       while(!MS_IsDirectoryDelimiter(*search) && search != base)\r
        {\r
                if(*search-- == '.')\r
                {\r
@@ -276,6 +291,22 @@ void MS_SuggestFileExt(char *base, char *extension)
 \r
 //==========================================================================\r
 //\r
+// MS_IsDirectoryDelimiter\r
+//\r
+//==========================================================================\r
+\r
+boolean MS_IsDirectoryDelimiter(char foo)\r
+{\r
+#if defined(_WIN32) || defined(__MSDOS__)\r
+       return foo == '/' || foo == '\\' || foo == ':';\r
+#else\r
+       return foo == '/';\r
+#endif\r
+}\r
+\r
+\r
+//==========================================================================\r
+//\r
 // MS_StripFileExt\r
 //\r
 //==========================================================================\r
@@ -285,8 +316,7 @@ void MS_StripFileExt(char *name)
        char *search;\r
 \r
        search = name+strlen(name)-1;\r
-       while(*search != ASCII_SLASH && *search != ASCII_BACKSLASH\r
-               && search != name)\r
+       while(!MS_IsDirectoryDelimiter(*search) && search != name)\r
        {\r
                if(*search == '.')\r
                {\r
@@ -301,6 +331,8 @@ void MS_StripFileExt(char *name)
 //\r
 // MS_StripFilename\r
 //\r
+// [RH] This now leaves the directory delimiter in place.\r
+//\r
 //==========================================================================\r
 \r
 boolean MS_StripFilename(char *name)\r
@@ -314,8 +346,8 @@ boolean MS_StripFilename(char *name)
                { // No directory delimiter\r
                        return NO;\r
                }\r
-       } while(*c != DIRECTORY_DELIMITER_CHAR);\r
-       *c = 0;\r
+       } while(!MS_IsDirectoryDelimiter(*c));\r
+       *(c+1) = 0;\r
        return YES;\r
 }\r
 \r
@@ -353,3 +385,24 @@ void MS_Message(msg_t type, char *text, ...)
                va_end(argPtr);\r
        }\r
 }\r
+\r
+//==========================================================================\r
+//\r
+// MS_IsPathAbsolute\r
+//\r
+// Pascal 30/11/08\r
+//\r
+//==========================================================================\r
+\r
+boolean MS_IsPathAbsolute(char *name)\r
+{\r
+#if defined(_WIN32) || defined(__MSDOS__)\r
+       // In Windows, the second character must be : if it is an\r
+       // absolute path (the first character indicates the drive)\r
+       // or the first character is either / or \ for absolute path\r
+       if((name[0] != '\0') && (name[1] == ':'))\r
+               return TRUE;\r
+#endif\r
+       // In Unix-land, the first character must be / for a root path\r
+       return MS_IsDirectoryDelimiter(name[0]);\r
+}\r