Mercurial > cpython-lru_cache-weakref
annotate Modules/nismodule.c @ 79675:c0a2294de787 2.7
Issue #16199: Backport 2to3 typo fix from 3.2.
| author | Chris Jerdonek <chris.jerdonek@gmail.com> |
|---|---|
| date | Thu, 11 Oct 2012 16:15:46 -0700 |
| parents | 857806147ee7 |
| children |
| rev | line source |
|---|---|
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 /*********************************************************** |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 Written by: |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
3 Fred Gansevles <Fred.Gansevles@cs.utwente.nl> |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
4 B&O group, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
5 Faculteit der Informatica, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
6 Universiteit Twente, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
7 Enschede, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
8 the Netherlands. |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 ******************************************************************/ |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 /* NIS module implementation */ |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 |
| 4674 | 13 #include "Python.h" |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 #include <sys/time.h> |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 #include <sys/types.h> |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 #include <rpc/rpc.h> |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 #include <rpcsvc/yp_prot.h> |
|
3975
b76fe67eed44
Rearrange include headers (needed on some platforms).
Guido van Rossum <guido@python.org>
parents:
1746
diff
changeset
|
19 #include <rpcsvc/ypclnt.h> |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 |
|
4619
c3ca006554d4
Added ``extern int get_default_domain();'' for SGI, to keep gcc -Wall happy.
Guido van Rossum <guido@python.org>
parents:
3975
diff
changeset
|
21 #ifdef __sgi |
|
c3ca006554d4
Added ``extern int get_default_domain();'' for SGI, to keep gcc -Wall happy.
Guido van Rossum <guido@python.org>
parents:
3975
diff
changeset
|
22 /* This is missing from rpcsvc/ypclnt.h */ |
|
13667
a6c7bfdd6777
Even more ANSIfication: fix as many function pointers and declarations as
Thomas Wouters <thomas@python.org>
parents:
13651
diff
changeset
|
23 extern int yp_get_default_domain(char **); |
|
4619
c3ca006554d4
Added ``extern int get_default_domain();'' for SGI, to keep gcc -Wall happy.
Guido van Rossum <guido@python.org>
parents:
3975
diff
changeset
|
24 #endif |
|
c3ca006554d4
Added ``extern int get_default_domain();'' for SGI, to keep gcc -Wall happy.
Guido van Rossum <guido@python.org>
parents:
3975
diff
changeset
|
25 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
26 PyDoc_STRVAR(get_default_domain__doc__, |
|
36438
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
27 "get_default_domain() -> str\n\ |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
28 Corresponds to the C library yp_get_default_domain() call, returning\n\ |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
29 the default NIS domain.\n"); |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
30 |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
31 PyDoc_STRVAR(match__doc__, |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
32 "match(key, map, domain = defaultdomain)\n\ |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
33 Corresponds to the C library yp_match() call, returning the value of\n\ |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
34 key in the given map. Optionally domain can be specified but it\n\ |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
35 defaults to the system default domain.\n"); |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
36 |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
37 PyDoc_STRVAR(cat__doc__, |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
38 "cat(map, domain = defaultdomain)\n\ |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
39 Returns the entire map as a dictionary. Optionally domain can be\n\ |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
40 specified but it defaults to the system default domain.\n"); |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
41 |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
42 PyDoc_STRVAR(maps__doc__, |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
43 "maps(domain = defaultdomain)\n\ |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
44 Returns an array of all available NIS maps within a domain. If domain\n\ |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
45 is not specified it defaults to the system default domain.\n"); |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
46 |
| 4674 | 47 static PyObject *NisError; |
|
940
844482b6467a
Added error handling and free resources.
Guido van Rossum <guido@python.org>
parents:
939
diff
changeset
|
48 |
| 4674 | 49 static PyObject * |
|
13505
0edeb4efe6db
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13447
diff
changeset
|
50 nis_error (int err) |
|
940
844482b6467a
Added error handling and free resources.
Guido van Rossum <guido@python.org>
parents:
939
diff
changeset
|
51 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
52 PyErr_SetString(NisError, yperr_string(err)); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
53 return NULL; |
|
940
844482b6467a
Added error handling and free resources.
Guido van Rossum <guido@python.org>
parents:
939
diff
changeset
|
54 } |
|
844482b6467a
Added error handling and free resources.
Guido van Rossum <guido@python.org>
parents:
939
diff
changeset
|
55 |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 static struct nis_map { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
57 char *alias; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
58 char *map; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
59 int fix; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 } aliases [] = { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
61 {"passwd", "passwd.byname", 0}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
62 {"group", "group.byname", 0}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
63 {"networks", "networks.byaddr", 0}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
64 {"hosts", "hosts.byname", 0}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
65 {"protocols", "protocols.bynumber", 0}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
66 {"services", "services.byname", 0}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
67 {"aliases", "mail.aliases", 1}, /* created with 'makedbm -a' */ |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
68 {"ethers", "ethers.byname", 0}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
69 {0L, 0L, 0} |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
70 }; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
71 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
72 static char * |
|
13505
0edeb4efe6db
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13447
diff
changeset
|
73 nis_mapname (char *map, int *pfix) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
74 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
75 int i; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
76 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
77 *pfix = 0; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
78 for (i=0; aliases[i].alias != 0L; i++) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
79 if (!strcmp (aliases[i].alias, map)) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
80 *pfix = aliases[i].fix; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
81 return aliases[i].map; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
82 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
83 if (!strcmp (aliases[i].map, map)) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
84 *pfix = aliases[i].fix; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
85 return aliases[i].map; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
86 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
87 } |
|
11883
0c4729e38c3d
Patch by Fred Gansevles (the module's original author).
Guido van Rossum <guido@python.org>
parents:
9307
diff
changeset
|
88 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
89 return map; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
91 |
|
55137
de58f61386c3
Merged revisions 73873 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47880
diff
changeset
|
92 #if defined(__APPLE__) || defined(__OpenBSD__) || defined(__FreeBSD__) |
|
32567
0064f55bafa7
Add an #ifdef __APPLE__ around typedef of foreachfunc to match Apple's
Brett Cannon <bcannon@gmail.com>
parents:
26027
diff
changeset
|
93 typedef int (*foreachfunc)(unsigned long, char *, int, char *, int, void *); |
|
0064f55bafa7
Add an #ifdef __APPLE__ around typedef of foreachfunc to match Apple's
Brett Cannon <bcannon@gmail.com>
parents:
26027
diff
changeset
|
94 #else |
|
13447
a89f7f268de4
Nuke all remaining occurrences of Py_PROTO and Py_FPROTO.
Tim Peters <tim.peters@gmail.com>
parents:
12576
diff
changeset
|
95 typedef int (*foreachfunc)(int, char *, int, char *, int, char *); |
|
32567
0064f55bafa7
Add an #ifdef __APPLE__ around typedef of foreachfunc to match Apple's
Brett Cannon <bcannon@gmail.com>
parents:
26027
diff
changeset
|
96 #endif |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1393
diff
changeset
|
97 |
|
11883
0c4729e38c3d
Patch by Fred Gansevles (the module's original author).
Guido van Rossum <guido@python.org>
parents:
9307
diff
changeset
|
98 struct ypcallback_data { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
99 PyObject *dict; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
100 int fix; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
101 PyThreadState *state; |
|
11883
0c4729e38c3d
Patch by Fred Gansevles (the module's original author).
Guido van Rossum <guido@python.org>
parents:
9307
diff
changeset
|
102 }; |
|
0c4729e38c3d
Patch by Fred Gansevles (the module's original author).
Guido van Rossum <guido@python.org>
parents:
9307
diff
changeset
|
103 |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
104 static int |
|
13505
0edeb4efe6db
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13447
diff
changeset
|
105 nis_foreach (int instatus, char *inkey, int inkeylen, char *inval, |
|
0edeb4efe6db
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13447
diff
changeset
|
106 int invallen, struct ypcallback_data *indata) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
107 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
108 if (instatus == YP_TRUE) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
109 PyObject *key; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
110 PyObject *val; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
111 int err; |
|
11883
0c4729e38c3d
Patch by Fred Gansevles (the module's original author).
Guido van Rossum <guido@python.org>
parents:
9307
diff
changeset
|
112 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
113 PyEval_RestoreThread(indata->state); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
114 if (indata->fix) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
115 if (inkeylen > 0 && inkey[inkeylen-1] == '\0') |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
116 inkeylen--; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
117 if (invallen > 0 && inval[invallen-1] == '\0') |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
118 invallen--; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
119 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
120 key = PyString_FromStringAndSize(inkey, inkeylen); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
121 val = PyString_FromStringAndSize(inval, invallen); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
122 if (key == NULL || val == NULL) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
123 /* XXX error -- don't know how to handle */ |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
124 PyErr_Clear(); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
125 Py_XDECREF(key); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
126 Py_XDECREF(val); |
|
64167
857806147ee7
Merged revisions 84172 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
61463
diff
changeset
|
127 indata->state = PyEval_SaveThread(); |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
128 return 1; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
129 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
130 err = PyDict_SetItem(indata->dict, key, val); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
131 Py_DECREF(key); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
132 Py_DECREF(val); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
133 if (err != 0) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
134 PyErr_Clear(); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
135 indata->state = PyEval_SaveThread(); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
136 if (err != 0) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
137 return 1; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
138 return 0; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
139 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
140 return 1; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
141 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
142 |
| 4674 | 143 static PyObject * |
|
36438
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
144 nis_get_default_domain (PyObject *self) |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
145 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
146 char *domain; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
147 int err; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
148 PyObject *res; |
|
36438
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
149 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
150 if ((err = yp_get_default_domain(&domain)) != 0) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
151 return nis_error(err); |
|
36438
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
152 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
153 res = PyString_FromStringAndSize (domain, strlen(domain)); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
154 return res; |
|
36438
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
155 } |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
156 |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
157 static PyObject * |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
158 nis_match (PyObject *self, PyObject *args, PyObject *kwdict) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
159 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
160 char *match; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
161 char *domain = NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
162 int keylen, len; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
163 char *key, *map; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
164 int err; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
165 PyObject *res; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
166 int fix; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
167 static char *kwlist[] = {"key", "map", "domain", NULL}; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
168 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
169 if (!PyArg_ParseTupleAndKeywords(args, kwdict, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
170 "t#s|s:match", kwlist, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
171 &key, &keylen, &map, &domain)) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
172 return NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
173 if (!domain && ((err = yp_get_default_domain(&domain)) != 0)) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
174 return nis_error(err); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
175 map = nis_mapname (map, &fix); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
176 if (fix) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
177 keylen++; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
178 Py_BEGIN_ALLOW_THREADS |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
179 err = yp_match (domain, map, key, keylen, &match, &len); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
180 Py_END_ALLOW_THREADS |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
181 if (fix) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
182 len--; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
183 if (err != 0) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
184 return nis_error(err); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
185 res = PyString_FromStringAndSize (match, len); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
186 free (match); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
187 return res; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
188 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
189 |
| 4674 | 190 static PyObject * |
|
36438
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
191 nis_cat (PyObject *self, PyObject *args, PyObject *kwdict) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
192 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
193 char *domain = NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
194 char *map; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
195 struct ypall_callback cb; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
196 struct ypcallback_data data; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
197 PyObject *dict; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
198 int err; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
199 static char *kwlist[] = {"map", "domain", NULL}; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
200 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
201 if (!PyArg_ParseTupleAndKeywords(args, kwdict, "s|s:cat", |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
202 kwlist, &map, &domain)) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
203 return NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
204 if (!domain && ((err = yp_get_default_domain(&domain)) != 0)) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
205 return nis_error(err); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
206 dict = PyDict_New (); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
207 if (dict == NULL) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
208 return NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
209 cb.foreach = (foreachfunc)nis_foreach; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
210 data.dict = dict; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
211 map = nis_mapname (map, &data.fix); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
212 cb.data = (char *)&data; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
213 data.state = PyEval_SaveThread(); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
214 err = yp_all (domain, map, &cb); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
215 PyEval_RestoreThread(data.state); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
216 if (err != 0) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
217 Py_DECREF(dict); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
218 return nis_error(err); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
219 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
220 return dict; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
221 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
222 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1393
diff
changeset
|
223 /* These should be u_long on Sun h/w but not on 64-bit h/w. |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1393
diff
changeset
|
224 This is not portable to machines with 16-bit ints and no prototypes */ |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1393
diff
changeset
|
225 #ifndef YPPROC_MAPLIST |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
226 #define YPPROC_MAPLIST 11 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1393
diff
changeset
|
227 #endif |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1393
diff
changeset
|
228 #ifndef YPPROG |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
229 #define YPPROG 100004 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1393
diff
changeset
|
230 #endif |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1393
diff
changeset
|
231 #ifndef YPVERS |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
232 #define YPVERS 2 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1393
diff
changeset
|
233 #endif |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
234 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
235 typedef char *domainname; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
236 typedef char *mapname; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
237 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
238 enum nisstat { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
239 NIS_TRUE = 1, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
240 NIS_NOMORE = 2, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
241 NIS_FALSE = 0, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
242 NIS_NOMAP = -1, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
243 NIS_NODOM = -2, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
244 NIS_NOKEY = -3, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
245 NIS_BADOP = -4, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
246 NIS_BADDB = -5, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
247 NIS_YPERR = -6, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
248 NIS_BADARGS = -7, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
249 NIS_VERS = -8 |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
250 }; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
251 typedef enum nisstat nisstat; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
252 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
253 struct nismaplist { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
254 mapname map; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
255 struct nismaplist *next; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
256 }; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
257 typedef struct nismaplist nismaplist; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
258 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
259 struct nisresp_maplist { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
260 nisstat stat; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
261 nismaplist *maps; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
262 }; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
263 typedef struct nisresp_maplist nisresp_maplist; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
264 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
265 static struct timeval TIMEOUT = { 25, 0 }; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
266 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
267 static |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
268 bool_t |
|
13505
0edeb4efe6db
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13447
diff
changeset
|
269 nis_xdr_domainname(XDR *xdrs, domainname *objp) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
270 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
271 if (!xdr_string(xdrs, objp, YPMAXDOMAIN)) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
272 return (FALSE); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
273 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
274 return (TRUE); |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
275 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
276 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
277 static |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
278 bool_t |
|
13505
0edeb4efe6db
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13447
diff
changeset
|
279 nis_xdr_mapname(XDR *xdrs, mapname *objp) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
280 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
281 if (!xdr_string(xdrs, objp, YPMAXMAP)) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
282 return (FALSE); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
283 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
284 return (TRUE); |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
285 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
286 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
287 static |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
288 bool_t |
|
13505
0edeb4efe6db
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13447
diff
changeset
|
289 nis_xdr_ypmaplist(XDR *xdrs, nismaplist *objp) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
290 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
291 if (!nis_xdr_mapname(xdrs, &objp->map)) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
292 return (FALSE); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
293 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
294 if (!xdr_pointer(xdrs, (char **)&objp->next, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
295 sizeof(nismaplist), (xdrproc_t)nis_xdr_ypmaplist)) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
296 { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
297 return (FALSE); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
298 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
299 return (TRUE); |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
300 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
301 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
302 static |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
303 bool_t |
|
13505
0edeb4efe6db
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13447
diff
changeset
|
304 nis_xdr_ypstat(XDR *xdrs, nisstat *objp) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
305 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
306 if (!xdr_enum(xdrs, (enum_t *)objp)) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
307 return (FALSE); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
308 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
309 return (TRUE); |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
310 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
311 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
312 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
313 static |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
314 bool_t |
|
13505
0edeb4efe6db
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13447
diff
changeset
|
315 nis_xdr_ypresp_maplist(XDR *xdrs, nisresp_maplist *objp) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
316 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
317 if (!nis_xdr_ypstat(xdrs, &objp->stat)) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
318 return (FALSE); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
319 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
320 if (!xdr_pointer(xdrs, (char **)&objp->maps, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
321 sizeof(nismaplist), (xdrproc_t)nis_xdr_ypmaplist)) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
322 { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
323 return (FALSE); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
324 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
325 return (TRUE); |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
326 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
327 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
328 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
329 static |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
330 nisresp_maplist * |
|
13505
0edeb4efe6db
ANSI-fication
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13447
diff
changeset
|
331 nisproc_maplist_2(domainname *argp, CLIENT *clnt) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
332 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
333 static nisresp_maplist res; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
334 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
335 memset(&res, 0, sizeof(res)); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
336 if (clnt_call(clnt, YPPROC_MAPLIST, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
337 (xdrproc_t)nis_xdr_domainname, (caddr_t)argp, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
338 (xdrproc_t)nis_xdr_ypresp_maplist, (caddr_t)&res, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
339 TIMEOUT) != RPC_SUCCESS) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
340 { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
341 return (NULL); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
342 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
343 return (&res); |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
344 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
345 |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
346 static |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
347 nismaplist * |
|
36438
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
348 nis_maplist (char *dom) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
349 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
350 nisresp_maplist *list; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
351 CLIENT *cl; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
352 char *server = NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
353 int mapi = 0; |
|
4675
0c01a23c7dcd
nis_maplist(): Use check of yp_get_default_domain() return value
Barry Warsaw <barry@python.org>
parents:
4674
diff
changeset
|
354 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
355 while (!server && aliases[mapi].map != 0L) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
356 yp_master (dom, aliases[mapi].map, &server); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
357 mapi++; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
358 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
359 if (!server) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
360 PyErr_SetString(NisError, "No NIS master found for any map"); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
361 return NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
362 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
363 cl = clnt_create(server, YPPROG, YPVERS, "tcp"); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
364 if (cl == NULL) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
365 PyErr_SetString(NisError, clnt_spcreateerror(server)); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
366 goto finally; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
367 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
368 list = nisproc_maplist_2 (&dom, cl); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
369 clnt_destroy(cl); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
370 if (list == NULL) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
371 goto finally; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
372 if (list->stat != NIS_TRUE) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
373 goto finally; |
|
4917
1bcd4972da7e
Nailed a couple of memory leaks, caught by Purify.
Barry Warsaw <barry@python.org>
parents:
4676
diff
changeset
|
374 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
375 free(server); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
376 return list->maps; |
|
4917
1bcd4972da7e
Nailed a couple of memory leaks, caught by Purify.
Barry Warsaw <barry@python.org>
parents:
4676
diff
changeset
|
377 |
|
1bcd4972da7e
Nailed a couple of memory leaks, caught by Purify.
Barry Warsaw <barry@python.org>
parents:
4676
diff
changeset
|
378 finally: |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
379 free(server); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
380 return NULL; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
381 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
382 |
| 4674 | 383 static PyObject * |
|
36438
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
384 nis_maps (PyObject *self, PyObject *args, PyObject *kwdict) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
385 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
386 char *domain = NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
387 nismaplist *maps; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
388 PyObject *list; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
389 int err; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
390 static char *kwlist[] = {"domain", NULL}; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
391 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
392 if (!PyArg_ParseTupleAndKeywords(args, kwdict, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
393 "|s:maps", kwlist, &domain)) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
394 return NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
395 if (!domain && ((err = yp_get_default_domain (&domain)) != 0)) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
396 nis_error(err); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
397 return NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
398 } |
|
36438
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
399 |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
400 if ((maps = nis_maplist (domain)) == NULL) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
401 return NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
402 if ((list = PyList_New(0)) == NULL) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
403 return NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
404 for (maps = maps; maps; maps = maps->next) { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
405 PyObject *str = PyString_FromString(maps->map); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
406 if (!str || PyList_Append(list, str) < 0) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
407 { |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
408 Py_DECREF(list); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
409 list = NULL; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
410 break; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
411 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
412 Py_DECREF(str); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
413 } |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
414 /* XXX Shouldn't we free the list of maps now? */ |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
415 return list; |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
416 } |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
417 |
| 4674 | 418 static PyMethodDef nis_methods[] = { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
419 {"match", (PyCFunction)nis_match, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
420 METH_VARARGS | METH_KEYWORDS, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
421 match__doc__}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
422 {"cat", (PyCFunction)nis_cat, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
423 METH_VARARGS | METH_KEYWORDS, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
424 cat__doc__}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
425 {"maps", (PyCFunction)nis_maps, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
426 METH_VARARGS | METH_KEYWORDS, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
427 maps__doc__}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
428 {"get_default_domain", (PyCFunction)nis_get_default_domain, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
429 METH_NOARGS, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
430 get_default_domain__doc__}, |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
431 {NULL, NULL} /* Sentinel */ |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
432 }; |
|
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
433 |
|
36438
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
434 PyDoc_STRVAR(nis__doc__, |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
435 "This module contains functions for accessing NIS maps.\n"); |
|
94d27e01833d
Patch #1422385: Changes to nis module to support multiple NIS domains
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
436 |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
437 void |
|
13651
8a063423e0b7
Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents:
13505
diff
changeset
|
438 initnis (void) |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
439 { |
|
61463
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
440 PyObject *m, *d; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
441 m = Py_InitModule3("nis", nis_methods, nis__doc__); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
442 if (m == NULL) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
443 return; |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
444 d = PyModule_GetDict(m); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
445 NisError = PyErr_NewException("nis.error", NULL, NULL); |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
446 if (NisError != NULL) |
|
fd25030223b0
Untabify C files. Will watch buildbots.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55137
diff
changeset
|
447 PyDict_SetItemString(d, "error", NisError); |
|
939
7243a906937c
NIS interface by Fred Gansevles <Fred.Gansevles@cs.utwente.nl>.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
448 } |
