new utility function for BLI_storage.h - BLI_is_dir
authorCampbell Barton <ideasman42@gmail.com>
Fri, 16 Oct 2009 10:22:11 +0000 (10:22 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 16 Oct 2009 10:22:11 +0000 (10:22 +0000)
currently unsupported on windows.

should fix this too [#19656] N-Panel in filebrowser not working
though typing in invalid names then becomes possible

source/blender/blenlib/BLI_storage.h
source/blender/blenlib/intern/storage.c
source/blender/editors/space_file/filesel.c

index fa44bb36e150358431071bd306dca09696235e77..96e88ec8e89ff2584cb414d052cfc106cb5a7ba8 100644 (file)
@@ -66,6 +66,9 @@ int    BLI_exist(char *name);
         * @param name The name of the file to read.
         * @retval A list of strings representing the file lines.
         */
+
+int BLI_is_dir(char *file);
+
 struct LinkNode *BLI_read_file_as_lines(char *name);
 
        /**
index cdc5cec705fb714ce879a906c0a8b394a3065b08..b48b6784c23695322287f9cc5c4a225fb3a99139 100644 (file)
@@ -468,6 +468,15 @@ int BLI_exist(char *name)
        return(st.st_mode);
 }
 
+/* would be better in fileops.c except that it needs stat.h so add here */
+int BLI_is_dir(char *file) {
+#ifdef WIN32
+       return 1; /* XXX - TODO */
+#else
+       return S_ISDIR(BLI_exist(file));
+#endif
+}
+
 LinkNode *BLI_read_file_as_lines(char *name)
 {
        FILE *fp= fopen(name, "r");
index 89678bffd018983281e0371cd7fb51be5e6a9000..cc0c1ca33aa8e72ed7bf67e9ee5c8bd13e7b480b 100644 (file)
@@ -388,7 +388,7 @@ void file_change_dir(struct SpaceFile *sfile, int checkdir)
 {
        if (sfile->params) {
 
-               if(checkdir && S_ISDIR(BLI_exists(sfile->params->dir)) == 0) {
+               if(checkdir && BLI_is_dir(sfile->params->dir)==0) {
                        BLI_strncpy(sfile->params->dir, filelist_dir(sfile->files), sizeof(sfile->params->dir));
                        /* could return but just refresh the current dir */
                }