summaryrefslogtreecommitdiff
path: root/support/dktools/dk4appdelfile.ctr
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/dktools/dk4appdelfile.ctr
Initial commit
Diffstat (limited to 'support/dktools/dk4appdelfile.ctr')
-rw-r--r--support/dktools/dk4appdelfile.ctr212
1 files changed, 212 insertions, 0 deletions
diff --git a/support/dktools/dk4appdelfile.ctr b/support/dktools/dk4appdelfile.ctr
new file mode 100644
index 0000000000..f99564b0aa
--- /dev/null
+++ b/support/dktools/dk4appdelfile.ctr
@@ -0,0 +1,212 @@
+%% options
+
+copyright owner = Dirk Krause
+copyright year = 2015-xxxx
+license = bsd
+
+
+
+%% module
+
+
+#include "dk4conf.h"
+#include "dk4types.h"
+
+#if DK4_ON_WINDOWS
+#ifndef WINDOWS_H_INCLUDED
+#include <windows.h>
+#define WINDOWS_H_INCLUDED 1
+#endif
+#endif
+
+#ifndef DK4MEM_H_INCLUDED
+#include "dk4mem.h"
+#endif
+
+#ifndef DK4APP_H_INCLUDED
+#include "dk4app.h"
+#endif
+
+#ifndef DK4DELFILE_H_INCLUDED
+#include "dk4delfile.h"
+#endif
+
+#ifndef DK4STATD_H_INCLUDED
+#include "dk4statd.h"
+#endif
+
+#ifndef DK4CONST_H_INCLUDED
+#include "dk4const.h"
+#endif
+
+#ifndef DK4FILED_H_INCLUDED
+#include "dk4filed.h"
+#endif
+
+#ifndef DK4MAODD_H_INCLUDED
+#include "dk4maodd.h"
+#endif
+
+#ifndef DK4MAODH_H_INCLUDED
+#include "dk4maodh.h"
+#endif
+
+#if DK4_HAVE_ERRNO_H
+#ifndef ERRNO_H_INCLUDED
+#include <errno.h>
+#define ERRNO_H_INCLUDED 1
+#endif
+#endif
+
+
+
+void
+dk4app_del_file_report(const dkChar *fn, const dk4_er_t *erp, dk4_app_t *app)
+{
+#if DK4_ON_WINDOWS
+ dkChar eb1[8 * sizeof(DWORD)];
+ dkChar eb2[8 * sizeof(DWORD)];
+ int res;
+#endif
+ switch (erp->ec) {
+ case DK4_E_NOT_SUPPORTED: {
+ /* ERROR: Failed to delete file, no function available */
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 54, fn);
+ } break;
+#if DK4_ON_WINDOWS
+ case DK4_E_DELETE_FILE_FAILED : {
+ if (ERROR_FILE_NOT_FOUND == (erp->dt).lDetails1) {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 51, fn);
+ goto finished;
+ }
+ if (ERROR_ACCESS_DENIED == (erp->dt).lDetails1) {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 55, fn);
+ goto finished;
+ }
+ res = dk4ma_write_decimal_unsigned(
+ eb1, DK4_SIZEOF(eb1,dkChar), (dk4_um_t)((erp->dt).lDetails1), 0, NULL
+ );
+ if (0 != res) {
+ res = dk4ma_write_hex_unsigned(
+ eb2, DK4_SIZEOF(eb2,dkChar),
+ (dk4_um_t)((erp->dt).lDetails1), 0, NULL
+ );
+ }
+ if (0 != res) {
+ dk4app_log_base7(app,DK4_LL_ERROR,41,69,70,71,fn,eb1,eb2);
+ } else {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 77, fn);
+ }
+ goto finished;
+ } break;
+#endif
+ case DK4_E_UNLINK_FAILED: {
+ switch ((erp->dt).iDetails1) {
+#ifdef EACCES
+ case EACCES: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 55, fn);
+ } break;
+#endif
+#ifdef EBUSY
+ case EBUSY: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 49, fn);
+ } break;
+#endif
+#ifdef EFAULT
+ case EFAULT: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 50, fn);
+ } break;
+#endif
+#ifdef EIO
+ case EIO: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 59, fn);
+ } break;
+#endif
+#ifdef EISDIR
+ case EISDIR: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 52, fn);
+ } break;
+#endif
+#ifdef ELOOP
+ case ELOOP: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 61, fn);
+ } break;
+#endif
+#ifdef ENAMETOOLONG
+ case ENAMETOOLONG: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 65, fn);
+ } break;
+#endif
+#ifdef ENOENT
+ case ENOENT: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 51, fn);
+ } break;
+#endif
+#ifdef ENOMEM
+ case ENOMEM: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 62, fn);
+ } break;
+#endif
+#ifdef ENOTDIR
+ case ENOTDIR: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 150, fn);
+ } break;
+#endif
+#ifdef EPERM
+ case EPERM: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 58, fn);
+ } break;
+#endif
+#ifdef EROFS
+ case EROFS: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 56, fn);
+ } break;
+#endif
+ default: {
+ dk4app_log_with_errno(
+ app, DK4_LL_ERROR, 41, 79, 80, 41, 77, fn, (erp->dt).iDetails1
+ );
+ } break;
+ }
+ } break;
+ default: {
+ dk4app_log_base3(app, DK4_LL_ERROR, 41, 77, fn);
+ } break;
+ }
+#if DK4_ON_WINDOWS
+ finished: ;
+#endif
+}
+
+
+
+int
+dk4app_del_file(const dkChar *fn, dk4_app_t *app)
+{
+ const dkChar *msg[3];
+ dk4_er_t er;
+ int back = 0;
+ if (NULL != fn) {
+ if (NULL != app) {
+ if (0 != dk4app_log_do(app, DK4_LL_DEBUG)) {
+ if ((NULL != app->msg_debug) && (26 < app->sz_msg_debug)) {
+ msg[0] = (app->msg_debug)[26];
+ msg[1] = fn;
+ msg[2] = NULL;
+ dk4app_log_msg(app, DK4_LL_DEBUG, msg, 2);
+ }
+ }
+ }
+ dk4error_init(&er);
+ back = dk4delete_file(fn, &er);
+ if (0 == back) {
+ if (0 != dk4file_exists(fn, NULL)) {
+ dk4app_del_file_report(fn, &er, app);
+ } else {
+ back = 1; /* File does not exist */
+ }
+ }
+ }
+ return back;
+}
+