---
 toys/pending/ip.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)
From cff29b2f33cdb63ba03ac51f809639190983161c Mon Sep 17 00:00:00 2001
From: Elliott Hughes <[email protected]>
Date: Tue, 29 Oct 2019 22:50:30 -0700
Subject: [PATCH] ip: remove get_line().

---
 toys/pending/ip.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/toys/pending/ip.c b/toys/pending/ip.c
index 82e18fdb..cc86c19f 100644
--- a/toys/pending/ip.c
+++ b/toys/pending/ip.c
@@ -181,11 +181,13 @@ static void send_nlmesg(int type, int flags, int family,
 // Parse /etc/iproute2/RPDB_tables and prepare list.
 static void parseRPDB(char *fname, struct arglist **list, int32_t size)
 {
-  char *line;
-  int fd = open(fname, O_RDONLY);
+  FILE *fp = fopen(fname, "r");
+  char *line = 0;
+  size_t l = 0;
+  ssize_t len;
 
-  if (fd < 0) return;
-  for (; (line = get_line(fd)); free(line)) {
+  if (!fp) return;
+  while ((len = getline(&line, &l, fp)) > 0) {
     char *ptr = line;
     int32_t idx;
 
@@ -195,10 +197,8 @@ static void parseRPDB(char *fname, struct arglist **list, int32_t size)
         (sscanf(ptr, "0x%x %s #", &idx, toybuf) != 2) &&
         (sscanf(ptr, "%d %s\n", &idx, toybuf) != 2) &&
         (sscanf(ptr, "%d %s #", &idx, toybuf) != 2)) {
-      error_msg("Corrupted '%s' file", fname);
-      xclose(fd);
-      free(line);
-      return;
+      error_msg("corrupt %s", fname);
+      break;
     }
     if (idx >= 0 && idx < size) {
       int index = idx & (size-1);
@@ -208,7 +208,8 @@ static void parseRPDB(char *fname, struct arglist **list, int32_t size)
       list[index]->name = xstrdup(toybuf);
     }
   }
-  xclose(fd);
+  free(line);
+  fclose(fp);
 }
 
 static void free_alist(struct arglist **list)
-- 
2.24.0.rc1.363.gb1bccd3e3d-goog

_______________________________________________
Toybox mailing list
[email protected]
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to