2008-08-12 Dan Williams <dcbw@redhat.com>
authorDan Williams <dcbw@redhat.com>
Tue, 12 Aug 2008 22:40:27 +0000 (22:40 +0000)
committerDan Williams <dcbw@redhat.com>
Tue, 12 Aug 2008 22:40:27 +0000 (22:40 +0000)
* src/nm-device.c
- (nm_device_set_ip4_config): don't touch hostnames here; distros
that want to use DHCP hostnames should use dispatcher scripts
for that

* src/NetworkManagerSystem.h
  src/backends/NetworkManagerArch.c
  src/backends/NetworkManagerDebian.c
  src/backends/NetworkManagerFrugalware.c
  src/backends/NetworkManagerGeneric.c
  src/backends/NetworkManagerGeneric.h
  src/backends/NetworkManagerGentoo.c
  src/backends/NetworkManagerMandriva.c
  src/backends/NetworkManagerPaldo.c
  src/backends/NetworkManagerRedHat.c
  src/backends/NetworkManagerSlackware.c
  src/backends/NetworkManagerSuSE.c
- Remove nm_system_set_hostname(), no longer used

* src/backends/Makefile.am
  src/backends/shvar.c
  src/backends/shvar.h
- Remove shvar.*; no longer used

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3946 4912f4e0-d625-0410-9fb7-b9a5a253dbdc

17 files changed:
ChangeLog
src/NetworkManagerSystem.h
src/backends/Makefile.am
src/backends/NetworkManagerArch.c
src/backends/NetworkManagerDebian.c
src/backends/NetworkManagerFrugalware.c
src/backends/NetworkManagerGeneric.c
src/backends/NetworkManagerGeneric.h
src/backends/NetworkManagerGentoo.c
src/backends/NetworkManagerMandriva.c
src/backends/NetworkManagerPaldo.c
src/backends/NetworkManagerRedHat.c
src/backends/NetworkManagerSlackware.c
src/backends/NetworkManagerSuSE.c
src/backends/shvar.c [deleted file]
src/backends/shvar.h [deleted file]
src/nm-device.c

index 4f4fd7c..1fd50f7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,31 @@
 2008-08-12  Dan Williams  <dcbw@redhat.com>
 
+       * src/nm-device.c
+               - (nm_device_set_ip4_config): don't touch hostnames here; distros
+                       that want to use DHCP hostnames should use dispatcher scripts
+                       for that
+
+       * src/NetworkManagerSystem.h
+         src/backends/NetworkManagerArch.c
+         src/backends/NetworkManagerDebian.c
+         src/backends/NetworkManagerFrugalware.c
+         src/backends/NetworkManagerGeneric.c
+         src/backends/NetworkManagerGeneric.h
+         src/backends/NetworkManagerGentoo.c
+         src/backends/NetworkManagerMandriva.c
+         src/backends/NetworkManagerPaldo.c
+         src/backends/NetworkManagerRedHat.c
+         src/backends/NetworkManagerSlackware.c
+         src/backends/NetworkManagerSuSE.c
+               - Remove nm_system_set_hostname(), no longer used
+         
+       * src/backends/Makefile.am
+         src/backends/shvar.c
+         src/backends/shvar.h
+               - Remove shvar.*; no longer used
+
+2008-08-12  Dan Williams  <dcbw@redhat.com>
+
        Revert most of the 'hostname' patch.  Too much stuff still breaks when
        hostname is updated at runtime.  Distros or users who want hostname updates
        can use dispatcher scripts to update the hostname if they need it.
