From 4905022b8ecaf794faa9ce4ad9977cb7725e0b49 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Thu, 19 Oct 2000 17:52:12 +0000 Subject: [PATCH] Pass -DGSPAWN_HELPER when building it. Link with user32.lib. 2000-10-19 Tor Lillqvist * makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link with user32.lib. * gspawn-win32.c * gfileutils.c: Make them compile with picky MSVC. * gwin32.h: New file. Move Win32-only stuff that isn't related to GIOChannels here from giochannel.h. * Makefile.am: Add it here. * giochannel.h: Move stuff to gwin32.h. * glib.h: On Win32, include gwin32.h. --- ChangeLog | 17 +++++++ ChangeLog.pre-2-0 | 17 +++++++ ChangeLog.pre-2-10 | 17 +++++++ ChangeLog.pre-2-12 | 17 +++++++ ChangeLog.pre-2-2 | 17 +++++++ ChangeLog.pre-2-4 | 17 +++++++ ChangeLog.pre-2-6 | 17 +++++++ ChangeLog.pre-2-8 | 17 +++++++ Makefile.am | 3 +- gfileutils.c | 21 ++++++++- giochannel.h | 79 --------------------------------- glib.h | 3 ++ glib/Makefile.am | 3 +- glib/gfileutils.c | 21 ++++++++- glib/giochannel.h | 79 --------------------------------- glib/glib.h | 3 ++ glib/gspawn-win32.c | 2 + glib/gwin32.h | 117 +++++++++++++++++++++++++++++++++++++++++++++++++ glib/makefile.mingw.in | 2 +- glib/makefile.msc.in | 2 +- gspawn-win32.c | 2 + gwin32.h | 117 +++++++++++++++++++++++++++++++++++++++++++++++++ makefile.mingw.in | 2 +- makefile.msc.in | 2 +- 24 files changed, 428 insertions(+), 166 deletions(-) create mode 100644 glib/gwin32.h create mode 100644 gwin32.h diff --git a/ChangeLog b/ChangeLog index f0a1032..3afb230 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2000-10-19 Tor Lillqvist + + * makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link + with user32.lib. + + * gspawn-win32.c + * gfileutils.c: Make them compile with picky MSVC. + + * gwin32.h: New file. Move Win32-only stuff that isn't related to + GIOChannels here from giochannel.h. + + * Makefile.am: Add it here. + + * giochannel.h: Move stuff to gwin32.h. + + * glib.h: On Win32, include gwin32.h. + Mon Sep 11 10:03:24 2000 Owen Taylor * glib.h convert.c (g_convert_with_fallback): Change diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index f0a1032..3afb230 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,20 @@ +2000-10-19 Tor Lillqvist + + * makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link + with user32.lib. + + * gspawn-win32.c + * gfileutils.c: Make them compile with picky MSVC. + + * gwin32.h: New file. Move Win32-only stuff that isn't related to + GIOChannels here from giochannel.h. + + * Makefile.am: Add it here. + + * giochannel.h: Move stuff to gwin32.h. + + * glib.h: On Win32, include gwin32.h. + Mon Sep 11 10:03:24 2000 Owen Taylor * glib.h convert.c (g_convert_with_fallback): Change diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index f0a1032..3afb230 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,20 @@ +2000-10-19 Tor Lillqvist + + * makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link + with user32.lib. + + * gspawn-win32.c + * gfileutils.c: Make them compile with picky MSVC. + + * gwin32.h: New file. Move Win32-only stuff that isn't related to + GIOChannels here from giochannel.h. + + * Makefile.am: Add it here. + + * giochannel.h: Move stuff to gwin32.h. + + * glib.h: On Win32, include gwin32.h. + Mon Sep 11 10:03:24 2000 Owen Taylor * glib.h convert.c (g_convert_with_fallback): Change diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index f0a1032..3afb230 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,20 @@ +2000-10-19 Tor Lillqvist + + * makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link + with user32.lib. + + * gspawn-win32.c + * gfileutils.c: Make them compile with picky MSVC. + + * gwin32.h: New file. Move Win32-only stuff that isn't related to + GIOChannels here from giochannel.h. + + * Makefile.am: Add it here. + + * giochannel.h: Move stuff to gwin32.h. + + * glib.h: On Win32, include gwin32.h. + Mon Sep 11 10:03:24 2000 Owen Taylor * glib.h convert.c (g_convert_with_fallback): Change diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index f0a1032..3afb230 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,20 @@ +2000-10-19 Tor Lillqvist + + * makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link + with user32.lib. + + * gspawn-win32.c + * gfileutils.c: Make them compile with picky MSVC. + + * gwin32.h: New file. Move Win32-only stuff that isn't related to + GIOChannels here from giochannel.h. + + * Makefile.am: Add it here. + + * giochannel.h: Move stuff to gwin32.h. + + * glib.h: On Win32, include gwin32.h. + Mon Sep 11 10:03:24 2000 Owen Taylor * glib.h convert.c (g_convert_with_fallback): Change diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index f0a1032..3afb230 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,20 @@ +2000-10-19 Tor Lillqvist + + * makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link + with user32.lib. + + * gspawn-win32.c + * gfileutils.c: Make them compile with picky MSVC. + + * gwin32.h: New file. Move Win32-only stuff that isn't related to + GIOChannels here from giochannel.h. + + * Makefile.am: Add it here. + + * giochannel.h: Move stuff to gwin32.h. + + * glib.h: On Win32, include gwin32.h. + Mon Sep 11 10:03:24 2000 Owen Taylor * glib.h convert.c (g_convert_with_fallback): Change diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index f0a1032..3afb230 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,20 @@ +2000-10-19 Tor Lillqvist + + * makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link + with user32.lib. + + * gspawn-win32.c + * gfileutils.c: Make them compile with picky MSVC. + + * gwin32.h: New file. Move Win32-only stuff that isn't related to + GIOChannels here from giochannel.h. + + * Makefile.am: Add it here. + + * giochannel.h: Move stuff to gwin32.h. + + * glib.h: On Win32, include gwin32.h. + Mon Sep 11 10:03:24 2000 Owen Taylor * glib.h convert.c (g_convert_with_fallback): Change diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index f0a1032..3afb230 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,20 @@ +2000-10-19 Tor Lillqvist + + * makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link + with user32.lib. + + * gspawn-win32.c + * gfileutils.c: Make them compile with picky MSVC. + + * gwin32.h: New file. Move Win32-only stuff that isn't related to + GIOChannels here from giochannel.h. + + * Makefile.am: Add it here. + + * giochannel.h: Move stuff to gwin32.h. + + * glib.h: On Win32, include gwin32.h. + Mon Sep 11 10:03:24 2000 Owen Taylor * glib.h convert.c (g_convert_with_fallback): Change diff --git a/Makefile.am b/Makefile.am index 5f1fe7a..67d7160 100644 --- a/Makefile.am +++ b/Makefile.am @@ -129,7 +129,8 @@ glibinclude_HEADERS = \ gtree.h \ gtypes.h \ gunicode.h \ - gutils.h + gutils.h \ + gwin32.h configexecincludedir = $(libdir)/glib-2.0/include #configexecinclude_DATA = glibconfig.h diff --git a/gfileutils.c b/gfileutils.c index 74b6ac7..20a8d37 100644 --- a/gfileutils.c +++ b/gfileutils.c @@ -33,8 +33,27 @@ #include #include +#ifdef G_OS_WIN32 +#include +#ifndef F_OK +#define F_OK 0 +#define X_OK 1 +#define W_OK 2 +#define R_OK 4 +#endif /* !F_OK */ + +#ifndef S_ISREG +#define S_ISREG(mode) ((mode)&_S_IFREG) +#endif + +#ifndef S_ISDIR +#define S_ISDIR(mode) ((mode)&_S_IFDIR) +#endif + +#endif /* G_OS_WIN32 */ + #ifndef S_ISLNK -# define S_ISLNK(x) 0 +#define S_ISLNK(x) 0 #endif #define _(x) x diff --git a/giochannel.h b/giochannel.h index b2ae71e..7992a69 100644 --- a/giochannel.h +++ b/giochannel.h @@ -183,85 +183,6 @@ GIOChannel *g_io_channel_win32_new_stream_socket (int socket); #endif -/* Windows emulation stubs for common Unix functions - */ -#ifdef G_OS_WIN32 -# define MAXPATHLEN 1024 - -#ifdef _MSC_VER -typedef int pid_t; -#endif - -/* - * To get prototypes for the following POSIXish functions, you have to - * include the indicated non-POSIX headers. The functions are defined - * in OLDNAMES.LIB (MSVC) or -lmoldname-msvc (mingw32). - * - * getcwd: (MSVC), (mingw32) - * getpid: - * access: - * unlink: or - * open, read, write, lseek, close: - * rmdir: - * pipe: - */ - -/* pipe is not in OLDNAMES.LIB or -lmoldname-msvc. */ -#define pipe(phandles) _pipe (phandles, 4096, _O_BINARY) - -/* For some POSIX functions that are not provided by the MS runtime, - * we provide emulators in glib, which are prefixed with g_win32_. - */ -# define ftruncate(fd, size) g_win32_ftruncate (fd, size) - -/* -lmingw32 also has emulations for these, but we need our own - * for MSVC anyhow, so we might aswell use them always. - */ -# define opendir g_win32_opendir -# define readdir g_win32_readdir -# define rewinddir g_win32_rewinddir -# define closedir g_win32_closedir -# define NAME_MAX 255 - -struct dirent -{ - gchar d_name[NAME_MAX + 1]; -}; - -struct DIR -{ - gchar *dir_name; - gboolean just_opened; - guint find_file_handle; - gpointer find_file_data; - struct dirent readdir_result; -}; -typedef struct DIR DIR; - -/* emulation functions */ -extern int g_win32_ftruncate (gint f, - guint size); -DIR* g_win32_opendir (const gchar *dirname); -struct dirent* g_win32_readdir (DIR *dir); -void g_win32_rewinddir (DIR *dir); -gint g_win32_closedir (DIR *dir); - -/* The MS setlocale uses locale names of the form "English_United - * States.1252" etc. We want the Unixish standard form "en", "zh_TW" - * etc. This function gets the current thread locale from Windows and - * returns it as a string of the above form for use in forming file - * names etc. The returned string should be deallocated with g_free(). - */ -gchar * g_win32_getlocale (void); - -/* Translate a Win32 error code (as returned by GetLastError()) into - * the corresponding message. The returned string should be deallocated - * with g_free(). - */ -gchar * g_win32_error_message (gint error); - -#endif /* G_OS_WIN32 */ - G_END_DECLS #endif /* __G_IOCHANNEL_H__ */ diff --git a/glib.h b/glib.h index de1b2ba..e9da8d4 100644 --- a/glib.h +++ b/glib.h @@ -65,5 +65,8 @@ #include #include #include +#ifdef G_OS_WIN32 +#include +#endif #endif /* __G_LIB_H__ */ diff --git a/glib/Makefile.am b/glib/Makefile.am index 5f1fe7a..67d7160 100644 --- a/glib/Makefile.am +++ b/glib/Makefile.am @@ -129,7 +129,8 @@ glibinclude_HEADERS = \ gtree.h \ gtypes.h \ gunicode.h \ - gutils.h + gutils.h \ + gwin32.h configexecincludedir = $(libdir)/glib-2.0/include #configexecinclude_DATA = glibconfig.h diff --git a/glib/gfileutils.c b/glib/gfileutils.c index 74b6ac7..20a8d37 100644 --- a/glib/gfileutils.c +++ b/glib/gfileutils.c @@ -33,8 +33,27 @@ #include #include +#ifdef G_OS_WIN32 +#include +#ifndef F_OK +#define F_OK 0 +#define X_OK 1 +#define W_OK 2 +#define R_OK 4 +#endif /* !F_OK */ + +#ifndef S_ISREG +#define S_ISREG(mode) ((mode)&_S_IFREG) +#endif + +#ifndef S_ISDIR +#define S_ISDIR(mode) ((mode)&_S_IFDIR) +#endif + +#endif /* G_OS_WIN32 */ + #ifndef S_ISLNK -# define S_ISLNK(x) 0 +#define S_ISLNK(x) 0 #endif #define _(x) x diff --git a/glib/giochannel.h b/glib/giochannel.h index b2ae71e..7992a69 100644 --- a/glib/giochannel.h +++ b/glib/giochannel.h @@ -183,85 +183,6 @@ GIOChannel *g_io_channel_win32_new_stream_socket (int socket); #endif -/* Windows emulation stubs for common Unix functions - */ -#ifdef G_OS_WIN32 -# define MAXPATHLEN 1024 - -#ifdef _MSC_VER -typedef int pid_t; -#endif - -/* - * To get prototypes for the following POSIXish functions, you have to - * include the indicated non-POSIX headers. The functions are defined - * in OLDNAMES.LIB (MSVC) or -lmoldname-msvc (mingw32). - * - * getcwd: (MSVC), (mingw32) - * getpid: - * access: - * unlink: or - * open, read, write, lseek, close: - * rmdir: - * pipe: - */ - -/* pipe is not in OLDNAMES.LIB or -lmoldname-msvc. */ -#define pipe(phandles) _pipe (phandles, 4096, _O_BINARY) - -/* For some POSIX functions that are not provided by the MS runtime, - * we provide emulators in glib, which are prefixed with g_win32_. - */ -# define ftruncate(fd, size) g_win32_ftruncate (fd, size) - -/* -lmingw32 also has emulations for these, but we need our own - * for MSVC anyhow, so we might aswell use them always. - */ -# define opendir g_win32_opendir -# define readdir g_win32_readdir -# define rewinddir g_win32_rewinddir -# define closedir g_win32_closedir -# define NAME_MAX 255 - -struct dirent -{ - gchar d_name[NAME_MAX + 1]; -}; - -struct DIR -{ - gchar *dir_name; - gboolean just_opened; - guint find_file_handle; - gpointer find_file_data; - struct dirent readdir_result; -}; -typedef struct DIR DIR; - -/* emulation functions */ -extern int g_win32_ftruncate (gint f, - guint size); -DIR* g_win32_opendir (const gchar *dirname); -struct dirent* g_win32_readdir (DIR *dir); -void g_win32_rewinddir (DIR *dir); -gint g_win32_closedir (DIR *dir); - -/* The MS setlocale uses locale names of the form "English_United - * States.1252" etc. We want the Unixish standard form "en", "zh_TW" - * etc. This function gets the current thread locale from Windows and - * returns it as a string of the above form for use in forming file - * names etc. The returned string should be deallocated with g_free(). - */ -gchar * g_win32_getlocale (void); - -/* Translate a Win32 error code (as returned by GetLastError()) into - * the corresponding message. The returned string should be deallocated - * with g_free(). - */ -gchar * g_win32_error_message (gint error); - -#endif /* G_OS_WIN32 */ - G_END_DECLS #endif /* __G_IOCHANNEL_H__ */ diff --git a/glib/glib.h b/glib/glib.h index de1b2ba..e9da8d4 100644 --- a/glib/glib.h +++ b/glib/glib.h @@ -65,5 +65,8 @@ #include #include #include +#ifdef G_OS_WIN32 +#include +#endif #endif /* __G_LIB_H__ */ diff --git a/glib/gspawn-win32.c b/glib/gspawn-win32.c index 11779da..c1bb222 100644 --- a/glib/gspawn-win32.c +++ b/glib/gspawn-win32.c @@ -44,12 +44,14 @@ #include #include +#include #include #include #include #include #include +#include #ifdef _ #warning "FIXME remove gettext hack" diff --git a/glib/gwin32.h b/glib/gwin32.h new file mode 100644 index 0000000..6a6dde4 --- /dev/null +++ b/glib/gwin32.h @@ -0,0 +1,117 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * 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. + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_WIN32_H__ +#define __G_WIN32_H__ + +#include + +#ifdef G_OS_WIN32 + +/* Windows emulation stubs for common Unix functions + */ + +G_BEGIN_DECLS + +#define MAXPATHLEN 1024 + +#ifdef _MSC_VER +typedef int pid_t; +#endif + +/* + * To get prototypes for the following POSIXish functions, you have to + * include the indicated non-POSIX headers. The functions are defined + * in OLDNAMES.LIB (MSVC) or -lmoldname-msvc (mingw32). + * + * getcwd: (MSVC), (mingw32) + * getpid: + * access: + * unlink: or + * open, read, write, lseek, close: + * rmdir: + * pipe: + */ + +/* pipe is not in OLDNAMES.LIB or -lmoldname-msvc. */ +#define pipe(phandles) _pipe (phandles, 4096, _O_BINARY) + +/* For some POSIX functions that are not provided by the MS runtime, + * we provide emulators in glib, which are prefixed with g_win32_. + */ +# define ftruncate(fd, size) g_win32_ftruncate (fd, size) + +/* -lmingw32 also has emulations for these, but we need our own + * for MSVC anyhow, so we might aswell use them always. + */ +# define opendir g_win32_opendir +# define readdir g_win32_readdir +# define rewinddir g_win32_rewinddir +# define closedir g_win32_closedir +# define NAME_MAX 255 + +struct dirent +{ + gchar d_name[NAME_MAX + 1]; +}; + +struct DIR +{ + gchar *dir_name; + gboolean just_opened; + guint find_file_handle; + gpointer find_file_data; + struct dirent readdir_result; +}; +typedef struct DIR DIR; + +/* emulation functions */ +extern int g_win32_ftruncate (gint f, + guint size); +DIR* g_win32_opendir (const gchar *dirname); +struct dirent* g_win32_readdir (DIR *dir); +void g_win32_rewinddir (DIR *dir); +gint g_win32_closedir (DIR *dir); + +/* The MS setlocale uses locale names of the form "English_United + * States.1252" etc. We want the Unixish standard form "en", "zh_TW" + * etc. This function gets the current thread locale from Windows and + * returns it as a string of the above form for use in forming file + * names etc. The returned string should be deallocated with g_free(). + */ +gchar * g_win32_getlocale (void); + +/* Translate a Win32 error code (as returned by GetLastError()) into + * the corresponding message. The returned string should be deallocated + * with g_free(). + */ +gchar * g_win32_error_message (gint error); + +G_END_DECLS + +#endif /* G_OS_WIN32 */ + +#endif /* __G_IOCHANNEL_H__ */ diff --git a/glib/makefile.mingw.in b/glib/makefile.mingw.in index 918cf7d..7939dc5 100644 --- a/glib/makefile.mingw.in +++ b/glib/makefile.mingw.in @@ -97,7 +97,7 @@ glib-$(GLIB_VER).dll : $(glib_OBJECTS) glib.def ./build-dll glib $(GLIB_VER) glib.def $(glib_OBJECTS) $(LIBICONV_LIBS) -luser32 -lwsock32 gspawn-win32-helper.exe : gspawn-win32.c - $(CC) $(CFLAGS) -mwindows -DGSPAWN_HELPER -DG_LOG_DOMAIN=\"gspawn-win32-helper\" -o $@ $< -L . -lglib-$(GLIB_VER) + $(CC) $(CFLAGS) -mwindows -DGSPAWN_HELPER -DG_LOG_DOMAIN=\"gspawn-win32-helper\" -o $@ $< -L . -lglib-$(GLIB_VER) ################ subdirectories diff --git a/glib/makefile.msc.in b/glib/makefile.msc.in index c64cabd..7db5737 100644 --- a/glib/makefile.msc.in +++ b/glib/makefile.msc.in @@ -94,7 +94,7 @@ glib-$(GLIB_VER).dll : $(glib_OBJECTS) glib.def $(CC) $(CFLAGS) -LD -Feglib-$(GLIB_VER).dll $(glib_OBJECTS) $(LIBICONV_LIBS) user32.lib advapi32.lib wsock32.lib $(LDFLAGS) /def:glib.def gspawn-win32-helper.exe : gspawn-win32.c glib-$(GLIB_VER).dll - $(CC) $(CFLAGS) -Fe$@ -DG_LOG_DOMAIN=\"gspawn-win32-helper\" gspawn-win32.c glib-$(GLIB_VER).lib $(LDFLAGS) /subsystem:windows + $(CC) $(CFLAGS) -Fe$@ -DGSPAWN_HELPER -DG_LOG_DOMAIN=\"gspawn-win32-helper\" gspawn-win32.c glib-$(GLIB_VER).lib $(LDFLAGS) /subsystem:windows user32.lib ################ subdirectories diff --git a/gspawn-win32.c b/gspawn-win32.c index 11779da..c1bb222 100644 --- a/gspawn-win32.c +++ b/gspawn-win32.c @@ -44,12 +44,14 @@ #include #include +#include #include #include #include #include #include +#include #ifdef _ #warning "FIXME remove gettext hack" diff --git a/gwin32.h b/gwin32.h new file mode 100644 index 0000000..6a6dde4 --- /dev/null +++ b/gwin32.h @@ -0,0 +1,117 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * 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. + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __G_WIN32_H__ +#define __G_WIN32_H__ + +#include + +#ifdef G_OS_WIN32 + +/* Windows emulation stubs for common Unix functions + */ + +G_BEGIN_DECLS + +#define MAXPATHLEN 1024 + +#ifdef _MSC_VER +typedef int pid_t; +#endif + +/* + * To get prototypes for the following POSIXish functions, you have to + * include the indicated non-POSIX headers. The functions are defined + * in OLDNAMES.LIB (MSVC) or -lmoldname-msvc (mingw32). + * + * getcwd: (MSVC), (mingw32) + * getpid: + * access: + * unlink: or + * open, read, write, lseek, close: + * rmdir: + * pipe: + */ + +/* pipe is not in OLDNAMES.LIB or -lmoldname-msvc. */ +#define pipe(phandles) _pipe (phandles, 4096, _O_BINARY) + +/* For some POSIX functions that are not provided by the MS runtime, + * we provide emulators in glib, which are prefixed with g_win32_. + */ +# define ftruncate(fd, size) g_win32_ftruncate (fd, size) + +/* -lmingw32 also has emulations for these, but we need our own + * for MSVC anyhow, so we might aswell use them always. + */ +# define opendir g_win32_opendir +# define readdir g_win32_readdir +# define rewinddir g_win32_rewinddir +# define closedir g_win32_closedir +# define NAME_MAX 255 + +struct dirent +{ + gchar d_name[NAME_MAX + 1]; +}; + +struct DIR +{ + gchar *dir_name; + gboolean just_opened; + guint find_file_handle; + gpointer find_file_data; + struct dirent readdir_result; +}; +typedef struct DIR DIR; + +/* emulation functions */ +extern int g_win32_ftruncate (gint f, + guint size); +DIR* g_win32_opendir (const gchar *dirname); +struct dirent* g_win32_readdir (DIR *dir); +void g_win32_rewinddir (DIR *dir); +gint g_win32_closedir (DIR *dir); + +/* The MS setlocale uses locale names of the form "English_United + * States.1252" etc. We want the Unixish standard form "en", "zh_TW" + * etc. This function gets the current thread locale from Windows and + * returns it as a string of the above form for use in forming file + * names etc. The returned string should be deallocated with g_free(). + */ +gchar * g_win32_getlocale (void); + +/* Translate a Win32 error code (as returned by GetLastError()) into + * the corresponding message. The returned string should be deallocated + * with g_free(). + */ +gchar * g_win32_error_message (gint error); + +G_END_DECLS + +#endif /* G_OS_WIN32 */ + +#endif /* __G_IOCHANNEL_H__ */ diff --git a/makefile.mingw.in b/makefile.mingw.in index 918cf7d..7939dc5 100644 --- a/makefile.mingw.in +++ b/makefile.mingw.in @@ -97,7 +97,7 @@ glib-$(GLIB_VER).dll : $(glib_OBJECTS) glib.def ./build-dll glib $(GLIB_VER) glib.def $(glib_OBJECTS) $(LIBICONV_LIBS) -luser32 -lwsock32 gspawn-win32-helper.exe : gspawn-win32.c - $(CC) $(CFLAGS) -mwindows -DGSPAWN_HELPER -DG_LOG_DOMAIN=\"gspawn-win32-helper\" -o $@ $< -L . -lglib-$(GLIB_VER) + $(CC) $(CFLAGS) -mwindows -DGSPAWN_HELPER -DG_LOG_DOMAIN=\"gspawn-win32-helper\" -o $@ $< -L . -lglib-$(GLIB_VER) ################ subdirectories diff --git a/makefile.msc.in b/makefile.msc.in index c64cabd..7db5737 100644 --- a/makefile.msc.in +++ b/makefile.msc.in @@ -94,7 +94,7 @@ glib-$(GLIB_VER).dll : $(glib_OBJECTS) glib.def $(CC) $(CFLAGS) -LD -Feglib-$(GLIB_VER).dll $(glib_OBJECTS) $(LIBICONV_LIBS) user32.lib advapi32.lib wsock32.lib $(LDFLAGS) /def:glib.def gspawn-win32-helper.exe : gspawn-win32.c glib-$(GLIB_VER).dll - $(CC) $(CFLAGS) -Fe$@ -DG_LOG_DOMAIN=\"gspawn-win32-helper\" gspawn-win32.c glib-$(GLIB_VER).lib $(LDFLAGS) /subsystem:windows + $(CC) $(CFLAGS) -Fe$@ -DGSPAWN_HELPER -DG_LOG_DOMAIN=\"gspawn-win32-helper\" gspawn-win32.c glib-$(GLIB_VER).lib $(LDFLAGS) /subsystem:windows user32.lib ################ subdirectories -- 2.7.4