summaryrefslogtreecommitdiff
path: root/support/dktools/dk4getcwdd.ctr
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-09-20 03:03:26 +0000
committerNorbert Preining <norbert@preining.info>2020-09-20 03:03:26 +0000
commit1f457376b478257b88d4a857f5ec1b6155442dd7 (patch)
tree2a06a60551dea362cf8cb0cb0ba66c78608717c4 /support/dktools/dk4getcwdd.ctr
parentac690ca29ad5bf8a5203a65fd6252f7b564f4727 (diff)
CTAN sync 202009200303
Diffstat (limited to 'support/dktools/dk4getcwdd.ctr')
-rw-r--r--support/dktools/dk4getcwdd.ctr63
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
+}
+