summaryrefslogtreecommitdiff
path: root/support/dktools/dk4filei8.ctr
diff options
context:
space:
mode:
Diffstat (limited to 'support/dktools/dk4filei8.ctr')
-rw-r--r--support/dktools/dk4filei8.ctr252
1 files changed, 0 insertions, 252 deletions
diff --git a/support/dktools/dk4filei8.ctr b/support/dktools/dk4filei8.ctr
deleted file mode 100644
index b24e293d0e..0000000000
--- a/support/dktools/dk4filei8.ctr
+++ /dev/null
@@ -1,252 +0,0 @@
-%% options
-copyright owner = Dirk Krause
-copyright year = 2015-xxxx
-SPDX-License-Identifier: BSD-3-Clause
-
-%% header
-
-/** @file dk4filei8.h File information for files specified
- by char path name.
-*/
-
-#ifndef DK4FILEIT_H_INCLUDED
-#if DK4_BUILDING_DKTOOLS4
-#include "dk4fileit.h"
-#else
-#include <dktools-4/dk4fileit.h>
-#endif
-#endif
-
-#ifndef DK4ERROR_H_INCLUDED
-#if DK4_BUILDING_DKTOOLS4
-#include "dk4error.h"
-#else
-#include <dktools-4/dk4error.h>
-#endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Retrieve full information for a path name.
- For symbolic links attempt to retrieve information both
- about the link and about the link target.
- @param dptr Pointer to result structure.
- @param fn File path name.
- @param erp Error report, may be NULL.
- @return 1 if information is found, 0 otherwise.
- If information about the link is found and no information about
- the target, the function returns 1 as we can recognize the
- directory item as a dangling link (link with non-existing target).
-*/
-int
-dk4fileinfo_c8(dk4_file_info_t *dptr, const char *fn, dk4_er_t *erp);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-%% module
-
-#include "dk4conf.h"
-#include "dk4filei.h"
-
-#ifndef DK4MEM_H_INCLUDED
-#include "dk4mem.h"
-#endif
-
-#ifndef DK4STAT8_H_INCLUDED
-#include "dk4stat8.h"
-#endif
-
-#ifndef DK4ERROR_H_INCLUDED
-#include "dk4error.h"
-#endif
-
-#if DK4_HAVE_ASSERT_H
-#ifndef ASSERT_H_INCLUDED
-#include <assert.h>
-#define ASSERT_H_INCLUDED 1
-#endif
-#endif
-
-
-
-int
-dk4fileinfo_c8(dk4_file_info_t *dptr, const char *fn, dk4_er_t *erp)
-{
- dk4_er_t er;
-#if DK4_ON_WINDOWS
- WIN32_FIND_DATAA ffdata;
- HANDLE ha;
- DWORD dwatt;
- int i;
- int found;
- int isdir;
-#endif
- int back = 0;
-#if DK4_USE_ASSERT
- assert(NULL != dptr);
- assert(NULL != fn);
-#endif
- if ((NULL != dptr) && (NULL != fn)) {
- dk4error_init(&er);
- DK4_MEMRES(dptr, sizeof(dk4_file_info_t));
- dptr->contents = 0;
-#if DK4_ON_WINDOWS
- dptr->rppnt = (DWORD)0UL;
- dptr->fattr = GetFileAttributesA(fn);
- dptr->resio = 0UL;
- if (INVALID_FILE_ATTRIBUTES == dptr->fattr) {
- ha = FindFirstFileA(fn, &ffdata);
- if (INVALID_HANDLE_VALUE != ha) {
- dptr->fattr = ffdata.dwFileAttributes;
- FindClose(ha);
- }
- }
- if (INVALID_FILE_ATTRIBUTES != dptr->fattr) {
- isdir = 0;
- if (0 != (FILE_ATTRIBUTE_DIRECTORY & (dptr->fattr))) { isdir = 1; }
- /* Symlink */
- found = 0;
- for (i = 0; ((3 > i) && (0 == found)); i++) {
- dwatt = dptr->fattr;
- dwatt |= FILE_FLAG_OPEN_REPARSE_POINT;
- if (0 != isdir) { dwatt |= FILE_FLAG_BACKUP_SEMANTICS; }
- ha = CreateFileA(
- fn,
- (
- (0 == i)
- ? (0) : ((1 == i) ? (FILE_READ_ATTRIBUTES) : (GENERIC_READ))
- ),
- (FILE_SHARE_READ | FILE_SHARE_WRITE),
- NULL,
- OPEN_EXISTING,
- dwatt,
- NULL
- );
- if (INVALID_HANDLE_VALUE != ha) {
- if (GetFileInformationByHandle(ha, &(dptr->linfo))) {
- found = 1;
- back = 1;
- dptr->contents |= DK4_FILE_INFO_CONTENTS_DATA_LINK;
- } else {
- if (1 == i) {
- dk4error_set_ldetails(
- &er, DK4_E_FILE_INFORMATION_FAILED,
- (long)((unsigned long)GetLastError())
- );
- }
- }
- CloseHandle(ha);
- } else {
- if (1 == i) {
- dk4error_set_ldetails(
- &er, DK4_E_CREATE_FILE_FAILED,
- (long)((unsigned long)GetLastError())
- );
- }
- }
- }
- /* Target */
- found = 0;
- for (i = 0; ((3 > i) && (0 == found)); i++) {
- dwatt = dptr->fattr;
- if (0 != isdir) { dwatt |= FILE_FLAG_BACKUP_SEMANTICS; }
- ha = CreateFileA(
- fn,
- (
- (0 == i)
- ? (0)
- : ((1 == i) ? (FILE_READ_ATTRIBUTES) : (GENERIC_READ))
- ),
- (FILE_SHARE_READ | FILE_SHARE_WRITE),
- NULL,
- OPEN_EXISTING,
- dwatt,
- NULL
- );
- if (INVALID_HANDLE_VALUE != ha) {
- if (GetFileInformationByHandle(ha, &(dptr->tinfo))) {
- found = 1;
- back = 1;
- dptr->contents |= DK4_FILE_INFO_CONTENTS_DATA_TARGET;
- } else {
- if (1 == i) {
- dk4error_set_ldetails(
- &er, DK4_E_FILE_INFORMATION_FAILED,
- (long)((unsigned long)GetLastError())
- );
- }
- }
- CloseHandle(ha);
- } else {
- if (1 == i) {
- dk4error_set_ldetails(
- &er, DK4_E_CREATE_FILE_FAILED,
- (long)((unsigned long)GetLastError())
- );
- }
- }
- }
- /* FindFirstFile */
- if (0 != back) {
- ha = FindFirstFileA(fn, &ffdata);
- if (INVALID_HANDLE_VALUE != ha) {
- back = 1;
- dptr->fattr = ffdata.dwFileAttributes;
- dptr->rppnt = ffdata.dwReserved0;
- FindClose(ha);
- }
- } else {
- ha = FindFirstFileA(fn, &ffdata);
- if (INVALID_HANDLE_VALUE != ha) {
- back = 1;
- dptr->fattr = ffdata.dwFileAttributes;
- dptr->rppnt = ffdata.dwReserved0;
- dptr->resio = 1UL;
- (dptr->linfo).dwFileAttributes = ffdata.dwFileAttributes;
- (dptr->linfo).ftCreationTime = ffdata.ftCreationTime;
- (dptr->linfo).ftLastAccessTime = ffdata.ftLastAccessTime;
- (dptr->linfo).ftLastWriteTime = ffdata.ftLastWriteTime;
- (dptr->linfo).nFileSizeHigh = ffdata.nFileSizeHigh;
- (dptr->linfo).nFileSizeLow = ffdata.nFileSizeLow;
- (dptr->tinfo).dwFileAttributes = ffdata.dwFileAttributes;
- (dptr->tinfo).ftCreationTime = ffdata.ftCreationTime;
- (dptr->tinfo).ftLastAccessTime = ffdata.ftLastAccessTime;
- (dptr->tinfo).ftLastWriteTime = ffdata.ftLastWriteTime;
- (dptr->tinfo).nFileSizeHigh = ffdata.nFileSizeHigh;
- (dptr->tinfo).nFileSizeLow = ffdata.nFileSizeLow;
- dptr->contents |= DK4_FILE_INFO_CONTENTS_DATA_TARGET;
- dptr->contents |= DK4_FILE_INFO_CONTENTS_DATA_LINK;
- FindClose(ha);
- }
- }
- } else {
- dk4error_set_ldetails(
- &er, DK4_E_SYSTEM,
- (long)((unsigned long)GetLastError())
- );
- }
-#else
- if (0 != dk4stat_l_c8(&(dptr->lstb), fn, &er)) {
- back = 1;
- dptr->contents |= DK4_FILE_INFO_CONTENTS_DATA_LINK;
- }
- if (0 != dk4stat_c8(&(dptr->tstb), fn, &er)) {
- back = 1;
- dptr->contents |= DK4_FILE_INFO_CONTENTS_DATA_TARGET;
- }
-#endif
- if (0 == back) {
- dk4error_copy(erp, &er);
- }
- } else {
- dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
- }
- return back;
-}
-
-