Remove 1024 byte limit.Remove 1024 byte limit.
[kopensolaris-gnu/glibc.git] / nis / nis_file.c
1 /* Copyright (c) 1997, 1998 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Library General Public License as
7    published by the Free Software Foundation; either version 2 of the
8    License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Library General Public License for more details.
14
15    You should have received a copy of the GNU Library General Public
16    License along with the GNU C Library; see the file COPYING.LIB.  If not,
17    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18    Boston, MA 02111-1307, USA.  */
19
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include <string.h>
23 #include <rpcsvc/nis.h>
24 #include "nis_xdr.h"
25
26 static const char cold_start_file[] = "/var/nis/NIS_COLD_START";
27
28 directory_obj *
29 readColdStartFile (void)
30 {
31   XDR xdrs;
32   FILE *in;
33   bool_t status;
34   directory_obj *obj = calloc (1, sizeof (directory_obj));
35
36   if (obj == NULL)
37     return NULL;
38
39   in = fopen (cold_start_file, "rb");
40   if (in == NULL)
41     return NULL;
42   xdrstdio_create (&xdrs, in, XDR_DECODE);
43   status = _xdr_directory_obj (&xdrs, obj);
44   xdr_destroy (&xdrs);
45   fclose (in);
46
47   if (status)
48     return obj;
49   else
50     {
51       nis_free_directory (obj);
52       return NULL;
53     }
54 }
55
56 bool_t
57 writeColdStartFile (const directory_obj *obj)
58 {
59   XDR xdrs;
60   FILE *out;
61   bool_t status;
62
63   out = fopen (cold_start_file, "wb");
64   if (out == NULL)
65     return FALSE;
66
67   xdrstdio_create (&xdrs, out, XDR_ENCODE);
68   status = _xdr_directory_obj (&xdrs, (directory_obj *) obj);
69   xdr_destroy (&xdrs);
70   fclose (out);
71
72   return status;
73 }
74
75 nis_object *
76 nis_read_obj (const char *name)
77 {
78   XDR xdrs;
79   FILE *in;
80   bool_t status;
81   nis_object *obj = calloc (1, sizeof (nis_object));
82
83   if (obj == NULL)
84     return NULL;
85
86   in = fopen (name, "rb");
87   if (in == NULL)
88     return NULL;
89
90   xdrstdio_create (&xdrs, in, XDR_DECODE);
91   status =_xdr_nis_object (&xdrs, obj);
92   xdr_destroy (&xdrs);
93   fclose (in);
94
95   if (status)
96     return obj;
97   else
98     {
99       nis_free_object (obj);
100       return NULL;
101     }
102 }
103
104 bool_t
105 nis_write_obj (const char *name, const nis_object *obj)
106 {
107   XDR xdrs;
108   FILE *out;
109   bool_t status;
110
111   out = fopen (name, "wb");
112   if (out == NULL)
113     return FALSE;
114
115   xdrstdio_create (&xdrs, out, XDR_ENCODE);
116   status = _xdr_nis_object (&xdrs, (nis_object *) obj);
117   xdr_destroy (&xdrs);
118   fclose (out);
119
120   return status;
121 }