Initial code commit for Toolkit 1.1.
[silc.git] / lib / silcutil / silcfileutil.h
1 /*
2
3   silcfileutil.h
4
5   Author: Pekka Riikonen <priikone@silcnet.org>
6
7   Copyright (C) 1997 - 2005 Pekka Riikonen
8
9   This program is free software; you can redistribute it and/or modify
10   it under the terms of the GNU General Public License as published by
11   the Free Software Foundation; version 2 of the License.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
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_readfile
104  *
105  * SYNOPSIS
106  *
107  *    char *silc_file_readfile(const char *filename, SilcUInt32 *return_len);
108  *
109  * DESCRIPTION
110  *
111  *    Reads the content of `filename' to a buffer.  The allocated buffer is
112  *    returned.  This does not NULL terminate the buffer but EOF terminate
113  *    it.  The caller must replace the EOF with NULL if the buffer must be
114  *    NULL terminated.
115  *
116  *    If the `return_len' pointer is not NULL, it's filled with the length of
117  *    the file.
118  *
119  ***/
120 char *silc_file_readfile(const char *filename, SilcUInt32 *return_len);
121
122 /****f* silcutil/SilcFileUtilAPI/silc_file_writefile
123  *
124  * SYNOPSIS
125  *
126  *    int silc_file_writefile(const char *filename, const char *buffer,
127  *                            SilcUInt32 len);
128  *
129  * DESCRIPTION
130  *
131  *    Writes a buffer to the file.  If the file is created specific mode is
132  *    set to the file.
133  *
134  ***/
135 int silc_file_writefile(const char *filename, const char *buffer,
136                         SilcUInt32 len);
137
138 /****f* silcutil/SilcFileUtilAPI/silc_file_writefile_mode
139  *
140  * SYNOPSIS
141  *
142  *    int silc_file_writefile_mode(const char *filename, const char *buffer,
143  *                                 SilcUInt32 len, int mode);
144  *
145  * DESCRIPTION
146  *
147  *    Writes a buffer to the file.  If the file is created the specified `mode'
148  *    is set to the file.
149  *
150  ***/
151 int silc_file_writefile_mode(const char *filename, const char *buffer,
152                              SilcUInt32 len, int mode);
153
154 /****f* silcutil/SilcFileUtilAPI/silc_file_size
155  *
156  * SYNOPSIS
157  *
158  *    SilcUInt64 silc_file_size(const char *filename);
159  *
160  * DESCRIPTION
161  *
162  *    Returns the size of `filename'. Returns 0 on error.
163  *
164  ***/
165 SilcUInt64 silc_file_size(const char *filename);
166
167 #endif  /* !SILCFILEUTIL_H */