diff options
| author | yorah <yoram.harmelin@gmail.com> | 2012-07-12 16:31:59 +0200 |
|---|---|---|
| committer | yorah <yoram.harmelin@gmail.com> | 2012-07-24 14:03:07 +0200 |
| commit | 02a0d651d79b2108dd6b894b9a43f7682270ac51 (patch) | |
| tree | e90cbe5dccf69913f226799860a541ab31df29c3 /src/util.c | |
| parent | 944d250f964698b33d9fa09e2e6af74b1dd84de2 (diff) | |
| download | libgit2-02a0d651d79b2108dd6b894b9a43f7682270ac51.tar.gz | |
Add git_buf_unescape and git__unescape to unescape all characters in a string (in-place)
Diffstat (limited to 'src/util.c')
| -rw-r--r-- | src/util.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/util.c b/src/util.c index 3093cd767..90bb3d02a 100644 --- a/src/util.c +++ b/src/util.c @@ -435,3 +435,21 @@ int git__parse_bool(int *out, const char *value) return -1; } + +size_t git__unescape(char *str) +{ + char *scan, *pos = str; + + for (scan = str; *scan; pos++, scan++) { + if (*scan == '\\' && *(scan + 1) != '\0') + scan++; /* skip '\' but include next char */ + if (pos != scan) + *pos = *scan; + } + + if (pos != scan) { + *pos = '\0'; + } + + return (pos - str); +} |
