summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ls.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/ls.c b/src/ls.c
index 9a16e30be..fc0b7b544 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -2230,7 +2230,12 @@ quote_filename (register const char *p, size_t *quoted_length)
}
p = p0;
- quoted = xmalloc (4 * strlen (p) + 1);
+
+ quoted = xmalloc (4 * strlen (p)
+ /* Add two (one for beginning and one for ending quote)
+ if --quote-name (-Q) was specified. */
+ + (quote_as_string ? 2 : 0)
+ + 1);
q = quoted;
#define SAVECHAR(c) *q++ = (c)
@@ -2276,7 +2281,9 @@ quote_filename (register const char *p, size_t *quoted_length)
break;
case '"':
- SAVE_2_CHARS ("\\\"");
+ if (quote_as_string)
+ SAVECHAR ('\\');
+ SAVECHAR ('"');
break;
default: