1 /*
2 
3   silcfileutil.h
4 
5   Author: Pekka Riikonen <priikone@silcnet.org>
6 
7   Copyright (C) 1997 - 2005 Pekka Riikonen
8 
9   The contents of this file are subject to one of the Licenses specified
10   in the COPYING file;  You may not use this file except in compliance
11   with the License.
12 
13   The software distributed under the License is distributed on an "AS IS"
14   basis, in the hope that it will be useful, but WITHOUT WARRANTY OF ANY
15   KIND, either expressed or implied.  See the COPYING file for more
16   information.
17 
18 */
19 
20 /****h* silcutil/SILC File Util Interface
21  *
22  * DESCRIPTION
23  *
24  *    The SILC File Util Interface is a small set of functions that provides a
25  *    portable access method to the filesystem.
26  *
27  ***/
28 
29 #ifndef SILCFILEUTIL_H
30 #define SILCFILEUTIL_H
31 
32 /* Prototypes */
33 
34 /****f* silcutil/SilcFileUtilAPI/silc_file_open
35  *
36  * SYNOPSIS
37  *
38  *    int silc_file_open(const char *filename, int flags);
39  *
40  * DESCRIPTION
41  *
42  *    Opens a file indicated by the filename `filename' with flags indicated
43  *    by `flags'.  The opening permission defaults to 0600.  The `flags'
44  *    are defined in open(2).
45  *
46  ***/
47 int silc_file_open(const char *filename, int flags);
48 
49 /****f* silcutil/SilcFileUtilAPI/silc_file_open_mode
50  *
51  * SYNOPSIS
52  *
53  *    int silc_file_open_mode(const char *filename, int flags, int mode);
54  *
55  * DESCRIPTION
56  *
57  *    Opens a file indicated by the filename `filename' with flags indicated
58  *    by `flags'.  The argument `mode' specifies the permissions to use in
59  *    case a new file is created.  The `flags' are defined in open(2).
60  *
61  ***/
62 int silc_file_open_mode(const char *filename, int flags, int mode);
63 
64 /****f* silcutil/SilcFileUtilAPI/silc_file_read
65  *
66  * SYNOPSIS
67  *
68  *    int silc_file_read(int fd, unsigned char *buf, SilcUInt32 buf_len);
69  *
70  * DESCRIPTION
71  *
72  *    Reads data from file descriptor `fd' to `buf'.
73  *
74  ***/
75 int silc_file_read(int fd, unsigned char *buf, SilcUInt32 buf_len);
76 
77 /****f* silcutil/SilcFileUtilAPI/silc_file_write
78  *
79  * SYNOPSIS
80  *
81  *    int silc_file_write(int fd, const char *buffer, SilcUInt32 len);
82  *
83  * DESCRIPTION
84  *
85  *    Writes `buffer' of length of `len' to file descriptor `fd'.
86  *
87  ***/
88 int silc_file_write(int fd, const char *buffer, SilcUInt32 len);
89 
90 /****f* silcutil/SilcFileUtilAPI/silc_file_close
91  *
92  * SYNOPSIS
93  *
94  *    int silc_file_close(int fd);
95  *
96  * DESCRIPTION
97  *
98  *    Closes file descriptor previously opened with silc_file_open().
99  *
100  ***/
101 int silc_file_close(int fd);
102 
103 /****f* silcutil/SilcFileUtilAPI/silc_file_set_nonblock
104  *
105  * SYNOPSIS
106  *
107  *    int silc_file_set_nonblock(int fd);
108  *
109  * DESCRIPTION
110  *
111  *    Sets the file descriptor to non-blocking mode.
112  *
113  ***/
114 int silc_file_set_nonblock(int fd);
115 
116 /****f* silcutil/SilcFileUtilAPI/silc_file_readfile
117  *
118  * SYNOPSIS
119  *
120  *    char *silc_file_readfile(const char *filename, SilcUInt32 *return_len);
121  *
122  * DESCRIPTION
123  *
124  *    Reads the content of `filename' to a buffer.  The allocated buffer is
125  *    returned.  This does not NULL terminate the buffer but EOF terminate
126  *    it.  The caller must replace the EOF with NULL if the buffer must be
127  *    NULL terminated.
128  *
129  *    If the `return_len' pointer is not NULL, it's filled with the length of
130  *    the file.
131  *
132  ***/
133 char *silc_file_readfile(const char *filename, SilcUInt32 *return_len);
134 
135 /****f* silcutil/SilcFileUtilAPI/silc_file_writefile
136  *
137  * SYNOPSIS
138  *
139  *    int silc_file_writefile(const char *filename, const char *buffer,
140  *                            SilcUInt32 len);
141  *
142  * DESCRIPTION
143  *
144  *    Writes a buffer to the file.  If the file is created specific mode is
145  *    set to the file.
146  *
147  ***/
148 int silc_file_writefile(const char *filename, const char *buffer,
149 			SilcUInt32 len);
150 
151 /****f* silcutil/SilcFileUtilAPI/silc_file_writefile_mode
152  *
153  * SYNOPSIS
154  *
155  *    int silc_file_writefile_mode(const char *filename, const char *buffer,
156  *                                 SilcUInt32 len, int mode);
157  *
158  * DESCRIPTION
159  *
160  *    Writes a buffer to the file.  If the file is created the specified `mode'
161  *    is set to the file.
162  *
163  ***/
164 int silc_file_writefile_mode(const char *filename, const char *buffer,
165 			     SilcUInt32 len, int mode);
166 
167 /****f* silcutil/SilcFileUtilAPI/silc_file_size
168  *
169  * SYNOPSIS
170  *
171  *    SilcUInt64 silc_file_size(const char *filename);
172  *
173  * DESCRIPTION
174  *
175  *    Returns the size of `filename'. Returns 0 on error.
176  *
177  ***/
178 SilcUInt64 silc_file_size(const char *filename);
179 
180 #endif	/* !SILCFILEUTIL_H */
181