]> err.no Git - dpkg/commitdiff
reworked \\ parsing in commandfd.
authorAdam Heath <doogie@debian.org>
Sat, 21 Apr 2001 23:01:13 +0000 (23:01 +0000)
committerAdam Heath <doogie@debian.org>
Sat, 21 Apr 2001 23:01:13 +0000 (23:01 +0000)
ChangeLog
main/main.c

index c6ffde49e1fa6096b6201e379266fa534395427b..1e20e0c1ffc4b93ebd9cd1d7fc685776e3b64ef0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat Apr 21 18:00:31 CDT 2001 Adam Heath <doogie@debian.org>
+
+  * main/main.c: reworked \\ parsing in commandfd.
+
 Sun Apr 22 00:48:18 CEST 2001 Wichert Akkerman <wakkerma@debian.org>
 
   * main/main.c: fixed some bizar pointer usage
index 7f107dfe920b5f681ac03f87c8608612ed1315eb..08a10728ead11654652329d2d20b6ce071fd6956 100644 (file)
@@ -429,7 +429,7 @@ void commandfd(const char *const *argv) {
   const char **newargs;
   char *ptr, *endptr;
   FILE *in;
-  int c, lno, infd, i;
+  int c, lno, infd, i, skipchar;
   static void (*actionfunction)(const char *const *argv);
 
   if ((pipein= *argv++) == NULL) badusage(_("--command-fd takes 1 argument, not 0"));
@@ -470,9 +470,14 @@ printf("line=`%*s'\n",linevb.used,linevb.buf);
     argc= 1;
     ptr= linevb.buf;
     endptr= ptr + linevb.used;
+    skipchar= 0;
     while(ptr < endptr) {
-      if (*ptr == '\\') {
+      if (skipchar) {
+       skipchar= 0;
+      } else if (*ptr == '\\') {
        memmove(ptr, (ptr+1), (linevb.used-(linevb.buf - ptr)-1));
+       endptr--;
+       skipchar= 1;
        continue;
       } else if (isspace(*ptr)) {
        if (mode == 1) {