*: use llist_pop for traverse-and-free list operation

function                                             old     new   delta
append_file_list_to_list                             109     111      +2
udhcpc_main                                         2414    2413      -1
run_parts_main                                       325     324      -1
od_main                                             2324    2323      -1
getopt_main                                          709     707      -2
env_main                                             253     251      -2
sed_main                                             659     656      -3
ps_main                                              522     519      -3
traceroute_main                                     3960    3954      -6
sort_main                                            844     838      -6
diff_main                                            866     858      -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/10 up/down: 2/-33)            Total: -31 bytes

diff --git a/networking/traceroute.c b/networking/traceroute.c
index e9df275..6a53734 100644
--- a/networking/traceroute.c
+++ b/networking/traceroute.c
@@ -1001,17 +1001,11 @@
 
 #if ENABLE_FEATURE_TRACEROUTE_SOURCE_ROUTE
 	if (source_route_list) {
-		llist_t *l_sr;
-
-		l_sr = source_route_list;
-		while (l_sr) {
+		while (source_route_list) {
 			if (lsrr >= NGATEWAYS)
 				bb_error_msg_and_die("no more than %d gateways", NGATEWAYS);
-			getaddr(gwlist + lsrr, l_sr->data);
+			getaddr(gwlist + lsrr, llist_pop(&source_route_list));
 			++lsrr;
-			l_sr = l_sr->link;
-			free(source_route_list);
-			source_route_list = l_sr;
 		}
 		optlen = (lsrr + 1) * sizeof(gwlist[0]);
 	}
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index 655d39f..5eb1ed5 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -259,12 +259,11 @@
 	if (opt & OPT_o)
 		client_config.no_default_options = 1;
 	while (list_O) {
-		int n = index_in_strings(dhcp_option_strings, list_O->data);
+		int n = index_in_strings(dhcp_option_strings, llist_pop(&list_O));
 		if (n < 0)
 			bb_error_msg_and_die("unknown option '%s'", list_O->data);
 		n = dhcp_options[n].code;
 		client_config.opt_mask[n >> 3] |= 1 << (n & 7);
-		list_O = list_O->link;
 	}
 
 	if (read_interface(client_config.interface, &client_config.ifindex,
diff --git a/networking/wget.c b/networking/wget.c
index 84ee1ca..7198197 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -469,8 +469,7 @@
 		}
 		extra_headers = cp = xmalloc(size);
 		while (headers_llist) {
-			cp += sprintf(cp, "%s\r\n", headers_llist->data);
-			headers_llist = headers_llist->link;
+			cp += sprintf(cp, "%s\r\n", (char*)llist_pop(&headers_llist));
 		}
 	}
 #endif