258 Commits

Author SHA1 Message Date
Matthias Clasen
d632713a77 Make G_DISABLE_DEPRECATED work again for wholly deprecated headers
Patch by Milan Crha,

https://bugzilla.gnome.org/show_bug.cgi?id=688169
2013-02-03 01:11:02 -05:00
Dan Winship
03ef7ba5ab win32: re-fix the _utf8 compat function situation
The previous fix didn't work, because every place within glib that
used any of the functions also needed to be including win32compat.h.

So, move the prototypes back to their original headers (but at least
all in one place at the bottom).

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-16 08:22:06 -05:00
Dan Winship
08f4f92fed win32: add gwin32compat.h, for utf8-renaming compatibility defines
To avoid -Wmissing-prototype warnings, we need to prototype both the
original and the _utf8 versions of all of the functions that have had
_utf8-renaming on Windows. But duplicating all the prototypes is ugly,
so rather than doing them "in-place", move them all to a new header
file just for that.

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:05 -05:00
Emmanuele Bassi
34aeeb7d64 Add flexible API version boundaries
There are cases when it should be possible to define at compile time
what range of functions and types should be used, in order to get,
or restrict, the compiler warnings for deprecated or newly added
types or functions.

For instance, if GLib introduces a deprecation warning on a type in
version 2.32, application code can decide to specify the minimum and
maximum boundary of the used API to be 2.30; when compiling against
a new version of GLib, this would produce the following results:

  - all deprecations introduced prior to 2.32 would emit compiler
    warnings when used by the application code;
  - all deprecations introduced in 2.32 would not emit compiler
    warnings when used by the application code;
  - all new symbols introduced in 2.32 would emit a compiler warning.

Using this scheme it should be possible to have fairly complex
situations, like the following one:

  assuming that an application is compiled with:
    GLIB_VERSION_MIN_REQUIRED = GLIB_VERSION_2_30
    GLIB_VERSION_MAX_ALLOWED  = GLIB_VERSION_2_32

  and a GLib header containing:

    void function_A (void) GLIB_DEPRECATED_IN_2_26;
    void function_B (void) GLIB_DEPRECATED_IN_2_28;
    void function_C (void) GLIB_DEPRECATED_IN_2_30;
    void function_D (void) GLIB_AVAILABLE_IN_2_32;
    void function_E (void) GLIB_AVAILABLE_IN_2_34;

  any application code using the above functions will get the following
  compiler warnings:

    function_A: deprecated symbol warning
    function_B: deprecated symbol warning
    function_C: no warning
    function_D: no warning
    function_E: undefined symbol warning

This means that it should be possible to gradually port code towards
non-deprecated API gradually, on a per-release basis.

https://bugzilla.gnome.org/show_bug.cgi?id=670542
2012-02-26 23:58:41 -05:00
Stef Walter
fcc69fd318 GBytes: A new type for an immutable set of bytes.
* Represents an immutable reference counted block of memory.
 * This is basically the internal glib GBuffer structure exposed,
   renamed, and with some additional capabilities.
 * The GBytes name comes from python3's immutable 'bytes' type
 * GBytes can be safely used as keys in hash tables, and have
   functions for doing so: g_bytes_hash, g_bytes_equal
 * GByteArray is a mutable form of GBytes, and vice versa. There
   are functions for converting from one to the other efficiently:
   g_bytes_unref_to_array() and g_byte_array_free_to_bytes()
 * Adds g_byte_array_new_take() to support above functions

https://bugzilla.gnome.org/show_bug.cgi?id=663291
2011-11-24 08:58:38 +01:00
Matthias Clasen
7456b43c3e Move old deprecated gmain api into deprecated/ 2011-11-03 00:39:31 -04:00
Matthias Clasen
03766a1a38 Don't use G_DISABLE_DEPRECATED guards around deprecated functions
I'm leaving the old-style deprecation guards in place around
deprecated macros, enumeration values, etc, for now.
2011-11-03 00:04:15 -04:00
Matthias Clasen
d9053e026c Make things compile again 2011-10-17 01:52:10 -04:00
Matthias Clasen
0589f715e5 Move charset and locale name functions to their own files
They did not really belong into either gutils or gutf8.
2011-10-16 18:40:58 -04:00
Matthias Clasen
e7b4319d61 Move version APIs out of gutils
Just another cleanup.
2011-10-16 17:01:26 -04:00
Matthias Clasen
45f221c32f Move GTrashStack out of gutils.[hc]
Reducing the mess in gutils, and moving docs inline
at the same time. Double win.
2011-10-16 16:52:24 -04:00
Matthias Clasen
7a9987d35d Move environment-related functions into their own files
gutils.[hc] is a bit of a grab bag, so lets start cleaning
things up by moving all the environment-related functions
into separate genviron.[hc] files.