index 496a314..60e24c6 100644 (file)
@@ -62,8 +62,6 @@ gboolean              nm_system_device_set_up_down_with_iface         (const char *iface, gboolean
 gboolean        nm_system_device_is_up (NMDevice *device);
 gboolean        nm_system_device_is_up_with_iface (const char *iface);
 
-void                   nm_system_set_hostname (NMIP4Config *config);
-
 gboolean               nm_system_device_set_mtu (const char *iface, guint32 mtu);
 
 #endif
index 10830c7..14af1de 100644 (file)
@@ -7,54 +7,46 @@ INCLUDES = -I${top_srcdir}                            \
 
 noinst_LTLIBRARIES = libnmbackend.la
 
-libnmbackend_la_SOURCES =      NetworkManagerGeneric.c \
+libnmbackend_la_SOURCES = NetworkManagerGeneric.c      \
                                NetworkManagerGeneric.h
 
 libnmbackend_la_LIBADD =
 
 if TARGET_REDHAT
-libnmbackend_la_SOURCES +=     NetworkManagerRedHat.c  \
-                                               shvar.c                         \
-                                               shvar.h
+libnmbackend_la_SOURCES += NetworkManagerRedHat.c
 endif
 
 if TARGET_SUSE
-libnmbackend_la_SOURCES +=     NetworkManagerSuSE.c                            \
-                                               shvar.c                         \
-                                               shvar.h
+libnmbackend_la_SOURCES += NetworkManagerSuSE.c
 endif
 
 if TARGET_GENTOO
-libnmbackend_la_SOURCES +=     NetworkManagerGentoo.c          \
-                                               shvar.c                         \
-                                               shvar.h
+libnmbackend_la_SOURCES += NetworkManagerGentoo.c
 endif
 
 if TARGET_DEBIAN
-libnmbackend_la_SOURCES +=     NetworkManagerDebian.c
+libnmbackend_la_SOURCES += NetworkManagerDebian.c
 endif
 
 if TARGET_SLACKWARE
-libnmbackend_la_SOURCES +=     NetworkManagerSlackware.c
+libnmbackend_la_SOURCES += NetworkManagerSlackware.c
 endif
 
 if TARGET_ARCH
-libnmbackend_la_SOURCES +=     NetworkManagerArch.c
+libnmbackend_la_SOURCES += NetworkManagerArch.c
 endif
 
 if TARGET_PALDO
-libnmbackend_la_SOURCES +=     NetworkManagerPaldo.c
+libnmbackend_la_SOURCES += NetworkManagerPaldo.c
 endif
 
 if TARGET_FRUGALWARE
-libnmbackend_la_SOURCES +=     NetworkManagerFrugalware.c
+libnmbackend_la_SOURCES += NetworkManagerFrugalware.c
 libnmbackend_la_LIBADD += -lfwnetconfig -lfwutil
 endif
 
 if TARGET_MANDRIVA
-libnmbackend_la_SOURCES +=      NetworkManagerMandriva.c  \
-                               shvar.c                         \
-                               shvar.h
+libnmbackend_la_SOURCES += NetworkManagerMandriva.c
 endif
 
 libnmbackend_la_LIBADD += $(DBUS_LIBS) $(GTHREAD_LIBS)
index a7a4fe4..3ed5677 100644 (file)
 #endif
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <signal.h>
-#include <arpa/inet.h>
-#include <glib/gprintf.h>
-#include <glib/gfileutils.h>
 #include <string.h>
 #include <stdlib.h>
 
 #include "NetworkManagerGeneric.h"
 #include "NetworkManagerSystem.h"
 #include "NetworkManagerUtils.h"
-#include "nm-device.h"
-#include "nm-utils.h"
 
 /*
  * nm_system_enable_loopback
@@ -59,7 +51,7 @@
  */
 void nm_system_enable_loopback (void)
 {
-       nm_system_device_set_up_down_with_iface ("lo", TRUE);
+       nm_generic_enable_loopback ();
 }
 
 /*
@@ -73,18 +65,6 @@ void nm_system_update_dns (void)
 {
        /* Check if the daemon was already running - do not start a new instance */
        if (g_file_test("/var/run/daemons/nscd", G_FILE_TEST_EXISTS))
-       {
                nm_spawn_process ("/etc/rc.d/nscd restart");
-       }
-}
-
-/*
- * nm_system_set_hostname
- *
- * set the hostname
- *
- */
-void nm_system_set_hostname (NMIP4Config *config)
-{
 }
 
index d9e2ead..d4a518b 100644 (file)
 #endif
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
-#include <arpa/inet.h>
 #include <string.h>
 #include <stdlib.h>
 
 #include "NetworkManagerGeneric.h"
 #include "NetworkManagerSystem.h"
 #include "NetworkManagerUtils.h"
-#include "nm-device.h"
-#include "nm-utils.h"
 
 /*
  * nm_system_enable_loopback
@@ -61,15 +56,5 @@ void nm_system_enable_loopback (void)
 void nm_system_update_dns (void)
 {
        nm_spawn_process ("/usr/sbin/invoke-rc.d nscd restart");
-
 }
 
-/*
- * nm_system_set_hostname
- *
- * set the hostname
- *
- */
-void nm_system_set_hostname (NMIP4Config *config)
-{
-}
index 47a19f5..492bf19 100644 (file)
  */
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
-#include <arpa/inet.h>
 #include <string.h>
 #include <stdlib.h>
 
 #include "NetworkManagerSystem.h"
-#include "NetworkManagerUtils.h"
-#include "nm-device.h"
-#include "nm-utils.h"
 
