1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
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,14 @@
ln -sf $(MINLIBNAME) $(LIBDIR)/$(MAJLIBNAME)
ln -sf $(MAJLIBNAME) $(LIBDIR)/$(LIBNAME).so
-/sbin/ldconfig
+ifdef PYTHON
+ mkdir -p $(PYTHONMODDIR)
+ install -m 0644 $(PYTHONMODNAME) $(PYTHONMODDIR)/$(PYTHONMODNAME)
+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 <sys/types.h>
+#include "libcap.h"
+%}
+#else
#include <sys/types.h>
+#endif
/*
* This is <linux/capability.h>
*
@@ -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
}
|