/* 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: dk4fs.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. */ /** @file dk4fs.c The dk4fs module. */ #line 493 "dk4fs.ctr" #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 #line 520 "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"), NULL #line 551 "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 640 "dk4fs.ctr" if ((NULL != dptr) && (0 < szdptr)) { #if DK4_ON_WINDOWS && DK4_WIN_DENY_CRT /* Compression/decompression libraries depend on CRT. */ compressed = 0; #endif #line 647 "dk4fs.ctr" back = dk4file_is_regular(dptr, erp); #line 649 "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 655 "dk4fs.ctr" back = dk4file_is_regular(dptr, erp); #line 657 "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 664 "dk4fs.ctr" back = dk4file_is_regular(dptr, erp); #line 666 "dk4fs.ctr" } if (0 == back) { *eptr = dkT('\0'); } } #endif } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } #line 676 "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 694 "dk4fs.ctr" 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 723 "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 746 "dk4fs.ctr" 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 912 "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 ) { 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 959 "dk4fs.ctr" 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 966 "dk4fs.ctr" back = dk4fs_attempt_file_name(dptr, szdptr, compressed, erp); if (0 != back) { #line 968 "dk4fs.ctr" } } #line 970 "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 ) { 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; #line 1019 "dk4fs.ctr" #line 1020 "dk4fs.ctr" #line 1021 "dk4fs.ctr" #line 1022 "dk4fs.ctr" #line 1023 "dk4fs.ctr" #line 1024 "dk4fs.ctr" #line 1025 "dk4fs.ctr" #line 1026 "dk4fs.ctr" #line 1027 "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 1338 "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 1361 "dk4fs.ctr" back = dk4fs_data_construct_one( dptr, szdptr, shortname, dir_share, language, region, dir_home, name_prog, name_group, passno, erp ); if (0 != back) { #line 1367 "dk4fs.ctr" back = dk4fs_attempt_file_name(dptr, szdptr, compressed, erp); } #line 1369 "dk4fs.ctr" return back; }