Commit Graph

108 Commits

Author SHA1 Message Date
Philip Withnall
70ee43f1e9 glib: Add SPDX license headers automatically
Add SPDX license (but not copyright) headers to all files which follow a
certain pattern in their existing non-machine-readable header comment.

This commit was entirely generated using the command:
```
git ls-files glib/*.[ch] | xargs perl -0777 -pi -e 's/\n \*\n \* This library is free software; you can redistribute it and\/or\n \* modify it under the terms of the GNU Lesser General Public/\n \*\n \* SPDX-License-Identifier: LGPL-2.1-or-later\n \*\n \* This library is free software; you can redistribute it and\/or\n \* modify it under the terms of the GNU Lesser General Public/igs'
```

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Helps: #1415
2022-05-18 09:19:02 +01:00
Loic Le Page
7304e4de17 Fix non-initialized variable in glib/giowin32.c 2022-02-18 10:59:30 +01:00
Ignacio Casal Quinteiro
08017c0d6c giowin32: use gint64 and _lseeki64
off_t on windows is 32bit which means that it will not be able
to handle big offsets
2022-01-20 12:22:18 +01:00
Emmanuel Fleury
4ec06aa0c1 Fix missing initializer warning in glib/giowin32.c
glib/giowin32.c:1027:1: warning: missing initializer for field 'closure_callback' of 'GSourceFuncs' {aka 'struct _GSourceFuncs'}
 };
 ^
2021-10-13 18:38:59 +02:00
Philip Withnall
8e963e0e31 Port internal uses to use g_source_set_static_name()
This should reduce allocations.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2021-07-26 11:01:07 +01:00
Nirbheek Chauhan
c3c2c31335 glib: Use g_getenv everywhere instead of getenv
`getenv()` doesn't work well on Windows, f.ex., it can't fetch env
vars set with `SetEnvironmentVariable()`. This also means that it
doesn't work at all when targeting UWP since that's the only way to
set env vars in that case.
2020-07-23 13:57:59 +05:30
Philip Withnall
9b4c50f63d all: Remove trailing newlines from g_message()/g_warning()/g_error()s
All those logging functions already add a newline to any message they
print, so there’s no need to add a trailing newline in the message
passed to them.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
Reviewed-by: nobody
2018-04-27 16:46:19 +01:00
Philip Withnall
85680f4a06 docs: Rewrap line to avoid it being interpreted as a list
Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://bugzilla.gnome.org/show_bug.cgi?id=767215
2017-10-05 14:49:49 +01:00
Philip Withnall
5cddde1fb2 Consistently save errno immediately after the operation setting it
Prevent the situation where errno is set by function A, then function B
is called (which is typically _(), but could be anything else) and it
overwrites errno, then errno is checked by the caller.

errno is a horrific API, and we need to be careful to save its value as
soon as a function call (which might set it) returns. i.e. Follow the
pattern:
  int errsv, ret;
  ret = some_call_which_might_set_errno ();
  errsv = errno;

  if (ret < 0)
    puts (strerror (errsv));

This patch implements that pattern throughout GLib. There might be a few
places in the test code which still use errno directly. They should be
ported as necessary. It doesn’t modify all the call sites like this:
  if (some_call_which_might_set_errno () && errno == ESOMETHING)
since the refactoring involved is probably more harmful than beneficial
there. It does, however, refactor other call sites regardless of whether
they were originally buggy.

https://bugzilla.gnome.org/show_bug.cgi?id=785577
2017-08-03 10:21:13 +01: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
Christoph Reiter
fad5f5bd17 giochannel: Remove old win32 codepage ABI compat code
Makes new code link against the normal symbol names again.
Variants with utf8 suffix are there for existing binaries/ABI compat.

