mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-13 15:56:23 +01:00
dc11b4370f
2005-04-27 Tor Lillqvist <tml@novell.com> * glib/gconvert.c (open_converter, g_convert_with_iconv): Don't call g_set_error() unless the GError pointer is non-NULL. This avoids infinite recursion problems in certain rare situations on Windows, when g_locale_from_utf8() is called from _glib_get_locale_dir() after the change below. It's the _glib_gettext() calls to translate error messages that are parameters to g_set_error() that cause the recursion, not g_set_error() itself. * glib/gwin32.c (g_win32_locale_filename_from_utf8): New function. Converts a filename to the system codepage, and if a straight conversion isn't possible (because the filename contains characters not in the system codepage), try looking up the filename (which should refer to an existing file for this to succeed) with short (8.3) pathname components. * glib/gutils.c (_glib_get_locale_dir): No need to cache the result, this function is normally called only once. Return the path to the locale directory in system codepage, not UTF-8. The path is passed to bindtextdomain(), which doesn't use UTF-8 file names. Use g_win32_locale_filename_from_utf8(). (#301772) Don't do run-time lookup of message catalog directory on Cygwin. Cygwin is supposed to look and feel like Unix, and on Unix we use paths fixed at configure time.
104 lines
3.4 KiB
C
104 lines
3.4 KiB
C
/* 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 <glib/gtypes.h>
|
|
|
|
#ifdef G_PLATFORM_WIN32
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#ifndef MAXPATHLEN
|
|
#define MAXPATHLEN 1024
|
|
#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).
|
|
*
|
|
* 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: <io.h>
|
|
* pipe: <io.h>
|
|
*/
|
|
|
|
/* 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 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:
|
|
*/
|
|
gint g_win32_ftruncate (gint f,
|
|
guint size);
|
|
#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"
|
|
* 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);
|
|
|
|
#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
|
|
|
|
gchar* g_win32_get_package_installation_directory (gchar *package,
|
|
gchar *dll_name);
|
|
|
|
gchar* g_win32_get_package_installation_subdirectory (gchar *package,
|
|
gchar *dll_name,
|
|
gchar *subdir);
|
|
|
|
guint g_win32_get_windows_version (void);
|
|
|
|
gchar* g_win32_locale_filename_from_utf8 (const gchar *utf8filename);
|
|
|
|
#define G_WIN32_IS_NT_BASED() (g_win32_get_windows_version () < 0x80000000)
|
|
#define G_WIN32_HAVE_WIDECHAR_API() (G_WIN32_IS_NT_BASED ())
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* G_PLATFORM_WIN32 */
|
|
|
|
#endif /* __G_WIN32_H__ */
|