myMPD
Internal API documentation
Loading...
Searching...
No Matches
filehandler.c File Reference

File handling. More...

#include "compile_time.h"
#include "src/lib/filehandler.h"
#include "dist/sds/sds.h"
#include "src/lib/log.h"
#include "src/lib/sds/sds_extras.h"
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <time.h>
#include <unistd.h>
#include <utime.h>
Include dependency graph for filehandler.c:

Functions

bool update_mtime (const char *filename)
time_t get_mtime (const char *filepath)
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 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 rename_file (const char *src, const char *dst)
bool rm_file (const char *filepath)
int try_rm_file (const char *filepath)
bool write_data_to_file (const char *filepath, const char *data, size_t data_len)
bool clean_directory (const char *dir_name)
bool rm_directory (const char *dir_name)
bool clean_rm_directory (const char *dir_name)

Detailed Description

File handling.

Function Documentation

◆ clean_directory()

bool clean_directory ( const char * dir_name)

Removes all regular files from a directory

Parameters
dir_namedirectory 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_namedirectory 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
filepathfilepath to create
Returns
bool true on success, else false

◆ get_mtime()

time_t get_mtime ( const char * filepath)

Returns the modification time of a file

Parameters
filepathfilepath
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_namedirectory 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
filepathfilepath 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
srcsource filename
dstdestination 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
fpFILE pointer
tmp_filetmp file to close and move
write_rcif 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_namedirectory to remove
Returns
true on success, else false

◆ rm_file()

bool rm_file ( const char * filepath)

Removes a file and reports all errors

Parameters
filepathfilepath to remove
Returns
true on success else false

◆ testdir()

int testdir ( const char * desc,
const char * dir_name,
bool create,
bool silent )

Checks if dir exists

Parameters
descdescriptive name
dir_namedirectory path to check
createtrue creates the directory
silenttrue 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
filenamefilename 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
filepathfilepath 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
filenamefile 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
filepathfilepath to write to
datadata to write
data_lendata length to write
Returns
true on success else false