41#ifndef QSC_FILEUTILS_H
42#define QSC_FILEUTILS_H
47QSC_CPLUSPLUS_ENABLED_START
76#define QSC_FILEUTILS_CHUNK_SIZE 4096ULL
82#define QSC_FILEUTILS_MAX_EXTENSION 16ULL
88#define QSC_FILEUTILS_MAX_FILENAME QSC_SYSTEM_MAX_PATH
94#define QSC_FILEUTILS_MAX_PATH QSC_SYSTEM_MAX_PATH
96#if defined(QSC_SYSTEM_OS_WINDOWS)
100 static const char QSC_FILEUTILS_DIRECTORY_SEPERATOR[] =
"\\";
105 static const char QSC_FILEUTILS_DIRECTORY_SEPERATOR[] =
"/";
115#if defined(QSC_SYSTEM_OS_WINDOWS)
431#if defined(QSC_DEBUG_MODE)
435QSC_CPLUSPLUS_ENABLED_END
Contains common definitions for the Quantum Secure Cryptographic (QSC) library.
#define QSC_EXPORT_API
API export macro for Microsoft compilers when importing from a DLL.
Definition common.h:520
QSC_EXPORT_API bool qsc_fileutils_write_line(const char *fpath, const char *input, size_t inplen)
Append a line of text to the end of a file.
Definition fileutils.c:1160
QSC_EXPORT_API size_t qsc_fileutils_get_extension(char *extension, size_t extlen, const char *fpath)
Get the file extension.
Definition fileutils.c:459
QSC_EXPORT_API size_t qsc_fileutils_write(const char *input, size_t inplen, size_t position, FILE *fp)
Write data to a file.
Definition fileutils.c:1138
qsc_fileutils_access_rights
Enumerates the file access rights.
Definition fileutils.h:113
@ qsc_fileutils_access_write
Definition fileutils.h:121
@ qsc_fileutils_access_read
Definition fileutils.h:120
@ qsc_fileutils_access_exists
Definition fileutils.h:114
@ qsc_fileutils_access_execute
Definition fileutils.h:122
QSC_EXPORT_API size_t qsc_fileutils_safe_write(const char *fpath, size_t position, const char *input, size_t length)
Write data to a binary file.
Definition fileutils.c:1020
QSC_EXPORT_API FILE * qsc_fileutils_open(const char *fpath, qsc_fileutils_mode mode, bool binary)
Open a file and return the handle.
Definition fileutils.c:836
QSC_EXPORT_API bool qsc_fileutils_exists(const char *fpath)
Test to see if a file exists.
Definition fileutils.c:349
QSC_EXPORT_API size_t qsc_fileutils_get_name(char *name, size_t namelen, const char *fpath)
Get the file name.
Definition fileutils.c:492
QSC_EXPORT_API bool qsc_fileutils_create(const char *fpath)
Create a new file.
Definition fileutils.c:262
QSC_EXPORT_API size_t qsc_fileutils_copy_file_to_stream(const char *fpath, char *stream, size_t length)
Copy elements from a file to a byte array.
Definition fileutils.c:169
QSC_EXPORT_API int64_t qsc_fileutils_read_line(const char *fpath, char *buffer, size_t buflen, size_t linenum)
Read a line of text from a file.
Definition fileutils.c:911
QSC_EXPORT_API bool qsc_fileutils_get_working_directory(char *fpath)
Get the working directory fpath.
Definition fileutils.c:647
QSC_EXPORT_API size_t qsc_fileutils_safe_read(const char *fpath, size_t position, char *output, size_t length)
Read data from a binary file.
Definition fileutils.c:990
QSC_EXPORT_API bool qsc_fileutils_copy_object_to_file(const char *fpath, const void *obj, size_t length)
Copy an object to a file.
Definition fileutils.c:200
QSC_EXPORT_API size_t qsc_fileutils_get_size(const char *fpath)
Get the file size in bytes.
Definition fileutils.c:612
QSC_EXPORT_API bool qsc_fileutils_erase(const char *fpath)
Erase a file's contents.
Definition fileutils.c:307
QSC_EXPORT_API void qsc_fileutils_zeroise(const char *fpath)
Truncate a file to zero bytes.
Definition fileutils.c:1200
QSC_EXPORT_API int64_t qsc_fileutils_get_line(char **line, size_t *length, FILE *fp)
Reads a line of text from a formatted file.
Definition fileutils.c:531
QSC_EXPORT_API bool qsc_fileutils_get_access(const char *fpath, qsc_fileutils_access_rights level)
Test a user's access right to a file.
Definition fileutils.c:410
QSC_EXPORT_API bool qsc_fileutils_truncate_file(FILE *fp, size_t length)
Truncate a file to a specified byte size.
Definition fileutils.c:1071
QSC_EXPORT_API size_t qsc_fileutils_get_directory(char *directory, size_t dirlen, const char *fpath)
Get the file directory.
Definition fileutils.c:429
QSC_EXPORT_API void qsc_fileutils_close(FILE *fp)
Close a file.
Definition fileutils.c:127
QSC_EXPORT_API bool qsc_fileutils_append_to_file(const char *fpath, const char *stream, size_t length)
Append an array of characters to a file.
Definition fileutils.c:95
qsc_fileutils_mode
Enumerates the file open modes.
Definition fileutils.h:131
@ qsc_fileutils_mode_append_update
Definition fileutils.h:138
@ qsc_fileutils_mode_write
Definition fileutils.h:135
@ qsc_fileutils_mode_append
Definition fileutils.h:137
@ qsc_fileutils_mode_read
Definition fileutils.h:133
@ qsc_fileutils_mode_write_update
Definition fileutils.h:136
@ qsc_fileutils_mode_none
Definition fileutils.h:132
@ qsc_fileutils_mode_read_update
Definition fileutils.h:134
QSC_EXPORT_API size_t qsc_fileutils_list_files(char *result, size_t reslen, const char *directory)
Get the filenames in a directory delineated with a newline.
Definition fileutils.c:686
QSC_EXPORT_API bool qsc_fileutils_seekto(FILE *fp, size_t position)
Set the file pointer position.
Definition fileutils.c:1051
QSC_EXPORT_API bool qsc_fileutils_copy_stream_to_file(const char *fpath, const char *stream, size_t length)
Copy the contents of a stream to a file.
Definition fileutils.c:231
QSC_EXPORT_API bool qsc_fileutils_delete(const char *fpath)
Delete a file.
Definition fileutils.c:291
QSC_EXPORT_API size_t qsc_fileutils_copy_file_to_object(const char *fpath, void *obj, size_t length)
Copy a file to an object.
Definition fileutils.c:138
QSC_EXPORT_API size_t qsc_fileutils_read(char *output, size_t otplen, size_t position, FILE *fp)
Read data from a file into an output stream.
Definition fileutils.c:890
QSC_EXPORT_API bool qsc_fileutils_valid_path(const char *fpath)
Checks if the fpath is valid.
Definition fileutils.c:1109
QSC_EXPORT_API bool qsc_fileutils_file_copy(const char *inpath, const char *outpath)
Copy a file to a new location.
Definition fileutils.c:374