/* 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: dk4pathd.ctr */ /** @file dk4pathd.c The dk4pathd module. */ #line 274 "dk4pathd.ctr" #include "dk4conf.h" #include "dk4pathd.h" #if DK4_CHAR_SIZE > 1 #include "dk4pathw.h" #else #include "dk4path8.h" #endif #if DK4_HAVE_ASSERT_H #ifndef ASSERT_H_INCLUDED #include #define ASSERT_H_INCLUDED 1 #endif #endif #include "dk4mem.h" #include "dk4mpl.h" #include "dk4strd.h" #line 299 "dk4pathd.ctr" int dk4path_is_absolute(const dkChar *path) { #if DK4_USE_ASSERT assert(NULL != path); #endif #if DK4_CHAR_SIZE > 1 return (dk4pathw_is_absolute(path)); #else return (dk4path8_is_absolute(path)); #endif } int dk4path_is_relative(const dkChar *path) { #if DK4_USE_ASSERT assert(NULL != path); #endif #if DK4_CHAR_SIZE > 1 return (dk4pathw_is_relative(path)); #else return (dk4path8_is_relative(path)); #endif } int dk4path_append( dkChar *buffer, size_t sz, const dkChar *filename, dk4_er_t *erp ) { #if DK4_USE_ASSERT assert(NULL != buffer); assert(0 < sz); assert(NULL != filename); #endif #if DK4_CHAR_SIZE > 1 return (dk4pathw_append(buffer, sz, filename, erp)); #else return (dk4path8_append(buffer, sz, filename, erp)); #endif } dkChar * dk4path_get_suffix(const dkChar *filename, dk4_er_t *erp) { #if DK4_USE_ASSERT assert(NULL != filename); #endif #if DK4_CHAR_SIZE > 1 return (dk4pathw_get_suffix(filename, erp)); #else return (dk4path8_get_suffix(filename, erp)); #endif } void dk4path_correct_sep(dkChar *filename) { #if DK4_USE_ASSERT assert(NULL != filename); #endif #if DK4_CHAR_SIZE > 1 dk4pathw_correct_sep(filename); #else dk4path8_correct_sep(filename); #endif } int dk4path_must_expand(const dkChar *filename) { #if DK4_USE_ASSERT assert(NULL != filename); #endif #if DK4_CHAR_SIZE > 1 return (dk4pathw_must_expand(filename)); #else return (dk4path8_must_expand(filename)); #endif } int dk4path_is_in_subdir(const dkChar *filename,const dkChar *parent,dk4_er_t *erp) { dkChar buf[DK4_MAX_PATH]; size_t szf; size_t szp; int back = 0; #line 404 "dk4pathd.ctr" #if DK4_USE_ASSERT assert(NULL != filename); assert(NULL != parent); #endif if ((NULL != filename) && (NULL != parent)) { if (0 != dk4str_cpy_s(buf, DK4_SIZEOF(buf,dkChar), filename, erp)) { szf = dk4str_len(buf); szp = dk4str_len(parent); if (szf > szp) { #line 413 "dk4pathd.ctr" #if DK4_ON_WINDOWS || DK4_HAVE_BACKSLASH_AS_SEP if (buf[szp] == dkT('\\')) #else if (buf[szp] == dkT('/')) #endif { #line 419 "dk4pathd.ctr" buf[szp] = dkT('\0'); if (0 == dk4str_pathcmp(buf, parent)) { back = 1; #line 422 "dk4pathd.ctr" } #if DK4_ON_WINDOWS || DK4_HAVE_BACKSLASH_AS_SEP buf[szp] = dkT('\\'); #else buf[szp] = dkT('/'); #endif } } else { if (szf == szp) { #line 431 "dk4pathd.ctr" if (0 == dk4str_pathcmp(buf, parent)) { back = 1; #line 433 "dk4pathd.ctr" } } } } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } #line 440 "dk4pathd.ctr" return back; } int dk4path_set_suffix( dkChar *pdst, size_t szdst, dkChar const *srcname, dkChar const *newsu, dk4_er_t *erp ) { #if DK4_USE_ASSERT assert(NULL != pdst); assert(0 < szdst); assert(NULL != srcname); assert(NULL != newsu); #endif #if DK4_CHAR_SIZE > 1 return (dk4pathw_set_suffix(pdst, szdst, srcname, newsu, erp)); #else return (dk4path8_set_suffix(pdst, szdst, srcname, newsu, erp)); #endif } dkChar * dk4path_dup_change_suffix( dkChar const *srcname, dkChar const *newsu, dk4_er_t *erp ) { #if DK4_USE_ASSERT assert(NULL != srcname); assert(NULL != newsu); #endif #if DK4_CHAR_SIZE > 1 return (dk4pathw_dup_change_suffix(srcname, newsu, erp)); #else return (dk4path8_dup_change_suffix(srcname, newsu, erp)); #endif } size_t dk4path_concatenate_size( dkChar const *dirname, dkChar const *filename, dk4_er_t *erp ) { #if DK4_USE_ASSERT assert(NULL != dirname); assert(NULL != filename); #endif #if DK4_CHAR_SIZE > 1 return (dk4pathw_concatenate_size(dirname, filename, erp)); #else return (dk4path8_concatenate_size(dirname, filename, erp)); #endif } int dk4path_concatenate_buffer( dkChar *buffer, size_t szbuf, dkChar const *dirn, dkChar const *filen, dk4_er_t *erp ) { #if DK4_USE_ASSERT assert(NULL != buffer); assert(0 < szbuf); assert(NULL != dirn); assert(NULL != filen); #endif #if DK4_CHAR_SIZE > 1 return (dk4pathw_concatenate_buffer(buffer, szbuf, dirn, filen, erp)); #else return (dk4path8_concatenate_buffer(buffer, szbuf, dirn, filen, erp)); #endif } dkChar * dk4path_concatenate_new( dkChar const *dirn, dkChar const *filen, dk4_er_t *erp ) { #if DK4_USE_ASSERT assert(NULL != dirn); assert(NULL != filen); #endif #if DK4_CHAR_SIZE > 1 return (dk4pathw_concatenate_new(dirn, filen, erp)); #else return (dk4path8_concatenate_new(dirn, filen, erp)); #endif }