-// Provided by the frugalwareutils package on Frugalware
-#include <libfwnetconfig.h>
+/* Provided by the frugalwareutils package on Frugalware */
+#include <libfwnetconfig.h> 
 
 /*
  * nm_system_enable_loopback
@@ -62,12 +56,3 @@ void nm_system_update_dns (void)
        /* I'm not running nscd */
 }
 
-/*
- * nm_system_set_hostname
- *
- * set the hostname
- *
- */
-void nm_system_set_hostname (NMIP4Config *config)
-{
-}
index ed4b02e..93b1e12 100644 (file)
@@ -34,9 +34,8 @@
 #include "NetworkManagerGeneric.h"
 #include "NetworkManagerSystem.h"
 #include "NetworkManagerUtils.h"
-#include "nm-device.h"
-#include "nm-utils.h"
 #include "nm-netlink.h"
+#include "nm-utils.h"
 
 /* Because of a bug in libnl, rtnl.h should be included before route.h */
 #include <netlink/route/rtnl.h>
@@ -110,131 +109,3 @@ void nm_generic_update_dns (void)
 {
 }
 
-/*
- * nm_generic_set_ip4_config_from_resolv_conf
- *
- * Add nameservers and search names from a resolv.conf format file.
- *
- */
-void nm_generic_set_ip4_config_from_resolv_conf (const char *filename, NMIP4Config *ip4_config)
-{
-       char *  contents = NULL;
-       char ** split_contents = NULL;
-       int             i, len;
-
-       g_return_if_fail (filename != NULL);
-       g_return_if_fail (ip4_config != NULL);
-
-       if (!g_file_get_contents (filename, &contents, NULL, NULL) || (contents == NULL))
-               return;
-
-       if (!(split_contents = g_strsplit (contents, "\n", 0)))
-               goto out;
-       
-       len = g_strv_length (split_contents);
-       for (i = 0; i < len; i++)
-       {
-               char *line = split_contents[i];
-
-               /* Ignore comments */
-               if (!line || (line[0] == ';') || (line[0] == '#'))
-                       continue;
-
-               line = g_strstrip (line);
-               if ((strncmp (line, "search", 6) == 0) && (strlen (line) > 6))
-               {
-                       char *searches = g_strdup (line + 7);
-                       char **split_searches = NULL;
-
-                       if (!searches || !strlen (searches))
-                               continue;
-
-                       /* Allow space-separated search domains */
-                       if ((split_searches = g_strsplit (searches, " ", 0)))
-                       {
-                               int m, srch_len;
-
-                               srch_len = g_strv_length (split_searches);
-                               for (m = 0; m < srch_len; m++)
-                               {
-                                       if (split_searches[m])
-                                               nm_ip4_config_add_domain        (ip4_config, split_searches[m]);
-                               }
-                               g_strfreev (split_searches);
-                       }
-                       else
-                       {
-                               /* Only 1 item, add the whole line */
-                               nm_ip4_config_add_domain        (ip4_config, searches);
-                       }
-
-                       g_free (searches);
-               }
-               else if ((strncmp (line, "nameserver", 10) == 0) && (strlen (line) > 10))
-               {
-                       guint32 addr = (guint32) (inet_addr (line + 11));
-
-                       if (addr != (guint32) -1)
-                               nm_ip4_config_add_nameserver (ip4_config, addr);
-               }
-       }
-
-       g_strfreev (split_contents);
-
-out:
-       g_free (contents);
-}
-
-
-/*
- * nm_generic_device_get_system_config
- *
- * Retrieve any relevant configuration info for a particular device
- * from the system network configuration information.  Clear out existing
- * info before setting stuff too.
- *
- */
-void* nm_generic_device_get_system_config (NMDevice *dev)
-{
-       return NULL;
-}
-
-/*
- * nm_generic_device_free_system_config
- *
- * Free stored system config data
- *
- */
-void nm_generic_device_free_system_config (NMDevice *dev, void *system_config_data)
-{
-       return;
-}
-
-
-/*
- * nm_generic_device_get_disabled
- *
- * Return whether the distro-specific system config tells us to use
- * dhcp for this device.
- *
- */
-gboolean nm_generic_device_get_disabled (NMDevice *dev)
-{
-       return FALSE;
-}
-
-
-NMIP4Config *nm_generic_device_new_ip4_system_config (NMDevice *dev)
-{
-       return NULL;
-}
-
-/*
- * nm_generic_set_hostname
- *
- * set the hostname
- *
- */
-void nm_generic_set_hostname (NMIP4Config *config)
-{
-}
index 8c2a817..0a0a88a 100644 (file)
 #ifndef NETWORK_MANAGER_GENERIC_H
 #define NETWORK_MANAGER_GENERIC_H
 
