linux/ia64/syscallent.h \
linux/inet_diag.h \
linux/inotify.h \
- linux/ioctlent-filter.awk \
linux/ioctlent.h.in \
linux/ioctlent.sh \
linux/ioctlsort.c \
$(MKDIR_P) $(builddir)/$(OS)
cat $(ioctlent_h_deps) | \
$(COMPILE) -E -P - | \
- LC_ALL=C sort -u -k3,3 -k2,2 | \
- awk -f $(srcdir)/linux/ioctlent-filter.awk > $@
+ LC_ALL=C sort -u -k3,3 -k2,2 > $@
+++ /dev/null
-#!/bin/awk -f
-# Filter out redundant "*32" symbols.
-
-BEGIN {
- s=""
- c=""
-}
-
-NF == 3 && $2 ~ /^"[^",]*",$/ {
- if ($2 == s && $3 == c)
- next
- s = $2
- sub(/",$/, "32\",", s)
- c = $3
-}
-
-{
- print
-}
return (code1 > code2) ? 1 : (code1 < code2) ? -1 : strcmp(name1, name2);
}
+static int is_not_prefix(const char *s1, const char *s2) {
+ size_t len = strlen(s1);
+
+ if (len > strlen(s2))
+ return 1;
+ return memcmp(s1, s2, len);
+}
+
int main(int argc, char** argv) {
int i;
qsort(ioctls, nioctls, sizeof(ioctls[0]), compare);
puts("\t/* Generated by ioctlsort */");
for (i = 0; i < nioctls; i++)
- if (i == 0 || ioctls[i].code != ioctls[i-1].code ||
- strcmp(ioctls[i].name, ioctls[i-1].name))
+ if (i == 0 || ioctls[i-1].code != ioctls[i].code ||
+ is_not_prefix(ioctls[i-1].name, ioctls[i].name))
printf("\t{\"%s\",\t\"%s\",\t%#06lx},\n",
ioctls[i].header, ioctls[i].name, ioctls[i].code);