66 Commits

Author SHA1 Message Date
Philip Withnall
5c65437d73 glib-unix: Add O_NONBLOCK support to g_unix_open_pipe()
Add support for it, but don’t use it anywhere yet — this is an API
addition, but currently doesn’t cause any functional changes. It’ll be
used in the next commit.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-03-23 14:11:36 +00:00
Maciej S. Szmigiero
05d2a1d097 gbacktrace: Use g_unix_open_pipe_internal () for creating pipes
This attempts to create the pipes with race-free setting of the
close-on-exec flag.
2023-02-21 12:42:55 +00:00
Philip Withnall
7b52ccbfc4 Revert "gio, glib: Use G_OS_DARWIN for code that is for such environments"
This reverts commit 476e33c3f3632bd32370fadc67b10d61da9a4098.

We’ve decided to remove `G_OS_DARWIN` in favour of recommending people
use `__APPLE__` instead. As per the discussion on #2802 and linked
issues,
 * Adding a new define shifts the complexity from “which of these
   platform-provided defines do I use” to “which platform-provided
   defines does G_OS_DARWIN use”
 * There should ideally be no cases where a user of GLib has to use
   their own platform-specific code, since GLib should be providing
   appropriate abstractions
 * Providing a single `G_OS_DARWIN` to cover all Apple products (macOS
   and iOS) hides the complexity of what the user is actually testing:
   are they testing for the Mach kernel, the Carbon and/or Cocoa user
   space toolkits, macOS vs iOS vs tvOS, etc

Helps: #2802
2022-11-07 11:30:32 +00:00
Marco Trevisan (Treviño)
476e33c3f3 gio, glib: Use G_OS_DARWIN for code that is for such environments
While we preserved the COCOA/CARBON cases when specific libraries are
needed.
2022-10-20 03:37:21 +02:00
Mohammed Sadiq
3999badc1e gbacktrace: Don't truncate gdb output 2022-09-08 08:45:21 +05:30
Marco Trevisan (Treviño)
640e586251 gbacktrace: Handle case of strerror_r returning an int value
As it's the case in FreeBSD and Mac OS X.
2022-07-07 00:42:45 +02:00
Marco Trevisan (Treviño)
0e4d8c2478 gbacktrace: Ensure return values of write, dup and fgets are used
Make sure that we did not error when doing write or read operations, and
in such case, just exit reporting the error.
2022-07-06 16:02:13 +02:00
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
Philip Withnall
0694c1a5ad gbacktrace: Fix a set-but-not-used variable
It’s only used if building for lldb. Spotted in the log from an oss-fuzz
build:
https://oss-fuzz-build-logs.storage.googleapis.com/log-051f05da-adf5-42c1-8f14-5e36ba750573.txt:
```
Step #12 - "compile-honggfuzz-address-x86_64": [36/1232] Compiling C object glib/libglib-2.0.a.p/gbacktrace.c.o
Step #12 - "compile-honggfuzz-address-x86_64": ../../src/glib/glib/gbacktrace.c:324:24: warning: variable 'line_idx' set but not used [-Wunused-but-set-variable]
Step #12 - "compile-honggfuzz-address-x86_64":   int sel, idx, state, line_idx;
Step #12 - "compile-honggfuzz-address-x86_64":                        ^
Step #12 - "compile-honggfuzz-address-x86_64": 1 warning generated.
```

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-02-17 21:46:39 +00:00
Egor Bychin
e9adcd8f7f gbacktrace: Fix fcntl command arguments not being checked 2021-10-15 14:15:43 +03:00
Ole André Vadla Ravnås
0ab51f8d4e gwin32: Always use unicode APIs
Instead of the legacy ANSI ones. This also means GLib behaves correctly
when built with unicode preprocessor defines.
2021-01-05 21:42:59 +01:00
Kristian Rietveld
1fbd185430 gbacktrace: on macOS support and default to LLDB
Tweaked by Philip Withnall <withnall@endlessm.com> to fix review issues.

Closes: #1004
2019-11-21 11:02:14 +00:00
Philip Withnall
29388470f8 Merge branch 'easy-uwp-patches' into 'master'
Some (probably) easy uwp patches

See merge request GNOME/glib!1057
2019-08-26 20:18:45 +00:00
Nirbheek Chauhan
db3e0c256d glib: Don't call MessageBox() when building for UWP
However, it's fine to call it when building for the debug target
(which uses the debug CRT and hence sets -D_DEBUG), so let's keep that
around.

The Windows App Certification Kit only runs on apps built in release
mode.
2019-08-27 00:17:29 +05:30
Emmanuel Fleury
1e3b1eb111 glib/gbacktrace.c: Handling properly the dup(stderr) call
If the dup(stderr) returns '-1' (an error occured), then the program
shouldn't call a 'close(stderr); dup(old_err);' after the exec() failed.

Fix issue #1880
2019-08-26 10:49:58 +02:00
Руслан Ижбулатов
025a346728 W32: Add a simple exception handler
Install a Vectored Exception Handler[0]. Its sole purpose is to catch
some exceptions (access violations, stack overflows, illegal
instructions and debug breaks - by default, but it can be made to catch
any exception for which a code is known) and run a debugger in response.

