chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
execute: if the main process of a service already owns the TTY, don't wait for acquir...
[elogind.git]
/
src
/
util.c
diff --git
a/src/util.c
b/src/util.c
index 58b96aec68f88fd8f09e9364a1f088cc8b153c8e..a01229e659f3906e7191675963b5d0e7c3320534 100644
(file)
--- a/
src/util.c
+++ b/
src/util.c
@@
-1129,7
+1129,7
@@
char *cescape(const char *s) {
return r;
}
return r;
}
-char *cunescape
(const char *s
) {
+char *cunescape
_length(const char *s, size_t length
) {
char *r, *t;
const char *f;
char *r, *t;
const char *f;
@@
-1137,10
+1137,10
@@
char *cunescape(const char *s) {
/* Undoes C style string escaping */
/* Undoes C style string escaping */
- if (!(r = new(char,
strlen(s)
+1)))
+ if (!(r = new(char,
length
+1)))
return r;
return r;
- for (f = s, t = r;
*f
; f++) {
+ for (f = s, t = r;
f < s + length
; f++) {
if (*f != '\\') {
*(t++) = *f;
if (*f != '\\') {
*(t++) = *f;
@@
-1182,6
+1182,11
@@
char *cunescape(const char *s) {
*(t++) = '\'';
break;
*(t++) = '\'';
break;
+ case 's':
+ /* This is an extension of the XDG syntax files */
+ *(t++) = ' ';
+ break;
+
case 'x': {
/* hexadecimal encoding */
int a, b;
case 'x': {
/* hexadecimal encoding */
int a, b;
@@
-1242,6
+1247,9
@@
finish:
return r;
}
return r;
}
+char *cunescape(const char *s) {
+ return cunescape_length(s, strlen(s));
+}
char *xescape(const char *s, const char *bad) {
char *r, *t;
char *xescape(const char *s, const char *bad) {
char *r, *t;