Add NIS+ functions
[kopensolaris-gnu/glibc.git] / nis / nis_server.c
1 /* Copyright (c) 1997 Free Software Foundation, Inc.
2
3    This file is part of the GNU C Library.
4    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
5
6    The GNU C Library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Library General Public License as
8    published by the Free Software Foundation; either version 2 of the
9    License, or (at your option) any later version.
10
11    The GNU C Library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Library General Public License for more details.
15
16    You should have received a copy of the GNU Library General Public
17    License along with the GNU C Library; see the file COPYING.LIB.  If not,
18    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19    Boston, MA 02111-1307, USA. */
20
21 #include <rpcsvc/nis.h>
22 #include <rpcsvc/nislib.h>
23 #include "nis_intern.h"
24
25 nis_error
26 nis_mkdir (const nis_name dir, const nis_server * server)
27 {
28   nis_error res;
29
30   if (server == NULL)
31     {
32       int result;
33       if ((result = __do_niscall (NULL, 0, NIS_MKDIR, (xdrproc_t) xdr_nis_name,
34                                   (caddr_t) dir, (xdrproc_t) xdr_nis_error,
35                                   (caddr_t) & res, 0)) != RPC_SUCCESS)
36         {
37           fprintf (stderr, "__do_niscall: Error #%d\n", result);
38           return NIS_RPCERROR;
39         }
40     }
41   else
42     {
43       int result;
44       if ((result = __do_niscall (server, 1, NIS_MKDIR,
45                                   (xdrproc_t) xdr_nis_name,
46                                   (caddr_t) dir, (xdrproc_t) xdr_nis_error,
47                                   (caddr_t) & res, 0)) != RPC_SUCCESS)
48         {
49           fprintf (stderr, "__do_niscall: Error #%d\n", result);
50           return NIS_RPCERROR;
51         }
52     }
53
54   return res;
55 }
56
57 nis_error
58 nis_rmdir (const nis_name dir, const nis_server * server)
59 {
60   nis_error res;
61
62   if (server == NULL)
63     {
64       int result;
65       if ((result = __do_niscall (NULL, 0, NIS_RMDIR, (xdrproc_t) xdr_nis_name,
66                                   (caddr_t) dir, (xdrproc_t) xdr_nis_error,
67                                   (caddr_t) & res, 0)) != RPC_SUCCESS)
68         {
69           fprintf (stderr, "__do_niscall: Error #%d\n", result);
70           return NIS_RPCERROR;
71         }
72     }
73   else
74     {
75       int result;
76       if ((result = __do_niscall (server, 1, NIS_RMDIR,
77                                   (xdrproc_t) xdr_nis_name,
78                                   (caddr_t) dir, (xdrproc_t) xdr_nis_error,
79                                   (caddr_t) & res, 0)) != RPC_SUCCESS)
80         {
81           fprintf (stderr, "__do_niscall: Error #%d\n", result);
82           return NIS_RPCERROR;
83         }
84     }
85
86   return res;
87 }
88
89 nis_error
90 nis_servstate (const nis_server * serv, const nis_tag * tags,
91                const int numtags, nis_tag ** result)
92 {
93   *result = NULL;
94   return NIS_FAIL;
95 }
96 stub_warning (nis_servstate)
97
98 nis_error
99 nis_stats (const nis_server * serv, const nis_tag * tags,
100            const int numtags, nis_tag ** result)
101 {
102   result = malloc (sizeof (nis_tag *));
103   result[0] = NULL;
104   return NIS_FAIL;
105 }
106 stub_warning (nis_stats);
107
108 void
109 nis_freetags (nis_tag * tags, const int numtags)
110 {
111   int i;
112
113   for (i = 0; i < numtags; i++)
114     free (tags->tag_val);
115   free (tags);
116 }
117
118 nis_server
119 ** nis_getservlist (const nis_name dir)
120 {
121   nis_server **serv;
122
123   serv = malloc (sizeof (nis_server *));
124   serv[0] = NULL;
125
126   return serv;
127 }
128 stub_warning (nis_getservlist);
129
130 void
131 nis_freeservlist (nis_server ** serv)
132 {
133   int i;
134
135   if (serv == NULL)
136     return;
137
138   i = 0;
139   while (serv[i] != NULL)
140     nis_free_servers (serv[i], 1);
141   free (serv);
142 }