Mailinglist Archive: opensuse-commit (2092 mails)

< Previous Next >
commit linuxrc
  • From: root@xxxxxxxxxxxxxxx (h_root)
  • Date: Wed, 15 Aug 2007 20:32:57 +0200
  • Message-id: <20070815183257.67B83678180@xxxxxxxxxxxxxxx>

Hello community,

here is the log from the commit of package linuxrc
checked in at Wed Aug 15 20:32:57 CEST 2007.

--------
--- linuxrc/linuxrc.changes     2007-08-09 17:53:07.000000000 +0200
+++ /mounts/work_src_done/STABLE/linuxrc/linuxrc.changes        2007-08-14 16:47:03.000000000 +0200
@@ -1,0 +2,7 @@
+Tue Aug 14 16:46:59 CEST 2007 - snwint@xxxxxxx
+
+- fix nfs mount, nfs.tcp option gone (#216392)
+- fixed network setup bug
+- instsys was not found if it's a directory & a relative url was used
+
+-------------------------------------------------------------------

Old:
----
  linuxrc-3.0.5.tar.bz2

New:
----
  linuxrc-3.0.6.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ linuxrc.spec ++++++
--- /var/tmp/diff_new_pack.E15822/_old  2007-08-15 20:31:39.000000000 +0200
+++ /var/tmp/diff_new_pack.E15822/_new  2007-08-15 20:31:39.000000000 +0200
@@ -1,5 +1,5 @@
 #
-# spec file for package linuxrc (Version 3.0.5)
+# spec file for package linuxrc (Version 3.0.6)
 #
 # Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
 # This file and all modifications and additions to the pristine
@@ -16,9 +16,9 @@
 Group:          System/Boot
 Autoreqprov:    on
 Summary:        SUSE Installation Program
-Version:        3.0.5
+Version:        3.0.6
 Release:        1
-Source:         linuxrc-3.0.5.tar.bz2
+Source:         linuxrc-3.0.6.tar.bz2
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
@@ -53,6 +53,10 @@
 %doc linuxrc.html
 
 %changelog
+* Tue Aug 14 2007 - snwint@xxxxxxx
+- fix nfs mount, nfs.tcp option gone (#216392)
+- fixed network setup bug
+- instsys was not found if it's a directory & a relative url was used
 * Thu Aug 09 2007 - snwint@xxxxxxx
 - updated po files
 * Thu Aug 09 2007 - snwint@xxxxxxx

++++++ linuxrc-3.0.5.tar.bz2 -> linuxrc-3.0.6.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-3.0.5/auto2.c new/linuxrc-3.0.6/auto2.c
--- old/linuxrc-3.0.5/auto2.c   2007-08-09 17:33:23.000000000 +0200
+++ new/linuxrc-3.0.6/auto2.c   2007-08-14 11:22:44.000000000 +0200
@@ -386,6 +386,7 @@
   /* if instsys is not a relative url, load it here */
   if(!err && !config.url.instsys->mount) {
     err = url_find_instsys(config.url.instsys, config.mountpoint.instsys);
+    if(err) url_umount(config.url.install);
   }
 
   /* get some files for lazy yast */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-3.0.5/Changelog new/linuxrc-3.0.6/Changelog
--- old/linuxrc-3.0.5/Changelog 2007-08-09 17:00:11.000000000 +0200
+++ new/linuxrc-3.0.6/Changelog 2007-08-14 16:46:50.000000000 +0200
@@ -1,3 +1,8 @@
+14/8/2007:     v3.0.6
+       - fix nfs mount, nfs.tcp option gone (#216392)
+       - fixed network setup bug
+       - instsys was not found if it's a directory & a relative url was used
+
 9/8/2007:      v3.0.5
        - updated po files
 
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-3.0.5/file.c new/linuxrc-3.0.6/file.c
--- old/linuxrc-3.0.5/file.c    2007-08-08 17:41:10.000000000 +0200
+++ new/linuxrc-3.0.6/file.c    2007-08-14 15:59:31.000000000 +0200
@@ -172,7 +172,6 @@
   { key_usbwait,        "USBWait",        kf_cfg + kf_cmd + kf_cmd_early },
   { key_nfsrsize,       "NFS.RSize",      kf_cfg + kf_cmd                },
   { key_nfswsize,       "NFS.WSize",      kf_cfg + kf_cmd                },
-  { key_nfstcp,         "NFS.TCP",        kf_cfg + kf_cmd                },
   { key_setupcmd,       "SetupCmd",       kf_cfg + kf_cmd                },
   { key_setupnetif,     "SetupNetIF",     kf_cfg + kf_cmd                },
   { key_netconfig,      "NetConfig",      kf_none                        },
@@ -914,10 +913,6 @@
         if(f->is.numeric) config.net.nfs_wsize = f->nvalue;
         break;
 
-      case key_nfstcp:
-        if(f->is.numeric) config.net.nfs_tcp = f->nvalue;
-        break;
-
       case key_setupcmd:
         str_copy(&config.setupcmd, *f->value ? f->value : NULL);
         break;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-3.0.5/file.h new/linuxrc-3.0.6/file.h
--- old/linuxrc-3.0.5/file.h    2007-08-08 17:41:01.000000000 +0200
+++ new/linuxrc-3.0.6/file.h    2007-08-14 15:59:42.000000000 +0200
@@ -39,7 +39,7 @@
   key_instnetdev, key_iucvpeer, key_portname, key_readchan, key_writechan,
   key_datachan, key_ctcprotocol, key_netwait, key_newid, key_moduledisks,
   key_port, key_smbshare, key_rootimage2, key_instsys_id,
-  key_initrd_id, key_instsys_complain, key_nfstcp, key_osamedium,
+  key_initrd_id, key_instsys_complain, key_osamedium,
   key_osainterface, key_dud_complain, key_dud_expected, key_staticdevices,
   key_withiscsi, key_ethtool, key_listen, key_zombies, key_dhcpcd,
   key_layer2, key_wlan_essid, key_wlan_auth, key_wlan_key_ascii,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-3.0.5/global.h new/linuxrc-3.0.6/global.h
--- old/linuxrc-3.0.5/global.h  2007-08-08 17:56:34.000000000 +0200
+++ new/linuxrc-3.0.6/global.h  2007-08-14 15:59:17.000000000 +0200
@@ -478,7 +478,6 @@
     unsigned device_given:1;   /* netdevice explicity set in info file */
     unsigned ifconfig:1;       /* setup network interface */
     unsigned is_configured:1;  /* set if network is configured */
-    unsigned nfs_tcp:1;                /* use TCP for NFS */
     unsigned keep:1;           /* keep network interface up */
     unsigned all_ifs:1;                /* try all interfaces */
     unsigned do_setup;         /* do network setup */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-3.0.5/linuxrc.c new/linuxrc-3.0.6/linuxrc.c
--- old/linuxrc-3.0.5/linuxrc.c 2007-08-06 17:20:16.000000000 +0200
+++ new/linuxrc-3.0.6/linuxrc.c 2007-08-14 16:00:01.000000000 +0200
@@ -727,7 +727,6 @@
   config.net.ifconfig = 1;
   config.net.setup = NS_DEFAULT;
   config.net.nameservers = 1;
-  config.net.nfs_tcp = 1;
 
   config.explode_win = 1;
   config.color = 2;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-3.0.5/net.c new/linuxrc-3.0.6/net.c
--- old/linuxrc-3.0.5/net.c     2007-08-02 17:43:58.000000000 +0200
+++ new/linuxrc-3.0.6/net.c     2007-08-14 15:56:34.000000000 +0200
@@ -6,8 +6,6 @@
  *
  */
 
-#define WITH_NFS
-
 #include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
@@ -77,9 +75,8 @@
 static int net_choose_device(void);
 static int net_input_data(void);
 #endif
-#ifdef WITH_NFS
 static void net_show_error(enum nfs_stat status_rv);
-#endif
+static int _net_mount_nfs(char *mountpoint, inet_t *server, char *hostdir, int flags);
 
 static void if_down(char *dev);
 static int wlan_auth_cb(dia_item_t di);
@@ -774,7 +771,6 @@
 }
 
 
-#ifdef WITH_NFS
 int xdr_dirpath (XDR *xdrs, dirpath *objp)
     {
     if (!xdr_string(xdrs, objp, MNTPATHLEN))
@@ -809,184 +805,174 @@
 /*
  * Mount NFS volume.
  *
- * Return:
+ * Tries v3 first, then v2.
+ *
+ * mountpoint: mount point
+ * server: server address
+ * hostdir: directory on server
+ *
+ * config.net.nfs_rsize: read size
+ * config.net.nfs_wsize: write size
+ * config.net.nfs_port: NFS port
+ *
+ * return:
  *      0: ok
  *   != 0: error code
  *
+ */
+int net_mount_nfs(char *mountpoint, inet_t *server, char *hostdir)
+{
+  int err;
+
+  /* first, v3 with tcp */
+  err = _net_mount_nfs(mountpoint, server, hostdir, NFS_MOUNT_TCP | NFS_MOUNT_VER3 | NFS_MOUNT_NONLM);
+
+  /* if that doesn't work, try v2, with udp */
+  if(err == EPROTONOSUPPORT) {
+    err = _net_mount_nfs(mountpoint, server, hostdir, NFS_MOUNT_NONLM);
+  }
+
+  return err;
+}
+
+
+/*
+ * Mount NFS volume.
+ *
+ * Similar to net_mount_nfs() but lets you specify NFS mount flags.
+ *
  * mountpoint: mount point
  * server: server address
  * hostdir: directory on server
+ * flags: NFS mount flags
  *
  * config.net.nfs_rsize: read size
  * config.net.nfs_wsize: write size
  * config.net.nfs_port: NFS port
+ *
+ * return:
+ *      0: ok
+ *   != 0: error code
+ *
  */
-int net_mount_nfs(char *mountpoint, inet_t *server, char *hostdir)
+int _net_mount_nfs(char *mountpoint, inet_t *server, char *hostdir, int flags)
 {
-    struct sockaddr_in     server_ri;
-    struct sockaddr_in     mount_server_ri;
-    struct nfs_mount_data  mount_data_ri;
-    int                    socket_ii;
-    int                    fsock_ii;
-    int                    port_ii;
-    CLIENT                *mount_client_pri;
-    struct timeval         timeout_ri;
-    int                    rc_ii;
-    struct fhstatus        status_ri;
-    char                   tmp_ti [1024];
-    char                  *opts_pci;
+  struct sockaddr_in server_in, mount_server_in;
+  struct nfs_mount_data mount_data;
+  CLIENT *client;
+  int sock, fsock, port, err, i;
+  struct timeval tv;
+  struct fhstatus fhs;
+  char *buf = NULL;
 
   if(net_check_address2(server, 1)) return -2;
 
   if(!hostdir) hostdir = "/";
   if(!mountpoint || !*mountpoint) mountpoint = "/";
 
-    memset (&server_ri, 0, sizeof (struct sockaddr_in));
-    server_ri.sin_family = AF_INET;
-    server_ri.sin_addr.s_addr = server->ip.s_addr;
-    memcpy (&mount_server_ri, &server_ri, sizeof (struct sockaddr_in));
-
-    memset (&mount_data_ri, 0, sizeof (struct nfs_mount_data));
-//    mount_data_ri.flags = NFS_MOUNT_NONLM;
-    if(config.net.nfs_tcp) {
-      mount_data_ri.flags = NFS_MOUNT_TCP | NFS_MOUNT_VER3 | NFS_MOUNT_NONLM;
-    }
-    mount_data_ri.rsize = config.net.nfs_rsize;
-    mount_data_ri.wsize = config.net.nfs_wsize;
-    mount_data_ri.timeo = 70;
-    mount_data_ri.retrans = 3;
-    mount_data_ri.acregmin = 3;
-    mount_data_ri.acregmax = 60;
-    mount_data_ri.acdirmin = 30;
-    mount_data_ri.acdirmax = 60;
-    mount_data_ri.namlen = NAME_MAX;
-    mount_data_ri.version = NFS_MOUNT_VERSION;
+  memset(&server_in, 0, sizeof server_in);
+  server_in.sin_family = AF_INET;
+  server_in.sin_addr.s_addr = server->ip.s_addr;
+  memcpy(&mount_server_in, &server_in, sizeof mount_server_in);
+  memset(&mount_data, 0, sizeof mount_data);
+  mount_data.flags = flags;
+  mount_data.rsize = config.net.nfs_rsize;
+  mount_data.wsize = config.net.nfs_wsize;
+  mount_data.retrans = 3;
+  mount_data.acregmin = 3;
+  mount_data.acregmax = 60;
+  mount_data.acdirmin = 30;
+  mount_data.acdirmax = 60;
+  mount_data.namlen = NAME_MAX;
+  mount_data.version = NFS_MOUNT_VERSION;
+
+  /* two tries */
+  for(i = 0, client = NULL; i < 2 && !client; i++) {
+    if(i) sleep(2);
+    mount_data.timeo = 7;
+    mount_server_in.sin_port = htons(0);
+    sock = RPC_ANYSOCK;
+    tv.tv_sec = 3;
+    tv.tv_usec = 0;
+    client = clntudp_create(&mount_server_in, MOUNTPROG, MOUNTVERS, tv, &sock);
+  }
 
-    mount_server_ri.sin_port = htons (0);
-    socket_ii = RPC_ANYSOCK;
-#if 0
-    mount_client_pri = clnttcp_create (&mount_server_ri, MOUNTPROG, MOUNTVERS,
-                                       &socket_ii, 0, 0);
-#else
-    mount_client_pri = NULL;
-#endif
+  if(!client) {
+    net_show_error(-1);
 
-    if (!mount_client_pri)
-        {
-       mount_data_ri.timeo = 7;
-        mount_server_ri.sin_port = htons (0);
-        socket_ii = RPC_ANYSOCK;
-        timeout_ri.tv_sec = 3;
-        timeout_ri.tv_usec = 0;
-        mount_client_pri = clntudp_create (&mount_server_ri, MOUNTPROG,
-                                           MOUNTVERS, timeout_ri, &socket_ii);
-        }
+    return -1;
+  }
 
-    if (!mount_client_pri)
-        {
-        sleep(2);
+  client->cl_auth = authunix_create_default();
+  tv.tv_sec = 20;
+  tv.tv_usec = 0;
+
+  err = clnt_call(client, MOUNTPROC_MNT,
+    (xdrproc_t) xdr_dirpath, (caddr_t) &hostdir,
+    (xdrproc_t) xdr_fhstatus, (caddr_t) &fhs,
+    tv
+  );
 
-       mount_data_ri.timeo = 7;
-        mount_server_ri.sin_port = htons (0);
-        socket_ii = RPC_ANYSOCK;
-        timeout_ri.tv_sec = 3;
-        timeout_ri.tv_usec = 0;
-        mount_client_pri = clntudp_create (&mount_server_ri, MOUNTPROG,
-                                           MOUNTVERS, timeout_ri, &socket_ii);
-        if (!mount_client_pri)
-            {
-            net_show_error ((enum nfs_stat) -1);
-            return (-1);
-            }
-        }
+  if(err) {
+    net_show_error(-1);
+    return -1;
+  }
 
-    mount_client_pri->cl_auth = authunix_create_default ();
-    timeout_ri.tv_sec = 20;
-    timeout_ri.tv_usec = 0;
-
-    rc_ii = clnt_call (mount_client_pri, MOUNTPROC_MNT,
-                       (xdrproc_t) xdr_dirpath, (caddr_t) &hostdir,
-                       (xdrproc_t) xdr_fhstatus, (caddr_t) &status_ri,
-                       timeout_ri);
-    if (rc_ii)
-        {
-        net_show_error ((enum nfs_stat) -1);
-        return (-1);
-        }
+  if(fhs.fhs_status) {
+    net_show_error(fhs.fhs_status);
 
-    if (status_ri.fhs_status)
-        {
-        net_show_error (status_ri.fhs_status);
-        return (-1);
-        }
+    return -1;
+  }
 
-    memcpy ((char *) &mount_data_ri.root.data,
-            (char *) status_ri.fhstatus_u.fhs_fhandle,
-            NFS_FHSIZE);
-    mount_data_ri.root.size = NFS_FHSIZE;
-    memcpy(&mount_data_ri.old_root.data,
-          (char *) status_ri.fhstatus_u.fhs_fhandle,
-          NFS_FHSIZE);
+  memcpy(&mount_data.root.data, fhs.fhstatus_u.fhs_fhandle, NFS_FHSIZE);
+  mount_data.root.size = NFS_FHSIZE;
 
-    fsock_ii = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
-    if (fsock_ii < 0)
-        {
-        net_show_error ((enum nfs_stat) -1);
-        return (-1);
-        }
+  memcpy(&mount_data.old_root.data, fhs.fhstatus_u.fhs_fhandle, NFS_FHSIZE);
 
-    if (bindresvport (fsock_ii, 0) < 0)
-        {
-        net_show_error ((enum nfs_stat) -1);
-        return (-1);
-        }
+  fsock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+  if(fsock < 0) {
+    net_show_error(-1);
+    
+    return -1;
+  }
 
-    if (config.net.nfs_port)
-        {
-        fprintf (stderr, "Using specified port %d\n", config.net.nfs_port);
-        port_ii = config.net.nfs_port;
-        }
-    else
-        {
-        server_ri.sin_port = PMAPPORT;
-        port_ii = pmap_getport (&server_ri, NFS_PROGRAM, NFS_VERSION, IPPROTO_UDP);
-        if (!port_ii)
-            port_ii = NFS_PORT;
-        }
-
-    server_ri.sin_port = htons (port_ii);
-
-    mount_data_ri.fd = fsock_ii;
-    memcpy ((char *) &mount_data_ri.addr, (char *) &server_ri,
-            sizeof (mount_data_ri.addr));
-    strncpy (mount_data_ri.hostname, inet_ntoa(server->ip),
-             sizeof (mount_data_ri.hostname));
+  if(bindresvport(fsock, 0) < 0) {
+    net_show_error(-1);
 
-    auth_destroy (mount_client_pri->cl_auth);
-    clnt_destroy (mount_client_pri);
-    close (socket_ii);
+    return -1;
+  }
 
-    sprintf (tmp_ti, "%s:%s", inet_ntoa(server->ip), hostdir);
-    opts_pci = (char *) &mount_data_ri;
-    rc_ii = mount (tmp_ti, mountpoint, "nfs", MS_RDONLY | MS_MGC_VAL, opts_pci);
+  if(config.net.nfs_port) {
+    fprintf(stderr, "nfs: using specified port %d\n", config.net.nfs_port);
+    port = config.net.nfs_port;
+  }
+  else {
+    server_in.sin_port = PMAPPORT;
+    port = pmap_getport(&server_in, NFS_PROGRAM, NFS_VERSION, IPPROTO_UDP);
+    if(!port) port = NFS_PORT;
+  }
 
-    if(rc_ii == -1) return errno;
+  server_in.sin_port = htons(port);
 
-  return rc_ii;
-}
+  mount_data.fd = fsock;
+  memcpy(&mount_data.addr, &server_in, sizeof mount_data.addr);
 
-#else
+  strncpy(mount_data.hostname, inet_ntoa(server->ip), sizeof mount_data.hostname);
+
+  auth_destroy(client->cl_auth);
+  clnt_destroy(client);
+  close(sock);
 
+  strprintf(&buf, "%s:%s", inet_ntoa(server->ip), hostdir);
 
-/*
- * Dummy if we don't support NFS.
- */
-int net_mount_nfs(char *mountpoint, inet_t *server, char *hostdir);
-{
-  return -1;
-}
+  err = mount(buf, mountpoint, "nfs", MS_RDONLY | MS_MGC_VAL, &mount_data);
 
-#endif /* WITH_NFS */
+  free(buf);
+
+  if(err == -1) return errno;
+
+  return err;
+}
 
 
 #if NETWORK_CONFIG
@@ -1194,7 +1180,6 @@
 #endif
 
 
-#ifdef WITH_NFS
 /*
  * Show NFS error messages.
  *
@@ -1257,7 +1242,6 @@
     fprintf(stderr, "%s\n", tmp);
   }
 }
-#endif
 
 
 /*
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-3.0.5/url.c new/linuxrc-3.0.6/url.c
--- old/linuxrc-3.0.5/url.c     2007-08-09 13:00:34.000000000 +0200
+++ new/linuxrc-3.0.6/url.c     2007-08-14 12:44:51.000000000 +0200
@@ -56,6 +56,7 @@
 static int url_mount_disk(url_t *url, char *dir, int (*test_func)(url_t *));
 static int url_progress(url_data_t *url_data, int stage);
 static int url_setup_device(url_t *url);
+static int url_setup_interface(url_t *url);
 
 
 void url_read(url_data_t *url_data)
@@ -965,8 +966,12 @@
     switch(url->scheme) {
       case inst_nfs:
         str_copy(&url->mount, dir ?: new_mountpoint());
+
+        if(config.debug) fprintf(stderr, "[server = %s]\n", inet2print(&url->used.server));
+
         err = net_mount_nfs(url->mount, &url->used.server, url->path);
         fprintf(stderr, "nfs: %s -> %s (%d)\n", url->path, url->mount, err);
+
         if(err == ENOTDIR || err == ENOENT) {
           str_copy(&url->mount, NULL);
           str_copy(&buf, url->path);
@@ -974,7 +979,12 @@
           if((s = strrchr(buf, '/')) && s != buf && s[1]) {
             *s++ = 0;
             str_copy(&url->tmp_mount, new_mountpoint());
+
+            if(config.debug) fprintf(stderr, "[server = %s]\n", inet2print(&url->used.server));
+
             err = net_mount_nfs(url->tmp_mount, &url->used.server, buf);
+            fprintf(stderr, "nfs: %s -> %s (%d)\n", buf, url->tmp_mount, err);
+    
             if(err) {
               fprintf(stderr, "nfs: %s: mount failed\n", url->used.device);
               str_copy(&url->tmp_mount, NULL);
@@ -1000,6 +1010,9 @@
           str_copy(&url->mount, dir ?: new_mountpoint());
           s = url->mount;
         }
+
+        if(config.debug) fprintf(stderr, "[server = %s]\n", inet2print(&url->used.server));
+
         err = net_mount_smb(s, &url->used.server, url->share, url->user, url->password, url->domain);
         fprintf(stderr, "smb: %s -> %s (%d)\n", url->share, s, err);
         if(err) {
@@ -1442,11 +1455,13 @@
     if(url->is.mountable) strprintf(&buf, "%s/%s", url->mount, config.url.instsys->path);
 
     if(
-      !config.download.instsys &&
-      !config.rescue &&
       url->is.mountable &&
-      util_is_mountable(buf)
+      util_is_mountable(buf) &&
+      !config.rescue &&
+      (!config.download.instsys || util_check_exist(buf) == 'd')
     ) {
+      fprintf(stderr, "mount %s -> %s\n", buf, config.mountpoint.instsys);
+
       ok = util_mount_ro(buf, config.mountpoint.instsys) ? 0 : 1;
       if(!ok) fprintf(stderr, "instsys mount failed: %s\n", config.url.instsys->path);
     }
@@ -1471,10 +1486,10 @@
       if(get_instsys2) {
         str_copy(&config.url.instsys2->mount, new_mountpoint());
         if(
-          !config.download.instsys &&
-          !config.rescue &&
           url->is.mountable &&
-          util_is_mountable(buf)
+          util_is_mountable(buf) &&
+          !config.rescue &&
+          (!config.download.instsys || util_check_exist(buf) == 'd')
         ) {
           ok = util_mount_ro(buf, config.url.instsys2->mount) ? 0 : 1;
         }
@@ -1597,9 +1612,8 @@
  */
 int url_setup_device(url_t *url)
 {
-  int ok = 0, i;
-  char *type, *s;
-  url_t *tmp_url;
+  int ok = 0;
+  char *type;
 
   if(!url) return 0;
 
@@ -1614,136 +1628,154 @@
     if(type && strcmp(type, "swap")) ok = 1;
   }
   else {
-    /* setup interface */
+    ok = url_setup_interface(url);
 
-    if(
-      config.net.configured &&
-      config.net.device &&
-      !strcmp(url->used.device, config.net.device)
-    ) {
-      return 1;
+    if(ok) {
+      name2inet(&url->used.server, url->server);
+
+      if(net_check_address2(&url->used.server, 1)) {
+        fprintf(stderr, "invalid server address: %s\n", url->used.server.name);
+        config.net.configured = nc_none;
+
+        ok = 0;
+      }
     }
+  }
 
-    if(
-      !strncmp(url->used.device, "lo", sizeof "lo" - 1) ||
-      !strncmp(url->used.device, "sit", sizeof "sit" - 1)
-    ) return 0;
+  return ok;
+}
 
-    /* if(!getenv("PXEBOOT")) */ net_stop();
 
-    config.net.configured = nc_none;
+/*
+ * Setup network interface.
+ *
+ * return:
+ *   0: failed
+ *   1: ok
+ */
+int url_setup_interface(url_t *url)
+{
+  int i;
+  char *s;
+  url_t *tmp_url;
 
-    fprintf(stderr, "interface setup: %s\n", url->used.device);
+  /* setup interface */
 
-    str_copy(&config.net.device, url->used.device);
-    str_copy(&config.net.hwaddr, url->used.hwaddr);
-    str_copy(&config.net.cardname, url->used.model);
-    str_copy(&config.net.unique_id, url->used.unique_id);
-
-    if(url->is.wlan && wlan_setup()) return 0;
-
-    config.net.configured = nc_static;
-
-    /* we need at least ip & netmask for static network config */
-    if((net_config_mask() & 3) != 3) {
-      printf(
-        "Sending %s request to %s...\n",
-        config.net.use_dhcp ? "DHCP" : "BOOTP",
-        url->used.device
-      );
-      fflush(stdout);
-      fprintf(stderr,
-        "sending %s request to %s... ",
-        config.net.use_dhcp ? "DHCP" : "BOOTP",
-        url->used.device
-      );
+  if(
+    config.net.configured &&
+    config.net.device &&
+    !strcmp(url->used.device, config.net.device)
+  ) {
+    return 1;
+  }
 
-      config.net.use_dhcp ? net_dhcp() : net_bootp();
+  if(
+    !strncmp(url->used.device, "lo", sizeof "lo" - 1) ||
+    !strncmp(url->used.device, "sit", sizeof "sit" - 1)
+  ) return 0;
 
-      if(
-        !config.test &&
-        (
-          !config.net.hostname.ok ||
-          !config.net.netmask.ok ||
-          !config.net.broadcast.ok
-        )
-      ) {
-        fprintf(stderr, "no/incomplete answer.\n");
-        config.net.configured = nc_none;
+  /* if(!getenv("PXEBOOT")) */ net_stop();
 
-        return 0;
-      }
-      fprintf(stderr, "ok.\n");
+  config.net.configured = nc_none;
 
-      config.net.configured = config.net.use_dhcp ? nc_dhcp : nc_bootp;
-    }
+  fprintf(stderr, "interface setup: %s\n", url->used.device);
+
+  str_copy(&config.net.device, url->used.device);
+  str_copy(&config.net.hwaddr, url->used.hwaddr);
+  str_copy(&config.net.cardname, url->used.model);
+  str_copy(&config.net.unique_id, url->used.unique_id);
 
-    if(net_activate_ns()) {
-      fprintf(stderr, "network setup failed\n");
+  if(url->is.wlan && wlan_setup()) return 0;
+
+  config.net.configured = nc_static;
+
+  /* we need at least ip & netmask for static network config */
+  if((net_config_mask() & 3) != 3) {
+    printf(
+      "Sending %s request to %s...\n",
+      config.net.use_dhcp ? "DHCP" : "BOOTP",
+      url->used.device
+    );
+    fflush(stdout);
+    fprintf(stderr,
+      "sending %s request to %s... ",
+      config.net.use_dhcp ? "DHCP" : "BOOTP",
+      url->used.device
+    );
+
+    config.net.use_dhcp ? net_dhcp() : net_bootp();
+
+    if(
+      !config.test &&
+      (
+        !config.net.hostname.ok ||
+        !config.net.netmask.ok ||
+        !config.net.broadcast.ok
+      )
+    ) {
+      fprintf(stderr, "no/incomplete answer.\n");
       config.net.configured = nc_none;
 
       return 0;
     }
-    else {
-      fprintf(stderr, "%s activated\n", url->used.device);
-    }
+    fprintf(stderr, "ok.\n");
+
+    config.net.configured = config.net.use_dhcp ? nc_dhcp : nc_bootp;
+  }
 
-    if(url->scheme == inst_slp) {
-      tmp_url = url_set(slp_get_install(url));
-      if(!tmp_url->scheme) {
-        fprintf(stderr, "%s: SLP failed\n", url->used.device);
-        url_free(tmp_url);
-
-        return 0;
-      }
-
-      url->scheme = tmp_url->scheme;
-      url->port = tmp_url->port;
-      str_copy(&url->str, tmp_url->str);
-      str_copy(&url->path, tmp_url->path);
-      str_copy(&url->server, tmp_url->server);
-      str_copy(&url->share, tmp_url->share);
-      str_copy(&url->path, tmp_url->path);
-      str_copy(&url->user, tmp_url->user);
-      str_copy(&url->password, tmp_url->password);
-      str_copy(&url->domain, tmp_url->domain);
-      str_copy(&url->device, tmp_url->device);
-      str_copy(&url->instsys, tmp_url->instsys);
+  if(net_activate_ns()) {
+    fprintf(stderr, "network setup failed\n");
+    config.net.configured = nc_none;
 
+    return 0;
+  }
+  else {
+    fprintf(stderr, "%s activated\n", url->used.device);
+  }
+
+  if(url->scheme == inst_slp) {
+    tmp_url = url_set(slp_get_install(url));
+    if(!tmp_url->scheme) {
+      fprintf(stderr, "%s: SLP failed\n", url->used.device);
       url_free(tmp_url);
 
-      fprintf(stderr, "slp: using %s\n", url_print(url, 0));
+      return 0;
     }
 
-    net_ask_password();
+    url->scheme = tmp_url->scheme;
+    url->port = tmp_url->port;
+    str_copy(&url->str, tmp_url->str);
+    str_copy(&url->path, tmp_url->path);
+    str_copy(&url->server, tmp_url->server);
+    str_copy(&url->share, tmp_url->share);
+    str_copy(&url->path, tmp_url->path);
+    str_copy(&url->user, tmp_url->user);
+    str_copy(&url->password, tmp_url->password);
+    str_copy(&url->domain, tmp_url->domain);
+    str_copy(&url->device, tmp_url->device);
+    str_copy(&url->instsys, tmp_url->instsys);
 
-    name2inet(&url->used.server, url->server);
+    url_free(tmp_url);
 
-    if(net_check_address2(&url->used.server, 1)) {
-      fprintf(stderr, "invalid server address: %s\n", url->used.server.name);
-      config.net.configured = nc_none;
+    fprintf(stderr, "slp: using %s\n", url_print(url, 0));
+  }
 
-      return 0;
-    }
+  net_ask_password();
 
-    s = inet2print(&config.net.hostname);
-    fprintf(stderr, "hostip: %s/", *s ? s : "<no ip>");
-    s = inetmask2print(&config.net.netmask);
-    fprintf(stderr, "%s\n", *s ? s : "<no netmask>");
-    if(config.net.gateway.ok) {
-      fprintf(stderr, "gateway: %s\n", inet2print(&config.net.gateway));
-    }
-    for(i = 0; i < sizeof config.net.nameserver / sizeof *config.net.nameserver; i++) {
-      if(config.net.nameserver[i].ok) {
-        fprintf(stderr, "nameserver %d: %s\n", i, inet2print(&config.net.nameserver[i]));
-      }
+  s = inet2print(&config.net.hostname);
+  fprintf(stderr, "hostip: %s/", *s ? s : "<no ip>");
+  s = inetmask2print(&config.net.netmask);
+  fprintf(stderr, "%s\n", *s ? s : "<no netmask>");
+  if(config.net.gateway.ok) {
+    fprintf(stderr, "gateway: %s\n", inet2print(&config.net.gateway));
+  }
+  for(i = 0; i < sizeof config.net.nameserver / sizeof *config.net.nameserver; i++) {
+    if(config.net.nameserver[i].ok) {
+      fprintf(stderr, "nameserver %d: %s\n", i, inet2print(&config.net.nameserver[i]));
     }
-
-    ok = 1;
   }
 
-
-  return ok;
+  return 1;
 }
 
 
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-3.0.5/util.c new/linuxrc-3.0.6/util.c
--- old/linuxrc-3.0.5/util.c    2007-08-08 17:55:48.000000000 +0200
+++ new/linuxrc-3.0.6/util.c    2007-08-14 15:59:50.000000000 +0200
@@ -1166,7 +1166,6 @@
   add_flag(&sl0, buf, config.nopcmcia, "nopcmcia");
   add_flag(&sl0, buf, config.net.use_dhcp, "dhcp");
   add_flag(&sl0, buf, config.net.dhcp_active, "dhcp_active");
-  add_flag(&sl0, buf, config.net.nfs_tcp, "nfs.tcp");
   add_flag(&sl0, buf, config.use_ramdisk, "ramdisk");
   add_flag(&sl0, buf, config.ask_language, "ask_lang");
   add_flag(&sl0, buf, config.ask_keytable, "ask_keytbl");
@@ -3226,7 +3225,7 @@
     dev = loop_dev;
   }
 
-  if(config.ntfs_3g && !strcmp(type, "ntfs")) {
+  if(config.ntfs_3g && type && !strcmp(type, "ntfs")) {
     asprintf(&cmd, "/bin/mount -t ntfs-3g%s %s %s", (flags & MS_RDONLY) ? " -oro" : "", dev, dir);
     err = system(cmd);
     free(cmd);
@@ -3389,6 +3388,8 @@
 {
   int i, compressed = 0;
 
+  if(util_check_exist(file) == 'd') return 1;
+
   i = util_fileinfo(file, NULL, &compressed);
 
   return i || compressed ? 0 : 1;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-3.0.5/VERSION new/linuxrc-3.0.6/VERSION
--- old/linuxrc-3.0.5/VERSION   2007-08-09 16:59:54.000000000 +0200
+++ new/linuxrc-3.0.6/VERSION   2007-08-13 16:12:10.000000000 +0200
@@ -1 +1 @@
-3.0.5
+3.0.6


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...

---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-commit+help@xxxxxxxxxxxx

< Previous Next >