52#ifndef QSC_FILEUTILS_H
53#define QSC_FILEUTILS_H
58QSC_CPLUSPLUS_ENABLED_START
87#define QSC_FILEUTILS_CHUNK_SIZE 128U
93#define QSC_FILEUTILS_MAX_LINE_SIZE (1024U * 1024U)
99#define QSC_FILEUTILS_MAX_EXTENSION 16U
105#define QSC_FILEUTILS_MAX_FILENAME QSC_SYSTEM_MAX_PATH
111#define QSC_FILEUTILS_MAX_PATH QSC_SYSTEM_MAX_PATH
113#if defined(QSC_SYSTEM_OS_WINDOWS)
117 static const char QSC_FILEUTILS_DIRECTORY_SEPERATOR[] =
"\\";
122 static const char QSC_FILEUTILS_DIRECTORY_SEPERATOR[] =
"/";
132#if defined(QSC_SYSTEM_OS_WINDOWS)
456#if defined(QSC_DEBUG_MODE)
460QSC_CPLUSPLUS_ENABLED_END
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:1183
QSC_EXPORT_API size_t qsc_fileutils_get_extension(char *extension, size_t extlen, const char *fpath)
Get the file extension.
Definition fileutils.c:479
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:1161
QSC_EXPORT_API bool qsc_fileutils_get_working_directory(char *fpath, size_t flen)
Get the working directory fpath.
Definition fileutils.c:659
qsc_fileutils_access_rights
Enumerates the file access rights.
Definition fileutils.h:130
@ qsc_fileutils_access_write
Definition fileutils.h:138
@ qsc_fileutils_access_read
Definition fileutils.h:137
@ qsc_fileutils_access_exists
Definition fileutils.h:131
@ qsc_fileutils_access_execute
Definition fileutils.h:139
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:1033
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:842
QSC_EXPORT_API bool qsc_fileutils_exists(const char *fpath)
Test to see if a file exists.
Definition fileutils.c:366
QSC_EXPORT_API size_t qsc_fileutils_get_name(char *name, size_t namelen, const char *fpath)
Get the file name.
Definition fileutils.c:512
QSC_EXPORT_API bool qsc_fileutils_create(const char *fpath)
Create a new file.
Definition fileutils.c:268
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:175
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:922
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:1003
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:206
QSC_EXPORT_API size_t qsc_fileutils_get_size(const char *fpath)
Get the file size in bytes.
Definition fileutils.c:621
QSC_EXPORT_API bool qsc_fileutils_erase(const char *fpath)
Erase a file's contents.
Definition fileutils.c:313
QSC_EXPORT_API void qsc_fileutils_zeroise(const char *fpath)
Truncate a file to zero bytes.
Definition fileutils.c:1222
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:551
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:430
QSC_EXPORT_API bool qsc_fileutils_truncate_file(FILE *fp, size_t length)
Truncate a file to a specified byte size.
Definition fileutils.c:1086
QSC_EXPORT_API size_t qsc_fileutils_get_directory(char *directory, size_t dirlen, const char *fpath)
Get the file directory.
Definition fileutils.c:449
QSC_EXPORT_API void qsc_fileutils_close(FILE *fp)
Close a file.
Definition fileutils.c:134
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:103
qsc_fileutils_mode
Enumerates the file open modes.
Definition fileutils.h:148
@ qsc_fileutils_mode_append_update
Definition fileutils.h:155
@ qsc_fileutils_mode_write
Definition fileutils.h:152
@ qsc_fileutils_mode_append
Definition fileutils.h:154
@ qsc_fileutils_mode_read
Definition fileutils.h:150
@ qsc_fileutils_mode_write_update
Definition fileutils.h:153
@ qsc_fileutils_mode_none
Definition fileutils.h:149
@ qsc_fileutils_mode_read_update
Definition fileutils.h:151
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:694
QSC_EXPORT_API bool qsc_fileutils_seekto(FILE *fp, size_t position)
Set the file pointer position.
Definition fileutils.c:1064
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:237
QSC_EXPORT_API bool qsc_fileutils_delete(const char *fpath)
Delete a file.
Definition fileutils.c:297
QSC_EXPORT_API void qsc_fileutils_flush(FILE *fp)
Flush a file's contents to disk.
Definition fileutils.c:356
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:144
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:901
QSC_EXPORT_API bool qsc_fileutils_valid_path(const char *fpath)
Checks if the fpath is valid.
Definition fileutils.c:1132
QSC_EXPORT_API bool qsc_fileutils_file_copy(const char *inpath, const char *outpath)
Copy a file to a new location.
Definition fileutils.c:391
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 qsccommon.h:605