The private _g_getenv_nomalloc has been moved to its sole caller.
2011-10-15 16:13:08 -04:00
Matthias Clasen
2da83bbd36 Deprecate GCache
Ryan said it would be 'deprecated soon in GLib', when he removed
the use of this in GTK+. That was a year ago, so its about time
we act on it.
2011-10-12 19:55:02 -04:00
Matthias Clasen
10d86cda02 Move GStringChunk into its own files 2011-10-01 23:38:23 -04:00
Ryan Lortie
ae2ac9e809 Move some things to deprecated/gthread.h 2011-09-21 16:06:56 -04:00
Ryan Lortie
e88a12caa0 Move deprecated GCompletion to deprecated/
Keep the docs for now, though.  We'll remove them after a few more
cycles.

https://bugzilla.gnome.org/show_bug.cgi?id=659427
2011-09-18 22:01:45 -04:00
Ryan Lortie
c3fc0c285f Move deprecated GRel to deprecated/
Keep the docs for now, though.  We'll remove them after a few more
cycles.

https://bugzilla.gnome.org/show_bug.cgi?id=659427
2011-09-18 22:01:37 -04:00
Ryan Lortie
a2ea02d01e Move GAllocator/GMemChunk to separate file
Create a deprecated/ directory that we can start moving ancient chunks
of code to.  Start with GAllocator, GMemChunk and related APIs.

Also drop all mention of them from the docs.

https://bugzilla.gnome.org/show_bug.cgi?id=659427
2011-09-18 22:00:58 -04:00
Stef Walter
acbcb8f7e3 hmac: Implementation of HMAC in glib
This implements g_hmac_xxx() functionality using the standard checksum
functions supported by glib.

HMAC is a secure way to hash a key and a password. Many other
approaches fraught with append and prepend issues.

Includes test cases defined in relevant RFCs

https://bugzilla.gnome.org/show_bug.cgi?id=652480
2011-08-14 09:27:45 +02:00
Ryan Lortie
6b0e31ce48 Clean-up/tweaking of GDateTime and GTimeZone 2010-09-17 11:40:10 -04:00
Thiago Santos
e1f13ee9ed Add GDateTime to GLib
GDateTime is an opaque data type containing a date and time
representation. It's immutable once created and reference
counted.

https://bugzilla.gnome.org/show_bug.cgi?id=50076

Based on the code by: Christian Hergert <chris@dronelabs.com>

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2010-08-24 23:41:21 +01:00
Ryan Lortie
1e655eb02c merge GVariant 2010-02-10 11:35:01 -05:00
Ryan Lortie
669b0f2d6b Bug 548967 - 1 bit mutex lock
Add support for a mutex lock that consumes only one bit of storage
inside of an integer on systems that support futexes.  Futex is emulated
(at a higher cost) on systems that don't have it -- but only in the
contended case.
2010-01-28 12:40:46 -05:00
Ryan Lortie
0ccb288da1 merge GVariantType
GVariantType is the type system for GVariant
2010-01-25 11:27:28 -05:00
Dan Winship
6a3b4fa05a Add hostname-related utilities in glib/ghostutils.h
Functions for converting between UTF-8 IDNs (Internationalized Domain
Names) and their ASCII-Compatible Encodings, plus a function to recognize
IP addresses. Part of #548466.
2009-04-22 08:36:02 -04:00
Michael Natterer
db1ff156d5 #include <glib/gpoll.h>
2008-09-23  Michael Natterer  <mitch@imendio.com>

	* glib/glib.h: #include <glib/gpoll.h>

	* glib/gpoll.h: #error out if gpoll.h is included directly.

	* glib/gpoll.c: remove trailing whitespace.


