/* Copyright (C) 2015-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). 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: dk4fileiu.ctr */ /** @file dk4fileiu.c The dk4fileiu module. */ #line 64 "dk4fileiu.ctr" #include "dk4conf.h" #include "dk4filei.h" #if DK4_HAVE_ASSERT_H #ifndef ASSERT_H_INCLUDED #include #define ASSERT_H_INCLUDED 1 #endif #endif #line 77 "dk4fileiu.ctr" #if DK4_ON_WINDOWS static void dk4fileinfo_copy_ufi( dk4_ufi_t *uptr, const BY_HANDLE_FILE_INFORMATION *bhfi ) { uptr->ser = bhfi->dwVolumeSerialNumber; uptr->inh = bhfi->nFileIndexHigh; uptr->inl = bhfi->nFileIndexLow; } #else static void dk4fileinfo_copy_ufi( dk4_ufi_t *uptr, const dk4_stat_t *stb ) { uptr->dev = stb->st_dev; uptr->ino = stb->st_ino; } #endif int dk4fileinfo_ufi( dk4_ufi_t *dptr, const dk4_file_info_t *src, int ch, dk4_er_t *erp ) { int back = 0; #if DK4_USE_ASSERT assert(NULL != dptr); assert(NULL != src); #endif if ((NULL != dptr) && (NULL != src)) { switch (ch) { case DK4_FILE_INFO_CONTENTS_DATA_LINK: { if (0 != (DK4_FILE_INFO_CONTENTS_DATA_LINK & (src->contents))) { back = 1; #if DK4_ON_WINDOWS if ((DWORD)0UL == src->resio) { dk4fileinfo_copy_ufi(dptr, &(src->linfo)); } else { back = 0; dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); } #else dk4fileinfo_copy_ufi(dptr, &(src->lstb)); #endif } else { dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); } } break; default: { if (0 != (DK4_FILE_INFO_CONTENTS_DATA_TARGET & (src->contents))) { back = 1; #if DK4_ON_WINDOWS if ((DWORD)0UL == src->resio) { dk4fileinfo_copy_ufi(dptr, &(src->tinfo)); } else { back = 0; dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); } #else dk4fileinfo_copy_ufi(dptr, &(src->tstb)); #endif } else { dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); } } break; } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } return back; }