cvsdist 14587f6
--- net-tools-1.60/nameif.c.nameif	2000-10-18 19:26:29.000000000 +0200
cvsdist 14587f6
+++ net-tools-1.60/nameif.c	2003-03-19 11:02:01.000000000 +0100
cvsdist 14587f6
@@ -3,7 +3,7 @@
cvsdist 14587f6
  * Writen 2000 by Andi Kleen.
cvsdist 14587f6
  * Subject to the Gnu Public License, version 2.  
cvsdist 14587f6
  * TODO: make it support token ring etc.
cvsdist 14587f6
- * $Id: nameif.c,v 1.1 2000/10/18 17:26:29 ak Exp $
cvsdist 14587f6
+ * $Id: nameif.c,v 1.3 2003/03/06 23:26:52 ecki Exp $
cvsdist 14587f6
  */ 
cvsdist 14587f6
 #ifndef _GNU_SOURCE 
cvsdist 14587f6
 #define _GNU_SOURCE
cvsdist 14587f6
@@ -117,7 +117,8 @@
cvsdist 14587f6
 }
cvsdist 14587f6
 
cvsdist 14587f6
 struct change { 
cvsdist 14587f6
-	struct change *next,**pprev;
cvsdist 14587f6
+	struct change *next;
cvsdist 14587f6
+	int found;
cvsdist 14587f6
 	char ifname[IFNAMSIZ+1];
cvsdist 14587f6
 	unsigned char mac[6];
cvsdist 14587f6
 }; 
cvsdist 14587f6
@@ -139,10 +140,7 @@
cvsdist 14587f6
 			ch->ifname, pos); 
cvsdist 14587f6
 	if (parsemac(p,ch->mac) < 0) 
cvsdist 14587f6
 		complain(_("cannot parse MAC `%s' at %s"), p, pos); 
cvsdist 14587f6
-	if (clist) 
cvsdist 14587f6
-		clist->pprev = &ch->next;
cvsdist 14587f6
 	ch->next = clist;
cvsdist 14587f6
-	ch->pprev = &clist;
cvsdist 14587f6
 	clist = ch;
cvsdist 14587f6
 	return 0; 
cvsdist 14587f6
 }
cvsdist 14587f6
@@ -200,7 +198,7 @@
cvsdist 14587f6
 
cvsdist 14587f6
 void usage(void)
cvsdist 14587f6
 {
cvsdist 14587f6
-	fprintf(stderr, _("usage: nameif [-c configurationfile] [-s] {ifname macaddress}")); 
cvsdist 14587f6
+	fprintf(stderr, _("usage: nameif [-c configurationfile] [-s] {ifname macaddress}\n")); 
cvsdist 14587f6
 	exit(1); 
cvsdist 14587f6
 }
cvsdist 14587f6
 
cvsdist 14587f6
@@ -277,21 +275,21 @@
cvsdist 14587f6
 		ch = lookupmac(mac); 
cvsdist 14587f6
 		if (!ch) 
cvsdist 14587f6
 			continue;
cvsdist 14587f6
-			
cvsdist 14587f6
-		*ch->pprev = ch->next;
cvsdist 14587f6
+		
cvsdist 14587f6
+		ch->found = 1;	
cvsdist 14587f6
 		if (strcmp(p, ch->ifname)) { 
cvsdist 14587f6
 			if (setname(p, ch->ifname) < 0)  
cvsdist 14587f6
 				complain(_("cannot change name of %s to %s: %s"),
cvsdist 14587f6
 						p, ch->ifname, strerror(errno)); 
cvsdist 14587f6
 		} 
cvsdist 14587f6
-		free(ch);
cvsdist 14587f6
 	} 
cvsdist 14587f6
 	fclose(ifh); 
cvsdist 14587f6
 	
cvsdist 14587f6
 	while (clist) { 
cvsdist 14587f6
 		struct change *ch = clist;
cvsdist 14587f6
 		clist = clist->next;
cvsdist 14587f6
-		warning(_("interface '%s' not found"), ch->ifname); 
cvsdist 14587f6
+		if (!ch->found)
cvsdist 14587f6
+			warning(_("interface '%s' not found"), ch->ifname); 
cvsdist 14587f6
 		free(ch); 
cvsdist 14587f6
 	}
cvsdist 14587f6