%% options copyright owner = Dirk Krause copyright year = 2015-xxxx license = bsd %% module #include "dk4filei.h" $!trace-include #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 ((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; }