File handling.
More...
#include "dist/sds/sds.h"
#include <stdbool.h>
#include <stdio.h>
Go to the source code of this file.
|
enum | testdir_status { DIR_EXISTS = 0
, DIR_CREATED = 1
, DIR_CREATE_FAILED = 2
, DIR_NOT_EXISTS = 3
} |
|
enum | try_rm_file_status { RM_FILE_OK = 0
, RM_FILE_ENOENT = 1
, RM_FILE_ERROR = 2
} |
|
|
bool | update_mtime (const char *filename) |
|
bool | do_chown (const char *file_path, const char *username) |
|
time_t | get_mtime (const char *filepath) |
|
sds | sds_getline (sds s, FILE *fp, size_t max, int *nread) |
|
sds | sds_getfile (sds s, const char *file_path, size_t max, bool remove_newline, bool warn, int *nread) |
|
sds | sds_getfile_from_fp (sds s, FILE *fp, size_t max, bool remove_newline, int *nread) |
|
bool | create_tmp_file (const char *filepath) |
|
FILE * | open_tmp_file (sds filepath) |
|
bool | rename_tmp_file (FILE *fp, sds tmp_file, bool write_rc) |
|
bool | write_data_to_file (const char *filepath, const char *data, size_t data_len) |
|
bool | rm_file (const char *filepath) |
|
int | try_rm_file (const char *filepath) |
|
bool | rename_file (const char *src, const char *dst) |
|
bool | testfile_read (const char *filename) |
|
int | testdir (const char *desc, const char *dir_name, bool create, bool silent) |
|
bool | is_dir (const char *dir_name) |
|
bool | clean_directory (const char *dir_name) |
|
bool | rm_directory (const char *dir_name) |
|
bool | clean_rm_directory (const char *dir_name) |
|
◆ testdir_status
◆ try_rm_file_status
Status of file remove function
◆ clean_directory()
bool clean_directory |
( |
const char * |
dir_name | ) |
|
Removes all regular files from a directory
- Parameters
-
dir_name | directory to cleanup |
- Returns
- true on success, else false
◆ clean_rm_directory()
bool clean_rm_directory |
( |
const char * |
dir_name | ) |
|
Shortcut for clean_directory and rm_directory
- Parameters
-
dir_name | directory to cleanup and remove |
- Returns
- true on success, else false
◆ create_tmp_file()
bool create_tmp_file |
( |
const char * |
filepath | ) |
|
Creates a file in specified path if it does not exists.
- Parameters
-
filepath | filepath to create |
- Returns
- bool true on success, else false
◆ do_chown()
bool do_chown |
( |
const char * |
file_path, |
|
|
const char * |
username |
|
) |
| |
Sets the owner of a file and group to the primary group of the user
- Parameters
-
file_path | file to change ownership |
username | new owner username |
- Returns
- true on success else false
◆ get_mtime()
time_t get_mtime |
( |
const char * |
filepath | ) |
|
Returns the modification time of a file
- Parameters
-
- Returns
- time_t modification time
◆ is_dir()
bool is_dir |
( |
const char * |
dir_name | ) |
|
Checks if dir_name is really a directory entry
- Parameters
-
dir_name | directory path to check |
- Returns
- true if it is a directory, else false
◆ open_tmp_file()
FILE * open_tmp_file |
( |
sds |
filepath | ) |
|
Opens a temporary file for write using mkstemp
- Parameters
-
filepath | filepath to open, e.g. /tmp/test.XXXXXX XXXXXX is replaced with a random string |
- Returns
- FILE pointer
◆ rename_file()
bool rename_file |
( |
const char * |
src, |
|
|
const char * |
dst |
|
) |
| |
Renames a file. src and dst must be in the same filesystem.
- Parameters
-
src | source filename |
dst | destination filename |
- Returns
- true on success, else false
◆ rename_tmp_file()
bool rename_tmp_file |
( |
FILE * |
fp, |
|
|
sds |
tmp_file, |
|
|
bool |
write_rc |
|
) |
| |
Closes the tmp file and moves it to its destination name This is done by removing the last 7 characters from the tmp_file. See open_tmp_file for corresponding open function.
- Parameters
-
fp | FILE pointer |
tmp_file | tmp file to close and move |
write_rc | if false tmp file will be removed |
- Returns
- true on success else false
◆ rm_directory()
bool rm_directory |
( |
const char * |
dir_name | ) |
|
Removes a directory and reports errors
- Parameters
-
dir_name | directory to remove |
- Returns
- true on success, else false
◆ rm_file()
bool rm_file |
( |
const char * |
filepath | ) |
|
Removes a file and reports all errors
- Parameters
-
filepath | filepath to remove |
- Returns
- true on success else false
◆ sds_getfile()
sds sds_getfile |
( |
sds |
s, |
|
|
const char * |
file_path, |
|
|
size_t |
max, |
|
|
bool |
remove_newline, |
|
|
bool |
warn, |
|
|
int * |
nread |
|
) |
| |
Reads a whole file in the sds string s from *fp Removes whitespace characters from start and end
- Parameters
-
s | an already allocated sds string that should hold the file content |
file_path | filename to read |
max | maximum bytes to read |
remove_newline | removes CR/LF if true |
warn | log an error if file does not exist |
nread | Number of bytes read, -1 error reading file, -2 file is too big |
- Returns
- pointer to s
◆ sds_getfile_from_fp()
sds sds_getfile_from_fp |
( |
sds |
s, |
|
|
FILE * |
fp, |
|
|
size_t |
max, |
|
|
bool |
remove_newline, |
|
|
int * |
nread |
|
) |
| |
Reads a whole file in the sds string s from *fp Removes whitespace characters from start and end
- Parameters
-
s | an already allocated sds string that should hold the file content |
fp | FILE pointer to read |
max | maximum bytes to read |
remove_newline | removes CR/LF if true |
nread | Number of bytes read, -2 if file is too big |
- Returns
- pointer to s
◆ sds_getline()
sds sds_getline |
( |
sds |
s, |
|
|
FILE * |
fp, |
|
|
size_t |
max, |
|
|
int * |
nread |
|
) |
| |
Getline function that trims whitespace characters
- Parameters
-
s | an already allocated sds string |
fp | a file descriptor to read from |
max | max line length to read |
nread | Number of bytes read, -1 on EOF |
- Returns
- Pointer to s
◆ testdir()
int testdir |
( |
const char * |
desc, |
|
|
const char * |
dir_name, |
|
|
bool |
create, |
|
|
bool |
silent |
|
) |
| |
Checks if dir exists
- Parameters
-
desc | descriptive name |
dir_name | directory path to check |
create | true creates the directory |
silent | true to report only errors |
- Returns
- enum testdir_status
◆ testfile_read()
bool testfile_read |
( |
const char * |
filename | ) |
|
Checks if a filename can be opened read-only
- Parameters
-
filename | filename to check |
- Returns
- true on success, else false
◆ try_rm_file()
int try_rm_file |
( |
const char * |
filepath | ) |
|
Removes a file and ignores none existing error
- Parameters
-
filepath | filepath to remove |
- Returns
- RM_FILE_ENOENT if file does not exist RM_FILE_ERROR error from unlink call RM_FILE_OK file was removed
◆ update_mtime()
bool update_mtime |
( |
const char * |
filename | ) |
|
Updates the timestamp of a file
- Parameters
-
filename | file to update the timestamp |
- Returns
- true on success, else false
◆ write_data_to_file()
bool write_data_to_file |
( |
const char * |
filepath, |
|
|
const char * |
data, |
|
|
size_t |
data_len |
|
) |
| |
Writes data to a file
- Parameters
-
filepath | filepath to write to |
data | data to write |
data_len | data length to write |
- Returns
- true on success else false