54 Commits

Author SHA1 Message Date
Stefan Sauer
2812219adb docs: add missing '*' chars at start of doc-comments 2017-11-12 16:36:16 +01:00
Руслан Ижбулатов
53bd6a359f W32: Add a stat() implementation for private use
This commit adds new W32-only functions to gstdio.c,
and a new header file, gstdioprivate.h.
These functions are:
g_win32_stat_utf8()
g_win32_lstat_utf8()
g_win32_fstat()
and they fill a private structure, GWin32PrivateStat,
which has all the fields that normal stat has, as well as some
extras.

These functions are then used throughout glib and gio to get better
data about the system. Specifically:
* Full, 64-bit size, guaranteed (g_stat() is forced to use 32-bit st_size)
* Full, 64-bit file identifier (st_ino is 0 when normal stat() is used, and still is)
* W32 File attributes (which stat() doesn't report); in particular, this allows
  symlinks to be correctly identified
* Full, 64-bit time, guaranteed (g_stat() uses 32-bit st_*time on 32-bit Windows)
* Allocated file size (as a W32 replacement for the missing st_blocks)

st_mode remains unchanged (thus, no S_ISLNK), so when these are given back to
glib users (via g_stat(), for example, which is now implemented by calling g_win32_stat_utf8),
this field does not contain anything unexpected.

g_lstat() now calls g_win32_lstat_utf8(), which works on symlinks the way it's supposed to.

Also adds the g_win32_readlink_utf8() function, which behaves like readlink()
(including its inability to return 0-terminated strings and inability to say how large
the output buffer should be; these limitations are purely for compatibility with
existing glib code).

Thus, symlink support should now be much better, although far from being complete.

A new W32-only test in gio/tests/file.c highlights the following features:
* allocated size
* 64-bit time
* unique file IDs

https://bugzilla.gnome.org/show_bug.cgi?id=788180
2017-11-01 12:46:38 +00:00
Sébastien Wilmet
f9faac7661 glib/: LGPLv2+ -> LGPLv2.1+
All glib/*.{c,h} files have been processed, as well as gtester-report.

12 of those files are not licensed under LGPL:

	gbsearcharray.h
	gconstructor.h
	glibintl.h
	gmirroringtable.h
	gscripttable.h
	gtranslit-data.h
	gunibreak.h
	gunichartables.h
	gunicomp.h
	gunidecomp.h
	valgrind.h
	win_iconv.c

Some of them are generated files, some are licensed under a BSD-style
license and win_iconv.c is in the public domain.

Sub-directories inside glib/:

	deprecated/: processed in a previous commit
	glib-mirroring-tab/: already LGPLv2.1+
	gnulib/: not modified, the code is copied from gnulib
	libcharset/: a copy
	pcre/: a copy
	tests/: processed in a previous commit

https://bugzilla.gnome.org/show_bug.cgi?id=776504
2017-05-24 11:58:19 +02:00
Sébastien Wilmet
8edcf67b02 License headers: "GLib" -> "This library"
Harmonize a little the license headers. In most of the license headers
in GLib, it is "This library".

It is also what is explained at:
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html#SEC4
"How to Apply These Terms to Your New Libraries"

https://bugzilla.gnome.org/show_bug.cgi?id=776586
2017-01-04 19:12:56 +01:00
Christian Hergert
18a33f72db introspection: use (nullable) or (optional) instead of (allow-none)
If we have an input parameter (or return value) we need to use (nullable).
However, if it is an (inout) or (out) parameter, (optional) is sufficient.

It looks like (nullable) could be used for everything according to the
Annotation documentation, but (optional) is more specific.
2016-11-22 14:14:37 -08:00
Christoph Reiter
41013a01f4 glib: Add filename type annotations
Adds the filename annotation for all file names
and things which can contain file names like
environment variables, argv-

On Unix they can contain anything while on Windows
they are always utf-8.

https://bugzilla.gnome.org/show_bug.cgi?id=767245
2016-06-04 20:38:33 +02:00
Xavier Claessens
1a2a689dea Doc: glib: Fix all undocumented/unused/undeclared symbols
There is one issue left in gscanner.h due to a bug #741305 in gtk-doc.

https://bugzilla.gnome.org/show_bug.cgi?id=740814
2014-12-12 11:01:37 -05:00
Daniel Mustieles
078dbda148 Updated FSF's address 2014-01-31 14:31:55 +01:00
Matthias Clasen
3d42934b71 Docs: don't use the structname tag
Just avoid explicit docbook markup.
2014-01-31 00:29:14 -05:00
Dan Winship
158dde0507 Replace #ifdef HAVE_UNISTD_H checks with #ifdef G_OS_UNIX
In Windows development environments that have it, <unistd.h> is mostly
just a wrapper around several other native headers (in particular,
<io.h>, which contains read(), close(), etc, and <process.h>, which
contains getpid()). But given that some Windows dev environments don't
have <unistd.h>, everything that uses those functions on Windows
already needed to include the correct Windows header as well, and so
there is never any point to including <unistd.h> on Windows.

Also, remove some <unistd.h> includes (and a few others) that were
unnecessary even on unix.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:25:39 -05:00
Dan Winship
51a917bc16 Remove alleged support for BeOS
Since the initial addition of BeOS support in 1999, there has only
been one update to it (in 2005, and it wasn't even very big). GLib is
known to not currently build on Haiku (or presumably actual BeOS)
without additional patching, and the fact that there isn't a single
G_OS_BEOS check in gio/ is suspicious.

Additionally, other than the GModule implementation, all of the
existing G_OS_BEOS checks are either (a) "G_OS_UNIX || G_OS_BEOS", or
(b) random minor POSIXy tweaks (include this header file rather than
that one, etc), suggesting that if we were going to support Haiku, it
would probably be simpler to treat it as a special kind of G_OS_UNIX
(as we do with Mac OS X) rather than as its own completely different
thing.

So, kill G_OS_BEOS.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00
Matthias Clasen
c81773da9c Add Since tag for g_close
The lack of this information in the docs was pointed out in

https://bugzilla.gnome.org/show_bug.cgi?id=707092
2013-09-01 14:56:23 -04:00
Colin Walters
f398bec5bc Add g_close(), use it
There are two benefits to this:

1) We can centralize any operating system specific knowledge of
   close-vs-EINTR handling.  For example, while on Linux we should never
   retry, if someone cared enough later about HP-UX, they could come by
   and change this one spot.
2) For places that do care about the return value and want to provide
   the caller with a GError, this function makes it convenient to do so.

Note that gspawn.c had an incorrect EINTR loop-retry around close().

https://bugzilla.gnome.org/show_bug.cgi?id=682819
2013-01-29 09:46:04 -05:00
Colin Walters
ce976bcac7 gstdio: Harden g_open() against EINTR
Noticed by code inspection, when auditing some of my code for EINTR
handling.

https://bugzilla.gnome.org/show_bug.cgi?id=682819
2012-08-27 18:10:12 -04:00
Robert Ancell
4143842eb4 Add missing allow-none annotations for function parameters.
Found using:
find . -name '*.c' | xargs grep 'or %NULL' | grep ' \* @' | grep -v '@error' | grep -v allow-none
2012-03-31 20:34:28 +11:00
Stef Walter
7e92997539 documentation fixes
Fixes for gtk-doc warnings.

http://bugzilla.gnome.org/show_bug.cgi?id=66469

https://bugzilla.gnome.org/show_bug.cgi?id=664699
2011-12-13 23:01:51 -05:00
Tor Lillqvist
548ddd5fe9 Fix build on Windows and possibly other non-Linux platforms
Include glibconfig.h in files that test G_OS_WIN32. Include headers
for GLib APIs used conditionally where needed.
2010-09-06 15:57:32 +03:00
Matthias Clasen
04077ff5c5 More include cleanups 2010-09-03 23:03:14 -04:00
Ryan Lortie
7791fce38a Fix some glib docs warnings
Remove some symbols from glib-sections.txt that gtk-doc has no idea
about.

Add proper callback typedefs for GTester (gtk-doc dislikes inline
function types).

Fix some other minor issues.
2010-07-12 16:56:52 -04:00
Ryan Lortie
2e53e50244 glib/: fully remove galias hacks 2010-07-07 19:34:35 -04:00
Tor Lillqvist
1229281d95 Define a public documented type for the struct stat used by g_stat()
Define GStatBuf as the type used by g_stat() and g_lstat(). Replaces
the non-public struct tag _g_stat_struct. Mostly relevant for Windows
where there are several variants of stat-style structs. On POSIX, is
just another name for struct stat.

Actually, also on many POSIX systems there are in fact several
variants of struct stat and corresponding stat() and lstat()
functions, but as g_stat and g_lstat are normally on POSIX just macros
that expand to stat and lstat, this should not cause a problem. It's
only when it's the actual g_stat() or g_lstat() implementation inside
GLib that gets called that one needs to be sure the passed struct is
the same as what GLib expects.)
2010-03-30 19:22:39 +03:00
Tor Lillqvist
021643cda4 Clarify use of struct stat on Windows 2010-02-04 19:59:05 +02:00
Tor Lillqvist
274c2dc8c5 Bug 545485 - Implicit declaration of utime()
2008-07-30  Tor Lillqvist  <tml@novell.com>

	Bug 545485 - Implicit declaration of utime()

	* glib/gstdio.c: Include <utime.h> on POSIX.


svn path=/trunk/; revision=7273
2008-07-30 15:35:01 +00:00
Tor Lillqvist
59722c87e4 Improve Windows-specific parts of documentation. Mention the different C
2008-06-21  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c: Improve Windows-specific parts of
	documentation. Mention the different C library issue in more
	places.


svn path=/trunk/; revision=7068
2008-06-21 11:36:24 +00:00
Tor Lillqvist
fa7e176e4b Define X_OK if not defined (MSVC).
2008-06-07  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_access): Define X_OK if not defined (MSVC).


svn path=/trunk/; revision=6970
2008-06-07 04:03:47 +00:00
Tor Lillqvist
87bc41714f Mask out X_OK to avoid problem on Vista. X_OK was just ignored by access()
2008-05-30  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_access) [Win32]: Mask out X_OK to avoid problem
	on Vista. X_OK was just ignored by access() in earlier Microsoft C
	libraries. (Which is fine as executability has little meaning on
	Windows.) The one on Vista returns an error if X_OK is passed.


svn path=/trunk/; revision=6961
2008-05-29 23:05:35 +00:00
Tor Lillqvist
40c54c33eb glib/gstdio.h Add g_utime(). No need to include <sys/utime.h> in gstdio.h,
2008-05-29  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.h
	* glib/gstdio.c: Add g_utime(). No need to include <sys/utime.h>
	in gstdio.h, just use a forward struct declaration.

	* glib/glib.symbols: Add it.


svn path=/trunk/; revision=6960
2008-05-29 18:05:26 +00:00
Behdad Esfahbod
bf04380d3c Fix typos
svn path=/trunk/; revision=5712
2007-08-20 23:34:35 +00:00
Tor Lillqvist
5153ea94b0 Document that the mode argument is ignored on Windows (g_stat): Document
2007-04-27  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_mkdir): Document that the mode argument is
	ignored on Windows
	(g_stat): Document that st_mode is mostly useless on Windows.


svn path=/trunk/; revision=5463
2007-04-26 23:24:06 +00:00
Matthias Clasen
4a7aeef16f Initialize save_errno. (#355206, Mike Edenfield)
2006-09-10  Matthias Clasen  <mclasen@redhat.com>

	* glib/gstdio.c (g_rename): Initialize save_errno.
	(#355206, Mike Edenfield)
2006-09-10 05:13:52 +00:00
Tor Lillqvist
da422c0060 Remove support for Windows 9x/ME, as will be done also in Pango and GTK+.
2006-08-29  Tor Lillqvist  <tml@novell.com>

	Remove support for Windows 9x/ME, as will be done also in Pango
	and GTK+. GTK+ hasn't worked on Win9x since 2.6 or 2.8 anyway, so
	it's pretty pointless to keep the Win9x code in here either. If
	somebody is interested, the code can always be found in older GLib
	versions, and in CVS.

	* glib/gdir.c
	* glib/gfileutils.c
	* glib/gspawn-win32-helper.c
	* glib/gspawn-win32.c
	* glib/gstdio.c
	* glib/gutils.c
	* glib/gwin32.c
	* glib/gwin32.h: Remove the G_WIN32_IS_NT_BASED() and
	G_WIN32_HAVE_WIDECHAR_API() tests and their false (Win9x)
	branches, and any variables or static functions used only by the
	Win9x branches.

	* glib/gwin32.c (g_win32_windows_version_init): Call g_error() if
	run on Win9x.
2006-08-29 22:45:00 +00:00
Tor Lillqvist
b2438cad51 Revert change below. It wasn't a good idea after all, says the original
2006-03-31  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_remove): Revert change below. It wasn't a good
	idea after all, says the original bug reporter. See bug for
	discussion.
2006-03-31 19:16:23 +00:00
Tor Lillqvist
2df600a633 [Win32] call rmdir() only if remove() fails with errno set to ENOENT, to
2006-03-30  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_remove): [Win32] call rmdir() only if remove()
	fails with errno set to ENOENT, to leave errno set to EACCESS if
	that is the problem. (#334799, Yevgen Muntyan)
2006-03-31 00:26:44 +00:00
Tor Lillqvist
4d4156db1b Don't call g_path_skip_root() unless the path is absolute.
2005-12-01  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_stat): Don't call g_path_skip_root() unless
	the path is absolute.
2005-12-01 04:32:52 +00:00
Tor Lillqvist
cbe09f0312 g_rename() doc comment update. 2005-12-01 04:06:45 +00:00
Tor Lillqvist
4a964f2566 In the Win32 implementation, strip trailing slash(es) for non-root
2005-12-01  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_stat): In the Win32 implementation, strip
	trailing slash(es) for non-root folders. stat() fails if non-root
	folders are specified with trailing slashes. It's too much hassle
	to demand that callers strip such slashes themselves, especially
	as it is easy to get it wrong and strip the slash of a root
	folder.
	(g_rename): On NT-based Windows, use MoveFileEx() with
	MOVEFILE_REPLACE_EXISTING to better match Unix behaviour.
2005-12-01 04:03:58 +00:00
Ross Burton
bbecb798e2 Fix Docbook tag typo 2005-08-03 19:44:52 +00:00
Matthias Clasen
b78a0792a4 Apply a patch which may make GLib work on BeOS again. (#309157, Kian
2005-06-30  Matthias Clasen  <mclasen@redhat.com>

	Apply a patch which may make GLib work on BeOS again.
	(#309157, Kian Duffy)

	* glib/gmain.c: Update the BeOS includes.

	* glib/gstdio.c:
	* glib/gutils.c (g_find_program_in_path):
	* glib/gbacktrace.c (g_on_error_stack_trace): Use the UNIX
	implementation on BeOS, as well.

	* configure.in: Don't put glib 1.0 into G_MODULE_LIBS, even
	on BeOS.
2005-06-30 19:43:48 +00:00
Tor Lillqvist
f928d83482 glib/gstdio.h glib/gstdio.c Add a chdir() wrapper, too.
2005-06-09  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.h
	* glib/gstdio.c
	* glib/glib.symbols: Add a chdir() wrapper, too.

	* glib/glib.symbols: Add g_win32_locale_filename_from_utf8().

	* glib/gwin32.c (g_win32_locale_filename_from_utf8): Clarify doc
	comment.
2005-06-09 10:46:21 +00:00
Matthias Clasen
ab56b710d8 Doc fixes 2005-05-01 21:26:18 +00:00
Tor Lillqvist
ff79c0b525 glib/gstdio.h glib/gstdio.c Wrap also creat(). (#171285)
2005-04-08  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.h
	* glib/gstdio.c
	* glib/glib.symbols (g_creat): Wrap also  creat(). (#171285)
2005-04-08 12:21:28 +00:00
Tor Lillqvist
9099d64b3a glib/gstdio.h glib/gstdio.c Wrap also access() and chmod(). (#169623)
2005-04-08  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.h
	* glib/gstdio.c
	* glib/glib.symbols (g_access, g_chmod): Wrap also access() and
	chmod(). (#169623)
2005-04-08 12:11:41 +00:00
Matthias Clasen
608a31b98e Make PLT-reduction work with gcc4, and don't include everything in
2005-03-13  Matthias Clasen  <mclasen@redhat.com>

	Make PLT-reduction work with gcc4, and don't include
	everything in galias.h:

	* glib/glib.symbols: Group symbols by header and source file.
	* glib/makegalias.pl: Protect definitions by the same
	preprocessor symbols used to guard the headers. Move
	the alias declarations to a separate file which is
	produced when calling makegalias.pl -def
	* glib/Makefile.am (galiasdef.c): Add a rule to generate this
	file.
	* glib/*.c: Include galias.h after the other GLib headers,
	include galiasdef.c at the bottom.
2005-03-14 04:26:57 +00:00
Manish Singh
1ecb9a686c On G_OS_UNIX, simple #define g_open and co. as aliases for their
Tue Feb 22 22:03:38 2005  Manish Singh  <yosh@gimp.org>

        * glib/gstdio.h: On G_OS_UNIX, simple #define g_open and co. as
        aliases for their respective C library functions, instead of
        using the function wrappers. This avoids library users having to
        care about matching large file support with whatever glib has been
        built with. Fixes bug #167942.

        * glib/gstdio.c
        * glib/abicheck.sh
        * glib/glib.symbols
        * glib/makegalias.pl: Logic to make the gstdio wrappers still
        available for compatibility, but not used in new code.
2005-02-23 06:04:05 +00:00
Tor Lillqvist
92c4eebc05 In the Win32 part of all functions, handle invalid UTF-8 more robustly.
2005-02-02  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c: In the Win32 part of all functions, handle
	invalid UTF-8 more robustly. Don't pass the resulting NULL
	wide-char or codepage strings on to C library functions, but bail
	out early. (#166084)
2005-02-02 23:12:38 +00:00
Tor Lillqvist
b17c8523d9 Update.
2004-12-13  Tor Lillqvist  <tml@iki.fi>

	* NEWS: Update.

	* glib/glib.symbols
	* glib/gstdio.[ch]: Add g_rmdir().
2004-12-13 23:05:16 +00:00
Tor Lillqvist
06f371fb58 Add doc comments about Windows restrictions on renaming and removing.
2004-12-11  Tor Lillqvist  <tml@iki.fi>

	* glib/gstdio.c (g_rename, g_unlink, g_remove): Add doc comments
	about Windows restrictions on renaming and removing.

	(g_remove): Mimic POSIX remove() on Windows: Try also to rmdir if
	removal as a file fails. Document this.

	* glib/gstdio.h: Clarify comment about file name encoding on
	Windows.
2004-12-11 22:03:01 +00:00
Tor Lillqvist
f171eae2e6 Implement correctly also on Unix systems without lstat(). (#157038, Morten
2004-11-01  Tor Lillqvist  <tml@iki.fi>

	* glib/gstdio.c (g_lstat): Implement correctly also on Unix
	systems without lstat(). (#157038, Morten Welinder)
2004-11-01 19:58:52 +00:00
Tor Lillqvist
20e56bbc2c Add g_lstat().
2004-10-31  Tor Lillqvist  <tml@iki.fi>

	* glib/gstdio.[ch]: Add g_lstat().
2004-10-31 15:56:08 +00:00
Tor Lillqvist
1eb924770c Include also <direct.h> for mkdir() prototype with MSVC. [156727, Kazuki
2004-10-29  Tor Lillqvist  <tml@iki.fi>

	* glib/gstdio.c: Include also <direct.h> for mkdir() prototype
	with MSVC. [156727, Kazuki IWAMOTO]
2004-10-29 02:04:28 +00:00