Used by AOSP build.

Also switch to new FLAG macro.

Bug: http://b/122739027
---
 toys/posix/patch.c | 43 +++++++++++++++++++++----------------------
 1 file changed, 21 insertions(+), 22 deletions(-)
From 64a38b1302ee38ce194efa27fc7ea0dc55e70521 Mon Sep 17 00:00:00 2001
From: Elliott Hughes <[email protected]>
Date: Fri, 11 Jan 2019 14:33:05 -0800
Subject: [PATCH] patch: add -s/--quiet.

Used by AOSP build.

Also switch to new FLAG macro.

Bug: http://b/122739027
---
 toys/posix/patch.c | 43 +++++++++++++++++++++----------------------
 1 file changed, 21 insertions(+), 22 deletions(-)

diff --git a/toys/posix/patch.c b/toys/posix/patch.c
index 2dc9a728..0241784b 100644
--- a/toys/posix/patch.c
+++ b/toys/posix/patch.c
@@ -18,7 +18,7 @@
  * -F fuzz (number, default 2)
  * [file] which file to patch
 
-USE_PATCH(NEWTOY(patch, "(dry-run)"USE_TOYBOX_DEBUG("x")"ulp#d:i:R", TOYFLAG_USR|TOYFLAG_BIN))
+USE_PATCH(NEWTOY(patch, "(dry-run)"USE_TOYBOX_DEBUG("x")"ulp#d:i:Rs(quiet)", TOYFLAG_USR|TOYFLAG_BIN))
 
 config PATCH
   bool "patch"
@@ -33,6 +33,7 @@ config PATCH
     -l	Loose match (ignore whitespace)
     -p	Number of '/' to strip from start of file paths (default=all)
     -R	Reverse patch
+    -s	Silent except for errors
     -u	Ignored (only handles "unified" diffs)
     --dry-run Don't change files, just confirm patch applies
 
@@ -77,8 +78,7 @@ static void do_line(void *data)
     xwrite(i, "\n", 1);
   }
 
-  if (toys.optflags & FLAG_x)
-    fprintf(stderr, "DO %d: %s\n", TT.state, dlist->data);
+  if (FLAG(x)) fprintf(stderr, "DO %d: %s\n", TT.state, dlist->data);
 
   free(dlist->data);
   free(data);
@@ -104,7 +104,7 @@ static void fail_hunk(void)
   TT.state = 2;
   llist_traverse(TT.current_hunk, do_line);
   TT.current_hunk = NULL;
-  if (!(toys.optflags & FLAG_dry_run))
+  if (!FLAG(dry_run))
     delete_tempfile(TT.filein, TT.fileout, &TT.tempname);
   TT.state = 0;
 }
@@ -133,21 +133,21 @@ static int loosecmp(char *aa, char *bb)
 static int apply_one_hunk(void)
 {
   struct double_list *plist, *buf = NULL, *check;
-  int matcheof, trailing = 0, reverse = toys.optflags & FLAG_R, backwarn = 0;
+  int matcheof, trailing = 0, reverse = FLAG(R), backwarn = 0;
   int (*lcmp)(char *aa, char *bb);
 
-  lcmp = (toys.optflags & FLAG_l) ? (void *)loosecmp : (void *)strcmp;
+  lcmp = FLAG(l) ? (void *)loosecmp : (void *)strcmp;
   dlist_terminate(TT.current_hunk);
 
   // Match EOF if there aren't as many ending context lines as beginning
   for (plist = TT.current_hunk; plist; plist = plist->next) {
     if (plist->data[0]==' ') trailing++;
     else trailing = 0;
-    if (toys.optflags & FLAG_x) fprintf(stderr, "HUNK:%s\n", plist->data);
+    if (FLAG(x)) fprintf(stderr, "HUNK:%s\n", plist->data);
   }
   matcheof = !trailing || trailing < TT.context;
 
-  if (toys.optflags & FLAG_x)
+  if (FLAG(x))
     fprintf(stderr,"MATCHEOF=%c\n", matcheof ? 'Y' : 'N');
 
   // Loop through input data searching for this hunk.  Match all context
@@ -171,19 +171,19 @@ static int apply_one_hunk(void)
 
     // Is this EOF?
     if (!data) {
-      if (toys.optflags & FLAG_x) fprintf(stderr, "INEOF\n");
+      if (FLAG(x)) fprintf(stderr, "INEOF\n");
 
       // Does this hunk need to match EOF?
       if (!plist && matcheof) break;
 
-      if (backwarn)
+      if (backwarn && !FLAG(s))
         fprintf(stderr, "Possibly reversed hunk %d at %ld\n",
             TT.hunknum, TT.linenum);
 
       // File ended before we found a place for this hunk.
       fail_hunk();
       goto done;
-    } else if (toys.optflags & FLAG_x) fprintf(stderr, "IN: %s\n", data);
+    } else if (FLAG(x)) fprintf(stderr, "IN: %s\n", data);
     check = dlist_add(&buf, data);
 
     // Compare this line with next expected line of hunk.
