9 cdef extern from "checkpath.h":
12 gid_t cp_gid[NGROUPS_MAX + 1]
16 void (*cp_report)(unsigned, int, char *, char *, void *)
20 c_CP_WRWORLD "CP_WRWORLD"
22 c_CP_WROTHGRP "CP_WROTHGRP"
23 c_CP_WROTHUSR "CP_WROTHUSR"
24 c_CP_PROBLEMS "CP_PROBLEMS"
25 c_CP_SYMLINK "CP_SYMLINK"
26 c_CP_REPORT "CP_REPORT"
27 c_CP_STICKYOK "CP_STICKYOK"
28 int c_checkpath "checkpath"(char *path, checkpath *cp) except *
29 void c_checkpath_setids "checkpath_setids"(checkpath *cp)
32 WRWORLD = c_CP_WRWORLD
34 WROTHGRP = c_CP_WROTHGRP
35 WROTHUSR = c_CP_WROTHUSR
36 PROBLEMS = c_CP_PROBLEMS
37 SYMLINK = c_CP_SYMLINK
39 STICKYOK = c_CP_STICKYOK
41 cdef void cp_report(unsigned what, int verb,
42 char *path, char *msg, void *arg):
47 cp.report(what, verb, path, msg)
55 me.cp.cp_what = c_CP_PROBLEMS
56 me.cp.cp_report = cp_report
57 me.cp.cp_arg = <void *>me
58 c_checkpath_setids(&me.cp)
60 c_checkpath_setids(&me.cp)
69 for i from 0 <= i < me.cp.cp_gids:
70 g[i] = me.cp.cp_gid[i]
73 if len(val) >= NGROUPS_MAX + 1:
74 raise TypeError, 'too many groups'
75 for i from 0 <= i < len(val):
76 me.cp.cp_gid[i] = val[i]
77 me.cp.cp_gids = len(val)
80 return me.cp.cp_verbose
82 me.cp.cp_verbose = val
89 return c_checkpath(path, &me.cp)
90 def report(me, what, verb, path, msg):