summaryrefslogtreecommitdiff
path: root/src/libudev/util.c
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2013-07-31 10:46:49 -0400
committerAnthony G. Basile <blueness@gentoo.org>2013-07-31 10:46:49 -0400
commitaa417a4d83999f6d7f092161d5c411b8cbce9977 (patch)
treea3c0da66e997c079d3803c2c72293bbdc73f2ece /src/libudev/util.c
parentccc30166822f4597ceba3e3b62c09b8f091b9cbb (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.c35
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);