https://bugzilla.gnome.org/show_bug.cgi?id=780634
2017-04-06 19:22:43 +02:00
Руслан Ижбулатов
e47904a26f Use g_abort() instead of abort() where possible
https://bugzilla.gnome.org/show_bug.cgi?id=665446
2016-04-27 13:17:28 +00:00
Ignacio Casal Quinteiro
50d704ab8f win32: make sure bytes_read/written is set to 0 on error
If we fail to PeekMessage or PostMessage we should make sure
that the output parameter bytes_read/written is set 0 instead
of being left uninitialized. This fixes an assertion in the io
channel call where the following invariant is checked:
(status == G_IO_STATUS_NORMAL) || (read_size == 0)
2015-10-23 10:34:50 +02:00
Daniel Mustieles
078dbda148 Updated FSF's address 2014-01-31 14:31:55 +01:00
Dan Winship
b8c13a01b6 win32: misc warning fixes
https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Robert Ancell
59a24ab5a3 Use "Returns:" instead of the invalid "@returns" for annotating return values.
https://bugzilla.gnome.org/show_bug.cgi?id=673229
2012-11-01 14:47:25 +13:00
David Schleef
0d1a2eb4bf Fix spelling of G_IO_FLAG_IS_WRITEABLE
Fixes #657045.
2011-09-08 20:22:42 -04:00
Colin Walters
d2fe46b476 Annotate all custom GIO GSource using g_source_set_name
Naming the sources allows easier debugging with e.g. SystemTap
probes.