svn path=/trunk/; revision=7537
2008-09-23 18:56:31 +00:00
Michael Natterer
e0aa9d8a61 #define __GLIB_H_INSIDE__ around including everything.
2008-05-05  Michael Natterer  <mitch@imendio.com>

	* glib/glib.h: #define __GLIB_H_INSIDE__ around including
	everything.

	* glib/*.h: check for that define instead of __G_LIB_H__ if
	G_DISABLE_SINGLE_INCLUDES is defined.

	* glib/gdatasetprivate.h: #include <glib.h> instead of
	<glib/gdataset.h>


svn path=/trunk/; revision=6875
2008-05-05 15:02:15 +00:00
Michael Natterer
f4bb21aa1d make it possible to disable single-file includes by defining
2008-03-14  Michael Natterer  <mitch@imendio.com>

	* glib/*.h: make it possible to disable single-file includes by
	defining G_DISABLE_SINGLE_INCLUDES when building against GLib.
	Approved by Tim Janik.

	* glib/glib.h: include <glib/gslice.h>.

	* glib/gi18n.h
	* glib/gi18n-lib.h
	* glib/gprintf.h: include <glib.h> so the above works when these
	files are included without including <glib.h> first.


svn path=/trunk/; revision=6713
2008-03-14 19:30:38 +00:00
Matthias Clasen
40ec4f95ff Include gurifuncs.h
2007-12-10  Matthias Clasen  <mclasen@redhat.com>

        * glib/glib.h: Include gurifuncs.h



svn path=/trunk/; revision=6093
2007-12-11 01:48:23 +00:00
Emmanuele Bassi
f17db34652 Add GChecksum, a generic wrapper around various hashing algorithms. At the
2007-12-04  Emmanuele Bassi  <ebassi@gnome.org>

	* glib/gchecksum.[ch]: Add GChecksum, a generic wrapper around
	various hashing algorithms. At the moment, the MD5, SHA-1 and
	SHA-256 algorithms are supported. (#443648)

	* glib/glib.h:
	* glib/Makefile.am:
	* glib/glib.symbols: Build glue for GChecksum

	* tests/Makefile.am
	* tests/checksum-test.c: Add test suite for GChecksum.

svn path=/trunk/; revision=6042
2007-12-04 16:31:51 +00:00
Tim Janik
6332518cc2 Renamed gtestframework to gtestutils.
* glib/glib.h:
* glib/Makefile.am: added gtestutils.h to public includes.

* glib/gtestutils.c: include gtestutils.h.

* glib/gtestutils.h:
* glib/glib.symbols:
* glib/tests/testing.c: renamed gtestframework to gtestutils.

* glib/gtestframework.h: renamed to gtestutils.h.

* glib/gtestframework.c: renamed to gtestutils.c.

svn path=/trunk/; revision=5910
2007-11-20 15:01:02 +00:00
Tim Janik
f0187b0a1b Added gtestframework.[hc] and glib/tests/.
svn path=/trunk/; revision=5874
2007-11-20 15:00:19 +00:00
Marco Barisione
0196d63975 Add GRegex for regular expression matching. (#50075)
2007-03-15  Marco Barisione <marco@barisione.org>

	Add GRegex for regular expression matching.  (#50075)

	* configure.in: Handle GRegex compilation.

	* glib/gregex.c:
	* glib/gregex.h: Code for GRegex.

	* glib/Makefile.am:
	* glib/makefile.msc.in: Updated makefiles.

	* glib/pcre/*: Internal copy of PCRE.

	* glib/update-pcre/*: Stuff to automatically update the internal PCRE
	to a newer version.

	* tests/regex-test.c:
	* tests/Makefile.am:
	* tests/makefile.msc.in: Add tests for GRegex.

svn path=/trunk/; revision=5408
2007-03-15 13:01:31 +00:00
Soren Sandmann
674c4df418 New files implementing GSequence, a list implemented using a binary tree.
2007-02-03  Soren Sandmann <sandmann@daimi.au.dk>

	* glib/gsequence.[ch]: New files implementing GSequence, a list
	implemented using a binary tree.
	* glib/glib.h, glib/glib.symbols: Update for GSequence.
	* docs/reference: Add documentation for GSequence
	* tests: Add sequence-test.c, a thorough test of all of 
	the GSequence API.


svn path=/trunk/; revision=5322
2007-02-03 23:24:50 +00:00
Alexander Larsson
5cf8f1d4a8 Add base64 encode/decode functions
2006-04-04  Alexander Larsson  <alexl@redhat.com>

	* glib/Makefile.am:
	* glib/gbase64.[ch]:
	* glib/glib.symbols:
	Add base64 encode/decode functions

	* glib/glib.h:
	Include gbase64.h

	* tests/Makefile.am:
	* tests/base64-test.c:
	Tests for base64 functions
2006-04-04 13:03:23 +00:00
Emmanuele Bassi
82702c458f glib/gbookmarkfile.h Add GBookmarkFile, a parser for files containing
2006-03-27  Emmanuele Bassi  <ebassi@cvs.gnome.org>

	* glib/glib.h:
	* glib/gbookmarkfile.h
	* glib/gbookmarkfile.c: Add GBookmarkFile, a parser for files
	containing bookmarks stored using the Desktop Bookmark
	specification. Fixes bug #327662.

	* glib/glib.symbols:
	* glib/Makefile.am:
	* glib/makefile.msc.in:
	* glib/makefile.mingw.in: Build glue for GBookmarkFile.
2006-03-27 18:22:47 +00:00
Matthias Clasen
748c230205 Add an mmap() wrapper called GMappedFile. (#148218, David Schleef, Behdad
2005-06-24  Matthias Clasen  <mclasen@redhat.com>

	Add an mmap() wrapper called GMappedFile. (#148218,
	David Schleef, Behdad Esfahbod)

	* glib/gmappedfile.[hc]: New files.

	* configure.in: Check for mmap.

	* glib/Makefile.am: Add new files.

	* glib/glib.symbols: Add new functions.

	* glib/glib.h: Include gmappedfile.h

	* tests/mapping-test.c: Tests for GMappedFile.

	* tests/Makefile.am: Add new file.
2005-06-25 03:38:32 +00:00
Matthias Clasen
bfa8a37a9e Add a parser for desktop entries and similar files with a .ini-like
2004-10-23  Matthias Clasen  <mclasen@redhat.com>

	* glib/gkeyfile.h:
	* glib/gkeyfile.c: Add a parser for desktop entries and
	similar files with a .ini-like syntax.  (#139974, Ray Strode)

	* glib/glib.h: Include gkeyfile.h

	* glib/Makefile.am (libglib_2_0_la_SOURCES): Add gkeyfile.c
	(glibsubinclude_HEADERS): Add gkeyfile.h

	* glib/gutils.c (_g_compute_locale_variants): Make this
	non-static and use it in gkeyfile.c
2004-10-23 06:16:42 +00:00
Anders Carlsson
deee47edfd Add GOption.
2004-08-02  Anders Carlsson  <andersca@gnome.org>

	* glib/Makefile.am:
	* glib/glib.h:
	* glib/goption.c:
	* glib/goption.h:
	* tests/.cvsignore:
	* tests/Makefile.am:
	* tests/option-test.c:
	Add GOption.
2004-08-02 21:40:40 +00:00
Sebastian Wilhelmi
dbbb29f608 New files to implement atomic operations for different platforms. Fixes
2004-02-26  Sebastian Wilhelmi  <seppi@seppi.de>

	* glib/gatomic.c, glib/gatomic.h: New files to implement atomic
	operations for different platforms. Fixes bug #63621.

	* glib/glib.h: Include gatomic.h.

	* configure.in: Add test for assembler routines for atomic operations.

	* glib/Makefile.am: Add gatomic.c, gatomic.h.

	* tests/Makefile.am, tests/atomic-test.c: Unit test for atomic
	operations.

	* glib/glib-overrides.txt, glib/glib-sections.txt,
	glib/glib-docs.sgml, glib/tmpl/atomic_operations.sgml: Add docs
	for atomic operations.
2004-02-26 14:30:35 +00:00
Owen Taylor
ff6174aedd Add check for dirent.h
Sun Nov  4 20:45:21 2001  Owen Taylor  <otaylor@redhat.com>

	* configure.in (CFLAGS): Add check for dirent.h

	* glib/glib.h glib/Makefile.am: Add gdir.

	* glib/gdir.c (g_dir_close): Couple of small tweaks
	now that it is actually compiling...
2001-11-05 01:47:31 +00:00
Owen Taylor
2fd6b001fb Move glib library into a subdirectory, make all GLib include files include
Tue Jun 26 11:43:46 2001  Owen Taylor  <otaylor@redhat.com>

	* configure.in Makefile.am *.[ch] glib/*.[ch] glib/Makefile.am:
	Move glib library into a subdirectory, make all GLib include
	files include as <glib/glist.h>

	* tests/testglib.c tests/testgdate.c tests/testgdateparser.c
	  tests/timeloop.c tests/timeloop-basic.c: Move all tests into
	the tests/ subdirectory.
2001-06-26 16:01:21 +00:00
Tim Janik
bdd9b28b5b added g_list_nth_prev() which walks ->prev instead of ->next.
Tue Apr  3 13:46:22 2001  Tim Janik  <timj@gtk.org>

        * glist.[hc]: added g_list_nth_prev() which walks ->prev instead
        of ->next.

        * gpattern.[hc]: added shell-style pattern matching code from beast,
        derived from the gtk_pattern_*() code, but with a couple of bug fixes
        and a number of optimizations.

Tue Apr  3 14:06:00 2001  Tim Janik  <timj@gtk.org>

        * gparam.[hc]: added g_param_spec_pool_list() to list pspecs per
        owner_type. the pspecs are not referenced, so the caller is
        supposed to have some idea about owner_type not randomly
        nuking his pspec's. if this is going to provide problems in
        the future, we can either auto-ref the pspecs, or add a
        _foreach variant, though the latter would have to invoke
        the callback while pspec's mutex is acquired, so i just
        went for the _list variant for now.

        * gclosure.h (G_CALLBACK): made GCallback a void (*) (void) fucntion.
2001-04-03 13:15:41 +00:00
Owen Taylor
df2f429cff -DG_DISABLE_DEPRECATED
Mon Mar 26 14:14:53 2001  Owen Taylor  <otaylor@redhat.com>

	* Makefile.am (INCLUDES): -DG_DISABLE_DEPRECATED

	* gmain.h timeloop.c: Surround the cruftiest stuff with
	#ifndef G_DISABLE_DEPRECATED.

	* gcompat.h gdate.h: Move compat defines back to
	gdate.h, surround with #ifndef G_DISABLE_DEPRECATED.
	Remove gcompat.h.
2001-03-26 19:23:17 +00:00
Tor Lillqvist
31c5b1899d Cygwin support contributed by Stefan Ondrejicka <ondrej@idata.sk>.
2001-02-21  Tor Lillqvist  <tml@iki.fi>

	Cygwin support contributed by Stefan Ondrejicka
	<ondrej@idata.sk>. Hopefully I got it all in while simultaneously
	adding support for auto*/libtool for mingw.

	* Makefile.am: Changes for auto* support on Cygwin and Win32. Do
	still distribute the hand-written makefiles and *.win32.in files,
	though. Use GIO, GSPAWN and PLATFORMDEP macros set by configure.
	Use -no-undefined. Pass -export-symbols glib.def to libtool.

	* configure.in: Define G_PLATFORM_WIN32 on both pure Win32 (mingw)
	and Cygwin. Add AC_CYGWIN, AC_EXEEXT and AC_LIBTOOL_WIN32_DLL
	calls for Cygwin and mingw support.  Check for %I64u guint64
	format (in MS C library). Set G_MODULE_IMPL on mingw and
	Cygwin. Use ac_object and ac_exeext.  Set GIO, GSPAWN, PLATFORMDEP
	and G_LIBS_EXTRA. Compile timeloop only on Unix. Define OS_WIN32
	automake conditional on Win32.

	* glib.h: Include gwin32.h also on Cygwin.

	* gfileutils.c (get_contents_posix): Use O_BINARY (defined as 0 on
	Unix) for Cygwin's sake.

	* gtimer.c (GETTIME): Reduce #ifdefs, use a macro GETTIME().

	* gconvert.c
	* gthread.c
	* gutf8.c
	* gutils.c: For code needed both on Cygwin and native Win32,
	test for G_PLATFORM_WIN32.

	* gmarkup.h: Use G_BEGIN_DECLS and G_END_DECLS.

	* gtypes.h: Refine GLIB_VAR definition. Also check for DLL_EXPORT
	in case compiling a static library on Win32 or Cygwin.

	* gwin32.c: No <direct.h> on Cygwin. No need for ftruncate() or
	dirent emulation on Cygwin.
	(get_package_directory_from_module) Convert return value from
	GetModuleFileName() to POSIX path on Cygwin.

	* tests/Makefile.am (progs_LDADD): Link with libglib, libgthread
	and libgmodule as appropriate. Use -no-undefined.

	* gbacktrace.c: Move #ifdefs around a bit on Win32.

	* gshell.c (unquote_string_inplace): Make static.
