X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fbasic%2Fescape.c;h=127ca2ecb2ced04c1d5a81177f7f8a6e536edbd4;hp=564149306c91a310d2af1d72ac229e4c67b32c65;hb=c733f9b08d9eadc5e671185112567ada81116bdf;hpb=c6edc23d5f8a483e93a891bf7eb76b5f4caf2fb4 diff --git a/src/basic/escape.c b/src/basic/escape.c index 564149306..127ca2ecb 100644 --- a/src/basic/escape.c +++ b/src/basic/escape.c @@ -414,6 +414,34 @@ char *xescape(const char *s, const char *bad) { } #if 0 /// UNNEEDED by elogind +char *octescape(const char *s, size_t len) { + char *r, *t; + const char *f; + + /* Escapes all chars in bad, in addition to \ and " chars, + * in \nnn style escaping. */ + + r = new(char, len * 4 + 1); + if (!r) + return NULL; + + for (f = s, t = r; f < s + len; f++) { + + if (*f < ' ' || *f >= 127 || *f == '\\' || *f == '"') { + *(t++) = '\\'; + *(t++) = '0' + (*f >> 6); + *(t++) = '0' + ((*f >> 3) & 8); + *(t++) = '0' + (*f & 8); + } else + *(t++) = *f; + } + + *t = 0; + + return r; + +} + static char *strcpy_backslash_escaped(char *t, const char *s, const char *bad) { assert(bad);