diff options
author | Anthony G. Basile <blueness@gentoo.org> | 2013-07-31 10:46:49 -0400 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2013-07-31 10:46:49 -0400 |
commit | aa417a4d83999f6d7f092161d5c411b8cbce9977 (patch) | |
tree | a3c0da66e997c079d3803c2c72293bbdc73f2ece /src/libudev/util.c | |
parent | ccc30166822f4597ceba3e3b62c09b8f091b9cbb (diff) |
static-nodes: remove creation of static nodes if HAVE_LIBKMOD
This address upstream commit edeb68c53f1cdc452016b4c8512586a70b1262e3
and https://bugs.gentoo.org/show_bug.cgi?id=477890. If eudev is
configured with --enable-libkmod then we check for kmod >= 14 and
ifdef out the code removed in the upstream commit. Otherwise we
retain it for modutils.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Diffstat (limited to 'src/libudev/util.c')
-rw-r--r-- | src/libudev/util.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/libudev/util.c b/src/libudev/util.c index f625cfe99b..61d000c350 100644 --- a/src/libudev/util.c +++ b/src/libudev/util.c @@ -664,6 +664,41 @@ int null_or_empty_path(const char *fn) { return null_or_empty(&st); } +char hexchar(int x) { + static const char table[16] = "0123456789abcdef"; + + return table[x & 15]; +} + +char *xescape(const char *s, const char *bad) { + char *r, *t; + const char *f; + + /* Escapes all chars in bad, in addition to \ and all special + * chars, in \xFF style escaping. May be reversed with + * cunescape. */ + + r = new(char, strlen(s) * 4 + 1); + if (!r) + return NULL; + + for (f = s, t = r; *f; f++) { + + if ((*f < ' ') || (*f >= 127) || + (*f == '\\') || strchr(bad, *f)) { + *(t++) = '\\'; + *(t++) = 'x'; + *(t++) = hexchar(*f >> 4); + *(t++) = hexchar(*f); + } else + *(t++) = *f; + } + + *t = 0; + + return r; +} + bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix) { assert(de); |