diff options
Diffstat (limited to 'libcap')
-rw-r--r-- | libcap/.gitignore | 2 | ||||
-rw-r--r-- | libcap/Makefile | 14 | ||||
-rw-r--r-- | libcap/_makenames.c | 2 |
3 files changed, 9 insertions, 9 deletions
diff --git a/libcap/.gitignore b/libcap/.gitignore index 9fc5e1d..34cc5d6 100644 --- a/libcap/.gitignore +++ b/libcap/.gitignore @@ -1,5 +1,5 @@ cap_names.h -cap_names.sed +cap_names.list.h _caps_output.gperf libcap.a libcap.so* diff --git a/libcap/Makefile b/libcap/Makefile index a47e672..8a61752 100644 --- a/libcap/Makefile +++ b/libcap/Makefile @@ -32,18 +32,18 @@ USE_GPERF_OUTPUT = $(GPERF_OUTPUT) INCLUDE_GPERF_OUTPUT = -include $(GPERF_OUTPUT) endif -_makenames: _makenames.c cap_names.sed +_makenames: _makenames.c cap_names.list.h $(BUILD_CC) $(BUILD_CFLAGS) $< -o $@ cap_names.h: _makenames ./_makenames > cap_names.h -$(GPERF_OUTPUT): cap_names.sed - sed -e 's/[\{\"]//g' -e 's/\}.*//' -e '1istruct __cap_token_s { const char *name; int index; };\n%{\nconst struct __cap_token_s *__cap_lookup_name(const char *, unsigned int);\n%}\n%%' $< | gperf --ignore-case --language=ANSI-C --readonly --null-strings --global-table --hash-function-name=__cap_hash_name --lookup-function-name="__cap_lookup_name" -c -t -m20 $(INDENT) > $@ +$(GPERF_OUTPUT): cap_names.list.h + perl -e 'print "struct __cap_token_s { const char *name; int index; };\n%{\nconst struct __cap_token_s *__cap_lookup_name(const char *, unsigned int);\n%}\n%%\n"; while ($$l = <>) { $$l =~ s/[\{\"]//g; $$l =~ s/\}.*// ; print $$l; }' < $< | gperf --ignore-case --language=ANSI-C --readonly --null-strings --global-table --hash-function-name=__cap_hash_name --lookup-function-name="__cap_lookup_name" -c -t -m20 $(INDENT) > $@ -cap_names.sed: Makefile $(KERNEL_HEADERS)/linux/capability.h - @echo "=> making cap_names.c from <linux/capability.h>" - sed -ne '/^#define[ \t]CAP[_A-Z]\+[ \t]\+[0-9]\+/{s/^#define \([^ \t]*\)[ \t]*\([^ \t]*\)/\{\"\1\",\2\},/;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;p;}' < $(KERNEL_HEADERS)/linux/capability.h | fgrep -v 0x > $@ +cap_names.list.h: Makefile $(KERNEL_HEADERS)/linux/capability.h + @echo "=> making $@ from $(KERNEL_HEADERS)/linux/capability.h" + perl -e 'while ($$l=<>) { if ($$l =~ /^\#define[ \t](CAP[_A-Z]+)[ \t]+([0-9]+)\s+$$/) { $$tok=$$1; $$val=$$2; $$tok =~ tr/A-Z/a-z/; print "{\"$$tok\",$$val},\n"; } }' $(KERNEL_HEADERS)/linux/capability.h | fgrep -v 0x > $@ $(STALIBNAME): $(OBJS) $(AR) rcs $@ $^ @@ -75,5 +75,5 @@ endif clean: $(LOCALCLEAN) rm -f $(OBJS) $(LIBNAME)* $(STALIBNAME) - rm -f cap_names.h cap_names.sed _makenames $(GPERF_OUTPUT) + rm -f cap_names.h cap_names.list.h _makenames $(GPERF_OUTPUT) cd include/sys && $(LOCALCLEAN) diff --git a/libcap/_makenames.c b/libcap/_makenames.c index 4e8939e..8cc819b 100644 --- a/libcap/_makenames.c +++ b/libcap/_makenames.c @@ -17,7 +17,7 @@ struct { const char *name; int index; } const list[] = { -#include "cap_names.sed" +#include "cap_names.list.h" {NULL, -1} }; |