-#include <glib.h>
-#include "nm-device.h"
-#include "nm-ip4-config.h"
-#include "nm-named-manager.h"
-
-/* Prototypes for system/distribution dependent functions,
- * implemented in the backend files in backends/ directory
- */
-
-void                   nm_generic_enable_loopback                              (void);
-void                   nm_generic_update_dns                                   (void);
-
-void                   nm_generic_set_ip4_config_from_resolv_conf (const char *filename, NMIP4Config *ip4_config);
-void *         nm_generic_device_get_system_config                     (NMDevice *dev);
-void                   nm_generic_device_free_system_config            (NMDevice *dev, void *system_config_data);
-NMIP4Config *  nm_generic_device_new_ip4_system_config         (NMDevice *dev);
-
-gboolean               nm_generic_device_get_disabled                          (NMDevice *dev);
-
-gboolean               nm_generic_device_set_from_ip4_config           (NMDevice *dev);
-gboolean               nm_generic_vpn_device_set_from_ip4_config       (NMNamedManager *named, NMDevice *active_device, const char *iface, NMIP4Config *config, char **routes, int num_routes);
-gboolean               nm_generic_vpn_device_unset_from_ip4_config     (NMNamedManager *named, NMDevice *active_device, const char *iface, NMIP4Config *config);
-
-gboolean               nm_generic_device_set_up_down                           (NMDevice *dev, gboolean up);
-gboolean               nm_generic_device_set_up_down_with_iface                (NMDevice *dev, const char *iface, gboolean up);
-
-void                   nm_generic_set_hostname (NMIP4Config *config);
+void nm_generic_enable_loopback        (void);
+void nm_generic_update_dns             (void);
 
 #endif
index a34ba3f..7fa1207 100644 (file)
 #endif
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
 #include <string.h>
 #include <stdlib.h>
-#include <arpa/inet.h>
 
 #include "NetworkManagerGeneric.h"
 #include "NetworkManagerSystem.h"
 #include "NetworkManagerUtils.h"
-#include "nm-device.h"
-#include "nm-utils.h"
-#include "shvar.h"
 
 /*
  * nm_system_enable_loopback
@@ -71,12 +65,3 @@ void nm_system_update_dns (void)
  #endif
 }
 
-/*
- * nm_system_set_hostname
- *
- * set the hostname
- *
- */
-void nm_system_set_hostname (NMIP4Config *config)
-{
-}
index c9d79f0..527a25d 100644 (file)
 #endif
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
-#include <arpa/inet.h>
 #include <string.h>
 #include <stdlib.h>
 
 #include "NetworkManagerGeneric.h"
 #include "NetworkManagerSystem.h"
 #include "NetworkManagerUtils.h"
-#include "nm-device.h"
-#include "nm-utils.h"
-#include "shvar.h"
 
 /*
  * nm_system_enable_loopback
@@ -65,12 +59,3 @@ void nm_system_update_dns (void)
        }
 }
 
-/*
- * nm_system_set_hostname
- *
- * set the hostname
- *
- */
-void nm_system_set_hostname (NMIP4Config *config)
-{
-}
index a2ea9ca..0147a3b 100644 (file)
 #endif
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
-#include <arpa/inet.h>
-#include <glib/gkeyfile.h>
 #include <string.h>
 #include <stdlib.h>
 
 #include "NetworkManagerGeneric.h"
 #include "NetworkManagerSystem.h"
 #include "NetworkManagerUtils.h"
-#include "nm-device.h"
 #include "nm-utils.h"
 
 /*
@@ -64,12 +59,3 @@ void nm_system_update_dns (void)
        nm_spawn_process ("/usr/sbin/nscd -i hosts");
 }
 
-/*
- * nm_system_set_hostname
- *
- * set the hostname
- *
- */
-void nm_system_set_hostname (NMIP4Config *config)
-{
-}
index 50e47f2..1e3f7e9 100644 (file)
 #endif
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
-#include <arpa/inet.h>
 #include <string.h>
 #include <stdlib.h>
 
 #include "NetworkManagerGeneric.h"
 #include "NetworkManagerSystem.h"
 #include "NetworkManagerUtils.h"
-#include "nm-device.h"
-#include "nm-utils.h"
-#include "shvar.h"
 
 /*
  * nm_system_enable_loopback
@@ -63,12 +57,3 @@ void nm_system_update_dns (void)
        }
 }
 
-/*
- * nm_system_set_hostname
- *
- * set the hostname
- *
- */
-void nm_system_set_hostname (NMIP4Config *config)
-{
-}
index 16c3c17..8d7c5bf 100644 (file)
 #endif
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
 #include <string.h>
 #include <stdlib.h>
 
 #include "NetworkManagerGeneric.h"
 #include "NetworkManagerSystem.h"
