* 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.
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
/*
* 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/.
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
#ifndef __G_WIN32_H__
#define __G_WIN32_H__
-#include <gtypes.h>
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
-#ifdef G_OS_WIN32
+#include <glib/gtypes.h>
-/* Windows emulation stubs for common Unix functions
- */
+#ifdef G_PLATFORM_WIN32
G_BEGIN_DECLS
+#ifndef MAXPATHLEN
#define MAXPATHLEN 1024
-
-#ifdef _MSC_VER
-typedef int pid_t;
#endif
+#ifdef G_OS_WIN32
+
/*
* 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).
+ * in OLDNAMES.LIB (MSVC) or -lmoldname-msvc (mingw32). But note that
+ * for POSIX functions that take or return file names in the system
+ * codepage, in many cases you would want to use the GLib wrappers in
+ * gstdio.h and UTF-8 instead.
*
* getcwd: <direct.h> (MSVC), <io.h> (mingw32)
* getpid: <process.h>
* access: <io.h>
* unlink: <stdio.h> or <io.h>
* open, read, write, lseek, close: <io.h>
- * rmdir: <direct.h>
- * pipe: <direct.h>
+ * rmdir: <io.h>
+ * pipe: <io.h> (actually, _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.
+ * we provide emulation functions in glib, which are prefixed with
+ * g_win32_. Or that was the idea at some time, but there is just one
+ * of those:
*/
-# 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,
+GLIB_AVAILABLE_IN_ALL
+gint 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);
+#endif /* G_OS_WIN32 */
/* The MS setlocale uses locale names of the form "English_United
* States.1252" etc. We want the Unixish standard form "en", "zh_TW"
* 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);
+GLIB_AVAILABLE_IN_ALL
+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);
+GLIB_AVAILABLE_IN_ALL
+gchar* g_win32_error_message (gint error);
+
+#ifndef _WIN64
+GLIB_DEPRECATED
+gchar* g_win32_get_package_installation_directory (const gchar *package,
+ const gchar *dll_name);
+
+GLIB_DEPRECATED
+gchar* g_win32_get_package_installation_subdirectory (const gchar *package,
+ const gchar *dll_name,
+ const gchar *subdir);
+#endif
+
+GLIB_AVAILABLE_IN_ALL
+gchar* g_win32_get_package_installation_directory_of_module (gpointer hmodule);
+
+GLIB_AVAILABLE_IN_ALL
+guint g_win32_get_windows_version (void);
-gchar * g_win32_get_package_installation_directory (gchar *package,
- gchar *dll_name);
+GLIB_AVAILABLE_IN_ALL
+gchar* g_win32_locale_filename_from_utf8 (const gchar *utf8filename);
-gchar * g_win32_get_package_installation_subdirectory (gchar *package,
- gchar *dll_name,
- gchar *subdir);
+GLIB_AVAILABLE_IN_2_40
+gchar ** g_win32_get_command_line (void);
+
+/* As of GLib 2.14 we only support NT-based Windows */
+#define G_WIN32_IS_NT_BASED() TRUE
+#define G_WIN32_HAVE_WIDECHAR_API() TRUE
G_END_DECLS
-#endif /* G_OS_WIN32 */
+#endif /* G_PLATFORM_WIN32 */
+
+#ifdef G_OS_WIN32
+#ifdef _WIN64
+#define g_win32_get_package_installation_directory g_win32_get_package_installation_directory_utf8
+#define g_win32_get_package_installation_subdirectory g_win32_get_package_installation_subdirectory_utf8
+#endif
+
+GLIB_AVAILABLE_IN_ALL
+gchar *g_win32_get_package_installation_directory_utf8 (const gchar *package,
+ const gchar *dll_name);
+GLIB_AVAILABLE_IN_ALL
+gchar *g_win32_get_package_installation_subdirectory_utf8 (const gchar *package,
+ const gchar *dll_name,
+ const gchar *subdir);
+
+#endif /* G_OS_WIN32 */
#endif /* __G_WIN32_H__ */