summaryrefslogtreecommitdiff
blob: 2560ae06dff31b00e1d7a837fe8f303f5930586b (plain)
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
diff -Nur libcap-1.10-14.static/libcap/include/sys/capability.h libcap-1.10-14.static.python/libcap/include/sys/capability.h
--- libcap-1.10-14.static/libcap/include/sys/capability.h	2004-09-16 02:45:13.000000000 +0200
+++ libcap-1.10-14.static.python/libcap/include/sys/capability.h	2004-09-16 02:52:58.000000000 +0200
@@ -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>
  *
@@ -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-14.static/libcap/Makefile libcap-1.10-14.static.python/libcap/Makefile
--- libcap-1.10-14.static/libcap/Makefile	2004-09-16 02:48:30.000000000 +0200
+++ libcap-1.10-14.static.python/libcap/Makefile	2004-09-16 03:01:06.000000000 +0200
@@ -34,6 +34,8 @@
 #
 LIBNAME=libcap
 STATLIBNAME=$(LIBNAME).a
+PYTHONMODNAME=_$(LIBNAME).so
+PYTHONPYNAME=$(LIBNAME).py
 #
 
 FILES=cap_alloc cap_proc cap_extint cap_flag cap_text cap_sys
@@ -47,7 +49,11 @@
 MAJLIBNAME=$(LIBNAME).so.$(VERSION)
 MINLIBNAME=$(MAJLIBNAME).$(MINOR)
 
+ifdef PYTHON
+all: $(MINLIBNAME) $(STATLIBNAME) $(PYTHONMODNAME)
+else
 all: $(MINLIBNAME) $(STATLIBNAME)
+endif
 
 _makenames: _makenames.c cap_names.sed
 	$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
@@ -67,6 +73,18 @@
 	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)
+
+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 $@
 
@@ -83,10 +101,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) $(STATLIBNAME) $(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)