-#include "NetworkManagerUtils.h"
-#include "nm-device.h"
-#include "nm-utils.h"
 
 /*
  * nm_system_enable_loopback
@@ -60,12 +55,3 @@ void nm_system_update_dns (void)
        /* I'm not running nscd */
 }
 
-/*
- * nm_system_set_hostname
- *
- * set the hostname
- *
- */
-void nm_system_set_hostname (NMIP4Config *config)
-{
-}
index 5ba7e8d..a0cd1cb 100644 (file)
 #endif
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <signal.h>
-#include <sys/stat.h>
-#include <arpa/inet.h>
 #include <string.h>
 #include <stdlib.h>
-#include <unistd.h>
-#include <netdb.h>
-#include <errno.h>
 
 #include "NetworkManagerGeneric.h"
 #include "NetworkManagerSystem.h"
 #include "NetworkManagerUtils.h"
-#include "nm-device.h"
-#include "NetworkManagerPolicy.h"
 #include "nm-utils.h"
-#include "shvar.h"
 
 /*
  * nm_system_enable_loopback
@@ -70,64 +60,3 @@ void nm_system_update_dns (void)
        nm_spawn_process ("/usr/sbin/nscd -i hosts");
 }
 
-/*
- * nm_system_set_hostname
- *
- * set the hostname
- *
- */
-void nm_system_set_hostname (NMIP4Config *config)
-{
-       char *filename, *h_name = NULL, *buf;
-       shvarFile *file;
-
-       g_return_if_fail (config != NULL);
-
-       filename = g_strdup_printf (SYSCONFDIR"/sysconfig/network/dhcp");
-       file = svNewFile (filename);
-       if (!file)
-               goto out_gfree;
-
-       buf = svGetValue (file, "DHCLIENT_SET_HOSTNAME");
-       if (!buf)
-               goto out_close;
-
-       if (!strcmp (buf, "yes")) 
-       {
-               const char *hostname;
-
-               hostname = nm_ip4_config_get_hostname (config);
-               if (!hostname)
-               {
-                       struct in_addr temp_addr;
-                       struct hostent *host;
-                       const NMSettingIP4Address *ip_address;
-
-                       /* try to get hostname via dns */
-                       ip_address = nm_ip4_config_get_address (config, 0);
-                       temp_addr.s_addr = ip_address->address;
-                       host = gethostbyaddr ((char *) &temp_addr, sizeof (temp_addr), AF_INET);
-                       if (host)
-                       {
-                               h_name = g_strdup (host->h_name);
-                               hostname = strtok (h_name, ".");
-                       }
-                       else
-                               nm_warning ("nm_system_set_hostname(): gethostbyaddr failed, h_errno = %d", h_errno);
-               }
-
-               if (hostname)
-               {
-                       nm_info ("Setting hostname to '%s'", hostname);
-                       if (sethostname (hostname, strlen (hostname)) < 0)
-                               nm_warning ("Could not set hostname.");
-               }
-       }
-
-       g_free (h_name);
-       free (buf);
-out_close:
-       svCloseFile (file);
-out_gfree:
-       g_free (filename);
-}
diff --git a/src/backends/shvar.c b/src/backends/shvar.c
deleted file mode 100644 (file)
index 67b3019..0000000
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * shvar.c
- *
- * Implementation of non-destructively reading/writing files containing
- * only shell variable declarations and full-line comments.
- *
- * Includes explicit inheritance mechanism intended for use with
- * Red Hat Linux ifcfg-* files.  There is no protection against
- * inheritance loops; they will generally cause stack overflows.
- * Furthermore, they are only intended for one level of inheritance;
- * the value setting algorithm assumes this.
- *
- * Copyright 1999,2000 Red Hat, Inc.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "shvar.h"
-
-/* Open the file <name>, returning a shvarFile on success and NULL on failure.
-   Add a wrinkle to let the caller specify whether or not to create the file
-   (actually, return a structure anyway) if it doesn't exist. */
-static shvarFile *
-svOpenFile(const char *name, gboolean create)
-{
-    shvarFile *s = NULL;
-    int closefd = 0;
-
-    s = g_malloc0(sizeof(shvarFile));
-
-#if 1   /* NetworkManager local change */
-    s->fd = open(name, O_RDONLY); /* NOT O_CREAT */
-    if (s->fd != -1) closefd = 1;
-#else
-    s->fd = open(name, O_RDWR); /* NOT O_CREAT */
-    if (s->fd == -1) {
-       /* try read-only */
-       s->fd = open(name, O_RDONLY); /* NOT O_CREAT */
-       if (s->fd != -1) closefd = 1;
-    }
-#endif
-    s->fileName = g_strdup(name);
-
-    if (s->fd != -1) {
-       struct stat buf;
-       char *p, *q;
-
-       if (fstat(s->fd, &buf) < 0) goto bail;
-       s->arena = g_malloc0(buf.st_size + 1);
-
-       if (read(s->fd, s->arena, buf.st_size) < 0) goto bail;
-
-       /* we'd use g_strsplit() here, but we want a list, not an array */
-       for(p = s->arena; (q = strchr(p, '\n')) != NULL; p = q + 1) {
-               s->lineList = g_list_append(s->lineList, g_strndup(p, q - p));
-       }
-
-       /* closefd is set if we opened the file read-only, so go ahead and
-          close it, because we can't write to it anyway */
-       if (closefd) {
-           close(s->fd);
-           s->fd = -1;
-       }
-
-        return s;
-    }
-
-    if (create) {
-        return s;
-    }
-
-bail:
-    if (s->fd != -1) close(s->fd);
-    if (s->arena) g_free (s->arena);
-    if (s->fileName) g_free (s->fileName);
-    g_free (s);
-    return NULL;
-}
-
-/* Open the file <name>, return shvarFile on success, NULL on failure */
-shvarFile *
-svNewFile(const char *name)
-{
-    return svOpenFile(name, FALSE);
-}
-
-/* Create a new file structure, returning actual data if the file exists,
- * and a suitable starting point if it doesn't. */
-shvarFile *
-svCreateFile(const char *name)
-{
-    return svOpenFile(name, TRUE);
-}
-
-/* remove escaped characters in place */
-static void
-unescape(char *s) {
-    int len, i;
-
-    len = strlen(s);
-    if ((s[0] == '"' || s[0] == '\'') && s[0] == s[len-1]) {
-       i = len - 2;
-       memmove(s, s+1, i);
-       s[i+1] = '\0';
-       len = i;
-    }
-    for (i = 0; i < len; i++) {
-       if (s[i] == '\\') {
-           memmove(s+i, s+i+1, len-(i+1));
-           len--;
-       }
-       s[len] = '\0';
-    }
-}
-
-
-/* create a new string with all necessary characters escaped.
- * caller must free returned string
- */
-static const char escapees[] = "\"'\\$~`";             /* must be escaped */
-static const char spaces[] = " \t|&;()<>";             /* only require "" */
-static char *
-escape(const char *s) {
-    char *new;
-    int i, j, mangle = 0, space = 0;
-    int newlen, slen;
-    static int esclen, splen;
-
-    if (!esclen) esclen = strlen(escapees);
-    if (!splen) splen = strlen(spaces);
-    slen = strlen(s);
-
-    for (i = 0; i < slen; i++) {
-       if (strchr(escapees, s[i])) mangle++;
-       if (strchr(spaces, s[i])) space++;
-    }
-    if (!mangle && !space) return strdup(s);
-
-    newlen = slen + mangle + 3;        /* 3 is extra ""\0 */
-    new = g_malloc0(newlen);
-    if (!new) return NULL;
-
-    j = 0;
-    new[j++] = '"';
-    for (i = 0; i < slen; i++) {
-       if (strchr(escapees, s[i])) {
-           new[j++] = '\\';
-       }
-       new[j++] = s[i];
-    }
-    new[j++] = '"';
-    g_assert(j == slen + mangle + 2); /* j is the index of the '\0' */
-
-    return new;
-}
-
-/* Get the value associated with the key, and leave the current pointer
- * pointing at the line containing the value.  The char* returned MUST
- * be freed by the caller.
- */
-char *
-svGetValue(shvarFile *s, const char *key)
-{
-    char *value = NULL;
-    char *line;
-    char *keyString;
-    int len;
-
-    g_assert(s);
-    g_assert(key);
-
-    keyString = g_malloc0(strlen(key) + 2);
-    strcpy(keyString, key);
-    keyString[strlen(key)] = '=';
-    len = strlen(keyString);
-
-    for (s->current = s->lineList; s->current; s->current = s->current->next) {
-       line = s->current->data;
-       if (!strncmp(keyString, line, len)) {
-           value = g_strdup(line + len);
-           unescape(value);
-           break;
-       }
-    }
-    g_free(keyString);
-
-    if (value) {
-       if (value[0]) {
-           return value;
-       } else {
-           g_free(value);
-           return NULL;
-       }
-    }
-    if (s->parent) value = svGetValue(s->parent, key);
-    return value;
-}
-
-/* return 1 if <key> resolves to any truth value (e.g. "yes", "y", "true")
- * return 0 if <key> resolves to any non-truth value (e.g. "no", "n", "false")
- * return <default> otherwise
- */
-int
-svTrueValue(shvarFile *s, const char *key, int def)
-{
-    char *tmp;
-    int returnValue = def;
-
-    tmp = svGetValue(s, key);
-    if (!tmp) return returnValue;
-
-    if ( (!strcasecmp("yes", tmp)) ||
-        (!strcasecmp("true", tmp)) ||
-        (!strcasecmp("t", tmp)) ||
-        (!strcasecmp("y", tmp)) ) returnValue = 1;
-    else
-    if ( (!strcasecmp("no", tmp)) ||
-        (!strcasecmp("false", tmp)) ||
-        (!strcasecmp("f", tmp)) ||
-        (!strcasecmp("n", tmp)) ) returnValue = 0;
-
-    g_free (tmp);
-    return returnValue;
-}
-
-
-/* Set the variable <key> equal to the value <value>.
- * If <key> does not exist, and the <current> pointer is set, append
- * the key=value pair after that line.  Otherwise, prepend the pair
- * to the top of the file.  Here's the algorithm, as the C code
- * seems to be rather dense:
- *
- * if (value == NULL), then:
- *     if val2 (parent): change line to key= or append line key=
- *     if val1 (this)  : delete line
- *     else noop
- * else use this table:
- *                                val2
- *             NULL              value               other
- * v   NULL    append line       noop                append line
- * a
- * l   value   noop              noop                noop
- * 1
- *     other   change line       delete line         change line
- *
- * No changes are ever made to the parent config file, only to the
- * specific file passed on the command line.
- *
- */
-void
-svSetValue(shvarFile *s, const char *key, const char *value)
-{
-    char *newval = NULL, *val1 = NULL, *val2 = NULL;
-    char *keyValue;
-
-    g_assert(s);
-    g_assert(key);
-    /* value may be NULL */
-
-    if (value) newval = escape(value);
-    keyValue = g_strdup_printf("%s=%s", key, newval ? newval : "");
-
-    val1 = svGetValue(s, key);
-    if (val1 && newval && !strcmp(val1, newval)) goto bail;
-    if (s->parent) val2 = svGetValue(s->parent, key);
-
-    if (!newval || !newval[0]) {
-       /* delete value somehow */
-       if (val2) {
-           /* change/append line to get key= */
-           if (s->current) s->current->data = keyValue;
-           else s->lineList = g_list_append(s->lineList, keyValue);
-           s->freeList = g_list_append(s->freeList, keyValue);
-           s->modified = 1;
-       } else if (val1) {
-           /* delete line */
-           s->lineList = g_list_remove_link(s->lineList, s->current);
-           g_list_free_1(s->current);
-           s->modified = 1;
-           goto bail; /* do not need keyValue */
-       }
-       goto end;
-    }
-
-    if (!val1) {
-       if (val2 && !strcmp(val2, newval)) goto end;
-       /* append line */
-       s->lineList = g_list_append(s->lineList, keyValue);
-       s->freeList = g_list_append(s->freeList, keyValue);
-       s->modified = 1;
-       goto end;
-    }
-
-    /* deal with a whole line of noops */
-    if (val1 && !strcmp(val1, newval)) goto end;
-
-    /* At this point, val1 && val1 != value */
-    if (val2 && !strcmp(val2, newval)) {
-       /* delete line */
-       s->lineList = g_list_remove_link(s->lineList, s->current);
-       g_list_free_1(s->current);
-       s->modified = 1;
-       goto bail; /* do not need keyValue */
-    } else {
-       /* change line */
-       if (s->current) s->current->data = keyValue;
-       else s->lineList = g_list_append(s->lineList, keyValue);
-       s->freeList = g_list_append(s->freeList, keyValue);
-       s->modified = 1;
-    }
-
-end:
-    if (newval) free(newval);
-    if (val1) free(val1);
-    if (val2) free(val2);
-    return;
-
-bail:
-    if (keyValue) free (keyValue);
-    goto end;
-}
-
-/* Write the current contents iff modified.  Returns -1 on error
- * and 0 on success.  Do not write if no values have been modified.
- * The mode argument is only used if creating the file, not if
- * re-writing an existing file, and is passed unchanged to the
- * open() syscall.
- */
-int
-svWriteFile(shvarFile *s, int mode)
-{
-    FILE *f;
-    int tmpfd;
-
-    if (s->modified) {
-       if (s->fd == -1)
-           s->fd = open(s->fileName, O_WRONLY|O_CREAT, mode);
-       if (s->fd == -1)
-           return -1;
-       if (ftruncate(s->fd, 0) < 0)
-           return -1;
-
-       tmpfd = dup(s->fd);
-       f = fdopen(tmpfd, "w");
-       fseek(f, 0, SEEK_SET);
-       for (s->current = s->lineList; s->current; s->current = s->current->next) {
-           char *line = s->current->data;
-           fprintf(f, "%s\n", line);
-       }
-       fclose(f);
-    }
-
-    return 0;
-}
-
-/* Close the file descriptor (if open) and delete the shvarFile.
- * Returns -1 on error and 0 on success.
- */
-int
-svCloseFile(shvarFile *s)
-{
-
-    g_assert(s);
-
-    if (s->fd != -1) close(s->fd);
-
-    g_free(s->arena);
-    for (s->current = s->freeList; s->current; s->current = s->current->next) {
-        g_free(s->current->data);
-    }
-    g_free(s->fileName);
-    g_list_free(s->freeList);
-    g_list_foreach (s->lineList, (GFunc) g_free, NULL);
-    g_list_free(s->lineList); /* implicitly frees s->current */
-    g_free(s);
-    return 0;
-}
diff --git a/src/backends/shvar.h b/src/backends/shvar.h
deleted file mode 100644 (file)
index 00e1a8e..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * shvar.h
- *
- * Interface for non-destructively reading/writing files containing
- * only shell variable declarations and full-line comments.
- *
- * Includes explicit inheritance mechanism intended for use with
- * Red Hat Linux ifcfg-* files.  There is no protection against
- * inheritance loops; they will generally cause stack overflows.
- * Furthermore, they are only intended for one level of inheritance;
- * the value setting algorithm assumes this.
- *
- * Copyright 1999 Red Hat, Inc.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-#ifndef _SHVAR_H
-#define _SHVAR_H
-
-#include <glib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-typedef struct _shvarFile shvarFile;
-struct _shvarFile {
-       char            *fileName;      /* read-only */
-       int             fd;             /* read-only */
-       char            *arena;         /* ignore */
-       GList           *lineList;      /* read-only */
-       GList           *freeList;      /* ignore */
-       GList           *current;       /* set implicitly or explicitly,
-                                          points to element of lineList */
-       shvarFile       *parent;        /* set explicitly */
-       int             modified;       /* ignore */
-};
-
-
-/* Create the file <name>, return shvarFile on success, NULL on failure */
-shvarFile *
-svCreateFile(const char *name);
-
-/* Open the file <name>, return shvarFile on success, NULL on failure */
-shvarFile *
-svNewFile(const char *name);
-
-/* Get the value associated with the key, and leave the current pointer
- * pointing at the line containing the value.  The char* returned MUST
- * be freed by the caller.
- */
-char *
-svGetValue(shvarFile *s, const char *key);
-
-/* return 1 if <key> resolves to any truth value (e.g. "yes", "y", "true")
- * return 0 if <key> resolves to any non-truth value (e.g. "no", "n", "false")
- * return <def> otherwise
- */
-int
-svTrueValue(shvarFile *s, const char *key, int def);
-
-/* Set the variable <key> equal to the value <value>.
- * If <key> does not exist, and the <current> pointer is set, append
- * the key=value pair after that line.  Otherwise, prepend the pair
- * to the top of the file.
- */
-void
-svSetValue(shvarFile *s, const char *key, const char *value);
-
-
-/* Write the current contents iff modified.  Returns -1 on error
- * and 0 on success.  Do not write if no values have been modified.
- * The mode argument is only used if creating the file, not if
- * re-writing an existing file, and is passed unchanged to the
- * open() syscall.
- */
-int
-svWriteFile(shvarFile *s, int mode);
-
-/* Close the file descriptor (if open) and delete the shvarFile.
- * Returns -1 on error and 0 on success.
- */
-int
-svCloseFile(shvarFile *s);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* ! _SHVAR_H */
index 070b556..be3cfa0 100644 (file)
@@ -1754,10 +1754,8 @@ nm_device_set_ip4_config (NMDevice *self, NMIP4Config *config, NMDeviceStateReas
        priv->ip4_config = g_object_ref (config);
 
        success = nm_system_device_set_from_ip4_config (ip_iface, config);
-       if (success) {
+       if (success)
                nm_device_update_ip4_address (self);
-               nm_system_set_hostname (config);
-       }
 
        g_object_notify (G_OBJECT (self), NM_DEVICE_INTERFACE_IP4_CONFIG);