/* Copyright (C) 2015-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: dk4path8.ctr */ #ifndef DK4PATH8_H_INCLUDED /** Avoid multiple inclusions. */ #define DK4PATH8_H_INCLUDED 1 #line 9 "dk4path8.ctr" /** @file String operations for path names (8 bit characters). */ #ifndef DK4CONF_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4conf.h" #else #include #endif #endif #ifndef DK4TYPES_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4types.h" #else #include #endif #endif #ifndef DK4ERROR_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4error.h" #else #include #endif #endif #ifdef __cplusplus extern "C" { #endif /** Check whether a file name is an absolute path. CRT on Windows: Not used. @param path Path name to check. @return 1 for absolute path, 0 for other path. */ int dk4path8_is_absolute(const char *path); /** Check whether a file name is a relative path. CRT on Windows: Not used. @param path Path name to check. @return 1 for absolute path, 0 for other path. */ int dk4path8_is_relative(const char *path); /** Append path filename to path name already stored in buffer. Resolve . and .. for current directory and parent directory. CRT on Windows: Optional, disabling CRT degrades performance. @param buffer Buffer already containing a path. @param sz Buffer size. @param filename Relative file name to append to buffer. @param erp Error report, may be NULL. @return 1 on success, 0 on error. Error codes: - DK4_E_INVALID_ARGUMENTS
if buffer or filename is NULL or sz is 0, - DK4_E_MATH_OVERFLOW
if filename is too long, - DK4_E_MEMORY
if allocation of a filename copy fails, - DK4_E_SYNTAX
if too many .. in filename, - DK4_E_BUFFER_TOO_SMALL
if buffer size is too small. */ int dk4path8_append(char *buffer, size_t sz, const char *filename, dk4_er_t *erp); /** Find pointer to suffix. CRT on Windows: Not used. @param filename File name to find suffix for. @param erp Error report, may be NULL. @return Pointer to suffix dot if found, NULL otherwise. Error codes: - DK4_E_INVALID_ARGUMENTS
if filename is NULL, - DK4_E_NOT_FOUND
if the file name does not contain a suffix. */ char * dk4path8_get_suffix(const char *filename, dk4_er_t *erp); /** Correct file name separators from slash to backslash on Windows, vice versa on other systems. CRT on Windows: Not used. @param filename File name to correct. */ void dk4path8_correct_sep(char *filename); /** Check whether file name needs expansion on Windows. CRT on Windows: Not used. @param filename File name to check. @return 1 if expansion is necessary, 0 otherwise. */ int dk4path8_must_expand(const char *filename); /** Create file name with specified suffix. @param pdst Destination buffer. @param szdst Size of pdst. @param srcname Source file name. @param newsu New file suffix. @param erp Error report, may be NULL. @return 1 on success, 0 on error. Error codes: - DK4_E_INVALID_ARGUMENTS
if pdst or srcname or newsu is NULL or szdst is 0, - DK4_E_BUFFER_TOO_SMALL
if the dst buffer is too small. - DK4_E_MATH_OVERFLOW
if a mathematical overflow occured in size calculation, */ int dk4path8_set_suffix( char *pdst, size_t szdst, char const *srcname, char const *newsu, dk4_er_t *erp ); /** Create a dynamic copy of a file name with changed suffix. @param srcname Old file name. @param newsu New suffix. @param erp Error report, may be NULL. @return Valid pointer to changed file name on success, NULL on error. On success call dk4mem_free() on the pointer when no longer needed to release the memory. Error codes: - DK4_E_INVALID_ARGUMENTS
if srcname or newsu is NULL, - DK4_E_BUG
if a bug occured, - DK4_E_MATH_OVERFLOW
if a mathematical overflow occured in size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
with mem.elsize and mem.nelem set if there is not enough memory available. */ char * dk4path8_dup_change_suffix( char const *srcname, char const *newsu, dk4_er_t *erp ); /** Calculate buffer size required to concatenate a directory name and a file name. @param dirname Directory name. @param filename File name. @param erp Error report, may be NULL. @return Buffer size for concatenated names including the finalizer byte on success, 0 on error. Error codes: - DK4_E_INVALID_ARGUMENTS
if dirname or filename is NULL, - DK4_E_MATH_OVERFLOW
if the calculation results in a numeric overflow. */ size_t dk4path8_concatenate_size( char const *dirname, char const *filename, dk4_er_t *erp ); /** Concatenate a directory name and a file name into an existing buffer. This function simply concatenates directory name and file name, . and .. for current and parent directory are not resolved. @param buffer Result buffer for combined file name. @param szbuf Buffer size. @param dirn Directory name. @param filen File name. @param erp Error report, may be NULL. @return 1 on success, 0 on error. Error codes: - DK4_E_INVALID_ARGUMENTS
if buffer, dirn or filen is NULL or szbuf is 0, - DK4_E_BUFFER_TOO_SMALL
if the buffer is too small. */ int dk4path8_concatenate_buffer( char *buffer, size_t szbuf, char const *dirn, char const *filen, dk4_er_t *erp ); /** Concatenate a directory name and a file name into newly allocated memory. This function simply concatenates directory name and file name, . and .. for current and parent directory are not resolved. @param dirn Directory name. @param filen File name. @param erp Error report, may be NULL. @return Valid pointer to newly allocated memory containing the concatenation on success, NULL on error. On success use dk4mem_free() to release the memory when done with it. Error codes: - DK4_E_INVALID_ARGUMENTS
if dirn or filen is NULL, - DK4_E_MATH_OVERFLOW
if the size calculation results in a numeric overflow. - DK4_E_MEMORY_ALLOCATION_FAILED
if the memory allocation failed, - DK4_E_BUFFER_TOO_SMALL
if the buffer is too small. */ char * dk4path8_concatenate_new( char const *dirn, char const *filen, dk4_er_t *erp ); #ifdef __cplusplus } #endif #endif