diff -ur libcap-1.10.orig/libcap/Makefile libcap-1.10/libcap/Makefile --- libcap-1.10.orig/libcap/Makefile 2003-09-29 22:26:56.856116136 -0400 +++ libcap-1.10/libcap/Makefile 2003-09-29 22:31:06.204209464 -0400 @@ -33,6 +33,7 @@ # Library version # LIBNAME=libcap +PYTHONMODNAME=libcapmodule.so # FILES=cap_alloc cap_proc cap_extint cap_flag cap_text cap_sys @@ -46,7 +47,11 @@ MAJLIBNAME=$(LIBNAME).so.$(VERSION) MINLIBNAME=$(MAJLIBNAME).$(MINOR) +ifdef PYTHON +all: $(MINLIBNAME) $(LIBNAME).a $(PYTHONMODNAME) +else all: $(MINLIBNAME) $(LIBNAME).a +endif _makenames: _makenames.c cap_names.sed $(CC) $(CFLAGS) $(LDFLAGS) $< -o $@ @@ -66,6 +71,15 @@ ln -sf $(MINLIBNAME) $(MAJLIBNAME) ln -sf $(MAJLIBNAME) $(LIBNAME).so +libcap_wrap.c: include/sys/capability.h + swig -python -o libcap_wrap.c include/sys/capability.h + +libcap_wrap.o: libcap_wrap.c + $(CC) $(CFLAGS) -fPIC -c $< -o $@ + +$(PYTHONMODNAME): $(LOBJS) libcap_wrap.o + $(LD) -x -shared -o $@ libcap_wrap.o $(LOBJS) + %.o: %.c $(INCLS) $(CC) $(CFLAGS) -c $< -o $@ @@ -82,10 +93,15 @@ ln -sf $(MINLIBNAME) $(LIBDIR)/$(MAJLIBNAME) ln -sf $(MAJLIBNAME) $(LIBDIR)/$(LIBNAME).so -/sbin/ldconfig +ifdef PYTHON + mkdir -p $(PYTHONMODDIR) + install -m 0644 $(PYTHONMODNAME) $(PYTHONMODDIR)/$(PYTHONMODNAME) + install -m 0644 libcap.py $(PYTHONMODDIR)/ +endif clean: $(LOCALCLEAN) rm -f $(OBJS) $(LOBJS) $(LIBNAME).a $(LIBNAME).so* - rm -f cap_names.h cap_names.sed _makenames + rm -f cap_names.h cap_names.sed _makenames libcap_wrap.c cd include/sys && $(LOCALCLEAN) diff -ur libcap-1.10.orig/libcap/include/sys/capability.h libcap-1.10/libcap/include/sys/capability.h --- libcap-1.10.orig/libcap/include/sys/capability.h 2003-09-29 22:26:56.856116136 -0400 +++ libcap-1.10/libcap/include/sys/capability.h 2003-09-29 22:29:07.457261744 -0400 @@ -15,12 +15,23 @@ extern "C" { #endif +#ifdef SWIG +%module libcap +#endif + /* * This file complements the kernel file by providing prototype * information for the user library. */ +#ifdef SWIG +%{ +#include +#include "libcap.h" +%} +#else #include +#endif /* * This is * @@ -354,10 +365,12 @@ int cap_clear(cap_t); /* libcap/cap_file.c */ +#ifndef SWIG cap_t cap_get_fd(int); cap_t cap_get_file(const char *); int cap_set_fd(int, cap_t); int cap_set_file(const char *, cap_t); +#endif /* libcap/cap_proc.c */ cap_t cap_get_proc(void); @@ -377,6 +390,7 @@ * if the following _POSIX_SOURCE is _undefined_ */ +#ifndef SWIG #if !defined(_POSIX_SOURCE) extern int capset(cap_user_header_t header, cap_user_data_t data); @@ -386,6 +400,7 @@ extern char const *_cap_names[]; #endif /* !defined(_POSIX_SOURCE) */ +#endif #ifdef __cplusplus }