test_cmp: do not use "diff -u" on platforms that lack one
[gitweb.git] / quote.c
diff --git a/quote.c b/quote.c
index acb6bf929f3e5807139fa7852f739e6ff5a50722..fc93435727db3b0634c390965258200c61d8b59b 100644 (file)
--- a/quote.c
+++ b/quote.c
@@ -213,7 +213,7 @@ static size_t quote_c_style_counted(const char *name, ssize_t maxlen,
                int ch;
 
                len = next_quote_pos(p, maxlen);
-               if (len == maxlen || !p[len])
+               if (len == maxlen || (maxlen < 0 && !p[len]))
                        break;
 
                if (!no_dq && p == name)
@@ -223,6 +223,8 @@ static size_t quote_c_style_counted(const char *name, ssize_t maxlen,
                EMIT('\\');
                p += len;
                ch = (unsigned char)*p++;
+               if (maxlen >= 0)
+                       maxlen -= len + 1;
                if (sq_lookup[ch] >= ' ') {
                        EMIT(sq_lookup[ch]);
                } else {