Remove '#include <sys/stat.h>' from FL/platform_types.h

- Add this include statement only where needed.
- Rename Fl_System_Driver::stat() to flstat().

This fixes an issue when using some (!) MinGW 64-bit build systems
that obviously '#define stat _stat64' or similar. This would
result in compiler problems if 'stat()' is a member function of
Fl_System_Driver.
This commit is contained in:
Albrecht Schlosser 2022-04-03 20:10:08 +02:00
parent 9aba7c9db0
commit 717a7d266b
6 changed files with 7 additions and 10 deletions

View File

@ -29,7 +29,8 @@
#include "Fl_Export.H"
#include "fl_types.h"
#include <stdio.h> // FILE *fl_fopen()
#include <stdio.h> // FILE *fl_fopen()
#include <sys/stat.h> // struct stat
#ifdef __cplusplus
extern "C" {

View File

@ -90,7 +90,6 @@ typedef int FL_SOCKET;
typedef class NSOpenGLContext* GLContext;
#endif /* __OBJC__ */
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
# define FL_COMMAND FL_META
@ -106,7 +105,6 @@ typedef unsigned __int64 FL_SOCKET; /* *FIXME* - FL_SOCKET (see above) */
typedef int FL_SOCKET;
# endif
typedef struct HGLRC__ *GLContext;
#include <sys/stat.h>
#ifdef __MINGW32__
# include <dirent.h>
#else
@ -119,7 +117,6 @@ typedef struct flCairoRegion* Fl_Region;
typedef int FL_SOCKET; /**< socket or file descriptor */
typedef void *EGLContext;
typedef EGLContext GLContext;
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
@ -129,7 +126,6 @@ typedef unsigned long Fl_Offscreen;
typedef struct _XRegion *Fl_Region;
typedef int FL_SOCKET;
typedef struct __GLXcontextRec *GLContext;
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>

View File

@ -112,7 +112,7 @@ public:
virtual int execvp(const char * /*file*/, char *const * /*argv*/) {return -1;}
virtual int chmod(const char* /*f*/, int /*mode*/) {return -1;}
virtual int access(const char* /*f*/, int /*mode*/) { return -1;}
virtual int stat(const char* /*f*/, struct stat *) { return -1;}
virtual int flstat(const char* /*f*/, struct stat *) { return -1;}
virtual char *getcwd(char* /*b*/, int /*l*/) {return NULL;}
virtual int chdir(const char*) {return -1;}
virtual int unlink(const char*) {return -1;}

View File

@ -54,7 +54,7 @@ public:
virtual int execvp(const char *file, char *const *argv);
virtual int chmod(const char *fnam, int mode);
virtual int access(const char *fnam, int mode);
virtual int stat(const char *fnam, struct stat *b);
virtual int flstat(const char *fnam, struct stat *b);
virtual char *getcwd(char *b, int l);
virtual int chdir(const char *path);
virtual int unlink(const char *fnam);

View File

@ -243,7 +243,7 @@ int Fl_WinAPI_System_Driver::access(const char *fnam, int mode) {
return _waccess(utf8_to_wchar(fnam, wbuf), mode);
}
int Fl_WinAPI_System_Driver::stat(const char *fnam, struct stat *b) {
int Fl_WinAPI_System_Driver::flstat(const char *fnam, struct stat *b) {
// remove trailing '/' or '\'
unsigned len = (unsigned)strlen(fnam);

View File

@ -3,7 +3,7 @@
//
// Author: Jean-Marc Lienher ( http://oksid.ch )
// Copyright 2000-2010 by O'ksi'D.
// Copyright 2016-2020 by Bill Spitzak and others.
// Copyright 2016-2022 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
@ -462,7 +462,7 @@ int fl_access(const char* f, int mode) {
\return the return value of _wstat() on Windows or stat() on other platforms.
*/
int fl_stat(const char* f, struct stat *b) {
return Fl::system_driver()->stat(f, b);
return Fl::system_driver()->flstat(f, b);
}
/** Cross-platform function to change the current working directory,