diff -Nur libcap-1.10-12/libcap/include/sys/capability.h libcap-1.10-12.python.new/libcap/include/sys/capability.h --- libcap-1.10-12/libcap/include/sys/capability.h 2003-11-02 12:43:20.000000000 +0100 +++ libcap-1.10-12.python.new/libcap/include/sys/capability.h 2003-11-02 13:19:26.000000000 +0100 @@ -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 * @@ -52,6 +63,7 @@ #define _LINUX_CAPABILITY_VERSION 0x19980330 +#ifndef SWIG typedef struct __user_cap_header_struct { __u32 version; int pid; @@ -62,6 +74,7 @@ __u32 permitted; __u32 inheritable; } *cap_user_data_t; +#endif #ifdef __KERNEL__ @@ -354,10 +367,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 +392,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 +402,7 @@ extern char const *_cap_names[]; #endif /* !defined(_POSIX_SOURCE) */ +#endif #ifdef __cplusplus } diff -Nur libcap-1.10-12/libcap/Makefile libcap-1.10-12.python.new/libcap/Makefile --- libcap-1.10-12/libcap/Makefile 2003-11-02 12:43:20.000000000 +0100 +++ libcap-1.10-12.python.new/libcap/Makefile 2003-11-02 13:08:34.000000000 +0100 @@ -33,6 +33,8 @@ # Library version # LIBNAME=libcap +PYTHONMODNAME=_libcap.so +PYTHONPYNAME=libcap.py # FILES=cap_alloc cap_proc cap_extint cap_flag cap_text cap_sys @@ -46,7 +48,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 +72,12 @@ 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 + +$(PYTHONMODNAME): $(OBJS) libcap_wrap.o + $(LD) -x -shared -o $@ libcap_wrap.o $(OBJS) + %.o: %.c $(INCLS) $(CC) $(CFLAGS) -c $< -o $@ @@ -82,10 +94,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 $(PYTHONPYNAME) $(PYTHONMODDIR)/$(PYTHONPYNAME) +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)