From ae0d15f1a3f133a2b2aa403c115b72819f1ac5ae Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Wed, 6 Apr 2016 15:49:52 +0000 Subject: Begin to rewrite files using #include under the driver model. struct stat is considered a platform-specific type. The Unix, Mac OS, and WIN32 platforms define it with #include Other platforms may do that their own way. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11542 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_File_Chooser2.cxx | 2 +- src/Fl_File_Icon.cxx | 26 +------------------------- src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx | 1 + src/filename_isdir.cxx | 11 ++--------- 4 files changed, 5 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/Fl_File_Chooser2.cxx b/src/Fl_File_Chooser2.cxx index fea0b3328..d592ff39f 100644 --- a/src/Fl_File_Chooser2.cxx +++ b/src/Fl_File_Chooser2.cxx @@ -344,6 +344,7 @@ // #include +#include // for struct stat #include #include #include @@ -355,7 +356,6 @@ #include "flstring.h" #include #include -#include #if defined(WIN32) || defined(__APPLE__) // PORTME: Fl_Screen_Driver - platform file browser #elif defined(FL_PORTING) diff --git a/src/Fl_File_Icon.cxx b/src/Fl_File_Icon.cxx index a4119c922..02475bbdd 100644 --- a/src/Fl_File_Icon.cxx +++ b/src/Fl_File_Icon.cxx @@ -38,25 +38,12 @@ #include "flstring.h" #include #include -#include -#if (defined(WIN32) && ! defined(__CYGWIN__)) || defined(__EMX__) -# include -# define F_OK 0 -#else -# include -#endif /* WIN32 || __EMX__ */ - +#include // for struct stat #include #include #include #include -#if defined(WIN32) || defined(__APPLE__) // PORTME: Fl_Screen_Driver - platform file browser -#elif defined(FL_PORTING) -# pragma message "FL_PORTING: implement file type interpretation here" -#else -#endif - // // Define missing POSIX/XPG4 macros as needed... // @@ -187,23 +174,13 @@ Fl_File_Icon::find(const char *filename,// I - Name of file */ int filetype) // I - Enumerated file type { Fl_File_Icon *current; // Current file in list -#ifndef WIN32 struct stat fileinfo; // Information on file -#endif // !WIN32 const char *name; // Base name of filename // Get file information if needed... if (filetype == ANY) { -#ifdef WIN32 - if (filename[strlen(filename) - 1] == '/') - filetype = DIRECTORY; - else if (fl_filename_isdir(filename)) - filetype = DIRECTORY; - else - filetype = PLAIN; -#else if (!fl_stat(filename, &fileinfo)) { if (S_ISDIR(fileinfo.st_mode)) @@ -225,7 +202,6 @@ Fl_File_Icon::find(const char *filename,// I - Name of file */ } else filetype = PLAIN; -#endif // WIN32 } // Look at the base name in the filename diff --git a/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx index 3a0b94fc5..46bd9dc78 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx +++ b/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx @@ -196,6 +196,7 @@ int Fl_WinAPI_System_Driver::access(const char* f, int mode) { int Fl_WinAPI_System_Driver::stat(const char* f, struct stat *b) { size_t l = strlen(f); + if (f[l-1] == '/') l--; // must remove trailing / unsigned wn = fl_utf8toUtf16(f, (unsigned) l, NULL, 0) + 1; // Query length wbuf = (wchar_t*)realloc(wbuf, sizeof(wchar_t)*wn); wn = fl_utf8toUtf16(f, (unsigned) l, (unsigned short *)wbuf, wn); // Convert string diff --git a/src/filename_isdir.cxx b/src/filename_isdir.cxx index 495f6a399..4e69445c1 100644 --- a/src/filename_isdir.cxx +++ b/src/filename_isdir.cxx @@ -20,18 +20,11 @@ #include "flstring.h" #include -#include +#include // for struct stat #include #include #include -#ifdef WIN32 -#elif defined(__APPLE__) // PORTME: Fl_System_Driver - directory stuff -#elif defined(FL_PORTING) -# pragma message "FL_PORTING: implement directory and filename handling for your platform if needed" -#else // X11 -#endif - #if defined(WIN32) || defined(__EMX__) && !defined(__CYGWIN__) static inline int isdirsep(char c) {return c=='/' || c=='\\';} #else @@ -92,7 +85,7 @@ int fl_filename_isdir(const char* n) { } #endif - return !fl_stat(n, &s) && (s.st_mode&0170000)==0040000; + return !fl_stat(n, &s) && (s.st_mode & S_IFMT) == S_IFDIR; } // -- cgit v1.2.3