Merge branch 'ps/stash-in-c'
[git/git.git] / strbuf.c
index 87ecf7f..0e18b25 100644 (file)
--- a/strbuf.c
+++ b/strbuf.c
@@ -431,6 +431,27 @@ void strbuf_expand(struct strbuf *sb, const char *format, expand_fn_t fn,
        }
 }
 
        }
 }
 
+size_t strbuf_expand_literal_cb(struct strbuf *sb,
+                               const char *placeholder,
+                               void *context)
+{
+       int ch;
+
+       switch (placeholder[0]) {
+       case 'n':               /* newline */
+               strbuf_addch(sb, '\n');
+               return 1;
+       case 'x':
+               /* %x00 == NUL, %x0a == LF, etc. */
+               ch = hex2chr(placeholder + 1);
+               if (ch < 0)
+                       return 0;
+               strbuf_addch(sb, ch);
+               return 3;
+       }
+       return 0;
+}
+
 size_t strbuf_expand_dict_cb(struct strbuf *sb, const char *placeholder,
                void *context)
 {
 size_t strbuf_expand_dict_cb(struct strbuf *sb, const char *placeholder,
                void *context)
 {