/* 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: dk4fs.ctr */ /** @file dk4fs.c The dk4fs module. */ #line 687 "dk4fs.ctr" #include "dk4conf.h" #include "dk4fs.h" #if 0 #ifndef DK4STAT_H_INCLUDED #include "dk4stat.h" #endif #ifndef DK4STATD_H_INCLUDED #include "dk4statd.h" #endif #endif #ifndef DK4FILED_H_INCLUDED #include "dk4filed.h" #endif #ifndef DK4STRD_H_INCLUDED #include "dk4strd.h" #endif #if DK4_HAVE_ASSERT_H #ifndef ASSERT_H_INCLUDED #include #define ASSERT_H_INCLUDED 1 #endif #endif #line 721 "dk4fs.ctr" /** Constant strings used by this module. */ static const dkChar * const dk4fs_kw[] = { /* 0 */ dkT("dk4app"), /* 1 */ dkT(".dk4app"), /* 2 */ dkT("-site"), /* 3 */ dkT(".gz"), /* 4 */ dkT(".bz2"), /* 5 */ dkT("no-language"), /* 6 */ dkT("dk3app"), /* 7 */ dkT(".dk3app"), /* 8 */ dkT("doc"), /* 9 */ dkT("help"), /* 10 */ dkT("en"), NULL #line 758 "dk4fs.ctr" }; #if DK4_HAVE_BACKSLASH_AS_SEP /** Path name separator. */ static const dkChar dk4fs_sep[] = { dkT("\\") }; #else /** Path name separator. */ static const dkChar dk4fs_sep[] = { dkT("/") }; #endif #if 0 /** Check presence of regular file. CRT on Windows: Optional. @param fn File name. @param erp Error report, may be NULL. @return 1 on success (file exists and is a regular file), 0 otherwise. */ static int dk4fs_check_regular_file( const dkChar *fn, dk4_er_t *erp ) { #if DK4_ON_WINDOWS && (DK4_WIN_AVOID_CRT || DK4_WIN_DENY_CRT) #if DK4_CHAR_SIZE > 1 WIN32_FIND_DATAW ffdata; #els WIN32_FIND_DATAA ffdata; #endif HANDLE ha; DWORD dwattr; int back = 0; #if DK4_CHAR_SIZE > 1 dwattr = GetFileAttributesW(fn); #else dwattr = GetFileAttributesA(fn); #endif if (INVALID_FILE_ATTRIBUTES == dwattr) { #if DK4_CHAR_SIZE > 1 ha = FindFirstFileW(fn, &ffdata); #else ha = FindFirstFileA(fn, &ffdata); #endif if (INVALID_HANDLE_VALUE != ha) { dwattr = ffdata.dwFileAttributes; FindClose(ha); } } if (INVALID_FILE_ATTRIBUTES != dwattr) { if ((DWORD)0UL == (FILE_ATTRIBUTE_DIRECTORY & dwattr)) { if ((DWORD)0UL == (FILE_ATTRIBUTE_DEVICE & dwattr)) { back = 1; } } } return back; #else dk4_stat_t stb; int back = 0; if (0 != dk4stat(&stb, fn, erp)) { if (0 != dk4stat_is_regular(&stb, erp)) { back = 1; } } return back; #endif } #endif int dk4fs_attempt_file_name( dkChar *dptr, size_t szdptr, int compressed, dk4_er_t *erp ) { dkChar *eptr; /* End of name */ int back = 0; #line 847 "dk4fs.ctr" #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < szdptr); #endif if ((NULL != dptr) && (0 < szdptr)) { #if DK4_ON_WINDOWS && DK4_WIN_DENY_CRT /* Compression/decompression libraries depend on CRT. */ compressed = 0; #endif #line 858 "dk4fs.ctr" back = dk4file_is_regular(dptr, erp); #line 860 "dk4fs.ctr" if ((0 == back) && (0 != compressed)) { eptr = dptr; while (dkT('\0') != *eptr) { eptr++; } #if DK4_HAVE_ZLIB_H if (0 != dk4str_cat_s(dptr, szdptr, dk4fs_kw[3], erp)) { #line 866 "dk4fs.ctr" back = dk4file_is_regular(dptr, erp); #line 868 "dk4fs.ctr" } #endif #if DK4_HAVE_BZLIB_H if (0 == back) { *eptr = dkT('\0'); if (0 != dk4str_cat_s(dptr, szdptr, dk4fs_kw[4], erp)) { #line 875 "dk4fs.ctr" back = dk4file_is_regular(dptr, erp); #line 877 "dk4fs.ctr" } if (0 == back) { *eptr = dkT('\0'); } } #endif } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } #line 887 "dk4fs.ctr" return back; } int dk4fs_construct_from_parts( dkChar *dptr, size_t szdptr, const dkChar **comp, size_t ncomp, int site, dk4_er_t *erp ) { size_t i; /* Traverse comp */ int back = 0; /* Function result */ #line 905 "dk4fs.ctr" #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < szdptr); assert(NULL != comp); assert(0 < ncomp); #endif if ((NULL != dptr) && (0 < szdptr) && (NULL != comp) && (0 < ncomp)) { for (i = 0; i < ncomp; i++) { if (0 == i) { if (0 == dk4str_cpy_s(dptr, szdptr, comp[0], erp)) { goto finished; } } else { if (0 != dk4str_cat_s(dptr, szdptr, dk4fs_sep, erp)) { if (0 != dk4str_cat_s(dptr, szdptr, comp[i], erp)) { if ((1 == i) && (0 != site)) { if (0 == dk4str_cat_s(dptr, szdptr, dk4fs_kw[2], erp)) { goto finished; } } } else { goto finished; } } else { goto finished; } } } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } back = 1; finished: if (0 == back) { *dptr = dkT('\0'); } #line 940 "dk4fs.ctr" return back; } int dk4fs_config_construct_compat_one( dkChar *dptr, size_t szdptr, const dkChar *shortname, const dkChar *dir_share, const dkChar *dir_etc, const dkChar *dir_home, const dkChar *name_prog, const dkChar *name_group, int passno, int co3, dk4_er_t *erp ) { const dkChar *ptrs[8]; int back = 0; #line 963 "dk4fs.ctr" #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < szdptr); assert(NULL != shortname); #endif if ((NULL != dptr) && (0 < szdptr) && (NULL != shortname)) { switch (passno) { case DK4_FS_CONF_SHARE_LIB: { if (NULL != dir_share) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[(co3) ? (6) : (0)]; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_ETC_LIB: { if (NULL != dir_etc) { ptrs[0] = dir_etc; ptrs[1] = dk4fs_kw[(co3) ? (6) : (0)]; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_SHARE_LIB_SITE: { if (NULL != dir_share) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[(co3) ? (6) : (0)]; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_ETC_LIB_SITE: { if (NULL != dir_etc) { ptrs[0] = dir_etc; ptrs[1] = dk4fs_kw[(co3) ? (6) : (0)]; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_SHARE_GROUP: { if ((NULL != dir_share) && (NULL != name_group)) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_ETC_GROUP: { if ((NULL != dir_etc) && (NULL != name_group)) { ptrs[0] = dir_etc; ptrs[1] = name_group; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_SHARE_GROUP_SITE: { if ((NULL != dir_share) && (NULL != name_group)) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_ETC_GROUP_SITE: { if ((NULL != dir_etc) && (NULL != name_group)) { ptrs[0] = dir_etc; ptrs[1] = name_group; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_SHARE_APP: { if ((NULL != dir_share) && (NULL != name_prog)) { ptrs[0] = dir_share; ptrs[1] = name_prog; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_ETC_APP: { if ((NULL != dir_etc) && (NULL != name_prog)) { ptrs[0] = dir_etc; ptrs[1] = name_prog; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_SHARE_APP_SITE: { if ((NULL != dir_share) && (NULL != name_prog)) { ptrs[0] = dir_share; ptrs[1] = name_prog; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_ETC_APP_SITE: { if ((NULL != dir_etc) && (NULL != name_prog)) { ptrs[0] = dir_etc; ptrs[1] = name_prog; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_HOME_LIB: { if (NULL != dir_home) { ptrs[0] = dir_home; ptrs[1] = dk4fs_kw[(co3) ? (7) : (1)]; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_HOME_GROUP: { if ((NULL != dir_home) && (NULL != name_group)) { ptrs[0] = dir_home; ptrs[1] = dk4fs_kw[(co3) ? (7) : (1)]; ptrs[2] = name_group; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_HOME_APP: { if ((NULL != dir_home) && (NULL != name_prog)) { ptrs[0] = dir_home; ptrs[1] = dk4fs_kw[(co3) ? (7) : (1)]; ptrs[2] = name_prog; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_CONF_CURRENT_DIR: { ptrs[0] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,1,0,erp); } break; default: { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } break; } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } #line 1134 "dk4fs.ctr" return back; } int dk4fs_config_construct_one( dkChar *dptr, size_t szdptr, const dkChar *shortname, const dkChar *dir_share, const dkChar *dir_etc, const dkChar *dir_home, const dkChar *name_prog, const dkChar *name_group, int passno, dk4_er_t *erp ) { #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < szdptr); assert(NULL != shortname); #endif return( dk4fs_config_construct_compat_one( dptr, szdptr, shortname, dir_share, dir_etc, dir_home, name_prog, name_group, passno, 0, erp ) ); } int dk4fs_config_compat_one( dkChar *dptr, size_t szdptr, const dkChar *shortname, const dkChar *dir_share, const dkChar *dir_etc, const dkChar *dir_home, const dkChar *name_prog, const dkChar *name_group, int passno, int co3, int compressed, dk4_er_t *erp ) { int back; #line 1186 "dk4fs.ctr" #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < szdptr); assert(NULL != shortname); #endif back = dk4fs_config_construct_compat_one( dptr, szdptr, shortname, dir_share, dir_etc, dir_home, name_prog, name_group, passno, co3, erp ); if (0 != back) { #line 1198 "dk4fs.ctr" back = dk4fs_attempt_file_name(dptr, szdptr, compressed, erp); if (0 != back) { #line 1200 "dk4fs.ctr" } } #line 1202 "dk4fs.ctr" return back; } int dk4fs_config_one( dkChar *dptr, size_t szdptr, const dkChar *shortname, const dkChar *dir_share, const dkChar *dir_etc, const dkChar *dir_home, const dkChar *name_prog, const dkChar *name_group, int passno, int compressed, dk4_er_t *erp ) { #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < szdptr); assert(NULL != shortname); #endif return ( dk4fs_config_compat_one( dptr, szdptr, shortname, dir_share, dir_etc, dir_home, name_prog, name_group, passno, 0, compressed, erp ) ); } int dk4fs_data_construct_one( dkChar *dptr, size_t szdptr, const dkChar *shortname, const dkChar *dir_share, const dkChar *language, const dkChar *region, const dkChar *dir_home, const dkChar *name_prog, const dkChar *name_group, int passno, dk4_er_t *erp ) { const dkChar *ptrs[8]; int back = 0; #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < szdptr); assert(NULL != shortname); #endif #line 1261 "dk4fs.ctr" #line 1262 "dk4fs.ctr" #line 1263 "dk4fs.ctr" #line 1264 "dk4fs.ctr" #line 1265 "dk4fs.ctr" #line 1266 "dk4fs.ctr" #line 1267 "dk4fs.ctr" #line 1268 "dk4fs.ctr" #line 1269 "dk4fs.ctr" if ((NULL != dptr) && (0 < szdptr) && (NULL != shortname)) { switch (passno) { case DK4_FS_DATA_SHARE_LIB: { back = dk4fs_config_construct_one( dptr, szdptr, shortname, dir_share, NULL, dir_home, name_prog, name_group, DK4_FS_CONF_SHARE_LIB, erp ); } break; case DK4_FS_DATA_SHARE_LIB_SITE: { back = dk4fs_config_construct_one( dptr, szdptr, shortname, dir_share, NULL, dir_home, name_prog, name_group, DK4_FS_CONF_SHARE_LIB_SITE, erp ); } break; case DK4_FS_DATA_SHARE_GROUP: { back = dk4fs_config_construct_one( dptr, szdptr, shortname, dir_share, NULL, dir_home, name_prog, name_group, DK4_FS_CONF_SHARE_GROUP, erp ); } break; case DK4_FS_DATA_SHARE_GROUP_SITE: { back = dk4fs_config_construct_one( dptr, szdptr, shortname, dir_share, NULL, dir_home, name_prog, name_group, DK4_FS_CONF_SHARE_GROUP_SITE, erp ); } break; case DK4_FS_DATA_SHARE_APP: { back = dk4fs_config_construct_one( dptr, szdptr, shortname, dir_share, NULL, dir_home, name_prog, name_group, DK4_FS_CONF_SHARE_APP, erp ); } break; case DK4_FS_DATA_SHARE_APP_SITE: { back = dk4fs_config_construct_one( dptr, szdptr, shortname, dir_share, NULL, dir_home, name_prog, name_group, DK4_FS_CONF_SHARE_APP_SITE, erp ); } break; case DK4_FS_DATA_SHARE_LIB_LANG: { if ((NULL != dir_share) && (NULL != language)) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[0]; ptrs[2] = language; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_LIB_SITE_LANG: { if ((NULL != dir_share) && (NULL != language)) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[0]; ptrs[2] = language; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_GROUP_LANG: { if ((NULL != dir_share) && (NULL != language) && (NULL != name_group)) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = language; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_GROUP_SITE_LANG: { if ((NULL != dir_share) && (NULL != language) && (NULL != name_group)) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = language; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_APP_LANG: { if ((NULL != dir_share) && (NULL != language) && (NULL != name_prog)) { ptrs[0] = dir_share; ptrs[1] = name_prog; ptrs[2] = language; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_APP_SITE_LANG: { if ((NULL != dir_share) && (NULL != language) && (NULL != name_prog)) { ptrs[0] = dir_share; ptrs[1] = name_prog; ptrs[2] = language; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_LIB_REG: { if ((NULL != dir_share) && (NULL != region)) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[0]; ptrs[2] = dk4fs_kw[5]; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_LIB_SITE_REG: { if ((NULL != dir_share) && (NULL != region)) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[0]; ptrs[2] = dk4fs_kw[5]; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_GROUP_REG: { if ((NULL != dir_share) && (NULL != name_group) && (NULL != region)) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = dk4fs_kw[5]; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_GROUP_SITE_REG: { if ((NULL != dir_share) && (NULL != name_group) && (NULL != region)) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = dk4fs_kw[5]; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_APP_REG: { if ((NULL != dir_share) && (NULL != name_prog) && (NULL != region)) { ptrs[0] = dir_share; ptrs[1] = name_prog; ptrs[2] = dk4fs_kw[5]; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_APP_SITE_REG: { if ((NULL != dir_share) && (NULL != name_prog) && (NULL != region)) { ptrs[0] = dir_share; ptrs[1] = name_prog; ptrs[2] = dk4fs_kw[5]; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_LIB_LANG_REG: { if ((NULL != dir_share) && (NULL != language) && (NULL != region)) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[0]; ptrs[2] = language; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_LIB_SITE_LANG_REG: { if ((NULL != dir_share) && (NULL != language) && (NULL != region)) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[0]; ptrs[2] = language; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_GROUP_LANG_REG: { if ((NULL != dir_share) && (NULL != language)) { if ((NULL != region) && (NULL != name_group)) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = language; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_GROUP_SITE_LANG_REG: { if ((NULL != dir_share) && (NULL != language)) { if ((NULL != region) && (NULL != name_group)) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = language; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_APP_LANG_REG: { if ((NULL != dir_share) && (NULL != language)) { if ((NULL != region) && (NULL != name_prog)) { ptrs[0] = dir_share; ptrs[1] = name_prog; ptrs[2] = language; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_SHARE_APP_SITE_LANG_REG: { if ((NULL != dir_share) && (NULL != language)) { if ((NULL != region) && (NULL != name_prog)) { ptrs[0] = dir_share; ptrs[1] = name_prog; ptrs[2] = language; ptrs[3] = region; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,1,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_HOME_LIB: { if (NULL != dir_home) { ptrs[0] = dir_home; ptrs[1] = dk4fs_kw[1]; ptrs[2] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,3,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_HOME_GROUP: { if ((NULL != dir_home) && (NULL != name_group)) { ptrs[0] = dir_home; ptrs[1] = dk4fs_kw[1]; ptrs[2] = name_group; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_HOME_APP: { if ((NULL != dir_home) && (NULL != name_prog)) { ptrs[0] = dir_home; ptrs[1] = dk4fs_kw[1]; ptrs[2] = name_prog; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DATA_CURRENT_DIR: { back = dk4str_cpy_s(dptr, szdptr, shortname, erp); } break; } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } #line 1580 "dk4fs.ctr" return back; } int dk4fs_doc_construct_one( dkChar *dptr, size_t szdptr, const dkChar *shortname, const dkChar *dir_share, const dkChar *language, const dkChar *region, const dkChar *name_prog, const dkChar *name_group, int passno, dk4_er_t *erp ) { const dkChar *ptrs[8]; int back = 0; #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < szdptr); assert(NULL != shortname); #endif #line 1607 "dk4fs.ctr" #line 1608 "dk4fs.ctr" #line 1609 "dk4fs.ctr" #line 1610 "dk4fs.ctr" #line 1611 "dk4fs.ctr" #line 1612 "dk4fs.ctr" #line 1613 "dk4fs.ctr" #line 1614 "dk4fs.ctr" if ((NULL != dptr) && (0 < szdptr) && (NULL != shortname)) { switch (passno) { case DK4_FS_DOC_GROUP_HELP_PROG_LANG_REG : { if ( (NULL != dir_share) && (NULL != language) && (NULL != region) && (NULL != name_group) && (NULL != name_prog) ) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = dk4fs_kw[9]; ptrs[3] = name_prog; ptrs[4] = language; ptrs[5] = region; ptrs[6] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,7,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_DOC_GROUP_PROG_LANG_REG : { if ( (NULL != dir_share) && (NULL != language) && (NULL != region) && (NULL != name_group) && (NULL != name_prog) ) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[8]; ptrs[2] = name_group; ptrs[3] = dk4fs_kw[9]; ptrs[4] = name_prog; ptrs[5] = language; ptrs[6] = region; ptrs[7] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,8,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_GROUP_HELP_PROG_LANG : { if ( (NULL != dir_share) && (NULL != language) && (NULL != name_group) && (NULL != name_prog) ) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = dk4fs_kw[9]; ptrs[3] = name_prog; ptrs[4] = language; ptrs[5] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,6,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_DOC_GROUP_PROG_LANG : { if ( (NULL != dir_share) && (NULL != language) && (NULL != name_group) && (NULL != name_prog) ) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[8]; ptrs[2] = name_group; ptrs[3] = dk4fs_kw[9]; ptrs[4] = name_prog; ptrs[5] = language; ptrs[6] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,7,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_GROUP_HELP_PROG_EN : { if ( (NULL != dir_share) && (NULL != name_group) && (NULL != name_prog) ) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = dk4fs_kw[9]; ptrs[3] = name_prog; ptrs[4] = dk4fs_kw[10]; ptrs[5] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,6,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_DOC_GROUP_PROG_EN : { if ( (NULL != dir_share) && (NULL != name_group) && (NULL != name_prog) ) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[8]; ptrs[2] = name_group; ptrs[3] = dk4fs_kw[9]; ptrs[4] = name_prog; ptrs[5] = dk4fs_kw[10]; ptrs[6] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,7,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_GROUP_HELP_PROG : { if ( (NULL != dir_share) && (NULL != name_group) && (NULL != name_prog) ) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = dk4fs_kw[9]; ptrs[3] = name_prog; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_DOC_GROUP_PROG : { if ( (NULL != dir_share) && (NULL != name_group) && (NULL != name_prog) ) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[8]; ptrs[2] = name_group; ptrs[3] = dk4fs_kw[9]; ptrs[4] = name_prog; ptrs[5] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,6,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_GROUP_HELP_LANG_REG : { if ( (NULL != dir_share) && (NULL != language) && (NULL != region) && (NULL != name_group) ) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = dk4fs_kw[9]; ptrs[3] = language; ptrs[4] = region; ptrs[5] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,6,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_DOC_GROUP_LANG_REG : { if ( (NULL != dir_share) && (NULL != language) && (NULL != region) && (NULL != name_group) ) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[8]; ptrs[2] = name_group; ptrs[3] = dk4fs_kw[9]; ptrs[4] = language; ptrs[5] = region; ptrs[6] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,7,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_GROUP_HELP_LANG : { if ( (NULL != dir_share) && (NULL != language) && (NULL != name_group) ) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = dk4fs_kw[9]; ptrs[3] = language; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_DOC_GROUP_LANG : { if ( (NULL != dir_share) && (NULL != language) && (NULL != name_group) ) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[8]; ptrs[2] = name_group; ptrs[3] = dk4fs_kw[9]; ptrs[4] = language; ptrs[5] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,6,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_GROUP_HELP_EN : { if ( (NULL != dir_share) && (NULL != name_group) ) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = dk4fs_kw[9]; ptrs[3] = dk4fs_kw[10]; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_DOC_GROUP_EN : { if ( (NULL != dir_share) && (NULL != name_group) ) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[8]; ptrs[2] = name_group; ptrs[3] = dk4fs_kw[9]; ptrs[4] = dk4fs_kw[10]; ptrs[5] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,6,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_GROUP_HELP : { if ( (NULL != dir_share) && (NULL != name_group) ) { ptrs[0] = dir_share; ptrs[1] = name_group; ptrs[2] = dk4fs_kw[9]; ptrs[3] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,4,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; case DK4_FS_DOC_DOC_GROUP : { if ( (NULL != dir_share) && (NULL != name_group) ) { ptrs[0] = dir_share; ptrs[1] = dk4fs_kw[8]; ptrs[2] = name_group; ptrs[3] = dk4fs_kw[9]; ptrs[4] = shortname; back = dk4fs_construct_from_parts(dptr,szdptr,ptrs,5,0,erp); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } break; default : { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } #line 1889 "dk4fs.ctr" return back; } int dk4fs_data_one( dkChar *dptr, size_t szdptr, const dkChar *shortname, const dkChar *dir_share, const dkChar *dir_home, const dkChar *name_prog, const dkChar *name_group, const dkChar *language, const dkChar *region, int passno, int compressed, dk4_er_t *erp ) { int back; #line 1913 "dk4fs.ctr" #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < szdptr); assert(NULL != shortname); #endif back = dk4fs_data_construct_one( dptr, szdptr, shortname, dir_share, language, region, dir_home, name_prog, name_group, passno, erp ); if (0 != back) { #line 1924 "dk4fs.ctr" back = dk4fs_attempt_file_name(dptr, szdptr, compressed, erp); } #line 1926 "dk4fs.ctr" return back; } int dk4fs_doc_one( dkChar *dptr, size_t szdptr, const dkChar *shortname, const dkChar *dir_share, const dkChar *name_prog, const dkChar *name_group, const dkChar *language, const dkChar *region, int passno, dk4_er_t *erp ) { int back; #line 1947 "dk4fs.ctr" #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < szdptr); assert(NULL != shortname); #endif back = dk4fs_doc_construct_one( dptr, szdptr, shortname, dir_share, language, region, name_prog, name_group, passno, erp ); if (0 != back) { #line 1957 "dk4fs.ctr" back = dk4fs_attempt_file_name(dptr, szdptr, 0, erp); } #line 1960 "dk4fs.ctr" return back; }