On Thu, 2012-10-18 at 11:51 -0400, Colin Walters wrote: > I don't oppose that.
Attached.
>From c43e095419423b36544e221f9f0896d2579fb0a0 Mon Sep 17 00:00:00 2001 From: Colin Walters <walt...@verbum.org> Date: Thu, 18 Oct 2012 11:53:05 -0400 Subject: [PATCH] Revert "core: import libgsystem, use it for local-allocations in main.c (bgo #685440)" This reverts commit 89623b99c44bd7c6b721955ebc0a9550cb8dd978 pending further discussion. See: https://mail.gnome.org/archives/networkmanager-list/2012-October/msg00065.html --- src/Makefile.am | 14 +---- src/libgsystem/Makefile-libgsystem.am | 31 ----------- src/libgsystem/README | 7 --- src/libgsystem/README-NetworkManager-import | 5 -- src/libgsystem/gsystem-file-utils.c | 86 ----------------------------- src/libgsystem/gsystem-file-utils.h | 34 ------------ src/libgsystem/gsystem-local-alloc.c | 65 ---------------------- src/libgsystem/gsystem-local-alloc.h | 42 -------------- src/libgsystem/libgsystem.doap | 31 ----------- src/libgsystem/libgsystem.h | 33 ----------- src/main.c | 76 +++++++++++++++++-------- 11 files changed, 56 insertions(+), 368 deletions(-) delete mode 100644 src/libgsystem/Makefile-libgsystem.am delete mode 100644 src/libgsystem/README delete mode 100644 src/libgsystem/README-NetworkManager-import delete mode 100644 src/libgsystem/gsystem-file-utils.c delete mode 100644 src/libgsystem/gsystem-file-utils.h delete mode 100644 src/libgsystem/gsystem-local-alloc.c delete mode 100644 src/libgsystem/gsystem-local-alloc.h delete mode 100644 src/libgsystem/libgsystem.doap delete mode 100644 src/libgsystem/libgsystem.h diff --git a/src/Makefile.am b/src/Makefile.am index 697203a..ba7d2d6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -21,20 +21,11 @@ endif SUBDIRS += . tests -noinst_LTLIBRARIES = -EXTRA_DIST = -NULL = -libgsystem_srcpath := libgsystem -libgsystem_cflags = $(GIO_CFLAGS) -libgsystem_libs = $(GIO_LIBS) -include libgsystem/Makefile-libgsystem.am - INCLUDES = -I${top_srcdir} \ -I${top_builddir}/include \ -I${top_srcdir}/include \ -I${top_builddir}/src/generated \ -I${top_srcdir}/src/generated \ - -I${top_srcdir}/src/libgsystem \ -I${top_srcdir}/src/logging \ -I${top_srcdir}/src/posix-signals \ -I${top_srcdir}/src/dns-manager \ @@ -56,7 +47,7 @@ INCLUDES = -I${top_srcdir} \ # Test libraries ########################################### -noinst_LTLIBRARIES += \ +noinst_LTLIBRARIES = \ libtest-dhcp.la \ libtest-policy-hosts.la \ libtest-wifi-ap-utils.la @@ -322,7 +313,6 @@ endif NetworkManager_LDADD = \ ./generated/libnm-generated.la \ - libgsystem.la \ ./logging/libnm-logging.la \ ./posix-signals/libnm-posix-signals.la \ ./dns-manager/libdns-manager.la \ @@ -373,7 +363,7 @@ NetworkManager_DATA = gdb-cmd dbusservicedir = $(DBUS_SYS_DIR) dbusservice_DATA = org.freedesktop.NetworkManager.conf -EXTRA_DIST += \ +EXTRA_DIST = \ $(dbusservice_DATA) \ $(NetworkManager_DATA) diff --git a/src/libgsystem/Makefile-libgsystem.am b/src/libgsystem/Makefile-libgsystem.am deleted file mode 100644 index b0e87c5..0000000 --- a/src/libgsystem/Makefile-libgsystem.am +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (C) 2012 Colin Walters <walt...@verbum.org> -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -noinst_LTLIBRARIES += libgsystem.la - -EXTRA_DIST += $(libgsystem_srcpath)/README - -libgsystem_la_SOURCES = \ - $(libgsystem_srcpath)/gsystem-local-alloc.h \ - $(libgsystem_srcpath)/gsystem-local-alloc.c \ - $(libgsystem_srcpath)/gsystem-file-utils.h \ - $(libgsystem_srcpath)/gsystem-file-utils.c \ - $(libgsystem_srcpath)/libgsystem.h \ - $(NULL) - -libgsystem_la_CFLAGS = $(AM_CFLAGS) $(libgsystem_cflags) -libgsystem_la_LIBADD = $(libgsystem_libs) diff --git a/src/libgsystem/README b/src/libgsystem/README deleted file mode 100644 index 0694940..0000000 --- a/src/libgsystem/README +++ /dev/null @@ -1,7 +0,0 @@ -libgsystem is intended to be used as a git external for components -that depend on GLib, but accept a hard dependency on things which are -difficult to do in GLib itself. For example, the local-alloc API -depends on GCC/clang. - -It will also be a useful place to evolve new APIs (e.g. logging) -before their eventual inclusion in GLib (if ever). diff --git a/src/libgsystem/README-NetworkManager-import b/src/libgsystem/README-NetworkManager-import deleted file mode 100644 index fa75998..0000000 --- a/src/libgsystem/README-NetworkManager-import +++ /dev/null @@ -1,5 +0,0 @@ -This code is copied from: - -http://git.gnome.org/browse/libgsystem - -Please send any patches there! diff --git a/src/libgsystem/gsystem-file-utils.c b/src/libgsystem/gsystem-file-utils.c deleted file mode 100644 index 92ddf49..0000000 --- a/src/libgsystem/gsystem-file-utils.c +++ /dev/null @@ -1,86 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- - * - * Copyright (C) 2012 William Jon McCann <mcc...@redhat.com> - * Copyright (C) 2012 Colin Walters <walt...@verbum.org> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "config.h" - -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif - -#include "libgsystem.h" -#include <glib/gstdio.h> -#include <gio/gunixinputstream.h> -#include <glib-unix.h> - -static int -_open_fd_noatime (const char *path) -{ - int fd; - -#ifdef O_NOATIME - fd = g_open (path, O_RDONLY | O_NOATIME, 0); - /* Only the owner or superuser may use O_NOATIME; so we may get - * EPERM. EINVAL may happen if the kernel is really old... - */ - if (fd == -1 && (errno == EPERM || errno == EINVAL)) -#endif - fd = g_open (path, O_RDONLY, 0); - - return fd; -} - -/** - * gs_file_read_noatime: - * @file: a #GFile - * @cancellable: a #GCancellable - * @error: a #GError - * - * Like g_file_read(), but try to avoid updating the file's - * access time. This should be used by background scanning - * components such as search indexers, antivirus programs, etc. - * - * Returns: (transfer full): A new input stream, or %NULL on error - */ -GInputStream * -gs_file_read_noatime (GFile *file, - GCancellable *cancellable, - GError **error) -{ - gs_lfree char *path = NULL; - int fd; - - if (g_cancellable_set_error_if_cancelled (cancellable, error)) - return NULL; - - path = g_file_get_path (file); - if (path == NULL) - return NULL; - - fd = _open_fd_noatime (path); - if (fd < 0) - { - g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), - "%s", g_strerror (errno)); - return NULL; - } - - return g_unix_input_stream_new (fd, TRUE); -} diff --git a/src/libgsystem/gsystem-file-utils.h b/src/libgsystem/gsystem-file-utils.h deleted file mode 100644 index f8c1c73..0000000 --- a/src/libgsystem/gsystem-file-utils.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- - * - * Copyright (C) 2012 Colin Walters <walt...@verbum.org>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GSYSTEM_FILE_UTILS_H__ -#define __GSYSTEM_FILE_UTILS_H__ - -#include <gio/gio.h> - -G_BEGIN_DECLS - -GInputStream *gs_file_read_noatime (GFile *path, - GCancellable *cancellable, - GError **error); - -G_END_DECLS - -#endif diff --git a/src/libgsystem/gsystem-local-alloc.c b/src/libgsystem/gsystem-local-alloc.c deleted file mode 100644 index 1bbea90..0000000 --- a/src/libgsystem/gsystem-local-alloc.c +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- - * - * Copyright (C) 2012 Colin Walters <walt...@verbum.org> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "config.h" - -#include "gsystem-local-alloc.h" - -void -gs_local_free (void *loc) -{ - void **location = loc; - if (location) - g_free (*location); -} - -#define _gs_local_free(type, function) do { \ - void **location = loc; \ - if (location) \ - { \ - type *value = *location; \ - if (value) \ - function (value); \ - } \ - } while (0) - -void -gs_local_obj_unref (void *loc) -{ - _gs_local_free(GObject, g_object_unref); -} - -void -gs_local_variant_unref (void *loc) -{ - _gs_local_free(GVariant, g_variant_unref); -} - -void -gs_local_ptrarray_unref (void *loc) -{ - _gs_local_free(GPtrArray, g_ptr_array_unref); -} - -void -gs_local_hashtable_unref (void *loc) -{ - _gs_local_free(GHashTable, g_hash_table_unref); -} diff --git a/src/libgsystem/gsystem-local-alloc.h b/src/libgsystem/gsystem-local-alloc.h deleted file mode 100644 index 24e7ca2..0000000 --- a/src/libgsystem/gsystem-local-alloc.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- - * - * Copyright (C) 2012 Colin Walters <walt...@verbum.org>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GSYSTEM_LOCAL_ALLOC_H__ -#define __GSYSTEM_LOCAL_ALLOC_H__ - -#include <gio/gio.h> - -G_BEGIN_DECLS - -void gs_local_free (void *loc); -void gs_local_obj_unref (void *loc); -void gs_local_variant_unref (void *loc); -void gs_local_ptrarray_unref (void *loc); -void gs_local_hashtable_unref (void *loc); - -#define gs_lfree __attribute__ ((cleanup(gs_local_free))) -#define gs_lobj __attribute__ ((cleanup(gs_local_obj_unref))) -#define gs_lvariant __attribute__ ((cleanup(gs_local_variant_unref))) -#define gs_lptrarray __attribute__ ((cleanup(gs_local_ptrarray_unref))) -#define gs_lhash __attribute__ ((cleanup(gs_local_hashtable_unref))) - -G_END_DECLS - -#endif diff --git a/src/libgsystem/libgsystem.doap b/src/libgsystem/libgsystem.doap deleted file mode 100644 index f248386..0000000 --- a/src/libgsystem/libgsystem.doap +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" - xmlns:foaf="http://xmlns.com/foaf/0.1/" - xmlns:gnome="http://api.gnome.org/doap-extensions#" - xmlns="http://usefulinc.com/ns/doap#"> - - <name>libgsystem</name> - <shortname>libgsystem</shortname> - - <shortdesc xml:lang="en">"Copylib" for system service modules using GLib with GCC</shortdesc> - - <description xml:lang="en">This module is intended for use by - infrastructure daemons using GLib, such as NetworkManager/udisks as - a git submodule. - </description> - - <license rdf:resource="http://usefulinc.com/doap/licenses/lgpl" /> - <mailing-list rdf:resource="mailto:desktop-devel-l...@gnome.org" /> - - <programming-language>C</programming-language> - - <maintainer> - <foaf:Person> - <foaf:name>Colin Walters</foaf:name> - <foaf:mbox rdf:resource="mailto:walt...@verbum.org"/> - <gnome:userid>walters</gnome:userid> - </foaf:Person> - </maintainer> - -</Project> diff --git a/src/libgsystem/libgsystem.h b/src/libgsystem/libgsystem.h deleted file mode 100644 index 7b6a8c8..0000000 --- a/src/libgsystem/libgsystem.h +++ /dev/null @@ -1,33 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- - * - * Copyright (C) 2012 Colin Walters <walt...@verbum.org>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __LIBGSYSTEM__ -#define __LIBGSYSTEM__ - -#include <gio/gio.h> - -G_BEGIN_DECLS - -#include <gsystem-local-alloc.h> -#include <gsystem-file-utils.h> - -G_END_DECLS - -#endif diff --git a/src/main.c b/src/main.c index f0b367a..9cac0fd 100644 --- a/src/main.c +++ b/src/main.c @@ -40,7 +40,6 @@ #include "NetworkManager.h" #include "NetworkManagerUtils.h" -#include "libgsystem.h" #include "nm-manager.h" #include "nm-policy.h" #include "nm-dns-manager.h" @@ -203,10 +202,10 @@ write_pidfile (const char *pidfile) static gboolean check_pidfile (const char *pidfile) { - gs_lfree char *contents = NULL; - gs_lfree char *proc_cmdline = NULL; + char *contents = NULL; gsize len = 0; glong pid; + char *proc_cmdline = NULL; gboolean nm_running = FALSE; const char *process_name; @@ -221,6 +220,7 @@ check_pidfile (const char *pidfile) if (pid <= 0 || pid > 65536 || errno) goto done; + g_free (contents); proc_cmdline = g_strdup_printf ("/proc/%ld/cmdline", pid); if (!g_file_get_contents (proc_cmdline, &contents, &len, NULL)) goto done; @@ -239,6 +239,8 @@ check_pidfile (const char *pidfile) } done: + g_free (proc_cmdline); + g_free (contents); return nm_running; } @@ -276,8 +278,7 @@ parse_state_file (const char *filename, * users upgrading NM get this working too. */ if (g_error_matches (tmp_error, G_FILE_ERROR, G_FILE_ERROR_NOENT)) { - gs_lfree char *dirname = NULL; - gs_lfree char *data = NULL; + char *data, *dirname; gsize len = 0; g_clear_error (&tmp_error); @@ -289,9 +290,11 @@ parse_state_file (const char *filename, if (errno != EEXIST) { g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_ACCES, "Error creating state directory %s: %s", dirname, strerror(errno)); + g_free (dirname); return FALSE; } } + g_free (dirname); /* Write out the initial state to the state file */ g_key_file_set_boolean (state_file, "main", "NetworkingEnabled", *net_enabled); @@ -302,6 +305,7 @@ parse_state_file (const char *filename, data = g_key_file_to_data (state_file, &len, NULL); if (data) ret = g_file_set_contents (filename, data, len, error); + g_free (data); } else { /* the error is not "No such file or directory" - propagate the error */ g_propagate_error (error, tmp_error); @@ -347,27 +351,24 @@ main (int argc, char *argv[]) GOptionContext *opt_ctx = NULL; gboolean become_daemon = FALSE; gboolean g_fatal_warnings = FALSE; - gs_lfree char *pidfile = NULL; - gs_lfree char *state_file = NULL; - gs_lfree char *config_path = NULL; - gs_lfree char *plugins = NULL; - gs_lfree char *log_level = NULL; - gs_lfree char *log_domains = NULL; - gs_lfree char *connectivity_uri = NULL; + char *pidfile = NULL, *state_file = NULL; + char *config_path = NULL, *plugins = NULL; + char *log_level = NULL, *log_domains = NULL; + char *connectivity_uri = NULL; gint connectivity_interval = -1; - gs_lfree char *connectivity_response = NULL; + char *connectivity_response = NULL; gboolean wifi_enabled = TRUE, net_enabled = TRUE, wwan_enabled = TRUE, wimax_enabled = TRUE; gboolean success, show_version = FALSE; NMPolicy *policy = NULL; - gs_lobj NMVPNManager *vpn_manager = NULL; - gs_lobj NMDnsManager *dns_mgr = NULL; - gs_lobj NMDBusManager *dbus_mgr = NULL; - gs_lobj NMSupplicantManager *sup_mgr = NULL; - gs_lobj NMDHCPManager *dhcp_mgr = NULL; - gs_lobj NMFirewallManager *fw_mgr = NULL; - gs_lobj NMSettings *settings = NULL; - gs_lobj NMConfig *config; - gs_lobj NMNetlinkMonitor *monitor = NULL; + NMVPNManager *vpn_manager = NULL; + NMDnsManager *dns_mgr = NULL; + NMDBusManager *dbus_mgr = NULL; + NMSupplicantManager *sup_mgr = NULL; + NMDHCPManager *dhcp_mgr = NULL; + NMFirewallManager *fw_mgr = NULL; + NMSettings *settings = NULL; + NMConfig *config; + NMNetlinkMonitor *monitor = NULL; GError *error = NULL; gboolean wrote_pidfile = FALSE; @@ -667,6 +668,27 @@ done: if (manager) g_object_unref (manager); + if (settings) + g_object_unref (settings); + + if (vpn_manager) + g_object_unref (vpn_manager); + + if (dns_mgr) + g_object_unref (dns_mgr); + + if (dhcp_mgr) + g_object_unref (dhcp_mgr); + + if (sup_mgr) + g_object_unref (sup_mgr); + + if (fw_mgr) + g_object_unref (fw_mgr); + + if (dbus_mgr) + g_object_unref (dbus_mgr); + nm_logging_shutdown (); if (pidfile && wrote_pidfile) @@ -674,6 +696,16 @@ done: nm_config_free (config); + /* Free options */ + g_free (pidfile); + g_free (state_file); + g_free (config_path); + g_free (plugins); + g_free (log_level); + g_free (log_domains); + g_free (connectivity_uri); + g_free (connectivity_response); + nm_log_info (LOGD_CORE, "exiting (%s)", success ? "success" : "error"); exit (success ? 0 : 1); } -- 1.7.11.7
_______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org https://mail.gnome.org/mailman/listinfo/networkmanager-list