2001-03-09 21:23:33 +00:00
Ali Abdin
855e230f31 New gcompat.h header file as recommended by Havoc.
2000-12-24  Ali Abdin  <aliabdin@aucegypt.edu>

        * Makefile.am, gcompat.h, glib.h: New gcompat.h header file
          as recommended by Havoc.

        * gdate.c, gdate.h, testgdate.c,
          docs/reference/glib/glib-sections.txt,
          docs/reference/glib/tmpl/date.sgml, tests/date-test.c: Rename some
          of the gdate functions to use the '_get' in their name. Patch
          reviewed by Havoc.
2000-12-24 12:11:06 +00:00
Jonathan Blandford
2645aaf59c Patch from David Benson <daveb@idealab.com> to add user_data support to
Mon Nov 20 18:55:17 2000  Jonathan Blandford  <jrb@redhat.com>

	* gtree.[hc]: Patch from David Benson <daveb@idealab.com> to add
	user_data support to gtree functions.

Mon Nov 13 18:35:52 2000  Jonathan Blandford  <jrb@redhat.com>

	* gtypes.h (GCompareFuncData): new func type to let you use user
	data when comparing nodes.

	* gslist.c (g_list_sort_with_data): new function to sort with
	user_data.

	* glist.c (g_list_sort_with_data): new function to sort with
	user_data.

	* garray.[ch]: Added convenience functions to sort arrays.
