/* 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: dk4exepw.ctr */ /** @file dk4exepw.c The dk4exepw module. */ #line 66 "dk4exepw.ctr" #include "dk4conf.h" #ifndef DK4USE_H_INCLUDED #include "dk4use.h" #endif #ifndef DK4EXEPW_H_INCLUDED #include "dk4exepw.h" #endif #ifndef DK4STRW_H_INCLUDED #include "dk4strw.h" #endif #ifndef DK4MEM_H_INCLUDED #include "dk4mem.h" #endif #ifndef DK4PATHW_H_INCLUDED #include "dk4pathw.h" #endif #ifndef DK4STATW_H_INCLUDED #include "dk4statw.h" #endif #ifndef DK4STAT_H_INCLUDED #include "dk4stat.h" #endif #if DK4_ON_WINDOWS #ifndef WINDOWS_H_INCLUDED #include #define WINDOWS_H_INCLUDED 1 #endif #ifndef WINBASE_H_INCLUDED #include #define WINBASE_H_INCLUDED 1 #endif #endif #if DK4_HAVE_SYS_TYPES_H #ifndef SYS_TYPES_H_INCLUDED #include #define SYS_TYPES_H_INCLUDED 1 #endif #endif #if DK4_HAVE_SYS_STAT_H #ifndef SYS_STAT_H_INCLUDED #include #define SYS_STAT_H_INCLUDED 1 #endif #endif #ifndef STDLIB_H_INCLUDED #include #define STDLIB_H_INCLUDED 1 #endif #if DK4_HAVE_UNISTD_H #ifndef UNISTD_H_INCLUDED #include #define UNISTD_H_INCLUDED 1 #endif #endif #if DK4_HAVE_STRING_H #ifndef STRING_H_INCLUDED #include #define STRING_H_INCLUDED 1 #endif #endif #include "dk4unused.h" #if DK4_HAVE_ASSERT_H #ifndef ASSERT_H_INCLUDED #include #define ASSERT_H_INCLUDED 1 #endif #endif #line 152 "dk4exepw.ctr" #if 0 static const wchar_t * const dk4execpath_wc_kw[] = { /* 0 */ L"PATH", #if DK4_HAVE_BACKSLASH_AS_SEP /* 1 */ L"\\", #else /* 1 */ L"/", #endif NULL }; #endif #if DK4_USE_PRAGMA_WARNING_DISABLE #pragma warning( push ) #pragma warning( disable: 4100 ) #endif int dk4execpath_wc( #if DK4_ON_WINDOWS wchar_t *buffer, size_t sz, const wchar_t * DK4_ARG_UNUSED(argv0), #else wchar_t * DK4_ARG_UNUSED(buffer), size_t DK4_ARG_UNUSED(sz), const wchar_t * DK4_ARG_UNUSED(argv0), #endif dk4_er_t *erp ) { #if DK4_ON_WINDOWS DWORD res; DWORD dwsz; #endif int back = 0; #if DK4_ON_WINDOWS DK4_UNUSED_ARG(argv0) #line 196 "dk4exepw.ctr" #if DK4_USE_ASSERT assert(NULL != buffer); assert(0 < sz); #endif if ((NULL != buffer) && (0 < sz)) { if ((dk4_um_t)0xFFFFFFFFUL >= (dk4_um_t)sz) { dwsz = (DWORD)sz; } else { dwsz = (DWORD)0xFFFFFFFFUL; } res = GetModuleFileNameW(GetModuleHandle(NULL), buffer, dwsz); if (0 < res) { if ((dk4_um_t)res < (dk4_um_t)sz) { back = 1; #line 210 "dk4exepw.ctr" buffer[res] = L'\0'; } else { #line 212 "dk4exepw.ctr" dk4error_set_simple_error_code(erp, DK4_E_BUFFER_TOO_SMALL); } } else { #line 215 "dk4exepw.ctr" /* ERROR: Not found */ dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); } } else { #line 219 "dk4exepw.ctr" dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } #else #line 223 "dk4exepw.ctr" DK4_UNUSED_ARG(buffer) DK4_UNUSED_ARG(sz) DK4_UNUSED_ARG(argv0) dk4error_set_simple_error_code(erp, DK4_E_NOT_SUPPORTED); #endif #line 229 "dk4exepw.ctr" return back; } #if DK4_USE_PRAGMA_WARNING_DISABLE #pragma warning( pop ) #endif