diff options
Diffstat (limited to 'support/dktools/dk4getcwdd.ctr')
-rw-r--r-- | support/dktools/dk4getcwdd.ctr | 63 |
1 files changed, 61 insertions, 2 deletions
diff --git a/support/dktools/dk4getcwdd.ctr b/support/dktools/dk4getcwdd.ctr index e7b6eba7cf..16e3df1c2d 100644 --- a/support/dktools/dk4getcwdd.ctr +++ b/support/dktools/dk4getcwdd.ctr @@ -2,7 +2,7 @@ copyright owner = Dirk Krause copyright year = 2015-xxxx -license = bsd +SPDX-License-Identifier: BSD-3-Clause @@ -11,9 +11,20 @@ license = bsd /** @file dk4getcwdd.h Get current working directoy in dkChar. */ +#ifndef DK4CONF_H_INCLUDED +#if DK4_BUILDING_DKTOOLS4 +#include "dk4conf.h" +#else +#include <dktools-4/dk4conf.h> +#endif +#endif #ifndef DK4ERROR_H_INCLUDED +#if DK4_BUILDING_DKTOOLS4 #include "dk4error.h" +#else +#include <dktools-4/dk4error.h> +#endif #endif #ifdef __cplusplus @@ -29,6 +40,29 @@ extern "C" { int dk4getcwd(dkChar *dptr, size_t sz, dk4_er_t *erp); +/** Find current working directory, return string in newly + allocated memory. + @param erp Error report, may be NULL. + @return Valid pointer to newly allocated memory containing + the directory name on success, NULL on error. + On success, use dk4mem_free() to release the memory when done + with it. + + Error codes: + - DK4_E_SYSTEM<br> + with errno in iDetails if getcwd() or _getcwd() failed + or GetLastError() result in iDetails if GetCurrentDirectoryA() + failed. + - DK4_E_INVALID_ARGUMENTS<br> + if src is a NULL pointer, + - DK4_E_MATH_OVERFLOW<br> + on mathematical overflow in size calculation, + - DK4_E_MEMORY<br> + if no memory is available. +*/ +dkChar * +dk4getcwd_dup(dk4_er_t *erp); + #ifdef __cplusplus } #endif @@ -36,7 +70,7 @@ dk4getcwd(dkChar *dptr, size_t sz, dk4_er_t *erp); %% module - +#include "dk4conf.h" #include "dk4getcwdd.h" #if DK4_CHAR_SIZE > 1 @@ -45,6 +79,12 @@ dk4getcwd(dkChar *dptr, size_t sz, dk4_er_t *erp); #include "dk4getcwd8.h" #endif +#if DK4_HAVE_ASSERT_H +#ifndef ASSERT_H_INCLUDED +#include <assert.h> +#define ASSERT_H_INCLUDED 1 +#endif +#endif $!trace-include @@ -54,6 +94,10 @@ $!trace-include int dk4getcwd(dkChar *dptr, size_t sz, dk4_er_t *erp) { +#if DK4_USE_ASSERT + assert(NULL != dptr); + assert(0 < sz); +#endif #if DK4_CHAR_SIZE > 1 return ( dk4getcwd_wc(dptr, sz, erp) @@ -66,3 +110,18 @@ dk4getcwd(dkChar *dptr, size_t sz, dk4_er_t *erp) } + +dkChar * +dk4getcwd_dup(dk4_er_t *erp) +{ +#if DK4_CHAR_SIZE > 1 + return ( + dk4getcwd_wc_dup(erp) + ); +#else + return ( + dk4getcwd_c8_dup(erp) + ); +#endif +} + |