File net-tools-1.60-nameif.diff of Package net-tools

--- net-tools-1.60/nameif.c
+++ net-tools-1.60/nameif.c
@@ -118,7 +118,8 @@
 }
 
 struct change { 
-	struct change *next,**pprev;
+	struct change *next;
+	int found;
 	char ifname_old[IFNAMSIZ+1];
 	char ifname_new[IFNAMSIZ+1];
 	unsigned char mac[6];
@@ -156,10 +157,7 @@
 		if (parsemac(p,ch->mac) < 0) 
 			complain(_("cannot parse MAC `%s' at %s"), p, pos); 
 	}
-	if (clist) 
-		clist->pprev = &ch->next;
 	ch->next = clist;
-	ch->pprev = &clist;
 	clist = ch;
 	return 0; 
 }
@@ -303,20 +301,20 @@
 		if (!ch) 
 			continue;
 		
-		*ch->pprev = ch->next;
+		ch->found = 1;
 		if (strcmp(p, ch->ifname_new)) { 
 			if (setname(p, ch->ifname_new) < 0)  
 				complain(_("cannot change name of %s to %s: %s"),
 					 p, ch->ifname_new, strerror(errno)); 
 		} 
-		free(ch);
 	} 
 	fclose(ifh); 
 	
 	while (clist) { 
 		struct change *ch = clist;
 		clist = clist->next;
-		complain(_("interface '%s' not found"), ch->ifname_new); 
+		if (!ch->found)
+			complain(_("interface '%s' not found"), ch->ifname_new); 
 		free(ch); 
 	}
 
openSUSE Build Service is sponsored by