summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2007-11-28 12:39:07 +0000
committerAlexander Larsson <alexl@src.gnome.org>2007-11-28 12:39:07 +0000
commit7f3280230bc9448a5750fc17a6eabef691ba25f4 (patch)
tree27740130a31d7a914ec6b7b64172c5146553cfa7
parent61582bd91cba508362d0e28db4d6e3f307b27b48 (diff)
downloadglib-7f3280230bc9448a5750fc17a6eabef691ba25f4.tar.gz
Added. Added. Added. Added.
2007-11-28 Alexander Larsson <alexl@redhat.com> * Makefile.am: * abicheck.sh: Added. * makegioalias.pl: Added. * pltcheck.sh: Added. * gio.symbols: Added. * *.c: * inotify/*.c Initial work on adding symbol handling. * gvfs.h: Correct ifdef guard name * fam/Makefile.am: * inotify/Makefile.am: * xdgmime/Makefile.am: Include toplevel Makefile.decl svn path=/trunk/; revision=5972
-rw-r--r--gio/ChangeLog19
-rw-r--r--gio/Makefile.am27
-rwxr-xr-xgio/abicheck.sh13
-rw-r--r--gio/fam/Makefile.am2
-rw-r--r--gio/gappinfo.c7
-rw-r--r--gio/gasynchelper.c2
-rw-r--r--gio/gasyncresult.c5
-rw-r--r--gio/gbufferedinputstream.c6
-rw-r--r--gio/gbufferedoutputstream.c5
-rw-r--r--gio/gcancellable.c4
-rw-r--r--gio/gcontenttype.c5
-rw-r--r--gio/gdatainputstream.c5
-rw-r--r--gio/gdataoutputstream.c5
-rw-r--r--gio/gdataoutputstream.h2
-rw-r--r--gio/gdesktopappinfo.c5
-rw-r--r--gio/gdirectorymonitor.c5
-rw-r--r--gio/gdrive.c5
-rw-r--r--gio/gdummyfile.c2
-rw-r--r--gio/gfile.c5
-rw-r--r--gio/gfileattribute.c5
-rw-r--r--gio/gfileenumerator.c5
-rw-r--r--gio/gfileicon.c5
-rw-r--r--gio/gfileinfo.c5
-rw-r--r--gio/gfileinputstream.c6
-rw-r--r--gio/gfilemonitor.c5
-rw-r--r--gio/gfilenamecompleter.c5
-rw-r--r--gio/gfileoutputstream.c5
-rw-r--r--gio/gfilterinputstream.c5
-rw-r--r--gio/gfilteroutputstream.c4
-rw-r--r--gio/gicon.c4
-rw-r--r--gio/ginputstream.c5
-rw-r--r--gio/gio.symbols688
-rw-r--r--gio/gioerror.c5
-rw-r--r--gio/giomodule.c5
-rw-r--r--gio/gioscheduler.c5
-rw-r--r--gio/gloadableicon.c5
-rw-r--r--gio/glocaldirectorymonitor.c2
-rw-r--r--gio/glocalfile.c2
-rw-r--r--gio/glocalfileenumerator.c2
-rw-r--r--gio/glocalfileinfo.c2
-rw-r--r--gio/glocalfileinputstream.c1
-rw-r--r--gio/glocalfilemonitor.c2
-rw-r--r--gio/glocalfileoutputstream.c2
-rw-r--r--gio/glocalvfs.c2
-rw-r--r--gio/gmemoryinputstream.c6
-rw-r--r--gio/gmemoryoutputstream.c5
-rw-r--r--gio/gmountoperation.c5
-rw-r--r--gio/gnativevolumemonitor.c1
-rw-r--r--gio/goutputstream.c5
-rw-r--r--gio/gpollfilemonitor.c2
-rw-r--r--gio/gseekable.c4
-rw-r--r--gio/gsimpleasyncresult.c5
-rw-r--r--gio/gthemedicon.c5
-rw-r--r--gio/gunionvolumemonitor.c5
-rw-r--r--gio/gunixdrive.c2
-rw-r--r--gio/gunixinputstream.c4
-rw-r--r--gio/gunixmounts.c5
-rw-r--r--gio/gunixoutputstream.c5
-rw-r--r--gio/gunixvolume.c2
-rw-r--r--gio/gunixvolumemonitor.c2
-rw-r--r--gio/gvfs.c4
-rw-r--r--gio/gvfs.h4
-rw-r--r--gio/gvolume.c5
-rw-r--r--gio/gvolumemonitor.c4
-rw-r--r--gio/gwin32appinfo.c2
-rw-r--r--gio/inotify/Makefile.am2
-rw-r--r--gio/inotify/ginotifydirectorymonitor.c2
-rw-r--r--gio/inotify/ginotifyfilemonitor.c2
-rwxr-xr-xgio/makegioalias.pl137
-rwxr-xr-xgio/pltcheck.sh19
-rw-r--r--gio/xdgmime/Makefile.am2
71 files changed, 1147 insertions, 10 deletions
diff --git a/gio/ChangeLog b/gio/ChangeLog
index 211d1b031..05557fd07 100644
--- a/gio/ChangeLog
+++ b/gio/ChangeLog
@@ -1,3 +1,22 @@
+2007-11-28 Alexander Larsson <alexl@redhat.com>
+
+ * Makefile.am:
+ * abicheck.sh: Added.
+ * makegioalias.pl: Added.
+ * pltcheck.sh: Added.
+ * gio.symbols: Added.
+ * *.c:
+ * inotify/*.c
+ Initial work on adding symbol handling.
+
+ * gvfs.h:
+ Correct ifdef guard name
+
+ * fam/Makefile.am:
+ * inotify/Makefile.am:
+ * xdgmime/Makefile.am:
+ Include toplevel Makefile.decl
+
2007-11-27 Matthias Clasen <mclasen@redhat.com>
* gcontenttype.c: Move doc comments to the unix section.
diff --git a/gio/Makefile.am b/gio/Makefile.am
index f965501ff..b5895171c 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.decl
+
NULL =
SUBDIRS=
@@ -6,6 +8,21 @@ if OS_UNIX
SUBDIRS += xdgmime
endif
+gio.def: gio.symbols
+ (echo -e EXPORTS; $(CPP) -P -DINCLUDE_VARIABLES -DINCLUDE_INTERNAL_SYMBOLS -DG_OS_WIN32 -DALL_FILES - <$(srcdir)/gobject.symbols | sed -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g' | sort) > gobject.def
+
+gioalias.h: gio.symbols
+ $(PERL) $(srcdir)/makegioalias.pl < $(srcdir)/gio.symbols > gioalias.h
+
+gioaliasdef.c: gio.symbols
+ $(PERL) $(srcdir)/makegioalias.pl -def < $(srcdir)/gio.symbols > gioaliasdef.c
+
+if OS_LINUX
+if HAVE_GNUC_VISIBILITY
+TESTS = abicheck.sh pltcheck.sh
+endif
+endif
+
AM_CPPFLAGS = \
-DG_LOG_DOMAIN=\"GLib-GIO\" \
-I$(top_builddir) \
@@ -19,8 +36,9 @@ AM_CPPFLAGS = \
lib_LTLIBRARIES = libgio-2.0.la
marshal_sources = \
- gio-marshal.h \
- gio-marshal.c \
+ gio-marshal.h \
+ gio-marshal.c \
+ makegioalias.pl \
$(NULL)
if CROSS_COMPILING
@@ -215,8 +233,13 @@ gioinclude_HEADERS = \
gvolumemonitor.h \
$(NULL)
+
+# these sources (also mentioned above) are generated.
+BUILT_SOURCES = gio-marshal.h gio-marshal.c gioalias.h gioaliasdef.c
+
EXTRA_DIST = \
gio-marshal.list \
+ gio.symbols \
$(NULL)
CLEANFILES = \
diff --git a/gio/abicheck.sh b/gio/abicheck.sh
new file mode 100755
index 000000000..692ae2a19
--- /dev/null
+++ b/gio/abicheck.sh
@@ -0,0 +1,13 @@
+#! /bin/sh
+
+egrep '^#([^i]|if).*[^\]$' "${top_builddir:-..}/glibconfig.h" > glibconfig.cpp
+
+INCLUDES="-include ${top_builddir:-..}/config.h"
+INCLUDES="$INCLUDES -include glibconfig.cpp"
+
+cpp -DINCLUDE_VARIABLES -P $INCLUDES -DALL_FILES ${srcdir:-.}/gobject.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE$//' | sort > expected-abi
+rm glibconfig.cpp
+
+nm -D -g --defined-only .libs/libgio-2.0.so | cut -d ' ' -f 3 | sort > actual-abi
+
+diff -u expected-abi actual-abi && rm expected-abi actual-abi
diff --git a/gio/fam/Makefile.am b/gio/fam/Makefile.am
index 053c74163..3d9b4d592 100644
--- a/gio/fam/Makefile.am
+++ b/gio/fam/Makefile.am
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.decl
+
NULL =
module_flags = -export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload)'
diff --git a/gio/gappinfo.c b/gio/gappinfo.c
index 7dfd1623a..98a5fe1dc 100644
--- a/gio/gappinfo.c
+++ b/gio/gappinfo.c
@@ -25,6 +25,8 @@
#include "glibintl.h"
#include <gioerror.h>
+#include "gioalias.h"
+
/**
* SECTION:gappinfo
* @short_description: Application information and launch contexts
@@ -33,8 +35,6 @@
* #GAppInfo and #GAppLaunchContext are used for describing and launching
* installed system applications.
*
- * @Note: These may/will be moved to Gtk+ in the future.
- *
**/
static void g_app_info_base_init (gpointer g_class);
@@ -594,3 +594,6 @@ g_app_launch_context_launch_failed (GAppLaunchContext *context,
if (class->launch_failed != NULL)
class->launch_failed (context, startup_notify_id);
}
+
+#define __G_APP_INFO_C__
+#include "gioaliasdef.c"
diff --git a/gio/gasynchelper.c b/gio/gasynchelper.c
index 620885d45..aefd987b9 100644
--- a/gio/gasynchelper.c
+++ b/gio/gasynchelper.c
@@ -24,6 +24,8 @@
#include "gasynchelper.h"
+#include "gioalias.h"
+
/**
* SECTION:gasynchelper
* @short_description: Asynchronous Helper Functions
diff --git a/gio/gasyncresult.c b/gio/gasyncresult.c
index 9d698a599..5bba11374 100644
--- a/gio/gasyncresult.c
+++ b/gio/gasyncresult.c
@@ -24,6 +24,8 @@
#include "gasyncresult.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gasyncresult
* @short_description: Asynchronous Function Results
@@ -167,3 +169,6 @@ g_async_result_get_source_object (GAsyncResult *res)
return (* iface->get_source_object) (res);
}
+
+#define __G_ASYNC_RESULT_C__
+#include "gioaliasdef.c"
diff --git a/gio/gbufferedinputstream.c b/gio/gbufferedinputstream.c
index bbc9a4c8e..49295ee0f 100644
--- a/gio/gbufferedinputstream.c
+++ b/gio/gbufferedinputstream.c
@@ -28,6 +28,8 @@
#include <string.h>
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gbufferedinputstream
* @short_description: Buffered Input Stream
@@ -1359,4 +1361,8 @@ g_buffered_input_stream_skip_finish (GInputStream *stream,
return data->bytes_skipped;
}
+
+#define __G_BUFFERED_INPUT_STREAM_C__
+#include "gioaliasdef.c"
+
/* vim: ts=2 sw=2 et */
diff --git a/gio/gbufferedoutputstream.c b/gio/gbufferedoutputstream.c
index 309de9ee6..2fc57aa3e 100644
--- a/gio/gbufferedoutputstream.c
+++ b/gio/gbufferedoutputstream.c
@@ -27,6 +27,8 @@
#include "string.h"
#include "glibintl.h"
+#include <gioalias.h>
+
/**
* SECTION:gbufferedoutputstream
* @short_description: Buffered Output Stream
@@ -758,4 +760,7 @@ g_buffered_output_stream_close_finish (GOutputStream *stream,
return TRUE;
}
+#define __G_BUFFERED_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
+
/* vim: ts=2 sw=2 et */
diff --git a/gio/gcancellable.c b/gio/gcancellable.c
index a31420bb2..e14e98123 100644
--- a/gio/gcancellable.c
+++ b/gio/gcancellable.c
@@ -27,6 +27,7 @@
#include "gcancellable.h"
#include "glibintl.h"
+#include "gioalias.h"
/**
* SECTION:gcancellable
@@ -334,4 +335,5 @@ g_cancellable_cancel (GCancellable *cancellable)
}
}
-
+#define __G_CANCELLABLE_C__
+#include "gioaliasdef.c"
diff --git a/gio/gcontenttype.c b/gio/gcontenttype.c
index 84037ce8b..0838827c9 100644
--- a/gio/gcontenttype.c
+++ b/gio/gcontenttype.c
@@ -28,6 +28,8 @@
#include "gcontenttypeprivate.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gcontenttype
* @short_description: platform specific content typing
@@ -868,3 +870,6 @@ g_content_types_get_registered (void)
}
#endif /* Unix version */
+
+#define __G_CONTENT_TYPE_C__
+#include "gioaliasdef.c"
diff --git a/gio/gdatainputstream.c b/gio/gdatainputstream.c
index 095428a56..77dbd5c85 100644
--- a/gio/gdatainputstream.c
+++ b/gio/gdatainputstream.c
@@ -25,6 +25,8 @@
#include "gdatainputstream.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gdatainputstream
* @short_description: Data Input Stream
@@ -854,3 +856,6 @@ g_data_input_stream_read_until (GDataInputStream *stream,
return data_until;
}
+
+#define __G_DATA_INPUT_STREAM_C__
+#include "gioaliasdef.c"
diff --git a/gio/gdataoutputstream.c b/gio/gdataoutputstream.c
index 5f6bd820d..fc7c57199 100644
--- a/gio/gdataoutputstream.c
+++ b/gio/gdataoutputstream.c
@@ -25,6 +25,8 @@
#include "gdataoutputstream.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gdataoutputstream
* @short_description: Data Output Stream
@@ -473,3 +475,6 @@ g_data_output_stream_put_string (GDataOutputStream *stream,
&bytes_written,
cancellable, error);
}
+
+#define __G_DATA_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
diff --git a/gio/gdataoutputstream.h b/gio/gdataoutputstream.h
index 954540413..643cbde20 100644
--- a/gio/gdataoutputstream.h
+++ b/gio/gdataoutputstream.h
@@ -74,8 +74,6 @@ GDataOutputStream* g_data_output_stream_new (GOutputStream *base_stream)
void g_data_output_stream_set_byte_order (GDataOutputStream *stream,
GDataStreamByteOrder order);
GDataStreamByteOrder g_data_output_stream_get_byte_order (GDataOutputStream *stream);
-void g_data_output_stream_set_expand_buffer (GDataOutputStream *stream,
- gboolean expand_buffer);
gboolean g_data_output_stream_put_byte (GDataOutputStream *stream,
guchar data,
diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
index 80c0a1038..a99ea1a7f 100644
--- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c
@@ -36,6 +36,8 @@
#include <glib/gstdio.h>
#include "glibintl.h"
+#include "gioalias.h"
+
#define DEFAULT_APPLICATIONS_GROUP "Default Applications"
#define MIME_CACHE_GROUP "MIME Cache"
@@ -2190,3 +2192,6 @@ get_all_desktop_entries_for_mime_type (const char *base_mime_type)
return desktop_entries;
}
+
+#define __G_DESKTOP_APP_INFO_C__
+#include "gioaliasdef.c"
diff --git a/gio/gdirectorymonitor.c b/gio/gdirectorymonitor.c
index 489a7adcc..e1d71d192 100644
--- a/gio/gdirectorymonitor.c
+++ b/gio/gdirectorymonitor.c
@@ -29,6 +29,8 @@
#include "gvfs.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gdirectorymonitor
* @short_description: Directory Monitor
@@ -489,3 +491,6 @@ g_directory_monitor_emit_event (GDirectoryMonitor *monitor,
update_rate_limiter_timeout (monitor, limiter->send_virtual_changes_done_at);
}
}
+
+#define __G_DIRECTORY_MONITOR_C__
+#include "gioaliasdef.c"
diff --git a/gio/gdrive.c b/gio/gdrive.c
index 6303f33d5..e90218638 100644
--- a/gio/gdrive.c
+++ b/gio/gdrive.c
@@ -25,6 +25,8 @@
#include "gsimpleasyncresult.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gdrive
* @short_description: Virtual File System drive management
@@ -383,3 +385,6 @@ g_drive_eject_finish (GDrive *drive,
return (* iface->mount_finish) (drive, result, error);
}
+
+#define __G_DRIVE_C__
+#include "gioaliasdef.c"
diff --git a/gio/gdummyfile.c b/gio/gdummyfile.c
index 40ac3b166..d2dd249aa 100644
--- a/gio/gdummyfile.c
+++ b/gio/gdummyfile.c
@@ -32,6 +32,8 @@
#include "gdummyfile.h"
+#include "gioalias.h"
+
static void g_dummy_file_file_iface_init (GFileIface *iface);
typedef struct {
diff --git a/gio/gfile.c b/gio/gfile.c
index a28671c5b..773d2f2c8 100644
--- a/gio/gfile.c
+++ b/gio/gfile.c
@@ -34,6 +34,8 @@
#include "gpollfilemonitor.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gfile
* @short_description: File and Directory Handling
@@ -4605,3 +4607,6 @@ g_file_replace_contents_finish (GFile *file,
return TRUE;
}
+
+#define __G_FILE_C__
+#include "gioaliasdef.c"
diff --git a/gio/gfileattribute.c b/gio/gfileattribute.c
index 394404e1e..b3b2dfa8e 100644
--- a/gio/gfileattribute.c
+++ b/gio/gfileattribute.c
@@ -28,6 +28,8 @@
#include <glib-object.h>
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gfileattribute
* @short_description: Key-Value Paired File Attributes
@@ -906,3 +908,6 @@ g_file_attribute_info_list_add (GFileAttributeInfoList *list,
list_update_public (priv);
}
+
+#define __G_FILE_ATTRIBUTE_C__
+#include "gioaliasdef.c"
diff --git a/gio/gfileenumerator.c b/gio/gfileenumerator.c
index 44161515d..1f7e9dd30 100644
--- a/gio/gfileenumerator.c
+++ b/gio/gfileenumerator.c
@@ -27,6 +27,8 @@
#include "gsimpleasyncresult.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gfileenumerator
* @short_description: Enumerated Files Routines
@@ -628,3 +630,6 @@ g_file_enumerator_real_close_finish (GFileEnumerator *enumerator,
g_file_enumerator_real_close_async);
return TRUE;
}
+
+#define __G_FILE_ENUMERATOR_C__
+#include "gioaliasdef.c"
diff --git a/gio/gfileicon.c b/gio/gfileicon.c
index 5a6687905..612184d0c 100644
--- a/gio/gfileicon.c
+++ b/gio/gfileicon.c
@@ -25,6 +25,8 @@
#include "gfileicon.h"
#include "gsimpleasyncresult.h"
+#include "gioalias.h"
+
/**
* SECTION:gfileicon
* @short_description: Icons for given files
@@ -269,3 +271,6 @@ g_file_icon_loadable_icon_iface_init (GLoadableIconIface *iface)
iface->load_async = g_file_icon_load_async;
iface->load_finish = g_file_icon_load_finish;
}
+
+#define __G_FILE_ICON_C__
+#include "gioaliasdef.c"
diff --git a/gio/gfileinfo.c b/gio/gfileinfo.c
index 3df6325a6..3585a3eea 100644
--- a/gio/gfileinfo.c
+++ b/gio/gfileinfo.c
@@ -42,6 +42,8 @@
#include "gfileinfo.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/* We use this nasty thing, because NULL is a valid attribute matcher (matches nothing) */
#define NO_ATTRIBUTE_MASK ((GFileAttributeMatcher *)1)
@@ -2083,3 +2085,6 @@ g_file_attribute_matcher_enumerate_next (GFileAttributeMatcher *matcher)
return get_attribute_for_id (sub_matcher->id);
}
}
+
+#define __G_FILE_INFO_C__
+#include "gioaliasdef.c"
diff --git a/gio/gfileinputstream.c b/gio/gfileinputstream.c
index 94c02699c..0d52cf9ab 100644
--- a/gio/gfileinputstream.c
+++ b/gio/gfileinputstream.c
@@ -28,6 +28,8 @@
#include "gsimpleasyncresult.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gfileinputstream
* @short_description: file input streaming operations
@@ -518,3 +520,7 @@ g_file_input_stream_real_query_info_finish (GFileInputStream *stream,
return NULL;
}
+
+#define __G_FILE_INPUT_STREAM_C__
+#include "gioaliasdef.c"
+
diff --git a/gio/gfilemonitor.c b/gio/gfilemonitor.c
index eaec3cf8e..1e1b5a213 100644
--- a/gio/gfilemonitor.c
+++ b/gio/gfilemonitor.c
@@ -28,6 +28,8 @@
#include "gvfs.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gfilemonitor
* @short_description: File Monitor
@@ -403,3 +405,6 @@ g_file_monitor_emit_event (GFileMonitor *monitor,
schedule_virtual_change_done (monitor, file);
}
}
+
+#define __G_FILE_MONITOR_C__
+#include "gioaliasdef.c"
diff --git a/gio/gfilenamecompleter.c b/gio/gfilenamecompleter.c
index 76e6276a6..8558ecfda 100644
--- a/gio/gfilenamecompleter.c
+++ b/gio/gfilenamecompleter.c
@@ -27,6 +27,8 @@
#include <string.h>
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gfilenamecompleter
* @short_description: Filename Completer
@@ -508,3 +510,6 @@ g_filename_completer_set_dirs_only (GFilenameCompleter *completer,
completer->dirs_only = dirs_only;
}
+
+#define __G_FILENAME_COMPLETER_C__
+#include "gioaliasdef.c"
diff --git a/gio/gfileoutputstream.c b/gio/gfileoutputstream.c
index f54a58356..d252d5401 100644
--- a/gio/gfileoutputstream.c
+++ b/gio/gfileoutputstream.c
@@ -28,6 +28,8 @@
#include "gsimpleasyncresult.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gfileoutputstream
* @short_description: file output streaming operations
@@ -645,3 +647,6 @@ g_file_output_stream_real_query_info_finish (GFileOutputStream *stream,
return NULL;
}
+
+#define __G_FILE_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
diff --git a/gio/gfilterinputstream.c b/gio/gfilterinputstream.c
index 078a479cf..012a2218e 100644
--- a/gio/gfilterinputstream.c
+++ b/gio/gfilterinputstream.c
@@ -25,6 +25,8 @@
#include "ginputstream.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gfilterinputstream
* @short_description: Filter Input Stream
@@ -396,4 +398,7 @@ g_filter_input_stream_close_finish (GInputStream *stream,
return res;
}
+#define __G_FILTER_INPUT_STREAM_C__
+#include "gioaliasdef.c"
+
/* vim: ts=2 sw=2 et */
diff --git a/gio/gfilteroutputstream.c b/gio/gfilteroutputstream.c
index 5fdd3b329..3d420fc66 100644
--- a/gio/gfilteroutputstream.c
+++ b/gio/gfilteroutputstream.c
@@ -25,6 +25,8 @@
#include "goutputstream.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gfilteroutputstream
* @short_description: Filter Output Stream
@@ -376,5 +378,7 @@ g_filter_output_stream_close_finish (GOutputStream *stream,
return res;
}
+#define __G_FILTER_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
/* vim: ts=2 sw=2 et */
diff --git a/gio/gicon.c b/gio/gicon.c
index 4b2bf3f4f..a6631a189 100644
--- a/gio/gicon.c
+++ b/gio/gicon.c
@@ -25,6 +25,8 @@
#include "glibintl.h"
+#include "gioalias.h"
+
static void g_icon_base_init (gpointer g_class);
static void g_icon_class_init (gpointer g_class,
gpointer class_data);
@@ -120,3 +122,5 @@ g_icon_equal (GIcon *icon1,
return (* iface->equal) (icon1, icon2);
}
+#define __G_ICON_C__
+#include "gioaliasdef.c"
diff --git a/gio/ginputstream.c b/gio/ginputstream.c
index 77def7016..ba835d831 100644
--- a/gio/ginputstream.c
+++ b/gio/ginputstream.c
@@ -28,6 +28,8 @@
#include "gseekable.h"
#include "gsimpleasyncresult.h"
+#include "gioalias.h"
+
/**
* SECTION:ginputstream
* @short_description: base class for implementing streaming input
@@ -1204,3 +1206,6 @@ g_input_stream_real_close_finish (GInputStream *stream,
g_assert (g_simple_async_result_get_source_tag (simple) == g_input_stream_real_close_async);
return TRUE;
}
+
+#define __G_INPUT_STREAM_C__
+#include "gioaliasdef.c"
diff --git a/gio/gio.symbols b/gio/gio.symbols
new file mode 100644
index 000000000..ba70fcec1
--- /dev/null
+++ b/gio/gio.symbols
@@ -0,0 +1,688 @@
+/* This file lists all exported symbols. It is used to generate
+ * the gio.def file used to control exports on Windows and the
+ * gioalias.h/gioaliasdef.c files used to avoid PLT entries for
+ * internal uses of exported functions (see makegioalias.pl).
+ *
+ * Every symbol must be included in the right
+ * #ifdef IN_HEADER(sym) #endif and
+ * #ifdef IN_FILE(sym) #endif sections.
+ */
+#ifdef ALL_FILES
+#define IN_FILE(x) 1
+#define IN_HEADER(x) 1
+#endif
+
+#if IN_HEADER(__G_VFS_H__)
+#if IN_FILE(__G_VFS_C__)
+g_vfs_get_type G_GNUC_CONST
+g_vfs_is_active
+g_vfs_get_file_for_path
+g_vfs_get_file_for_uri
+g_vfs_get_supported_uri_schemes
+g_vfs_parse_name
+g_vfs_get_default
+g_vfs_get_local
+#endif
+#endif
+
+#if IN_HEADER(__G_APP_INFO_H__)
+#if IN_FILE(__G_APP_INFO_C__)
+g_app_info_get_type G_GNUC_CONST
+g_app_launch_context_get_type G_GNUC_CONST
+g_app_info_dup
+g_app_info_equal
+g_app_info_get_id
+g_app_info_get_name
+g_app_info_get_description
+g_app_info_get_executable
+g_app_info_get_icon
+g_app_info_launch
+g_app_info_supports_uris
+g_app_info_launch_uris
+g_app_info_should_show
+g_app_info_set_as_default_for_type
+g_app_info_set_as_default_for_extension
+g_app_info_add_supports_type
+g_app_info_can_remove_supports_type
+g_app_info_remove_supports_type
+g_app_launch_context_new
+g_app_launch_context_get_display
+g_app_launch_context_get_startup_notify_id
+g_app_launch_context_launch_failed
+#endif
+
+#if IN_FILE(__G_DESKTOP_APP_INFO_C__)
+g_app_info_create_from_commandline
+g_app_info_get_all
+g_app_info_get_all_for_type
+g_app_info_get_default_for_type
+g_app_info_get_default_for_uri_scheme
+#endif
+#endif
+
+
+#if IN_HEADER(__G_ASYNC_RESULT_H__)
+#if IN_FILE(__G_ASYNC_RESULT_C__)
+g_async_result_get_type G_GNUC_CONST
+g_async_result_get_user_data
+g_async_result_get_source_object
+#endif
+#endif
+
+#if IN_HEADER(__G_BUFFERED_INPUT_STREAM_H__)
+#if IN_FILE(__G_BUFFERED_INPUT_STREAM_C__)
+g_buffered_input_stream_get_type G_GNUC_CONST
+g_buffered_input_stream_new
+g_buffered_input_stream_new_sized
+g_buffered_input_stream_get_buffer_size
+g_buffered_input_stream_set_buffer_size
+g_buffered_input_stream_get_available
+g_buffered_input_stream_peek
+g_buffered_input_stream_peek_buffer
+g_buffered_input_stream_fill
+g_buffered_input_stream_fill_async
+g_buffered_input_stream_fill_finish
+g_buffered_input_stream_read_byte
+#endif
+#endif
+
+#if IN_HEADER(__G_BUFFERED_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_BUFFERED_OUTPUT_STREAM_C__)
+g_buffered_output_stream_get_type G_GNUC_CONST;
+g_buffered_output_stream_new
+g_buffered_output_stream_new_sized
+g_buffered_output_stream_get_buffer_size
+g_buffered_output_stream_set_buffer_size
+g_buffered_output_stream_get_auto_grow
+g_buffered_output_stream_set_auto_grow
+#endif
+#endif
+
+#if IN_HEADER(__G_CANCELLABLE_H__)
+#if IN_FILE(__G_CANCELLABLE_C__)
+g_cancellable_get_type G_GNUC_CONST
+g_cancellable_new
+g_cancellable_is_cancelled
+g_cancellable_set_error_if_cancelled
+g_cancellable_get_fd
+g_cancellable_get_current
+g_push_current_cancellable
+g_pop_current_cancellable
+g_cancellable_reset
+g_cancellable_cancel
+#endif
+#endif
+
+#if IN_HEADER(__G_CONTENT_TYPE_H__)
+#if IN_FILE(__G_CONTENT_TYPE_C__)
+g_content_type_equals
+g_content_type_is_a
+g_content_type_is_unknown
+g_content_type_get_description
+g_content_type_get_mime_type
+g_content_type_get_icon
+g_content_type_can_be_executable
+g_content_type_guess
+g_content_types_get_registered
+#endif
+#endif
+
+#if IN_HEADER(__G_DATA_INPUT_STREAM_H__)
+#if IN_FILE(__G_DATA_INPUT_STREAM_C__)
+g_data_input_stream_get_type G_GNUC_CONST
+g_data_input_stream_new
+g_data_input_stream_set_byte_order
+g_data_input_stream_get_byte_order
+g_data_input_stream_set_newline_type
+g_data_input_stream_get_newline_type
+g_data_input_stream_read_byte
+g_data_input_stream_read_int16
+g_data_input_stream_read_uint16
+g_data_input_stream_read_int32
+g_data_input_stream_read_uint32
+g_data_input_stream_read_int64
+g_data_input_stream_read_uint64
+g_data_input_stream_read_line
+g_data_input_stream_read_until
+#endif
+#endif
+
+#if IN_HEADER(__G_DATA_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_DATA_OUTPUT_STREAM_C__)
+g_data_output_stream_get_type G_GNUC_CONST
+g_data_output_stream_new
+g_data_output_stream_set_byte_order
+g_data_output_stream_get_byte_order
+g_data_output_stream_put_byte
+g_data_output_stream_put_int16
+g_data_output_stream_put_uint16
+g_data_output_stream_put_int32
+g_data_output_stream_put_uint32
+g_data_output_stream_put_int64
+g_data_output_stream_put_uint64
+g_data_output_stream_put_string
+#endif
+#endif
+
+#if IN_HEADER(__G_DIRECTORY_MONITOR_H__)
+#if IN_FILE(__G_DIRECTORY_MONITOR_C__)
+g_directory_monitor_get_type G_GNUC_CONST
+g_directory_monitor_cancel
+g_directory_monitor_is_cancelled
+g_directory_monitor_set_rate_limit
+g_directory_monitor_emit_event
+#endif
+#endif
+
+#if IN_HEADER(__G_DRIVE_H__)
+#if IN_FILE(__G_DRIVE_C__)
+g_drive_get_type G_GNUC_CONST
+g_drive_get_name
+g_drive_get_icon
+g_drive_has_volumes
+g_drive_get_volumes
+g_drive_is_automounted
+g_drive_can_mount
+g_drive_can_eject
+g_drive_mount
+g_drive_mount_finish
+g_drive_eject
+g_drive_eject_finish
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_ATTRIBUTE_H__)
+#if IN_FILE(__G_FILE_ATTRIBUTE_C__)
+g_file_attribute_value_new
+g_file_attribute_value_free
+g_file_attribute_value_clear
+g_file_attribute_value_set
+g_file_attribute_value_dup
+g_file_attribute_value_as_string
+g_file_attribute_value_get_string
+g_file_attribute_value_get_byte_string
+g_file_attribute_value_get_boolean
+g_file_attribute_value_get_uint32
+g_file_attribute_value_get_int32
+g_file_attribute_value_get_uint64
+g_file_attribute_value_get_int64
+g_file_attribute_value_get_object
+g_file_attribute_value_set_string
+g_file_attribute_value_set_byte_string
+g_file_attribute_value_set_boolean
+g_file_attribute_value_set_uint32
+g_file_attribute_value_set_int32
+g_file_attribute_value_set_uint64
+g_file_attribute_value_set_int64
+g_file_attribute_value_set_object
+g_file_attribute_info_list_new
+g_file_attribute_info_list_ref
+g_file_attribute_info_list_unref
+g_file_attribute_info_list_dup
+g_file_attribute_info_list_lookup
+g_file_attribute_info_list_add
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_H__)
+#if IN_FILE(__G_FILE_C__)
+g_file_get_type G_GNUC_CONST
+g_file_new_for_path
+g_file_new_for_uri
+g_file_new_for_commandline_arg
+g_file_parse_name
+g_file_dup
+g_file_hash
+g_file_equal
+g_file_get_basename
+g_file_get_path
+g_file_get_uri
+g_file_get_parse_name
+g_file_get_parent
+g_file_get_child
+g_file_get_child_for_display_name
+g_file_contains_file
+g_file_get_relative_path
+g_file_resolve_relative_path
+g_file_is_native
+g_file_has_uri_scheme
+g_file_get_uri_scheme
+g_file_read
+g_file_read_async
+g_file_read_finish
+g_file_append_to
+g_file_create
+g_file_replace
+g_file_append_to_async
+g_file_append_to_finish
+g_file_create_async
+g_file_create_finish
+g_file_replace_async
+g_file_replace_finish
+g_file_query_info
+g_file_query_info_async
+g_file_query_info_finish
+g_file_query_filesystem_info
+g_file_find_enclosing_volume
+g_file_enumerate_children
+g_file_enumerate_children_async
+g_file_enumerate_children_finish
+g_file_set_display_name
+g_file_set_display_name_async
+g_file_set_display_name_finish
+g_file_delete
+g_file_trash
+g_file_copy
+g_file_move
+g_file_make_directory
+g_file_make_symbolic_link
+g_file_query_settable_attributes
+g_file_query_writable_namespaces
+g_file_set_attribute
+g_file_set_attributes_from_info
+g_file_set_attributes_async
+g_file_set_attributes_finish
+g_file_set_attribute_string
+g_file_set_attribute_byte_string
+g_file_set_attribute_uint32
+g_file_set_attribute_int32
+g_file_set_attribute_uint64
+g_file_set_attribute_int64
+g_mount_for_location
+g_mount_for_location_finish
+g_file_mount_mountable
+g_file_mount_mountable_finish
+g_file_unmount_mountable
+g_file_unmount_mountable_finish
+g_file_eject_mountable
+g_file_eject_mountable_finish
+g_file_copy_attributes
+g_file_monitor_directory
+g_file_monitor_file
+g_file_load_contents
+g_file_load_contents_async
+g_file_load_contents_finish
+g_file_load_partial_contents_async
+g_file_load_partial_contents_finish
+g_file_replace_contents
+g_file_replace_contents_async
+g_file_replace_contents_finish
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_ENUMERATOR_H__)
+#if IN_FILE(__G_FILE_ENUMERATOR_C__)
+g_file_enumerator_get_type G_GNUC_CONST
+g_file_enumerator_next_file
+g_file_enumerator_close
+g_file_enumerator_next_files_async
+g_file_enumerator_next_files_finish
+g_file_enumerator_close_async
+g_file_enumerator_close_finish
+g_file_enumerator_is_closed
+g_file_enumerator_has_pending
+g_file_enumerator_set_pending
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_ICON_H__)
+#if IN_FILE(__G_FILE_ICON_C__)
+g_file_icon_get_type G_GNUC_CONST
+g_file_icon_new
+g_file_icon_get_file
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_INFO_H__)
+#if IN_FILE(__G_FILE_INFO_C__)
+g_file_info_get_type G_GNUC_CONST
+g_file_info_new
+g_file_info_dup
+g_file_info_copy_into
+g_file_info_has_attribute
+g_file_info_list_attributes
+g_file_info_get_attribute_type
+g_file_info_remove_attribute
+g_file_info_get_attribute
+g_file_info_get_attribute_string
+g_file_info_get_attribute_byte_string
+g_file_info_get_attribute_boolean
+g_file_info_get_attribute_object
+g_file_info_set_attribute
+g_file_info_set_attribute_string
+g_file_info_set_attribute_byte_string
+g_file_info_set_attribute_boolean
+g_file_info_set_attribute_object
+g_file_info_clear_status
+g_file_info_get_file_type
+g_file_info_get_is_hidden
+g_file_info_get_is_backup
+g_file_info_get_is_symlink
+g_file_info_get_name
+g_file_info_get_display_name
+g_file_info_get_edit_name
+g_file_info_get_icon
+g_file_info_get_content_type
+g_file_info_get_size
+g_file_info_get_modification_time
+g_file_info_get_symlink_target
+g_file_info_get_etag
+g_file_info_get_sort_order
+g_file_info_set_attribute_mask
+g_file_info_unset_attribute_mask
+g_file_info_set_file_type
+g_file_info_set_is_hidden
+g_file_info_set_is_symlink
+g_file_info_set_name
+g_file_info_set_display_name
+g_file_info_set_edit_name
+g_file_info_set_icon
+g_file_info_set_content_type
+g_file_info_set_size
+g_file_info_set_modification_time
+g_file_info_set_symlink_target
+g_file_info_set_sort_order
+g_file_attribute_matcher_unref
+g_file_attribute_matcher_matches
+g_file_attribute_matcher_matches_only
+g_file_attribute_matcher_enumerate_namespace
+g_file_attribute_matcher_enumerate_next
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_INPUT_STREAM_H__)
+#if IN_FILE(__G_FILE_INPUT_STREAM_C__)
+g_file_input_stream_get_type G_GNUC_CONST
+g_file_input_stream_query_info
+g_file_input_stream_query_info_async
+g_file_input_stream_query_info_finish
+g_file_input_stream_tell
+g_file_input_stream_can_seek
+g_file_input_stream_seek
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_MONITOR_H__)
+#if IN_FILE(__G_FILE_MONITOR_C__)
+g_file_monitor_get_type G_GNUC_CONST
+g_file_monitor_cancel
+g_file_monitor_is_cancelled
+g_file_monitor_set_rate_limit
+g_file_monitor_emit_event
+#endif
+#endif
+
+#if IN_HEADER(__G_FILENAME_COMPLETER_H__)
+#if IN_FILE(__G_FILENAME_COMPLETER_C__)
+g_filename_completer_get_type G_GNUC_CONST
+g_filename_completer_new
+g_filename_completer_get_completion_suffix
+g_filename_completer_get_completions
+g_filename_completer_set_dirs_only
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_FILE_OUTPUT_STREAM_C__)
+g_file_output_stream_get_type G_GNUC_CONST
+g_file_output_stream_query_info
+g_file_output_stream_query_info_async
+g_file_output_stream_query_info_finish
+g_file_output_stream_get_etag
+g_file_output_stream_tell
+g_file_output_stream_can_seek
+g_file_output_stream_seek
+g_file_output_stream_can_truncate
+g_file_output_stream_truncate
+#endif
+#endif
+
+#if IN_HEADER(__G_FILTER_INPUT_STREAM_H__)
+#if IN_FILE(__G_FILTER_INPUT_STREAM_C__)
+g_filter_input_stream_get_type G_GNUC_CONST
+g_filter_input_stream_get_base_stream
+#endif
+#endif
+
+#if IN_HEADER(__G_FILTER_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_FILTER_OUTPUT_STREAM_C__)
+g_filter_output_stream_get_type G_GNUC_CONST
+g_filter_output_stream_get_base_stream
+#endif
+#endif
+
+#if IN_HEADER(__G_ICON_H__)
+#if IN_FILE(__G_ICON_C__)
+g_icon_get_type G_GNUC_CONST
+g_icon_hash
+g_icon_equal
+#endif
+#endif
+
+#if IN_HEADER(__G_INPUT_STREAM_H__)
+#if IN_FILE(__G_INPUT_STREAM_C__)
+g_input_stream_get_type G_GNUC_CONST
+g_input_stream_read
+g_input_stream_read_all
+g_input_stream_skip
+g_input_stream_close
+g_input_stream_read_async
+g_input_stream_read_finish
+g_input_stream_skip_async
+g_input_stream_skip_finish
+g_input_stream_close_async
+g_input_stream_close_finish
+g_input_stream_is_closed
+g_input_stream_has_pending
+g_input_stream_set_pending
+#endif
+#endif
+
+#if IN_HEADER(__G_IO_ERROR_H__)
+#if IN_FILE(__G_IO_ERROR_C__)
+g_io_error_quark
+g_io_error_from_errno
+#endif
+#endif
+
+#if IN_HEADER(__G_IO_MODULE_H__)
+#if IN_FILE(__G_IO_MODULE_C__)
+g_io_module_get_type G_GNUC_CONST
+g_io_module_new
+g_io_modules_ensure_loaded
+#endif
+#endif
+
+#if IN_HEADER(__G_IO_SCHEDULER_H__)
+#if IN_FILE(__G_IO_SCHEDULER_C__)
+g_schedule_io_job
+g_cancel_all_io_jobs
+g_io_job_send_to_mainloop
+#endif
+#endif
+
+#if IN_HEADER(__G_LOADABLE_ICON_H__)
+#if IN_FILE(__G_LOADABLE_ICON_C__)
+g_loadable_icon_get_type G_GNUC_CONST
+g_loadable_icon_load
+g_loadable_icon_load_async
+g_loadable_icon_load_finish
+#endif
+#endif
+
+#if IN_HEADER(__G_MEMORY_INPUT_STREAM_H__)
+#if IN_FILE(__G_MEMORY_INPUT_STREAM_C__)
+g_memory_input_stream_get_type G_GNUC_CONST
+g_memory_input_stream_from_data
+g_memory_input_stream_set_free_data
+g_memory_input_stream_get_data
+g_memory_input_stream_get_data_size
+#endif
+#endif
+
+#if IN_HEADER(__G_MEMORY_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_MEMORY_OUTPUT_STREAM_C__)
+g_memory_output_stream_get_type G_GNUC_CONST
+g_memory_output_stream_new
+g_memory_output_stream_set_max_size
+g_memory_output_stream_get_data
+g_memory_output_stream_set_free_data
+#endif
+#endif
+
+#if IN_HEADER(__G_MOUNT_OPERATION_H__)
+#if IN_FILE(__G_MOUNT_OPERATION_C__)
+g_mount_operation_get_type G_GNUC_CONST
+g_mount_operation_new
+g_mount_operation_get_username
+g_mount_operation_set_username
+g_mount_operation_get_password
+g_mount_operation_set_password
+g_mount_operation_get_anonymous
+g_mount_operation_set_anonymous
+g_mount_operation_get_domain
+g_mount_operation_set_domain
+g_mount_operation_get_password_save
+g_mount_operation_set_password_save
+g_mount_operation_get_choice
+g_mount_operation_set_choice
+g_mount_operation_reply
+#endif
+#endif
+
+#if IN_HEADER(__G_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_OUTPUT_STREAM_C__)
+g_output_stream_get_type G_GNUC_CONST
+g_output_stream_write
+g_output_stream_write_all
+g_output_stream_splice
+g_output_stream_flush
+g_output_stream_close
+g_output_stream_write_async
+g_output_stream_write_finish
+g_output_stream_splice_async
+g_output_stream_splice_finish
+g_output_stream_flush_async
+g_output_stream_flush_finish
+g_output_stream_close_async
+g_output_stream_close_finish
+g_output_stream_is_closed
+g_output_stream_has_pending
+g_output_stream_set_pending
+#endif
+#endif
+
+#if IN_HEADER(__G_SEEKABLE_H__)
+#if IN_FILE(__G_SEEKABLE_C__)
+g_seekable_get_type G_GNUC_CONST
+g_seekable_tell
+g_seekable_can_seek
+g_seekable_seek
+g_seekable_can_truncate
+g_seekable_truncate
+#endif
+#endif
+
+#if IN_HEADER(__G_SIMPLE_ASYNC_RESULT_H__)
+#if IN_FILE(__G_SIMPLE_ASYNC_RESULT_C__)
+g_simple_async_result_get_type G_GNUC_CONST
+g_simple_async_result_new
+g_simple_async_result_new_error
+g_simple_async_result_new_from_error
+g_simple_async_result_set_op_res_gpointer
+g_simple_async_result_get_op_res_gpointer
+g_simple_async_result_set_op_res_gssize
+g_simple_async_result_get_op_res_gssize
+g_simple_async_result_set_op_res_gboolean
+g_simple_async_result_get_op_res_gboolean
+g_simple_async_result_get_source_tag
+g_simple_async_result_set_handle_cancellation
+g_simple_async_result_complete
+g_simple_async_result_complete_in_idle
+g_simple_async_result_run_in_thread
+g_simple_async_result_set_from_error
+g_simple_async_result_propagate_error
+g_simple_async_result_set_error
+g_simple_async_result_set_error_va
+g_simple_async_report_error_in_idle
+#endif
+#endif
+
+#if IN_HEADER(__G_THEMED_ICON_H__)
+#if IN_FILE(__G_THEMED_ICON_C__)
+g_themed_icon_get_type G_GNUC_CONST
+g_themed_icon_new
+g_themed_icon_new_from_names
+g_themed_icon_get_names
+#endif
+#endif
+
+#if IN_HEADER(__G_UNIX_MOUNTS_H__)
+#if IN_FILE(__G_UNIX_MOUNTS_C__)
+g_unix_mount_free
+g_unix_mount_point_free
+g_unix_mount_compare
+g_unix_mount_get_mount_path
+g_unix_mount_get_device_path
+g_unix_mount_get_fs_type
+g_unix_mount_is_readonly
+g_unix_mount_is_system_internal
+g_unix_mount_guess_type
+g_unix_mount_point_compare
+g_unix_mount_point_get_mount_path
+g_unix_mount_point_get_device_path
+g_unix_mount_point_get_fs_type
+g_unix_mount_point_is_readonly
+g_unix_mount_point_is_user_mountable
+g_unix_mount_point_is_loopback
+g_unix_mount_point_guess_type
+g_get_unix_mount_points
+g_get_unix_mounts
+g_get_unix_mount_at
+g_unix_mounts_changed_since
+g_unix_mount_points_changed_since
+g_unix_mount_monitor_get_type G_GNUC_CONST
+g_unix_mount_monitor_new
+#endif
+#endif
+
+#if IN_HEADER(__G_UNIX_INPUT_STREAM_H__)
+#if IN_FILE(__G_UNIX_INPUT_STREAM_C__)
+g_unix_input_stream_get_type G_GNUC_CONST
+g_unix_input_stream_new
+#endif
+#endif
+
+#if IN_HEADER(__G_UNIX_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_UNIX_OUTPUT_STREAM_C__)
+g_unix_output_stream_get_type G_GNUC_CONST
+g_unix_output_stream_new
+#endif
+#endif
+
+#if IN_HEADER(__G_VOLUME_H__)
+#if IN_FILE(__G_VOLUME_C__)
+g_volume_get_type G_GNUC_CONST
+g_volume_get_root
+g_volume_get_name
+g_volume_get_icon
+g_volume_get_drive
+g_volume_can_unmount
+g_volume_can_eject
+g_volume_unmount
+g_volume_unmount_finish
+g_volume_eject
+g_volume_eject_finish
+#endif
+#endif
+
+#if IN_HEADER(__G_VOLUME_MONITOR_H__)
+#if IN_FILE(__G_VOLUME_MONITOR_C__)
+g_volume_monitor_get_type G_GNUC_CONST
+g_volume_monitor_get_mounted_volumes
+g_volume_monitor_get_connected_drives
+#endif
+#if IN_FILE(__G_UNION_VOLUME_MONITOR_C__)
+g_volume_monitor_get
+#endif
+#endif
diff --git a/gio/gioerror.c b/gio/gioerror.c
index e3bb34835..df2d31b60 100644
--- a/gio/gioerror.c
+++ b/gio/gioerror.c
@@ -24,6 +24,8 @@
#include <errno.h>
#include "gioerror.h"
+#include "gioalias.h"
+
/**
* SECTION:gioerror
* @short_description: Error helper functions
@@ -169,3 +171,6 @@ g_io_error_from_errno (gint err_no)
break;
}
}
+
+#define __G_IO_ERROR_C__
+#include "gioaliasdef.c"
diff --git a/gio/giomodule.c b/gio/giomodule.c
index 1214d817b..02d12d69b 100644
--- a/gio/giomodule.c
+++ b/gio/giomodule.c
@@ -24,6 +24,8 @@
#include "giomodule.h"
+#include "gioalias.h"
+
/**
* SECTION:giomodule
* @short_description: Loadable GIO Modules
@@ -247,3 +249,6 @@ g_io_modules_ensure_loaded (const char *directory)
G_UNLOCK (loaded_dirs);
}
+
+#define __G_IO_MODULE_C__
+#include "gioaliasdef.c"
diff --git a/gio/gioscheduler.c b/gio/gioscheduler.c
index 932375516..d82357efd 100644
--- a/gio/gioscheduler.c
+++ b/gio/gioscheduler.c
@@ -24,6 +24,8 @@
#include "gioscheduler.h"
+#include "gioalias.h"
+
/**
* SECTION:gioscheduler
* @short_description: I/O Scheduler
@@ -380,3 +382,6 @@ g_io_job_send_to_mainloop (GIOJob *job,
mainloop_proxy_free (proxy);
}
}
+
+#define __G_IO_SCHEDULER_C__
+#include "gioaliasdef.c"
diff --git a/gio/gloadableicon.c b/gio/gloadableicon.c
index 85e8e6d8e..5bef93fdf 100644
--- a/gio/gloadableicon.c
+++ b/gio/gloadableicon.c
@@ -25,6 +25,8 @@
#include "gloadableicon.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gloadableicon
* @short_description: Loadable Icons
@@ -276,3 +278,6 @@ g_loadable_icon_real_load_finish (GLoadableIcon *icon,
return g_object_ref (data->stream);
}
+
+#define __G_LOADABLE_ICON_C__
+#include "gioaliasdef.c"
diff --git a/gio/glocaldirectorymonitor.c b/gio/glocaldirectorymonitor.c
index 0cdcf8aa4..ca4e8488f 100644
--- a/gio/glocaldirectorymonitor.c
+++ b/gio/glocaldirectorymonitor.c
@@ -29,6 +29,8 @@
#include <string.h>
+#include "gioalias.h"
+
enum
{
PROP_0,
diff --git a/gio/glocalfile.c b/gio/glocalfile.c
index 9d5b92606..2e9b5fcd3 100644
--- a/gio/glocalfile.c
+++ b/gio/glocalfile.c
@@ -77,6 +77,8 @@
#include <glib/gstdio.h>
#include "glibintl.h"
+#include "gioalias.h"
+
static void g_local_file_file_iface_init (GFileIface *iface);
static GFileAttributeInfoList *local_writable_attributes = NULL;
diff --git a/gio/glocalfileenumerator.c b/gio/glocalfileenumerator.c
index 8548fcfad..7030c2aaa 100644
--- a/gio/glocalfileenumerator.c
+++ b/gio/glocalfileenumerator.c
@@ -27,6 +27,8 @@
#include <glocalfileinfo.h>
#include "glibintl.h"
+#include "gioalias.h"
+
/* TODO:
* It would be nice to use the dirent->d_type to check file type without
* needing to stat each files on linux and other systems that support it.
diff --git a/gio/glocalfileinfo.c b/gio/glocalfileinfo.c
index 5f6176be5..ab56cfdd5 100644
--- a/gio/glocalfileinfo.c
+++ b/gio/glocalfileinfo.c
@@ -60,6 +60,8 @@
#include "gcontenttype.h"
#include "gcontenttypeprivate.h"
+#include "gioalias.h"
+
struct ThumbMD5Context {
guint32 buf[4];
guint32 bits[2];
diff --git a/gio/glocalfileinputstream.c b/gio/glocalfileinputstream.c
index 3f90720c2..b46548578 100644
--- a/gio/glocalfileinputstream.c
+++ b/gio/glocalfileinputstream.c
@@ -35,6 +35,7 @@
#include "glocalfileinfo.h"
#include "glibintl.h"
+#include "gioalias.h"
G_DEFINE_TYPE (GLocalFileInputStream, g_local_file_input_stream, G_TYPE_FILE_INPUT_STREAM);
diff --git a/gio/glocalfilemonitor.c b/gio/glocalfilemonitor.c
index 94ebf7b61..be189a032 100644
--- a/gio/glocalfilemonitor.c
+++ b/gio/glocalfilemonitor.c
@@ -27,6 +27,8 @@
#include <string.h>
+#include "gioalias.h"
+
enum
{
PROP_0,
diff --git a/gio/glocalfileoutputstream.c b/gio/glocalfileoutputstream.c
index 3ff205669..2a8f21e2d 100644
--- a/gio/glocalfileoutputstream.c
+++ b/gio/glocalfileoutputstream.c
@@ -36,6 +36,8 @@
#include "glocalfileoutputstream.h"
#include "glocalfileinfo.h"
+#include "gioalias.h"
+
G_DEFINE_TYPE (GLocalFileOutputStream, g_local_file_output_stream, G_TYPE_FILE_OUTPUT_STREAM);
/* Some of the file replacement code was based on the code from gedit,
diff --git a/gio/glocalvfs.c b/gio/glocalvfs.c
index e5fc64481..555a2db72 100644
--- a/gio/glocalvfs.c
+++ b/gio/glocalvfs.c
@@ -27,6 +27,8 @@
#include <sys/types.h>
#include <pwd.h>
+#include "gioalias.h"
+
struct _GLocalVfs
{
GVfs parent;
diff --git a/gio/gmemoryinputstream.c b/gio/gmemoryinputstream.c
index 0e9dbaccc..ec4346e6c 100644
--- a/gio/gmemoryinputstream.c
+++ b/gio/gmemoryinputstream.c
@@ -28,6 +28,8 @@
#include "gsimpleasyncresult.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gmemoryinputstream
* @short_description: streaming input operations on memory chunks
@@ -465,5 +467,7 @@ g_memory_input_stream_truncate (GSeekable *seekable,
return FALSE;
}
-/* vim: ts=2 sw=2 et */
+#define __G_MEMORY_INPUT_STREAM_C__
+#include "gioaliasdef.c"
+/* vim: ts=2 sw=2 et */
diff --git a/gio/gmemoryoutputstream.c b/gio/gmemoryoutputstream.c
index b3c2a108e..bd71ac1c7 100644
--- a/gio/gmemoryoutputstream.c
+++ b/gio/gmemoryoutputstream.c
@@ -28,6 +28,8 @@
#include "string.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gmemoryoutputstream
* @short_description: streaming output operations on memory chunks
@@ -685,4 +687,7 @@ g_memory_output_stream_truncate (GSeekable *seekable,
return TRUE;
}
+#define __G_MEMORY_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
+
/* vim: ts=2 sw=2 et */
diff --git a/gio/gmountoperation.c b/gio/gmountoperation.c
index bdb0b3a70..9a618f326 100644
--- a/gio/gmountoperation.c
+++ b/gio/gmountoperation.c
@@ -28,6 +28,8 @@
#include "gio-marshal.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gmountoperation
* @short_description: Authentication methods for mountable locations
@@ -408,3 +410,6 @@ g_mount_operation_reply (GMountOperation *op,
g_return_if_fail (G_IS_MOUNT_OPERATION (op));
g_signal_emit (op, signals[REPLY], 0, abort);
}
+
+#define __G_MOUNT_OPERATION_C__
+#include "gioaliasdef.c"
diff --git a/gio/gnativevolumemonitor.c b/gio/gnativevolumemonitor.c
index cc2d81a07..d7fa98c28 100644
--- a/gio/gnativevolumemonitor.c
+++ b/gio/gnativevolumemonitor.c
@@ -5,6 +5,7 @@
#include <glib.h>
#include "gnativevolumemonitor.h"
+#include "gioalias.h"
G_DEFINE_ABSTRACT_TYPE (GNativeVolumeMonitor, g_native_volume_monitor, G_TYPE_VOLUME_MONITOR);
diff --git a/gio/goutputstream.c b/gio/goutputstream.c
index 5b1fc4ea5..9c2bb64aa 100644
--- a/gio/goutputstream.c
+++ b/gio/goutputstream.c
@@ -25,6 +25,8 @@
#include "gsimpleasyncresult.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:goutputstream
* @short_description: base class for implementing streaming output
@@ -1343,3 +1345,6 @@ g_output_stream_real_close_finish (GOutputStream *stream,
g_assert (g_simple_async_result_get_source_tag (simple) == g_output_stream_real_close_async);
return TRUE;
}
+
+#define __G_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
diff --git a/gio/gpollfilemonitor.c b/gio/gpollfilemonitor.c
index 2b559c1d6..f6e853a27 100644
--- a/gio/gpollfilemonitor.c
+++ b/gio/gpollfilemonitor.c
@@ -26,6 +26,8 @@
#include "gpollfilemonitor.h"
#include "gfilemonitor.h"
+#include "gioalias.h"
+
static gboolean g_poll_file_monitor_cancel (GFileMonitor* monitor);
static void schedule_poll_timeout (GPollFileMonitor* poll_monitor);
diff --git a/gio/gseekable.c b/gio/gseekable.c
index fba1dec6f..98fa7769b 100644
--- a/gio/gseekable.c
+++ b/gio/gseekable.c
@@ -24,6 +24,8 @@
#include "gseekable.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gseekable
* @short_description: Stream seeking interface
@@ -203,3 +205,5 @@ g_seekable_truncate (GSeekable *seekable,
return (* iface->truncate) (seekable, offset, cancellable, error);
}
+#define __G_SEEKABLE_C__
+#include "gioaliasdef.c"
diff --git a/gio/gsimpleasyncresult.c b/gio/gsimpleasyncresult.c
index b0997839a..d3c932761 100644
--- a/gio/gsimpleasyncresult.c
+++ b/gio/gsimpleasyncresult.c
@@ -34,6 +34,8 @@
#include <gio/gioerror.h>
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gsimpleasyncresult
* @short_description: simple asynchronous results implementation
@@ -680,3 +682,6 @@ g_simple_async_report_error_in_idle (GObject *object,
g_simple_async_result_complete_in_idle (simple);
g_object_unref (simple);
}
+
+#define __G_SIMPLE_ASYNC_RESULT_C__
+#include "gioaliasdef.c"
diff --git a/gio/gthemedicon.c b/gio/gthemedicon.c
index 38b83ebc9..14b0ad052 100644
--- a/gio/gthemedicon.c
+++ b/gio/gthemedicon.c
@@ -24,6 +24,8 @@
#include "gthemedicon.h"
+#include "gioalias.h"
+
/**
* SECTION:gthemedicon
* @short_description: Themed Icons
@@ -184,3 +186,6 @@ g_themed_icon_icon_iface_init (GIconIface *iface)
iface->hash = g_themed_icon_hash;
iface->equal = g_themed_icon_equal;
}
+
+#define __G_THEMED_ICON_C__
+#include "gioaliasdef.c"
diff --git a/gio/gunionvolumemonitor.c b/gio/gunionvolumemonitor.c
index 10f9e318d..cc0f08194 100644
--- a/gio/gunionvolumemonitor.c
+++ b/gio/gunionvolumemonitor.c
@@ -35,6 +35,8 @@
#include "glibintl.h"
+#include "gioalias.h"
+
struct _GUnionVolumeMonitor {
GVolumeMonitor parent;
@@ -393,3 +395,6 @@ g_volume_get_for_mount_path (const char *mountpoint)
return volume;
}
+
+#define __G_UNION_VOLUME_MONITOR_C__
+#include "gioaliasdef.c"
diff --git a/gio/gunixdrive.c b/gio/gunixdrive.c
index 25e05392c..e102ec54d 100644
--- a/gio/gunixdrive.c
+++ b/gio/gunixdrive.c
@@ -32,6 +32,8 @@
#include "gvolumemonitor.h"
#include "glibintl.h"
+#include "gioalias.h"
+
struct _GUnixDrive {
GObject parent;
diff --git a/gio/gunixinputstream.c b/gio/gunixinputstream.c
index 0057180e4..c215a07f9 100644
--- a/gio/gunixinputstream.c
+++ b/gio/gunixinputstream.c
@@ -39,6 +39,8 @@
#include "gasynchelper.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gunixinputstream
* @short_description: Unix Input Stream
@@ -478,3 +480,5 @@ g_unix_input_stream_close_finish (GInputStream *stream,
return TRUE;
}
+#define __G_UNIX_INPUT_STREAM_C__
+#include "gioaliasdef.c"
diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c
index f2d96cadb..85c4ef4bd 100644
--- a/gio/gunixmounts.c
+++ b/gio/gunixmounts.c
@@ -47,6 +47,8 @@
#include "gfile.h"
#include "gfilemonitor.h"
+#include "gioalias.h"
+
/**
* SECTION:gunixmounts
* @short_description: Unix Mounts
@@ -1589,3 +1591,6 @@ g_unix_mount_point_guess_type (GUnixMountPoint *mount_point)
mount_point->device_path,
mount_point->filesystem_type);
}
+
+#define __G_UNIX_MOUNTS_C__
+#include "gioaliasdef.c"
diff --git a/gio/gunixoutputstream.c b/gio/gunixoutputstream.c
index e9da5c5c3..a48514c07 100644
--- a/gio/gunixoutputstream.c
+++ b/gio/gunixoutputstream.c
@@ -39,6 +39,8 @@
#include "gasynchelper.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gunixoutputstream
* @short_description: Unix Output Stream
@@ -436,3 +438,6 @@ g_unix_output_stream_close_finish (GOutputStream *stream,
/* Failures handled in generic close_finish code */
return TRUE;
}
+
+#define __G_UNIX_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
diff --git a/gio/gunixvolume.c b/gio/gunixvolume.c
index a6e9867b2..8bcf1de28 100644
--- a/gio/gunixvolume.c
+++ b/gio/gunixvolume.c
@@ -33,6 +33,8 @@
#include "gthemedicon.h"
#include "glibintl.h"
+#include "gioalias.h"
+
struct _GUnixVolume {
GObject parent;
diff --git a/gio/gunixvolumemonitor.c b/gio/gunixvolumemonitor.c
index 08ad02d79..acbbba315 100644
--- a/gio/gunixvolumemonitor.c
+++ b/gio/gunixvolumemonitor.c
@@ -32,6 +32,8 @@
#include "gvolumeprivate.h"
#include "glibintl.h"
+#include "gioalias.h"
+
struct _GUnixVolumeMonitor {
GNativeVolumeMonitor parent;
diff --git a/gio/gvfs.c b/gio/gvfs.c
index 36f727662..a8f7bad9f 100644
--- a/gio/gvfs.c
+++ b/gio/gvfs.c
@@ -27,6 +27,8 @@
#include "giomodule.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gvfs
* @short_description: Virtual File System
@@ -274,3 +276,5 @@ g_vfs_get_local (void)
return G_VFS (vfs);
}
+#define __G_VFS_C__
+#include "gioaliasdef.c"
diff --git a/gio/gvfs.h b/gio/gvfs.h
index ce7e3cd8c..21219afff 100644
--- a/gio/gvfs.h
+++ b/gio/gvfs.h
@@ -20,8 +20,8 @@
* Author: Alexander Larsson <alexl@redhat.com>
*/
-#ifndef __G_VFS_IMPLEMENTATION_H__
-#define __G_VFS_IMPLEMENTATION_H__
+#ifndef __G_VFS_H__
+#define __G_VFS_H__
#include <glib-object.h>
#include <gio/gfile.h>
diff --git a/gio/gvolume.c b/gio/gvolume.c
index da0e4bfeb..8a7e709a7 100644
--- a/gio/gvolume.c
+++ b/gio/gvolume.c
@@ -26,6 +26,8 @@
#include "gsimpleasyncresult.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gvolume
* @short_description: mounted volume management
@@ -377,3 +379,6 @@ g_volume_eject_finish (GVolume *volume,
iface = G_VOLUME_GET_IFACE (volume);
return (* iface->eject_finish) (volume, result, error);
}
+
+#define __G_VOLUME_C__
+#include "gioaliasdef.c"
diff --git a/gio/gvolumemonitor.c b/gio/gvolumemonitor.c
index c2be9c179..0d45b7b3f 100644
--- a/gio/gvolumemonitor.c
+++ b/gio/gvolumemonitor.c
@@ -24,6 +24,8 @@
#include "gvolumemonitor.h"
#include "glibintl.h"
+#include "gioalias.h"
+
/**
* SECTION:gvolumemonitor
* @short_description: Volume Monitor
@@ -183,3 +185,5 @@ g_volume_monitor_get_connected_drives (GVolumeMonitor *volume_monitor)
return class->get_connected_drives (volume_monitor);
}
+#define __G_VOLUME_MONITOR_C__
+#include "gioaliasdef.c"
diff --git a/gio/gwin32appinfo.c b/gio/gwin32appinfo.c
index 3215b997b..0192effac 100644
--- a/gio/gwin32appinfo.c
+++ b/gio/gwin32appinfo.c
@@ -33,6 +33,8 @@
#include <windows.h>
#include <shlwapi.h>
+#include "gioalias.h"
+
#ifndef ASSOCF_INIT_BYEXENAME
#define ASSOCF_INIT_BYEXENAME 0x00000002
#endif
diff --git a/gio/inotify/Makefile.am b/gio/inotify/Makefile.am
index 765437ead..0780fa278 100644
--- a/gio/inotify/Makefile.am
+++ b/gio/inotify/Makefile.am
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.decl
+
NULL =
noinst_LTLIBRARIES = libinotify.la
diff --git a/gio/inotify/ginotifydirectorymonitor.c b/gio/inotify/ginotifydirectorymonitor.c
index bec36093c..e202b95c7 100644
--- a/gio/inotify/ginotifydirectorymonitor.c
+++ b/gio/inotify/ginotifydirectorymonitor.c
@@ -31,6 +31,8 @@
#define USE_INOTIFY 1
#include "inotify-helper.h"
+#include "gioalias.h"
+
struct _GInotifyDirectoryMonitor
{
GLocalDirectoryMonitor parent_instance;
diff --git a/gio/inotify/ginotifyfilemonitor.c b/gio/inotify/ginotifyfilemonitor.c
index 4132116a0..cdc200d9e 100644
--- a/gio/inotify/ginotifyfilemonitor.c
+++ b/gio/inotify/ginotifyfilemonitor.c
@@ -31,6 +31,8 @@
#define USE_INOTIFY 1
#include "inotify-helper.h"
+#include "gioalias.h"
+
struct _GInotifyFileMonitor
{
GLocalFileMonitor parent_instance;
diff --git a/gio/makegioalias.pl b/gio/makegioalias.pl
new file mode 100755
index 000000000..26b9206ec
--- /dev/null
+++ b/gio/makegioalias.pl
@@ -0,0 +1,137 @@
+#!/usr/bin/perl -w
+
+my $do_def = 0;
+
+if (($#ARGV >= 0) && ($ARGV[0] eq "-def")) {
+ shift;
+ $do_def = 1;
+}
+
+print <<EOF;
+/* Generated by makegioalias.pl */
+
+#ifndef DISABLE_VISIBILITY
+
+#include "glibconfig.h"
+
+#ifdef G_HAVE_GNUC_VISIBILITY
+
+EOF
+
+if ($do_def) {
+ print <<EOF
+#undef IN_FILE
+#define IN_FILE defined
+
+#undef IN_HEADER
+#define IN_HEADER(x) 1
+
+EOF
+}
+else {
+ print <<EOF
+#define IN_FILE(x) 1
+#define IN_HEADER defined
+
+EOF
+}
+
+my $in_comment = 0;
+my $in_skipped_section = 0;
+
+while (<>) {
+
+ # ignore empty lines
+ next if /^\s*$/;
+
+ # skip comments
+ if ($_ =~ /^\s*\/\*/)
+ {
+ $in_comment = 1;
+ }
+
+ if ($in_comment)
+ {
+ if ($_ =~ /\*\/\s$/)
+ {
+ $in_comment = 0;
+ }
+
+ next;
+ }
+
+ # handle ifdefs
+ if ($_ =~ /^\#endif/)
+ {
+ if (!$in_skipped_section)
+ {
+ print $_;
+ }
+
+ $in_skipped_section = 0;
+
+ next;
+ }
+
+ if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS|ALL_FILES)/)
+ {
+ $in_skipped_section = 1;
+ }
+
+ if ($in_skipped_section)
+ {
+ next;
+ }
+
+ if ($_ =~ /^\#ifn?def\s+G/)
+ {
+ print $_;
+
+ next;
+ }
+
+ if ($_ =~ /^\#if.*(IN_FILE|IN_HEADER)/)
+ {
+ print $_;
+
+ next;
+ }
+
+ chop;
+ my $str = $_;
+ my @words;
+ my $attributes = "";
+
+ @words = split(/ /, $str);
+ $str = shift(@words);
+ chomp($str);
+ my $alias = "IA__".$str;
+
+ # Drop any Win32 specific .def file syntax, but keep attributes
+ foreach $word (@words) {
+ $attributes = "$attributes $word" unless $word eq "PRIVATE";
+ }
+
+ if (!$do_def) {
+ print <<EOF
+extern __typeof ($str) $alias __attribute((visibility("hidden")))$attributes;
+\#define $str $alias
+
+EOF
+ }
+ else {
+ print <<EOF
+\#undef $str
+extern __typeof ($str) $str __attribute((alias("$alias"), visibility("default")));
+
+EOF
+ }
+}
+
+print <<EOF;
+
+#endif /* G_HAVE_GNUC_VISIBILITY */
+#endif /* DISABLE_VISIBILITY */
+EOF
+
+
diff --git a/gio/pltcheck.sh b/gio/pltcheck.sh
new file mode 100755
index 000000000..685852744
--- /dev/null
+++ b/gio/pltcheck.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+LANG=C
+
+status=0
+
+if ! which readelf 2>/dev/null >/dev/null; then
+ echo "'readelf' not found; skipping test"
+ exit 0
+fi
+
+SKIP='\<g_access\|\<g_array_\|\<g_ascii\|\<g_list_\|\<g_assert_warning\|\<g_atomic_int\|\<g_build_filename\|\<g_byte_array\|\<g_child_watch\|\<g_convert\|\<g_dir_\|\<g_error_\|\<g_file_error_quark\|\<g_file_get_contents\|\<g_file_set_contents\|\<g_file_test\|\<g_filename_\|\<g_find_program_in_path\|\<g_free\|\<g_get_\|\<g_getenv\|\<g_hash_table_\|\<g_idle_\|\<g_intern_static_string\|\<g_io_channel_\|\<g_key_file_\|\<g_listenv\|\<g_locale_to_utf8\|\<g_log\|\<g_main_context_wakeup\|\<g_malloc\|\<g_markup_\|\<g_mkdir_\|\<g_mkstemp\|\<g_module_\|\<g_object_\|\<g_once_\|\<g_param_spec_\|\<g_path_\|\<g_printerr\|\<g_propagate_error\|\<g_ptr_array_\|\<g_qsort_\|\<g_quark_\|\<g_queue_\|\<g_realloc\|\<g_return_if_fail\|\<g_set_error\|\<g_shell_\|\<g_signal_\|\<g_slice_\|\<g_slist_\|\<g_snprintf\|\<g_source_\|\<g_spawn_\|\<g_static_\|\<g_str\|\<g_thread_pool_\|\<g_time_val_add\|\<g_timeout_\|\<g_type_\|\<g_unlink\|\<g_uri_\|\<g_utf8_\|\<g_value_'
+
+for so in .libs/lib*.so; do
+ echo Checking $so for local PLT entries
+ readelf -r $so | grep 'JU\?MP_SLOT' | grep '\<g_' | grep -v $SKIP && status=1
+done
+
+exit $status
diff --git a/gio/xdgmime/Makefile.am b/gio/xdgmime/Makefile.am
index 41f16a7ea..87fc04872 100644
--- a/gio/xdgmime/Makefile.am
+++ b/gio/xdgmime/Makefile.am
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.decl
+
AM_CPPFLAGS = -DXDG_PREFIX=_gio_xdg
noinst_LTLIBRARIES = libxdgmime.la