touch function that should also work on non unix os's, though I cant test here.
authorCampbell Barton <ideasman42@gmail.com>
Sun, 20 Jan 2008 21:27:16 +0000 (21:27 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 20 Jan 2008 21:27:16 +0000 (21:27 +0000)
source/blender/blenlib/BLI_blenlib.h
source/blender/blenlib/intern/fileops.c

index 42b3bf2ce14b03c9e8e88d356d55892238212d9e..e149c92c72bed0528ef804259eca9c291b9c60ca 100644 (file)
@@ -296,7 +296,7 @@ int   BLI_rename(char *from, char *to);
 int   BLI_gzip(char *from, char *to);
 int   BLI_delete(char *file, int dir, int recursive);
 int   BLI_move(char *file, char *to);
-int   BLI_touch(char *file);
+int   BLI_touch(const char *file);
 char *BLI_last_slash(const char *string);
 
 /* BLI_rct.c */
index fe2d07238b6d7b7e1ae2da734d9009c650649356..2ee42d16176b3fbd08dd4227dca7effe0c07c5c7 100644 (file)
@@ -140,6 +140,23 @@ int BLI_is_writable(char *filename)
        }
 }
 
+int BLI_touch(const char *file)
+{
+   FILE *f = fopen(file,"r+b");
+   if (f != NULL) {
+               char c = getc(f);
+               rewind(f);
+               putc(c,f);
+       } else {
+          f = fopen(file,"wb");
+       }
+       if (f) {
+               fclose(f);
+               return 1;
+       }
+       return 0;
+}
+
 #ifdef WIN32
 
 static char str[MAXPATHLEN+12];
@@ -161,12 +178,6 @@ int BLI_delete(char *file, int dir, int recursive) {
        return err;
 }
 
-int BLI_touch(char *file) {
-       callLocalErrorCallBack("Touching files is unsupported on Windows");
-       
-       return 1;
-}
-
 int BLI_move(char *file, char *to) {
        int err;
 
@@ -296,17 +307,6 @@ int BLI_delete(char *file, int dir, int recursive)
        return -1;
 }
 
-int BLI_touch(char *file) 
-{
-       
-       if( BLI_exists("/bin/touch") )
-               sprintf(str, "/bin/touch %s", file);
-       else
-               sprintf(str, "/usr/bin/touch %s", file);
-       
-       return system(str);
-}
-
 int BLI_move(char *file, char *to) {
        sprintf(str, "/bin/mv -f \"%s\" \"%s\"", file, to);