chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
escape: add cescape_length() call as generalization of cescape()
[elogind.git]
/
src
/
basic
/
escape.c
diff --git
a/src/basic/escape.c
b/src/basic/escape.c
index 4815161b092afb5d1d04eef1856b8db7341d6ca9..42a84c93174e619736e33b7a395179c947deca9b 100644
(file)
--- a/
src/basic/escape.c
+++ b/
src/basic/escape.c
@@
-89,20
+89,20
@@
size_t cescape_char(char c, char *buf) {
return buf - buf_old;
}
return buf - buf_old;
}
-char *cescape(const char *s) {
- char *r, *t;
+char *cescape_length(const char *s, size_t n) {
const char *f;
const char *f;
+ char *r, *t;
- assert(s);
+ assert(s
|| n == 0
);
/* Does C style string escaping. May be reversed with
* cunescape(). */
/* Does C style string escaping. May be reversed with
* cunescape(). */
- r = new(char,
strlen(s)
*4 + 1);
+ r = new(char,
n
*4 + 1);
if (!r)
return NULL;
if (!r)
return NULL;
- for (f = s, t = r;
*f
; f++)
+ for (f = s, t = r;
f < s + n
; f++)
t += cescape_char(*f, t);
*t = 0;
t += cescape_char(*f, t);
*t = 0;
@@
-110,6
+110,12
@@
char *cescape(const char *s) {
return r;
}
return r;
}
+char *cescape(const char *s) {
+ assert(s);
+
+ return cescape_length(s, strlen(s));
+}
+
int cunescape_one(const char *p, size_t length, char *ret, uint32_t *ret_unicode) {
int r = 1;
int cunescape_one(const char *p, size_t length, char *ret, uint32_t *ret_unicode) {
int r = 1;