summaryrefslogtreecommitdiff
path: root/support/dktools/dk4filei.h
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/dk4filei.h
Initial commit
Diffstat (limited to 'support/dktools/dk4filei.h')
-rw-r--r--support/dktools/dk4filei.h412
1 files changed, 412 insertions, 0 deletions
diff --git a/support/dktools/dk4filei.h b/support/dktools/dk4filei.h
new file mode 100644
index 0000000000..9437cc67c0
--- /dev/null
+++ b/support/dktools/dk4filei.h
@@ -0,0 +1,412 @@
+/*
+ WARNING: This file was generated by dkct.
+ 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: dk4filei.ctr
+*/
+
+/*
+Copyright (C) 2015-2017, Dirk Krause
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above opyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+* Neither the name of the author nor the names of contributors may be used
+ to endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef DK4FILEI_H_INCLUDED
+/** Avoid multiple inclusions. */
+#define DK4FILEI_H_INCLUDED 1
+
+
+#line 9 "dk4filei.ctr"
+
+/** @file
+ Functions for file information.
+*/
+
+#ifndef DK4FILEIT_H_INCLUDED
+#include "dk4fileit.h"
+#endif
+
+#ifndef DK4UFI_H_INCLUDED
+#include "dk4ufi.h"
+#endif
+
+#ifndef DK4ERROR_H_INCLUDED
+#include "dk4error.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Initialize a file information structure.
+ @param dptr File information structure to initialize.
+*/
+void
+dk4fileinfo_init(dk4_file_info_t *dptr);
+
+/** Retrieve full information for a path name.
+ For symbolic links attempt to retrieve information both
+ about the link and about the link target.
+
+ CRT on Windows: Not used.
+ @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).
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or fn is NULL,
+ - DK4_E_SYSTEM<br>
+ with errno value stored in iDetails1 if the stat() function
+ fails on non-Windows systems.
+ - DK4_E_SYSTEM<br>
+ with GetLastError() value stored in lDetails1 if the
+ GetFileAttributes() function failed,
+ - DK4_E_CREATE_FILE_FAILED<br>
+ with GetLastError() value stored in lDetails1 if the
+ CreateFile() function failed on Windows systems,
+ - DK4_E_FILE_INFORMATION_FAILED<br>
+ with GetLastError() value stored in lDetails1 if the
+ GetFileInformationByHandle() function failed on Windows systems,
+ - DK4_E_FINDFIRSTFILE_FAILED<br>
+ with GetLastError() value stored in lDetails1 if the
+ FindFirstFile() function failed on Windows systems.
+*/
+int
+dk4fileinfo_c8(dk4_file_info_t *dptr, const char *fn, dk4_er_t *erp);
+
+/** Retrieve full information for a path name.
+ For symbolic links attempt to retrieve information both
+ about the link and about the link target.
+
+ CRT on Windows: Not used.
+ @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).
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or fn is NULL,
+ - DK4_E_SYSTEM<br>
+ with errno value stored in iDetails1 if the stat() function
+ fails on non-Windows systems.
+ - DK4_E_SYSTEM<br>
+ with GetLastError() value stored in lDetails1 if the
+ GetFileAttributes() function failed,
+ - DK4_E_CREATE_FILE_FAILED<br>
+ with GetLastError() value stored in lDetails1 if the
+ CreateFile() function failed on Windows systems,
+ - DK4_E_FILE_INFORMATION_FAILED<br>
+ with GetLastError() value stored in lDetails1 if the
+ GetFileInformationByHandle() function failed on Windows systems,
+ - DK4_E_FINDFIRSTFILE_FAILED<br>
+ with GetLastError() value stored in lDetails1 if the
+ FindFirstFile() function failed on Windows systems.
+*/
+int
+dk4fileinfo_wc(dk4_file_info_t *dptr, const wchar_t *fn, dk4_er_t *erp);
+
+/** Retrieve full information for a path name.
+ For symbolic links attempt to retrieve information both
+ about the link and about the link target.
+
+ CRT on Windows: Not used.
+ @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).
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or fn is NULL,
+ - DK4_E_SYSTEM<br>
+ with errno value stored in iDetails1 if the stat() function
+ fails on non-Windows systems.
+ - DK4_E_SYSTEM<br>
+ with GetLastError() value stored in lDetails1 if the
+ GetFileAttributes() function failed,
+ - DK4_E_CREATE_FILE_FAILED<br>
+ with GetLastError() value stored in lDetails1 if the
+ CreateFile() function failed on Windows systems,
+ - DK4_E_FILE_INFORMATION_FAILED<br>
+ with GetLastError() value stored in lDetails1 if the
+ GetFileInformationByHandle() function failed on Windows systems,
+ - DK4_E_FINDFIRSTFILE_FAILED<br>
+ with GetLastError() value stored in lDetails1 if the
+ FindFirstFile() function failed on Windows systems.
+*/
+int
+dk4fileinfo(dk4_file_info_t *dptr, const dkChar *fn, dk4_er_t *erp);
+
+/** Retrieve timestamp from file information structure.
+ @param dptr Destination buffer pointer.
+ @param szdptr Destination buffer size.
+ @param fi File information structure.
+ @param chfile For symolic links, choose information source:
+ DK4_FILE_INFO_CONTENTS_DATA_LINK for the link
+ itself,
+ DK4_FILE_INFO_CONTENTS_DATA_TARGET for the link target.
+ @param chtime Choose timestamp:
+ DK4_FILE_INFO_TIME_CREATE for creation time,
+ DK4_FILE_INFO_TIME_MODIFY for modification time,
+ DK4_FILE_INFO_TIME_ACCESS for last access time.
+ @param erp Error report, may be NULL.
+ @return 1 on success, 0 on error.
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or fi is NULL or szdptr is 0,
+ - DK4_E_NOT_FOUND<br>
+ if the required information is not found in the file information
+ structure.
+*/
+int
+dk4fileinfo_timestamp_c8(
+ char *dptr,
+ size_t szdptr,
+ const dk4_file_info_t *fi,
+ int chfile,
+ int chtime,
+ dk4_er_t *erp
+);
+
+/** Retrieve timestamp from file information structure.
+ @param dptr Destination buffer pointer.
+ @param szdptr Destination buffer size (number of wchar_t).
+ @param fi File information structure.
+ @param chfile For symolic links, choose information source:
+ DK4_FILE_INFO_CONTENTS_DATA_LINK for the link
+ itself,
+ DK4_FILE_INFO_CONTENTS_DATA_TARGET for the link target.
+ @param chtime Choose timestamp:
+ DK4_FILE_INFO_TIME_CREATE for creation time,
+ DK4_FILE_INFO_TIME_MODIFY for modification time,
+ DK4_FILE_INFO_TIME_ACCESS for last access time.
+ @param erp Error report, may be NULL.
+ @return 1 on success, 0 on error.
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or fi is NULL or szdptr is 0,
+ - DK4_E_NOT_FOUND<br>
+ if the required information is not found in the file information
+ structure.
+*/
+int
+dk4fileinfo_timestamp_wc(
+ wchar_t *dptr,
+ size_t szdptr,
+ const dk4_file_info_t *fi,
+ int chfile,
+ int chtime,
+ dk4_er_t *erp
+);
+
+/** Retrieve timestamp from file information structure.
+ @param dptr Destination buffer pointer.
+ @param szdptr Destination buffer size (number of dkChar).
+ @param fi File information structure.
+ @param chfile For symolic links, choose information source:
+ DK4_FILE_INFO_CONTENTS_DATA_LINK for the link
+ itself,
+ DK4_FILE_INFO_CONTENTS_DATA_TARGET for the link target.
+ @param chtime Choose timestamp:
+ DK4_FILE_INFO_TIME_CREATE for creation time,
+ DK4_FILE_INFO_TIME_MODIFY for modification time,
+ DK4_FILE_INFO_TIME_ACCESS for last access time.
+ @param erp Error report, may be NULL.
+ @return 1 on success, 0 on error.
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or fi is NULL or szdptr is 0,
+ - DK4_E_NOT_FOUND<br>
+ if the required information is not found in the file information
+ structure.
+*/
+int
+dk4fileinfo_timestamp(
+ dkChar *dptr,
+ size_t szdptr,
+ const dk4_file_info_t *fi,
+ int chfile,
+ int chtime,
+ dk4_er_t *erp
+);
+
+/** Retrieve file type and attributes (file attributes on Windows,
+ permissions on other systems).
+ @param dptr Destination buffer address.
+ @param szdptr Destination buffer size.
+ @param fi File information structure.
+ @param erp Error report, may be NULL.
+ @return 1 on success, 0 on error.
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or fi is NULL or szdptr is 0,
+ - DK4_E_NOT_FOUND<br>
+ if the required information is not available in the file information.
+*/
+int
+dk4fileinfo_type_attributes_c8(
+ char *dptr,
+ size_t szdptr,
+ dk4_file_info_t *fi,
+ dk4_er_t *erp
+);
+
+/** Retrieve file type and attributes (file attributes on Windows,
+ permissions on other systems).
+ @param dptr Destination buffer address.
+ @param szdptr Destination buffer size (number of wchar_t).
+ @param fi File information structure.
+ @param erp Error report, may be NULL.
+ @return 1 on success, 0 on error.
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or fi is NULL or szdptr is 0,
+ - DK4_E_NOT_FOUND<br>
+ if the required information is not available in the file information.
+*/
+int
+dk4fileinfo_type_attributes_wc(
+ wchar_t *dptr,
+ size_t szdptr,
+ dk4_file_info_t *fi,
+ dk4_er_t *erp
+);
+
+/** Retrieve file type and attributes (file attributes on Windows,
+ permissions on other systems).
+ @param dptr Destination buffer address.
+ @param szdptr Destination buffer size (number of dkChar).
+ @param fi File information structure.
+ @param erp Error report, may be NULL.
+ @return 1 on success, 0 on error.
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or fi is NULL or szdptr is 0,
+ - DK4_E_NOT_FOUND<br>
+ if the required information is not available in the file information.
+*/
+int
+dk4fileinfo_type_attributes(
+ dkChar *dptr,
+ size_t szdptr,
+ dk4_file_info_t *fi,
+ dk4_er_t *erp
+);
+
+/** Retrieve unique file identifier from file information structure.
+ @param dptr Pointer to destination variable.
+ @param src File information structure to retrieve information from.
+ @param ch For symbolic links choose between information
+ for link itself (DK4_FILE_INFO_CONTENTS_DATA_LINK)
+ or link target (DK4_FILE_INFO_CONTENTS_DATA_TARGET).
+ @param erp Error report, may be NULL.
+ @return 1 on success, 0 on error.
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or src is NULL,
+ - DK4_E_NOT_FOUND<br>
+ if the information is not present in the file information structure.
+*/
+int
+dk4fileinfo_ufi(
+ dk4_ufi_t *dptr, const dk4_file_info_t *src, int ch, dk4_er_t *erp
+);
+
+/** Check whether the file information structure represents a
+ symbolic link.
+ @param dptr File information structure to check.
+ @return 1 for symbolic links, 0 otherwise.
+*/
+int
+dk4fileinfo_is_symlink(const dk4_file_info_t *dptr);
+
+/** Retrieve file size.
+ @param dptr Pointer to result variable.
+ @param fi File information structure.
+ @param ch Choose information source for symbolic links:
+ DK4_FILE_INFO_CONTENTS_DATA_LINK for the size
+ of the link itself,
+ DK4_FILE_INFO_CONTENTS_DATA_TARGET for the size
+ of the link target.
+ @param erp Error report, may be NULL.
+ @return 1 on success, 0 on error.
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if dptr or fi is NULL,
+ - DK4_E_NOT_FOUND<br>
+ if the required information is not available in the file
+ information structure,
+ - DK4_E_MATH_OVERFLOW<br>
+ if the size calculation results in a numeric overflow.
+*/
+int
+dk4fileinfo_size(
+ dk4_um_t *dptr,
+ const dk4_file_info_t *fi,
+ int ch,
+ dk4_er_t *erp
+);
+
+/** Check whether the file exists and is a regular file.
+ For a symbolic link, the target must exist and be a regular file.
+ @param fi File information already obtained for the file.
+ @param erp Error report, may be NULL.
+ @return 1 if the file exists and is a regular file.
+
+ Error codes:
+ - DK4_E_INVALID_ARGUMENTS<br>
+ if fi is NULL.
+*/
+int
+dk4fileinfo_exists_and_is_regular(const dk4_file_info_t *fi, dk4_er_t *erp);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+
+#endif