1 /* w32lib.h - Posix emulation layer for Sylpheed (Claws)
3 * This file is part of w32lib.
5 * w32lib is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * w32lib is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
20 * The code has been taken from the package
21 * http://claws.sylpheed.org/win32/sylpheed/w32lib-dev-2004.2.3.0.zip
22 * on 2005-11-17 by Werner Koch <wk@gnupg.org>. There are no regular
23 * copyright notices but the file version.rc from the ZIP archive
26 * #define FILEVER "2004.2.3.0\0"
27 * #define PRODVER "2004.2.3\0"
30 * VALUE "FileDescription", "Posix emulation layer for Sylpheed (Claws)\0"
31 * VALUE "FileVersion", FILEVER
32 * VALUE "ProductVersion", PRODVER
33 * VALUE "LegalCopyright", "GPL\0"
34 * VALUE "CompanyName", "GNU / Free Software Foundation\0"
35 * VALUE "ProductName", "w32lib\0"
37 * Along with the fact that Sylpheed is under the GPL we can assume
38 * that this code is under the GPL. No author information or
39 * changelogs have been found.
40 * Files taken form the package are:
41 * w32_dirent.c w32_reg.c w32_stat.c w32_stdlib.c w32_time.c w32_wait.c
42 * w32_gettext.c w32_signal.c w32_stdio.c w32_string.c w32_unistd.c
47 2007-05-21 Werner Koch <wk@g10code.com>
49 * src/common/w32_account.c: New.
51 * src/common/w32lib.h: Undef "interface".
53 2005-11-17 Werner Koch <wk@g10code.com>
55 Add boilerplate text to all files and explain legal status.
57 * w32_reg.c: Replaced g_free and g_strdup by regular C functions.
58 (get_content_type_from_registry_with_ext): Ditto.
59 * w32_dirent.c (readdir): Ditto.
61 (closedir): Reformatted.
62 (readdir): Reformatted, replaced use of g_strdup_printf and other
63 g-style malloc function by regular ones. Use DIR structure from mingw.
64 * w32lib.h: Don't define finddata_t for mingw. Replaced replacement
65 DIR structure by the one form mingw. Allocate filename in dirent
66 statically to match the defintion ussed by mingw.
67 * w32_reg.c (read_w32_registry_string): Return error for invalid root
85 /* Mingw32 3.4.4 defines interface to struct and thus breaks our own
86 use of that symbol. Undef it here. */
87 #if defined(_BASETYPS_H) && defined(interface)
95 typedef long int off_t;
97 typedef unsigned char u_char;
98 #endif /* __MINGW32__ */
99 typedef unsigned int uid_t;
103 #define S_IRUSR _S_IREAD
104 #define S_IWUSR _S_IWRITE
105 #define S_IXUSR _S_IEXEC
106 #define S_IRWXU (_S_IREAD|_S_IWRITE|_S_IEXEC)
107 #endif /* __MINGW32__ */
111 #define SIGPIPE _S_IFIFO
115 #define __S_ISTYPE(mode, mask) (((mode) & _S_IFMT) == (mask))
117 #define S_ISFIFO(mode) __S_ISTYPE((mode), _S_IFIFO)
118 #define S_ISDIR(mode) __S_ISTYPE((mode), _S_IFDIR)
119 #define S_ISREG(mode) __S_ISTYPE((mode), _S_IFREG)
120 #endif /* __MINGW32__ */
124 int strcasecmp( const char *s1, const char *s2 );
126 int strncasecmp( const char *s1, const char *s2, size_t n );
130 typedef void * HANDLE;
132 #ifndef _FINDDATA_T_DEFINED
133 typedef unsigned long _fsize_t; /* Could be 64 bits for Win32 */
136 time_t time_create; /* -1 for FAT file systems */
137 time_t time_access; /* -1 for FAT file systems */
142 #endif /* !_FINDDATA_T_DEFINED */
146 unsigned short d_reclen;
147 unsigned short d_namlen;
148 char d_name[FILENAME_MAX];
153 struct _finddata_t dd_dta;
154 struct dirent dd_dir;
160 #endif /* !__MINGW32__ */
163 DIR *opendir( const char *name );
164 int closedir( DIR *dir );
165 struct dirent *readdir( DIR *dir );
175 int lstat( const char *file_name, struct stat *buf );
178 pid_t waitpid( pid_t pid, int *status, int options );
181 int gettimeofday( struct timeval *tv, struct timezone *tz );
184 uid_t getuid( void );
185 int setpgid( pid_t pid, pid_t pgid );
186 pid_t getppid( void );
188 unsigned int sleep( unsigned int seconds );
189 int link( const char *oldpath, const char *newpath );
190 int usleep( unsigned long usec );
193 long int random( void );
194 void srandom( unsigned int seed );
195 int truncate( const char *path, off_t length );
198 int kill( pid_t pid, int sig );
201 FILE *popen( const char *command, const char *type );
202 int pclose( FILE *stream );
204 /*** w32_account.c ***/
205 int w32_is_administrator (void);
208 char *read_w32_registry_string( char *parent, char *section, char *key );
209 char *get_content_type_from_registry_with_ext( char *ext );
212 /* Simulate thread-safe versions of some functions. */
213 #define gmtime_r(time, resultp) gmtime (time)
214 #define localtime_r(time, resultp) localtime (time)
215 #define asctime_r(time, buffer) asctime (time)
216 #define ctime_r(time, buffer) ctime (time)