Commit b1e611d3aa1766cdb19ac25166a74febd72439fc

Authored by Perry Werneck
1 parent e035bbac

Adding utilities do build filenames.

@@ -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: \
src/lib3270/linux/util.c 0 → 100644
@@ -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 +}