\r
//==========================================================================\r
//\r
-// MS_LittleULONG\r
+// MS_LittleUINT\r
//\r
-// Converts a host U_LONG (4 bytes) to little endian byte order.\r
+// Converts a host U_INT (4 bytes) to little endian byte order.\r
//\r
//==========================================================================\r
\r
-U_LONG MS_LittleULONG(U_LONG val)\r
+U_INT MS_LittleUINT(U_INT val)\r
{\r
if(acs_BigEndianHost == NO)\r
{\r
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
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
\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
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
//\r
// MS_StripFilename\r
//\r
+// [RH] This now leaves the directory delimiter in place.\r
+//\r
//==========================================================================\r
\r
boolean MS_StripFilename(char *name)\r
{ // 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
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