Commit b1e611d3aa1766cdb19ac25166a74febd72439fc
1 parent
e035bbac
Exists in
master
and in
3 other branches
Adding utilities do build filenames.
Showing
5 changed files
with
76 additions
and
0 deletions
Show diff stats
lib3270.cbp
| @@ -157,6 +157,9 @@ | @@ -157,6 +157,9 @@ | ||
| 157 | <Unit filename="src/lib3270/linux/event_dispatcher.c"> | 157 | <Unit filename="src/lib3270/linux/event_dispatcher.c"> |
| 158 | <Option compilerVar="CC" /> | 158 | <Option compilerVar="CC" /> |
| 159 | </Unit> | 159 | </Unit> |
| 160 | + <Unit filename="src/lib3270/linux/util.c"> | ||
| 161 | + <Option compilerVar="CC" /> | ||
| 162 | + </Unit> | ||
| 160 | <Unit filename="src/lib3270/log.c"> | 163 | <Unit filename="src/lib3270/log.c"> |
| 161 | <Option compilerVar="CC" /> | 164 | <Option compilerVar="CC" /> |
| 162 | </Unit> | 165 | </Unit> |
src/include/lib3270.h
| @@ -66,6 +66,8 @@ | @@ -66,6 +66,8 @@ | ||
| 66 | 66 | ||
| 67 | #endif | 67 | #endif |
| 68 | 68 | ||
| 69 | + #define LIB3270_STRINGIZE(x) #x | ||
| 70 | + #define LIB3270_STRINGIZE_VALUE_OF(x) LIB3270_STRINGIZE(x) | ||
| 69 | 71 | ||
| 70 | /** | 72 | /** |
| 71 | * @brief BIND definitions. | 73 | * @brief BIND definitions. |
| @@ -1330,6 +1332,14 @@ | @@ -1330,6 +1332,14 @@ | ||
| 1330 | LIB3270_EXPORT const char * lib3270_win32_local_charset(void); | 1332 | LIB3270_EXPORT const char * lib3270_win32_local_charset(void); |
| 1331 | #endif // WIn32 | 1333 | #endif // WIn32 |
| 1332 | 1334 | ||
| 1335 | + /** | ||
| 1336 | + * @brief Build filename on "DATADIR". | ||
| 1337 | + * | ||
| 1338 | + * @return Full path for the file (release it with lib3270_free). | ||
| 1339 | + * | ||
| 1340 | + */ | ||
| 1341 | + LIB3270_EXPORT char * lib3270_build_data_filename(const char *name); | ||
| 1342 | + | ||
| 1333 | #ifdef __cplusplus | 1343 | #ifdef __cplusplus |
| 1334 | } | 1344 | } |
| 1335 | #endif | 1345 | #endif |
src/lib3270/Makefile.in
| @@ -118,6 +118,7 @@ $(OBJDBG)/%.o: \ | @@ -118,6 +118,7 @@ $(OBJDBG)/%.o: \ | ||
| 118 | $(CFLAGS) \ | 118 | $(CFLAGS) \ |
| 119 | -Wall -Wextra -fstack-check \ | 119 | -Wall -Wextra -fstack-check \ |
| 120 | -DDEBUG=1 \ | 120 | -DDEBUG=1 \ |
| 121 | + -DDATADIR=. \ | ||
| 121 | -o $@ -c $< | 122 | -o $@ -c $< |
| 122 | 123 | ||
| 123 | $(OBJDBG)/%.o: \ | 124 | $(OBJDBG)/%.o: \ |
| @@ -138,6 +139,7 @@ $(OBJRLS)/%.o: \ | @@ -138,6 +139,7 @@ $(OBJRLS)/%.o: \ | ||
| 138 | @$(CC) \ | 139 | @$(CC) \ |
| 139 | $(CFLAGS) \ | 140 | $(CFLAGS) \ |
| 140 | -DNDEBUG=1 \ | 141 | -DNDEBUG=1 \ |
| 142 | + -DDATADIR=$(datarootdir)/pw3270 \ | ||
| 141 | -o $@ -c $< | 143 | -o $@ -c $< |
| 142 | 144 | ||
| 143 | $(OBJRLS)/%.o: \ | 145 | $(OBJRLS)/%.o: \ |
| @@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
| 1 | +/* | ||
| 2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
| 3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
| 4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob | ||
| 5 | + * o nome G3270. | ||
| 6 | + * | ||
| 7 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
| 8 | + * | ||
| 9 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
| 10 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
| 11 | + * Free Software Foundation. | ||
| 12 | + * | ||
| 13 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
| 14 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
| 15 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
| 16 | + * obter mais detalhes. | ||
| 17 | + * | ||
| 18 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
| 19 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | ||
| 20 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 21 | + * | ||
| 22 | + * Este programa está nomeado como - e possui - linhas de código. | ||
| 23 | + * | ||
| 24 | + * Contatos: | ||
| 25 | + * | ||
| 26 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
| 27 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
| 28 | + * | ||
| 29 | + */ | ||
| 30 | + | ||
| 31 | +/** | ||
| 32 | + * @brief Linux Utility functions. | ||
| 33 | + */ | ||
| 34 | + | ||
| 35 | + | ||
| 36 | +#include <config.h> | ||
| 37 | +#include "../private.h" | ||
| 38 | + | ||
| 39 | +char * lib3270_build_data_filename(const char *name) | ||
| 40 | +{ | ||
| 41 | + return lib3270_strdup_printf("%s/%s",LIB3270_STRINGIZE_VALUE_OF(DATADIR),name); | ||
| 42 | +} |
src/lib3270/windows/util.c
| @@ -208,3 +208,22 @@ int gettimeofday(struct timeval *tv, void *ignored unused) | @@ -208,3 +208,22 @@ int gettimeofday(struct timeval *tv, void *ignored unused) | ||
| 208 | return 0; | 208 | return 0; |
| 209 | } | 209 | } |
| 210 | 210 | ||
| 211 | +char * lib3270_build_data_filename(const char *name) | ||
| 212 | +{ | ||
| 213 | + // https://github.com/GNOME/glib/blob/master/glib/gwin32.c | ||
| 214 | + | ||
| 215 | + char *p; | ||
| 216 | + wchar_t wc_fn[MAX_PATH]; | ||
| 217 | + | ||
| 218 | + if (!GetModuleFileNameW(NULL, wc_fn, MAX_PATH)) | ||
| 219 | + return NULL; | ||
| 220 | + | ||
| 221 | + if((p = strrchr (filename, '\\')) != NULL) | ||
| 222 | + *p = '\0'; | ||
| 223 | + | ||
| 224 | + if((p = strrchr (filename, '/')) != NULL) | ||
| 225 | + *p = '\0'; | ||
| 226 | + | ||
| 227 | + return lib3270_strdup_printf("%s\\%s",wc_fn,name); | ||
| 228 | + | ||
| 229 | +} |