/*
This file is part of PlibC.
- (C) 2005, 2006, 2007, 2008, 2009, 2010 Nils Durner (and other contributing authors)
+ Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Nils Durner (and other contributing authors)
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
- * @file include/plibc.h
- * @brief PlibC header
+ * @file
+ * PlibC header
+ *
* @attention This file is usually not installed under Unix,
* so ship it with your application
- * @version $Revision: 149 $
+ *
+ * @version $Revision: 158 $
*/
#ifndef _PLIBC_H_
/* Convert LARGE_INTEGER to double */
#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + \
(double)((x).LowPart))
-#ifndef __MINGW64_VERSION_MAJOR
-struct stat64
+#ifndef HAVE_DECL__STATI64
+struct _stati64
{
_dev_t st_dev;
_ino_t st_ino;
short st_gid;
_dev_t st_rdev;
__int64 st_size;
- __time64_t st_atime;
- __time64_t st_mtime;
- __time64_t st_ctime;
+ time_t st_atime;
+ time_t st_mtime;
+ time_t st_ctime;
};
#endif
typedef unsigned int sa_family_t;
/* Make sure it's the same as WSATIMEDOUT */
# define ETIMEDOUT 138 /* Connection timed out */
#endif
-#if !defined(EWOULDBLOCK) || EWOULBLOCK == 140
+#if !defined(EWOULDBLOCK) || EWOULDBLOCK == 140
# undef EWOULDBLOCK /* MinGW-w64 defines it as 140, but we want it as EAGAIN */
# define EWOULDBLOCK EAGAIN /* Operation would block */
#endif
long f_namelen; /* maximum length of filenames */
long f_spare[6]; /* spare for later */
};
-
-/* Taken from the Wine project <http://www.winehq.org>
- /wine/include/winternl.h */
-enum SYSTEM_INFORMATION_CLASS
-{
- SystemBasicInformation = 0,
- Unknown1,
- SystemPerformanceInformation = 2,
- SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */
- Unknown4,
- SystemProcessInformation = 5,
- Unknown6,
- Unknown7,
- SystemProcessorPerformanceInformation = 8,
- Unknown9,
- Unknown10,
- SystemDriverInformation,
- Unknown12,
- Unknown13,
- Unknown14,
- Unknown15,
- SystemHandleList,
- Unknown17,
- Unknown18,
- Unknown19,
- Unknown20,
- SystemCacheInformation,
- Unknown22,
- SystemInterruptInformation = 23,
- SystemExceptionInformation = 33,
- SystemRegistryQuotaInformation = 37,
- SystemLookasideInformation = 45
-};
-
-typedef struct
-{
- LARGE_INTEGER IdleTime;
- LARGE_INTEGER KernelTime;
- LARGE_INTEGER UserTime;
- LARGE_INTEGER Reserved1[2];
- ULONG Reserved2;
-} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
-
#define sleep(secs) (Sleep(secs * 1000))
/*********************** statfs *****************************/
#define LOCK_UN 8 /* remove lock */
/* Not supported under MinGW */
+#ifndef S_IRGRP
#define S_IRGRP 0
+#endif
+#ifndef S_IWGRP
#define S_IWGRP 0
+#endif
+#ifndef S_IROTH
#define S_IROTH 0
+#endif
+#ifndef S_IXGRP
#define S_IXGRP 0
+#endif
+#ifndef S_IWOTH
#define S_IWOTH 0
+#endif
+#ifndef S_IXOTH
#define S_IXOTH 0
+#endif
+#ifndef S_ISUID
#define S_ISUID 0
+#endif
+#ifndef S_ISGID
#define S_ISGID 0
+#endif
+#ifndef S_ISVTX
#define S_ISVTX 0
+#endif
+#ifndef S_IRWXG
#define S_IRWXG 0
+#endif
+#ifndef S_IRWXO
#define S_IRWXO 0
+#endif
#define SHUT_WR SD_SEND
#define SHUT_RD SD_RECEIVE
typedef void (*TPanicProc) (int, char *);
void plibc_set_panic_proc(TPanicProc proc);
+void plibc_set_stat_size_size(int iLength);
+void plibc_set_stat_time_size(int iLength);
int flock(int fd, int operation);
int fsync(int fildes);
int _win_creat(const char *path, mode_t mode);
char *_win_ctime(const time_t *clock);
char *_win_ctime_r(const time_t *clock, char *buf);
-int _win_fstat(int handle, struct _stat *buffer);
+int _win_fstat(int handle, struct stat *buffer);
int _win_ftruncate(int fildes, off_t length);
int _win_truncate(const char *fname, int distance);
int _win_kill(pid_t pid, int sig);
int _win_pipe(int *phandles);
-intptr_t _win_mkfifo(const char *path, mode_t mode);
+int _win_mkfifo(const char *path, mode_t mode);
int _win_rmdir(const char *path);
int _win_access( const char *path, int mode );
int _win_chmod(const char *filename, int pmode);
void _win_srandom(unsigned int seed);
int _win_remove(const char *path);
int _win_rename(const char *oldname, const char *newname);
-int _win_stat(const char *path, struct _stat *buffer);
-int _win_stat64(const char *path, struct stat64 *buffer);
+int _win_stat(const char *path, struct stat *buffer);
+int _win_stati64(const char *path, struct _stati64 *buffer);
long _win_sysconf(int name);
int _win_unlink(const char *filename);
int _win_write(int fildes, const void *buf, size_t nbyte);
unsigned long long offset);
int _win_msync(void *start, size_t length, int flags);
int _win_munmap(void *start, size_t length);
-int _win_lstat(const char *path, struct _stat *buf);
-int _win_lstat64(const char *path, struct stat64 *buf);
+int _win_lstat(const char *path, struct stat *buf);
+int _win_lstati64(const char *path, struct _stati64 *buf);
int _win_readlink(const char *path, char *buf, size_t bufsize);
int _win_accept(int s, struct sockaddr *addr, int *addrlen);
#define TDESTROY(r, f) tdestroy(r, f)
#define LFIND(k, b, n, s, c) lfind(k, b, n, s, c)
#define LSEARCH(k, b, n, s, c) lsearch(k, b, n, s, c)
+ #define STRUCT_STAT64 struct stat64
#else
#define DIR_SEPARATOR '\\'
#define DIR_SEPARATOR_STR "\\"
#define REMOVE(p) _win_remove(p)
#define RENAME(o, n) _win_rename(o, n)
#define STAT(p, b) _win_stat(p, b)
- #define STAT64(p, b) _win_stat64(p, b)
+ #define STAT64(p, b) _win_stati64(p, b)
#define SYSCONF(n) _win_sysconf(n)
#define UNLINK(f) _win_unlink(f)
#define WRITE(f, b, n) _win_write(f, b, n)
#define STRERROR(i) _win_strerror(i)
#define READLINK(p, b, s) _win_readlink(p, b, s)
#define LSTAT(p, b) _win_lstat(p, b)
- #define LSTAT64(p, b) _win_lstat64(p, b)
+ #define LSTAT64(p, b) _win_lstati64(p, b)
#define PRINTF printf
#define FPRINTF fprintf
#define VPRINTF(f, a) vprintf(f, a)
#define TDESTROY(r, f) _win_tdestroy(r, f)
#define LFIND(k, b, n, s, c) _win_lfind(k, b, n, s, c)
#define LSEARCH(k, b, n, s, c) _win_lsearch(k, b, n, s, c)
+ #define STRUCT_STAT64 struct _stati64
#endif
/* search.h */