should fix bug on win32 with user python menu's not loading because stat() didnt...
authorCampbell Barton <ideasman42@gmail.com>
Wed, 27 Feb 2008 09:48:43 +0000 (09:48 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 27 Feb 2008 09:48:43 +0000 (09:48 +0000)
source/blender/blenlib/BLI_blenlib.h
source/blender/blenlib/intern/fileops.c
source/blender/python/BPY_menus.c

index 39b679144d5805a6ce68b8db5298ae2f8f144d59..551b673233390ee2bb2219a86460bbb87494dc97 100644 (file)
@@ -313,6 +313,7 @@ int   BLI_move(char *file, char *to);
 int   BLI_touch(const char *file);
 char *BLI_last_slash(const char *string);
 void  BLI_add_slash(char *string);
+void  BLI_del_slash(char *string);
 
 /* BLI_rct.c */
 /**
index fa76f2023ebf9a199fdb849ddd807e8936ff8454..ad102bea80ff4bdbacc5517f74cbf241a359b6fd 100644 (file)
@@ -108,6 +108,21 @@ void BLI_add_slash(char *string) {
 #endif
 }
 
+/* removes a slash if there is one */
+void BLI_del_slash(char *string) {
+       int len = strlen(string);
+       while (len) {
+#ifdef WIN32
+               if (string[len-1]=='\\') {
+#else
+               if (string[len-1]=='/') {
+#endif
+                       string[len-1] = '\0';
+                       len--;
+               }
+       }
+}
+
 /* gzip the file in from and write it to "to". 
  return -1 if zlib fails, -2 if the originating file does not exist
  note: will remove the "from" file
index ebbe301f4536c6c7647f8c23b6d7087aeae181af..44c2157ad3bdaac37b287a6206dceba98e55e341 100644 (file)
@@ -933,13 +933,25 @@ static int bpymenu_ParseDir(char *dirname, char *parentdir, int is_userdir )
        return 0;
 }
 
-static int bpymenu_GetStatMTime( char *name, int is_file, time_t * mtime )
+static int bpymenu_GetStatMTime( const char *name, int is_file, time_t * mtime )
 {
        struct stat st;
        int result;
 
+#ifdef win32
+       if (is_file) {
+               result = stat( name, &st );
+       } else {
+               /* needed for win32 only, remove trailing slash */
+               char name_stat[FILE_MAX];
+               BLI_strncpy(name_stat, name, FILE_MAX);
+               BLI_del_slash(name_stat);
+               result = stat( name_stat, &st );
+       }
+#else
        result = stat( name, &st );
-
+#endif
+       
        if( result == -1 )
                return -1;