2000-11-20 23:59:32 +00:00
Havoc Pennington
32ef70d4b2 New module to parse a simple markup language
2000-10-24  Havoc Pennington  <hp@pobox.com>

        * gmarkup.h, gmarkup.c: New module to parse a simple
	markup language

	* Makefile.am: add gmarkup.h, gmarkup.c

	* tests/Makefile.am: add markup-test

	* gstring.h (g_string_new_len): new function to create a string
	with a length
	(g_string_new): avoid a gratuitous realloc
2000-10-27 02:46:04 +00:00
Tor Lillqvist
4905022b8e Pass -DGSPAWN_HELPER when building it. Link with user32.lib.
2000-10-19  Tor Lillqvist  <tml@iki.fi>

	* makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link
	with user32.lib.

	* gspawn-win32.c
	* gfileutils.c: Make them compile with picky MSVC.

	* gwin32.h: New file. Move Win32-only stuff that isn't related to
	GIOChannels here from giochannel.h.

	* Makefile.am: Add it here.

	* giochannel.h: Move stuff to gwin32.h.

	* glib.h: On Win32, include gwin32.h.
2000-10-19 17:52:12 +00:00
Sebastian Wilhelmi
bceccd7243 Added the new headers to glibinclude_HEADERS.
2000-10-12  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* Makefile.am: Added the new headers to glibinclude_HEADERS.

	* glib.h: Forgot to include gerror.h.
2000-10-12 12:16:16 +00:00