switched to 3.9.7 defaults
[psensor-pkg-ubuntu.git] / src / lib / pio.h
1 /*
2     Copyright (C) 2010-2014 jeanfi@gmail.com
3
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU General Public License
15     along with this program; if not, write to the Free Software
16     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17     02110-1301 USA
18 */
19
20 #ifndef _P_IO_H
21 #define _P_IO_H
22
23 #define P_IO_VER 4
24
25 /* Returns '1' if a given 'path' denotates a directory else returns
26    0 */
27 int is_dir(const char *path);
28
29 /* Returns '1' if a given 'path' denotates a file else returns
30    0 */
31 int is_file(const char *path);
32
33 /*  Returns a normalized path */
34 char *path_normalize(const char *dpath);
35
36 /*  Returns the null-terminated entries of a directory */
37 char **dir_list(const char *dpath, int (*filter) (const char *path));
38 void paths_free(char **paths);
39
40 char *path_append(const char *dir, const char *path);
41
42 /*
43    Returns the size of a file.
44    Returns '-1' if the size cannot be retrieved or not a file.
45 */
46 long file_get_size(const char *path);
47
48 /*
49    Returns the content of a file.
50    Returns 'NULL' if the file cannot be read or failed to allocate
51    enough memory.
52    Returns an empty string if the file exists but is empty.
53 */
54 char *file_get_content(const char *path);
55
56 enum file_copy_error {
57         FILE_COPY_ERROR_OPEN_SRC = 1,
58         FILE_COPY_ERROR_OPEN_DST,
59         FILE_COPY_ERROR_READ,
60         FILE_COPY_ERROR_WRITE,
61         FILE_COPY_ERROR_ALLOC_BUFFER
62 };
63
64 void file_copy_print_error(int code, const char *src, const char *dst);
65
66 /*
67   Copy a file.
68
69   Returns '0' if sucessfull, otherwise return the error code.
70 */
71 int file_copy(const char *src, const char *dst);
72
73 int dir_rcopy(const char *, const char *);
74
75 void mkdirs(const char *dirs, mode_t mode);
76
77 #endif