Commit 9eb2524eb713b382be36a0a1e4e4417ea94f432b
Committed by
GitHub
Exists in
develop
Merge pull request #44 from PerryWerneck/develop
Better search for datafile, updating ci-build.
Showing
5 changed files
with
88 additions
and
18 deletions
Show diff stats
configure.ac
locale/pt_BR.po
| ... | ... | @@ -5,7 +5,7 @@ msgid "" |
| 5 | 5 | msgstr "" |
| 6 | 6 | "Project-Id-Version: pw3270 5.0\n" |
| 7 | 7 | "Report-Msgid-Bugs-To: \n" |
| 8 | -"POT-Creation-Date: 2023-03-13 03:12-0300\n" | |
| 8 | +"POT-Creation-Date: 2023-03-28 21:15-0300\n" | |
| 9 | 9 | "PO-Revision-Date: 2021-09-01 23:53-0300\n" |
| 10 | 10 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" |
| 11 | 11 | "Language-Team: Português <perry.werneck@gmail.com>\n" |
| ... | ... | @@ -2071,7 +2071,7 @@ msgstr "Aguardando resposta do pedido de upload" |
| 2071 | 2071 | msgid "Warning" |
| 2072 | 2072 | msgstr "Alerta" |
| 2073 | 2073 | |
| 2074 | -#: src/core/windows/util.c:126 src/core/windows/util.c:169 | |
| 2074 | +#: src/core/windows/util.c:123 src/core/windows/util.c:166 | |
| 2075 | 2075 | #, c-format |
| 2076 | 2076 | msgid "Windows error %d" |
| 2077 | 2077 | msgstr "Erro windows foi %d" | ... | ... |
src/core/windows/util.c
| ... | ... | @@ -33,6 +33,7 @@ |
| 33 | 33 | #include <windows.h> |
| 34 | 34 | #include <lmcons.h> |
| 35 | 35 | #include <internals.h> |
| 36 | +#include <io.h> | |
| 36 | 37 | |
| 37 | 38 | #include "winversc.h" |
| 38 | 39 | #include <ws2tcpip.h> |
| ... | ... | @@ -219,15 +220,23 @@ LIB3270_EXPORT const char * lib3270_win32_local_charset(void) { |
| 219 | 220 | #define SECS_TO_100NS 10000000ULL /* 10^7 */ |
| 220 | 221 | |
| 221 | 222 | LIB3270_EXPORT char * lib3270_get_installation_path() { |
| 222 | - char lpFilename[4096]; | |
| 223 | + char lpFilename[MAX_PATH+1]; | |
| 223 | 224 | |
| 224 | 225 | memset(lpFilename,0,sizeof(lpFilename)); |
| 225 | - DWORD szPath = GetModuleFileName(hModule,lpFilename,sizeof(lpFilename)); | |
| 226 | + DWORD szPath = GetModuleFileName(hModule,lpFilename,MAX_PATH); | |
| 226 | 227 | lpFilename[szPath] = 0; |
| 227 | 228 | |
| 228 | - char * ptr = strrchr(lpFilename,'\\'); | |
| 229 | - if(ptr) | |
| 230 | - ptr[1] = 0; | |
| 229 | + char *ptr = strrchr(lpFilename,'\\'); | |
| 230 | + if(ptr) { | |
| 231 | + ptr[0] = 0; | |
| 232 | + | |
| 233 | + ptr = strrchr(lpFilename,'\\'); | |
| 234 | + if(ptr && !(strcasecmp(ptr,"\\bin") && strcasecmp(ptr,"\\lib"))) { | |
| 235 | + *ptr = 0; | |
| 236 | + } | |
| 237 | + | |
| 238 | + strncat(lpFilename,"\\",MAX_PATH); | |
| 239 | + } | |
| 231 | 240 | |
| 232 | 241 | return strdup(lpFilename); |
| 233 | 242 | } |
| ... | ... | @@ -274,13 +283,8 @@ static char * build_filename(const char *str, va_list args) { |
| 274 | 283 | |
| 275 | 284 | memset(filename,0,szFilename); |
| 276 | 285 | |
| 277 | -#ifdef DEBUG | |
| 278 | - filename[0] = '.'; | |
| 279 | - filename[1] = '\\'; | |
| 280 | -#else | |
| 281 | 286 | DWORD szPath = GetModuleFileName(hModule,filename,szFilename); |
| 282 | 287 | filename[szPath] = 0; |
| 283 | -#endif // DEBUG | |
| 284 | 288 | |
| 285 | 289 | ptr = strrchr(filename,'\\'); |
| 286 | 290 | if(ptr) { |
| ... | ... | @@ -303,14 +307,74 @@ static char * build_filename(const char *str, va_list args) { |
| 303 | 307 | } |
| 304 | 308 | |
| 305 | 309 | char * lib3270_build_data_filename(const char *str, ...) { |
| 306 | - va_list args; | |
| 307 | - va_start (args, str); | |
| 308 | 310 | |
| 309 | - char *filename = build_filename(str, args); | |
| 311 | + char *ptr; | |
| 312 | + lib3270_autoptr(char) instpath = lib3270_get_installation_path(); | |
| 310 | 313 | |
| 311 | - va_end (args); | |
| 314 | + for(ptr = instpath; *ptr; ptr++) { | |
| 315 | + if(*ptr == '/') { | |
| 316 | + *ptr = '\\'; | |
| 317 | + } | |
| 318 | + } | |
| 312 | 319 | |
| 313 | - return filename; | |
| 320 | + if( *(instpath+strlen(instpath)-1) = '\\') { | |
| 321 | + instpath[strlen(instpath)-1] = 0; | |
| 322 | + } | |
| 323 | + | |
| 324 | + char relative[MAX_PATH+1]; | |
| 325 | + memset(relative,0,MAX_PATH); | |
| 326 | + | |
| 327 | + { | |
| 328 | + va_list args; | |
| 329 | + va_start (args, str); | |
| 330 | + | |
| 331 | + while(str) { | |
| 332 | + | |
| 333 | + if(str[0] == '\\' || str[0] == '/') { | |
| 334 | + strncat(relative,str,MAX_PATH); | |
| 335 | + } else { | |
| 336 | + strncat(relative,"\\",MAX_PATH); | |
| 337 | + strncat(relative,str,MAX_PATH); | |
| 338 | + } | |
| 339 | + | |
| 340 | + str = va_arg(args, const char *); | |
| 341 | + } | |
| 342 | + | |
| 343 | + va_end (args); | |
| 344 | + } | |
| 345 | + | |
| 346 | + for(ptr = relative; *ptr; ptr++) { | |
| 347 | + if(*ptr == '/') { | |
| 348 | + *ptr = '\\'; | |
| 349 | + } | |
| 350 | + } | |
| 351 | + | |
| 352 | + char filename[MAX_PATH+1]; | |
| 353 | + memset(filename,0,MAX_PATH+1); | |
| 354 | + | |
| 355 | + // Check instdir | |
| 356 | + strncpy(filename,instpath,MAX_PATH); | |
| 357 | + strncat(filename,"\\share",MAX_PATH); | |
| 358 | + strncat(filename,relative,MAX_PATH); | |
| 359 | + | |
| 360 | + if(access(filename,0) == 0) { | |
| 361 | + return strdup(filename); | |
| 362 | + } | |
| 363 | + | |
| 364 | + strncpy(filename,instpath,MAX_PATH); | |
| 365 | + strncat(filename,"\\share\\",MAX_PATH); | |
| 366 | + strncat(filename,LIB3270_STRINGIZE_VALUE_OF(PRODUCT_NAME),MAX_PATH); | |
| 367 | + strncat(filename,relative,MAX_PATH); | |
| 368 | + | |
| 369 | + if(access(filename,0) == 0) { | |
| 370 | + return strdup(filename); | |
| 371 | + } | |
| 372 | + | |
| 373 | + // Default behavior. | |
| 374 | + strncpy(filename,instpath,MAX_PATH); | |
| 375 | + strncat(filename,relative,MAX_PATH); | |
| 376 | + | |
| 377 | + return strdup(filename); | |
| 314 | 378 | } |
| 315 | 379 | |
| 316 | 380 | char * lib3270_build_config_filename(const char *str, ...) { | ... | ... |
win/ci-build.sh
| ... | ... | @@ -27,7 +27,10 @@ echo "Building lib3270" |
| 27 | 27 | make clean > $LOGFILE 2>&1 || die "Make clean failure" |
| 28 | 28 | make all > $LOGFILE 2>&1 || die "Make failure" |
| 29 | 29 | make DESTDIR=.bin/package install |
| 30 | -tar --create --xz --file=mingw-lib3270.tar.xz --directory=.bin/package --verbose . | |
| 30 | + | |
| 31 | +. ./win/build.conf | |
| 32 | + | |
| 33 | +tar --create --xz --file=mingw-lib3270.${TARGET_ARCH}.tar.xz --directory=.bin/package --verbose . | |
| 31 | 34 | |
| 32 | 35 | |
| 33 | 36 | ... | ... |