Functions to quote and unquote pathnames in C-style.

Following the list discussion, define two functions, quote_c_style and
unquote_c_style, to help adopting the proposed way for quoting funny
pathname letters for GNU patch.  The rule is described in:

    http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2

Currently we do not support the leading '!', but we probably should
barf upon seeing it.  Rule B4. is interpreted to require always 3
octal digits in \XYZ notation.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano
2005-10-14 21:54:47 -07:00
parent 2b2dabc29f
commit 4f6fbcdcf9
2 changed files with 175 additions and 2 deletions

12
quote.h
View File

@ -2,6 +2,7 @@
#define QUOTE_H
#include <stddef.h>
#include <stdio.h>
/* Help to copy the thing properly quoted for the shell safety.
* any single quote is replaced with '\'', any exclamation point
@ -27,7 +28,14 @@
* excluding the final null regardless of the buffer size.
*/
char *sq_quote(const char *src);
size_t sq_quote_buf(char *dst, size_t n, const char *src);
extern char *sq_quote(const char *src);
extern size_t sq_quote_buf(char *dst, size_t n, const char *src);
extern int quote_c_style(const char *name, char *outbuf, FILE *outfp,
int nodq);
extern char *unquote_c_style(const char *quoted, const char **endp);
extern void write_name_quoted(const char *prefix, const char *name,
int quote, FILE *out);
#endif