@@ -200,7 +200,7 @@ static int apply_one_hunk(void)
         // Match failed.  Write out first line of buffered data and
         // recheck remaining buffered data for a new match.
 
-        if (toys.optflags & FLAG_x) {
+        if (FLAG(x)) {
           int bug = 0;
 
           if (!plist) fprintf(stderr, "NULL plist\n");
@@ -226,7 +226,7 @@ static int apply_one_hunk(void)
         if (!buf) break;
         check = buf;
       } else {
-        if (toys.optflags & FLAG_x) fprintf(stderr, "MAYBE: %s\n", plist->data);
+        if (FLAG(x)) fprintf(stderr, "MAYBE: %s\n", plist->data);
         // This line matches.  Advance plist, detect successful match.
         plist = plist->next;
         if (!plist && !matcheof) goto out;
@@ -260,8 +260,7 @@ done:
 
 void patch_main(void)
 {
-  int reverse = toys.optflags&FLAG_R, state = 0, patchlinenum = 0,
-    strip = 0;
+  int reverse = FLAG(R), state = 0, patchlinenum = 0, strip = 0;
   char *oldname = NULL, *newname = NULL;
 
   if (TT.i) TT.filepatch = xopenro(TT.i);
@@ -281,7 +280,7 @@ void patch_main(void)
     if (strip || !patchlinenum++) {
       int len = strlen(patchline);
       if (patchline[len-1] == '\r') {
-        if (!strip) fprintf(stderr, "Removing DOS newlines\n");
+        if (!strip && !FLAG(s)) fprintf(stderr, "Removing DOS newlines\n");
         strip = 1;
         patchline[len-1]=0;
       }
@@ -379,7 +378,7 @@ void patch_main(void)
 
         // handle -p path truncation.
         for (i = 0, s = name; *s;) {
-          if ((toys.optflags & FLAG_p) && TT.p == i) break;
+          if (FLAG(p) && TT.p == i) break;
           if (*s++ != '/') continue;
           while (*s == '/') s++;
           name = s;
@@ -387,22 +386,22 @@ void patch_main(void)
         }
 
         if (del) {
-          printf("removing %s\n", name);
+          if (!FLAG(s)) printf("removing %s\n", name);
           xunlink(name);
           state = 0;
         // If we've got a file to open, do so.
-        } else if (!(toys.optflags & FLAG_p) || i <= TT.p) {
+        } else if (!FLAG(p) || i <= TT.p) {
           // If the old file was null, we're creating a new one.
           if ((!strcmp(oldname, "/dev/null") || !oldsum) && access(name, F_OK))
           {
-            printf("creating %s\n", name);
+            if (!FLAG(s)) printf("creating %s\n", name);
             if (mkpath(name)) perror_exit("mkpath %s", name);
             TT.filein = xcreate(name, O_CREAT|O_EXCL|O_RDWR, 0666);
           } else {
-            printf("patching %s\n", name);
+            if (!FLAG(s)) printf("patching %s\n", name);
             TT.filein = xopenro(name);
           }
-          if (toys.optflags & FLAG_dry_run)
+          if (FLAG(dry_run))
             TT.fileout = xopen("/dev/null", O_RDWR);
           else TT.fileout = copy_tempfile(TT.filein, name, &TT.tempname);
           TT.linenum = 0;
-- 
2.20.1.97.g81188d93c3-goog

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

Reply via email to