https://bugzilla.gnome.org/show_bug.cgi?id=620536
2010-07-10 20:09:34 -04:00
Ryan Lortie
2e53e50244 glib/: fully remove galias hacks 2010-07-07 19:34:35 -04:00
Tor Lillqvist
5589d2b455 Internally use the _stati64 API explicitly on Windows
Avoids warnings and confusion when compiling with MSVC.
2010-02-04 19:58:55 +02:00
Ryan Lortie
4bdf7d12a8 GIOChannel: move docs from tmpl to .c 2010-02-01 10:28:39 -05:00
Tor Lillqvist
3c57a6c7cc Don't call WSAEventSelect() on -1
If g_io_win32_sock_close() has been called on a socket channel, don't
later in g_io_win32_free() call WSAEventSelect() on its fd which has
been set to -1.
2009-11-05 00:04:33 +02:00
Hans Breuer
4a50bab276 Define fstat() for msvc build 2009-05-30 15:33:14 +02:00
Dan Winship
ac68024ec1 Move this out of gmain.c and make it part of the public API. (Part of Bug
* glib/gpoll.c (g_poll): Move this out of gmain.c and make it part
	of the public API. (Part of Bug 505361 - gunixinputstream.c
	assumes poll() available.)

svn path=/trunk/; revision=7535
2008-09-23 16:32:30 +00:00
Tor Lillqvist
2c5de8ed26 Stylistic changes. Plug an unlikely memory leak that occurred in
2008-08-27  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Stylistic changes. Plug an unlikely memory leak
	that occurred in create_thread() if closing the thread handle
	failed. Add more error messages to g_io_win32_free() that are
	printed only when debugging. Plug handle leak, a socket channel's
	event was never closed.


svn path=/trunk/; revision=7405
2008-08-27 16:49:17 +00:00
Tor Lillqvist
755400be44 Drop #if 0 code.
2008-08-21  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Drop #if 0 code.


svn path=/trunk/; revision=7385
2008-08-21 13:42:35 +00:00
Tor Lillqvist
54d62aa368 Don't bother compiling the binary compatibility
2008-08-21  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Don't bother compiling the binary
	compatibility g_io_channel_win32_new_stream_socket()
	function that has not been mentioned in any header since 2.0 on
	Win64.

	* glib/glib.symbols: Mark it, too, private, and don't export it on
	Win64.


svn path=/trunk/; revision=7384
2008-08-21 11:47:04 +00:00
Tor Lillqvist
5becc45bf4 Improve run-time warning messages. Drop some #if 0 code.
2008-08-21  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Improve run-time warning messages. Drop
	some #if 0 code.


svn path=/trunk/; revision=7383
2008-08-21 11:35:51 +00:00
Tor Lillqvist
2da8893a72 Minor comment improvements.
2008-08-21  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Minor comment improvements.


svn path=/trunk/; revision=7382
2008-08-21 11:24:00 +00:00
Tor Lillqvist
971ab2b50f Bug 500246 - Bug fixes for giowin32
2008-08-20  Tor Lillqvist  <tml@novell.com>

	Bug 500246 - Bug fixes for giowin32

	* glib/giowin32.c (read_thread) (write_thread): Change the nbytes
	variables to signed.
	(g_io_channel_win32_make_pollfd): Fix an obvious error in the file
	descriptor case leftover after the patch from bug #333098 on
	2006-03-02. Thanks to Marcus Brinkmann.


svn path=/trunk/; revision=7373
2008-08-20 01:30:31 +00:00
Tor Lillqvist
f7f48d5c08 Bug 324234 - Using g_io_add_watch_full() to wait for connect() to return
2008-08-20  Tor Lillqvist  <tml@novell.com>

	Bug 324234 - Using g_io_add_watch_full() to wait for connect() to
	return on a non-blocking socket returns prematurely

	Bug 548278 - Async GETs connections are always terminated
	unexpectedly on Windows

	* glib/giowin32.c: Add one more state variable to the
	GIOWin32Channel struct, ever_writable. Initialise it to FALSE, set
	to TRUE when the WSAEventSelect() indicates FD_WRITE, and never
	reset to FALSE.

	Don't do the WSASetEvent() in g_io_win32_prepare() unless
	ever_writable is TRUE. Don't automatically indicate G_IO_OUT in
	g_io_win32_check() unless ever_writable is TRUE.

	This fixes the behaviour of the test case program in bug #548278,
	and the "Testcase for the spurious OUT event bug" in bug
	#324234. It also doesn't seem to break anything. Not that there is
	any exhaustive test suite...

	Add a comment with a list of bugs that are related to the code in
	this file.


svn path=/trunk/; revision=7372
2008-08-19 23:48:16 +00:00
Tor Lillqvist
0e2384faa8 glib/giowin32.c glib/gmain.c glib/gspawn-win32.c Change gssize casts
2008-08-04  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c
	* glib/gmain.c
	* glib/gspawn-win32.c
	* glib/gspawn-win32-helper.c: Change gssize casts introduced on
	2008-07-28 to gintptr casts now that we have that. gssize is as
	such the same as gintptr on both 32- and 64-bit Windows, but the
	gintptr name indicates that it is used to hold pointers, i.e. also
	HANDLEs.


svn path=/trunk/; revision=7306
2008-08-04 18:46:59 +00:00
Tor Lillqvist
a3fa74853a Fix problems on 64-bit Windows. Avoid warnings, some of which indicated
2008-07-28  Tor Lillqvist  <tml@novell.com>

	Fix problems on 64-bit Windows. Avoid warnings, some of which
	indicated actual problems, some which were just annoyances. 

	Where casts to an integer type are needed for pointers, use
	gssize. Technically intptr_t would be the more proper type, but we
	still want to be compilable with MSVS6 and 7 which don't have
	intptr_t. MSVS8 and 9 do have intptr_t, but in <crtdefs.h>, not
	<stdint.h>.

	Use %p to print out handles. Use gssize casts when assigning
	GPollFD::fd fields.

	Use G_GSIZE_FORMAT when printing size_t values.
	
	* configure.in: Define automake conditional G_OS_WIN32_X64 which
	is true on Win64.

	* glib/giochannel.h: Use slightly different prototype for
	g_io_channel_win32_new_messages() on Win64 with gsize instead of
	guint.

	* glib/giowin32.c
	* glib/gmain.c
	* glib/gspawn-win32.c
	* tests/testglib.c: Generic changes as described above.

	* glib/gmain.h: Don't bother mentioning GIMP in comment.

	* glib/grel.c (tuple_hash_2): Use all bits of pointer.

	* glib/gspawn-win32.c
	* glib/gspawn-win32-helper.c: Use gssize types in the
	communication between parent and helper process, so that we can
	pass process handles, which are pointers, also on Win64.

	* glib/gtimer.c (g_time_val_to_iso8601): time_t is 64 bits on
	Win64 so we can't pass the address of a GTimeVal::tv_sec which is
	a long directly to gmtime(). On the other hand, changing
	GTimeVal::tv_sec to be a gint64 on Win64 is not really feasible
	either, as that would then require changes in much code that uses
	GTimeVals.

	* glib/gspawn-win32.c
	* glib/Makefile.am: Call the helper programs
	gspawn-win64-helper.exe and gspawn-win64-helper-console.exe on
	Win64, to avoid potential risk of running a 32-bit version of the
	helper.


svn path=/trunk/; revision=7260
2008-07-28 00:24:14 +00:00
Tor Lillqvist
80ecc30841 glib/glib.symbols glib/gconvert.c glib/gdir.c glib/gfileutils.c
2008-07-27  Tor Lillqvist  <tml@novell.com>

	* glib/glib.symbols
	* glib/gconvert.c
	* glib/gdir.c
	* glib/gfileutils.c
	* glib/giowin32.c
	* glib/gspawn-win32.c
	* glib/gutils.c
	* glib/gwin32.c: Bypass the Windows "ABI compatibility" symbols on
	_WIN64. As there hasn't been any widely deployed 64-bit Windows
	builds of the really old GLib (pre-2.8.1) versions those refer to,
	there is no need to have the "ABI compatibility" versions in the
	DLL.

	* glib/makegalias.pl: Handle #ifndef _WIN64: Just output it, too.


svn path=/trunk/; revision=7257
2008-07-27 17:15:16 +00:00
Tor Lillqvist
55790836fb Patch from Yu Kuan that makes watched sockets behave much better. See
2008-07-20  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c (g_io_win32_prepare): Patch from Yu Kuan that
	makes watched sockets behave much better. See gtk-devel-list
	archives from May for the (unfortunately rather meager)
	discussion. This patch fixes the presented simple test program,
	which reasonably could be expected to work.


svn path=/trunk/; revision=7220
2008-07-20 20:44:39 +00:00
Christian Persch
9c17697b56 Use g_set_error_literal where appropriate. Patch from bug #535947.
svn path=/trunk/; revision=7051
2008-06-16 16:53:58 +00:00
Tor Lillqvist
fc8ee1f68a g_win32_error_message() works fine for the Winsock WSA* error codes, too,
2008-06-11  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: g_win32_error_message() works fine for the
	Winsock WSA* error codes, too, so drop the winsock_error_message()
	function.


svn path=/trunk/; revision=7010
2008-06-11 18:06:46 +00:00
Tor Lillqvist
b8eefbc99d Make debugging printout more compact and add more information to it. No
2008-05-17  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Make debugging printout more compact and add
	more information to it. No changes to actual functionality.


svn path=/trunk/; revision=6898
2008-05-17 02:34:17 +00:00
Tor Lillqvist
09d6197943 When WSAEnumNetworkEvents() signals FD_CONNECT that means that the
2007-07-06  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c (g_io_win32_check): When WSAEnumNetworkEvents()
	signals FD_CONNECT that means that the connection attempt
	finished, either successfully or failed. Test explicitly whether
	the connnection succeeded and set either G_IO_OUT if it did,
	G_IO_ERR|G_IO_HUP if it failed.

	Make sure we never set both G_IO_OUT and G_IO_HUP simultaneously
	because in Unix poll(2) POLLOUT and POLLHUP are mutually
	exclusive.

	Ignore whether the caller wants to watch G_IO_HUP or not. Always
	select for FD_CLOSE because Unix poll(2) also ignores whether
	POLLHUP in set the requested events bitmask or not.


svn path=/trunk/; revision=5600
2007-07-06 01:22:53 +00:00
Tor Lillqvist
e5ef75596e Handle GIOChannels for file descriptors connected to the console
2007-01-07  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Handle GIOChannels for file descriptors
	connected to the console separately. This would typically be the
	fd 0, 1, or 2 (if not redirected) in a console application. For
	such fds we don't need a separate thread, as console HANDLEs are
	waitable objects. (#359202, Michiel de Hoon)


svn path=/trunk/; revision=5222
2007-01-07 03:02:28 +00:00
Tor Lillqvist
d5b919142b Implement setting/clearing G_IO_FLAG_NONBLOCK for channels attached to
2006-05-12  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c (g_io_win32_sock_set_flags): Implement
	setting/clearing G_IO_FLAG_NONBLOCK for channels attached to
	sockets. (#341192)
	(g_io_win32_unimpl_set_flags): set_flags method for the
	unimplemented case.
2006-05-12 13:20:36 +00:00
Marcus Brinkmann
6f0ef1bae2 Implement watches for GIOChannels for write file descriptors on Win32
2006-03-02  Marcus Brinkmann  <mb@g10code.de>

	Implement watches for GIOChannels for write file descriptors on
	Win32 (#333098).

	* glib/giowin32.c (GIOWin32Channel): Add a new direction field.
	(read_thread): Initialize direction.
	(write_thread): New function.
	(buffer_write): New function.
	(g_io_win32_prepare): Handle the G_IO_WIN32_FILE_DESC case for the
	write direction.
	(g_io_win32_fd_write): Call buffer_write() if there is a writer
	thread.
	(g_io_win32_fd_close): Set space_avail_event for writer threads.
	(g_io_win32_fd_create_watch): Create the writer thread if
	condition is G_IO_OUT.
	(g_io_channel_win32_make_pollfd): Likewise here.
2006-03-11 21:03:00 +00:00
Tor Lillqvist
4884c293d1 Don't call g_warning(). (#320688) Instead set error and return failure.
2005-11-05  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c (g_io_win32_set_flags): Don't call g_warning().
	(#320688) Instead set error and return failure.
2005-11-08 08:46:57 +00:00
Tor Lillqvist
6a3a7adc17 Totally rewritten socket channel implementation. See discussion in bug
2005-07-09  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Totally rewritten socket channel
	implementation. See discussion in bug #147392.
2005-07-08 23:27:31 +00:00
Tor Lillqvist
3e78c3c95d Always claim file descriptors open to devices are readable, since we can't
2005-03-30  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c (g_io_win32_fd_get_flags_internal): Always claim
	file descriptors open to devices are readable, since we can't
	know. fstat() doesn't gve any useful information.
2005-03-30 12:01:27 +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
Tor Lillqvist
ab908b3c45 Include winsock2.h before windows.h, to avoid compilation errors with
2005-02-11  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Include winsock2.h before windows.h, to avoid
	compilation errors with MSVC. (#167105)
2005-02-11 22:43:32 +00:00
Tor Lillqvist
02ef59aeb7 configure.in (G_LIBS_EXTRA) I think we can include <winsock2.h> and link
2005-02-05  Tor Lillqvist  <tml@novell.com>

	* configure.in (G_LIBS_EXTRA)
	* glib/giowin32.c: I think we can include <winsock2.h> and link
	with -lws2_32. Only Windows 95 originally didn't have Winsock 2,
	and it's available as an update for it. Not that we use any actual
	Winsock 2 -only features, but still, simpler to link directly with
	ws2_32.dll instead of going through wsock32.dll.
2005-02-05 22:39:40 +00:00
Tor Lillqvist
cf6e3acdb5 Fix a write to freed memory: Unlock the channel's mutex before unrefing
2004-12-06  Tor Lillqvist  <tml@iki.fi>

	* glib/giowin32.c (g_io_win32_finalize): Fix a write to freed
	memory: Unlock the channel's mutex before unrefing the channel.
2004-12-06 23:43:43 +00:00
Matthias Clasen
8a7eecd7c6 Introduce the idea of a filename encoding, which is *literally* the
2004-10-27  Matthias Clasen  <mclasen@redhat.com>

	Introduce the idea of a filename encoding, which is
	*literally* the filename encoding on Unix. On windows,
	use the Unicode name converted to UTF-8. (#156325,
	Tor Lillqvist, Owen Taylor)

	* glib/gdir.[hc]:
	* glib/gconvert.[hc]:
	* glib/gfileutils.[hc]:
	* glib/gutils.[hc]:
	* glib/giowin32.c: On Windows, keep old ABI versions
	of GLib pathname api for DLL ABI stability. Use different
	names for the new-style UTF-8 versions. Hide this through
	a #define.

	* glib/gstdio.[hc]: New files containing wrappers for
	POSIX pathname api.

	* glib/glib.symbols: Add new symbols.

	* glib/makegalias.pl: Drop Win32 specific .def syntax,
	include gstdio.h
2004-10-27 16:46:29 +00:00