This allows W32 glib applications to be run without a debugger,
but at the same time allows a debugger to be attached in case
something happens.

The debugger is run with a new console, unless an environment variable
is set to allow it to inherit the console of the crashing process.

The short list of handleable exceptions is there to ensure that
this handler won't run a debugger to "handle" utility exceptions,
such as the one that is used to communicate thread names to a debugger.

The handler is installed to be called last, and shouldn't interfere
with any user-installed handlers.

There's nothing fancy about the way it runs a debugger (it doesn't even
support unicode in paths), and it deliberately avoids using glib code.

The handler will also print a bit of information about the exception
that it caught, and even more information for well-known exceptions,
such as access violation.

The whole scheme is similar to AeDebug[1] and, in fact, the signal-event
gdb command was originally implemented for this very purpose.

[0]: https://docs.microsoft.com/en-us/windows/desktop/debug/vectored-exception-handling
[1]: https://docs.microsoft.com/en-us/windows/desktop/debug/configuring-automatic-debugging
2019-03-06 11:41:56 +00:00
Christoph Reiter
b6c81d139c Remove NO_FD_SET and assume fd_set exists
gspawn.c is using fd_set without checks for 17 years now and the NO_FD_SET check was added
19 years ago.
2018-05-31 13:31:55 +02:00
Philip Withnall
9365e212f8 More const-correctness fixes
This continues one of the const-correctness fixes from the previous
commit (it needed some more transitive fixes), and reverts another of
them, since it was over-zealous.

