diff options
| author | Manolo Gouy <Manolo> | 2016-04-06 15:49:52 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2016-04-06 15:49:52 +0000 |
| commit | ae0d15f1a3f133a2b2aa403c115b72819f1ac5ae (patch) | |
| tree | 2e03716f4b145b75fea11fef0d0bba388c6c8712 /src | |
| parent | d905769e6912039a318cdccfe7cd6dc510d254d6 (diff) | |
Begin to rewrite files using #include <sys/stat.h> under the driver model.
struct stat is considered a platform-specific type.
The Unix, Mac OS, and WIN32 platforms define it with #include <sys/stat.h>
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_File_Chooser2.cxx | 2 | ||||
| -rw-r--r-- | src/Fl_File_Icon.cxx | 26 | ||||
| -rw-r--r-- | src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx | 1 | ||||
| -rw-r--r-- | src/filename_isdir.cxx | 11 |
4 files changed, 5 insertions, 35 deletions
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 <FL/Fl_File_Chooser.H> +#include <FL/Fl_System_Driver.H> // for struct stat #include <FL/filename.H> #include <FL/fl_ask.H> #include <FL/x.H> @@ -355,7 +356,6 @@ #include "flstring.h" #include <errno.h> #include <sys/types.h> -#include <sys/stat.h> #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 <errno.h> #include <sys/types.h> -#include <sys/stat.h> -#if (defined(WIN32) && ! defined(__CYGWIN__)) || defined(__EMX__) -# include <io.h> -# define F_OK 0 -#else -# include <unistd.h> -#endif /* WIN32 || __EMX__ */ - +#include <FL/Fl_System_Driver.H> // for struct stat #include <FL/Fl_File_Icon.H> #include <FL/Fl_Widget.H> #include <FL/fl_draw.H> #include <FL/filename.H> -#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 <sys/types.h> -#include <sys/stat.h> +#include <FL/Fl_System_Driver.H> // for struct stat #include <ctype.h> #include <FL/filename.H> #include <FL/fl_utf8.h> -#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; } // |