This fixes CI failure: https://gitlab.gnome.org/GNOME/glib/-/jobs/27125.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
Reviewed-by: nobody
2018-04-26 15:35:58 +01:00
Philip Withnall
22cd18500d Fix various const-correctness issues
Spotted when temporarily compiling with -Wwrite-strings. This only goes
a small way towards making the code base -Wwrite-strings–clean. It
introduces no functional changes, and fixes no bugs.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
Reviewed-by: nobody
2018-04-26 15:19:17 +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
Руслан Ижбулатов
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
Matthias Clasen
3232425785 Docs: replace <literal> by ` 2014-02-06 08:07:16 -05:00
Matthias Clasen
306dfb3292 Drop use of the command tag
It is more useful to link to the included man page, anyway.
2014-02-01 15:26:38 -05:00
Matthias Clasen
adf892e96a Annotate all examples with their language
The C ones, at least.
2014-02-01 15:11:49 -05:00
Matthias Clasen
faa007c827 Don't use computeroutput tag
There was one occurrence of this.
2014-02-01 12:09:14 -05:00
Matthias Clasen
42cf80780b Docs: Big entity cleanup
Strip lots of entity use from |[ ]| examples (which are now
implicit CDATA). Also remove many redundant uses of <!-- -->.
2014-02-01 12:00:30 -05:00
Daniel Mustieles
078dbda148 Updated FSF's address 2014-01-31 14:31:55 +01:00
Dan Winship
3981cddbf8 Require POSIX.1 (1990) compliance on unix
Assume unix platforms support the original POSIX.1 standard.
Specifically, assume that if G_OS_UNIX, then we have chown(),
getcwd(), getgrgid(), getpwuid(), link(), <grp.h>, <pwd.h>,
<sys/types.h>, <sys/uio.h>, <sys/wait.h>, and <unistd.h>.

Additionally, since all versions of Windows that we care about also
have <sys/types.h>, we can remove HAVE_SYS_TYPES_H checks everywhere.

Also remove one include of <sys/times.h>, and the corresponding
configure check, since the include is not currently needed (and may
always have just been a typo for <sys/time.h>).

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:17:42 -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
Stef Walter
6f7d8f6294 gbacktrace: Print out gdb exec errors correctly
We want to see error messages related to starting and running
gdb (such as if it's not installed).

https://bugzilla.gnome.org/show_bug.cgi?id=711088
2013-11-19 14:53:28 +01:00
Ryan Lortie
4625c138e9 gbacktrace.c: special treatment for a weird symbol
We have a public symbol 'glib_on_error_halt' that is exported from
gbacktrace.c without appearing in a header, presumably with the
intention that people will be able to hit it from their debugger.

Mark it as GLIB_AVAILABLE_IN_ALL from inside the .c file...

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2013-01-13 13:13:43 -05:00
Jasper St. Pierre
021e116f05 gbacktrace: g_get_prgname () isn't called for a NULL argument
https://bugzilla.gnome.org/show_bug.cgi?id=658871
2012-01-06 14:41:08 -05:00
Ryan Lortie
9560423a6e Be sure to #include "gutils.h" in gbacktrace.c
0e3f530185d494dbb9db1b47f72f10f3ae598564 introduced a compiler warning
about implicit declaration of g_get_prgname().  Fix that.

Problem caught and fix suggested by Rico Tzschichholz.
2011-10-05 13:17:07 -04:00
Matthias Clasen
4c64e75ec5 Drop the warnings.sgml template 2011-07-19 20:40:28 -04: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
Emmanuele Bassi
ca7dee5949 Build fixes for the fall-out of the inclusion changes 2010-09-04 18:04:34 +01:00
Matthias Clasen
9b3fb41a5e Remove redundant header inclusions
and clean up some whitespace
2010-09-03 19:41:49 -04:00
Ryan Lortie
2e53e50244 glib/: fully remove galias hacks 2010-07-07 19:34:35 -04:00
Matthias Clasen
0f6b25ca96 Fix some compiler warnings
svn path=/trunk/; revision=7755
2008-12-31 05:51:47 +00:00
Matthias Clasen
e9da546b81 Assume string.h is available 2006-09-10 05:50:50 +00:00
Matthias Clasen
92ea153ae9 const correctness fixes, found by Arjan van de Ven and gcc.
2005-11-17  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbacktrace.c:
	* glib/gdate.c:
	* glib/gthread.c: const correctness fixes, found
	by Arjan van de Ven and gcc.
2005-11-17 13:17:22 +00:00
Tor Lillqvist
3c449f00cc Check for <sys/wait.h>
2005-08-18  Tor Lillqvist  <tml@novell.com>

	* configure.in: Check for <sys/wait.h>

	* glib/gbacktrace.c: Include <sys/wait.h> on if HAVE_SYS_WAIT_H.
2005-08-18 13:08:18 +00:00
Matthias Clasen
56a63c1568 Wait for the child process and then simply return. This makes The "S"
2005-08-15  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbacktrace.c (g_on_error_stack_trace): Wait for
	the child process and then simply return. This makes
	The "S" option work as documented in g_on_error_query().
	(#313125, Matthew F. Barnes)
2005-08-15 19:32:32 +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
Hans Breuer
6b55164587 handle galiasdef.c (although completely useless for msvc build)
2005-03-18  Hans Breuer  <hans@breuer.org>

	* glib/makefile.msc.in : handle galiasdef.c (although completely
	useless for msvc build)

	* glib/gbacktrace.c glib/gmessage.c : need at least _WIN_VER 0x0401
	for IsDebuggerPresent()

	* gobject/makefile.msc.in : handle gobjectaliasdef.c
2005-03-18 17:44:51 +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
a4bfec4f1d On Win32 call G_BREAKPOINT() if being debugged.
2005-01-19  Tor Lillqvist  <tml@novell.com>

	* glib/gbacktrace.c (g_on_error_stack_trace): On Win32 call
	G_BREAKPOINT() if being debugged.

	* glib/gmessages.c (g_logv): For fatal messages on Win32, use
	G_BREAKPOINT() also without G_ENABLE_DEBUG, but only if being
	debugged. Suggestion by Ulf Lamping. Otherwise use FatalAppExit().
2005-01-19 01:55:40 +00:00
Matthias Clasen
dafdffd751 Implement the same PLT reduction technique used in GTK+:
Thu Sep 16 02:03:15 2004  Matthias Clasen  <maclas@gmx.de>

	Implement the same PLT reduction technique used in GTK+:
2004-09-16 06:05:53 +00:00
Owen Taylor
bbbd329ff5 Patch from Sven Neumann to make the include order consistent. (#71704)
Tue Dec  3 20:22:27 2002  Owen Taylor  <otaylor@redhat.com>

        * glib/*.c: Patch from Sven Neumann to make the
        include order consistent. (#71704)
2002-12-04 01:27:44 +00:00
Matthias Clasen
bc54ea6edf Include a printf implementation supporting C99 snprintf and SUS
positional parameters:  (#79488)

	* glib/gstrfuncs.c:
	* glib/gspawn-win32.c:
	* glib/gscanner.c:
	* glib/gconvert.c:
	* glib/gbacktrace.c: Use _g_printf wrappers.

	* glib/gutils.c (g_vsnprintf): Simplify, since we can assume C99
	snprintf semantics now.

	* glib/gmessages.c (printf_string_upper_bound): No longer needed,
	since we can assume C99 snprintf semantics now.
	(g_logv): Simplify.

	* acinclude.m4 (AC_FUNC_PRINTF_UNIX98): New macro to check wether
	printf supports SUS positional parameters.

	* configure.in: New option --enable-included-printf to force
	compilation of trio; otherwise trio is compiled if the system
	printf misses either C99 snprintf semantics of SUS positional
	parameters.

	* glib/Makefile.am (SUBDIRS): Conditionally compile trio.
	(libglib_2_0_la_SOURCES): Add gprintf.c and gprintfint.h.
	(glibsubinclude_HEADERS): Add gprintf.h.

	* glib/gprintfint.h: New private wrapping either system printf
	or trio printf variants in _g_printf wrappers for use inside glib.

	* glib/gprintf.h: New public header declaring g_printf variants.
	* glib/gprintf.c: Corresponding implementations.

	* glib/trio/*: New directory, containing the trio-1.9 sources.

	* glib/tmpl/string_utils.sgml: Add note on including gprintf.h,
	move some docs inline.

	* glib/glib-sections.txt: Add g_printf, g_vprintf, g_fprintf,
	g_vfprintf, g_sprintf, g_vsprintf.
2002-11-21 00:35:15 +00:00