diff --git a/lib3270.cbp b/lib3270.cbp
index 1e13135..508d1fe 100644
--- a/lib3270.cbp
+++ b/lib3270.cbp
@@ -157,6 +157,9 @@
+
+
+
diff --git a/src/include/lib3270.h b/src/include/lib3270.h
index 27b0a7a..04e15e7 100644
--- a/src/include/lib3270.h
+++ b/src/include/lib3270.h
@@ -66,6 +66,8 @@
#endif
+ #define LIB3270_STRINGIZE(x) #x
+ #define LIB3270_STRINGIZE_VALUE_OF(x) LIB3270_STRINGIZE(x)
/**
* @brief BIND definitions.
@@ -1330,6 +1332,14 @@
LIB3270_EXPORT const char * lib3270_win32_local_charset(void);
#endif // WIn32
+ /**
+ * @brief Build filename on "DATADIR".
+ *
+ * @return Full path for the file (release it with lib3270_free).
+ *
+ */
+ LIB3270_EXPORT char * lib3270_build_data_filename(const char *name);
+
#ifdef __cplusplus
}
#endif
diff --git a/src/lib3270/Makefile.in b/src/lib3270/Makefile.in
index 7b94560..db69cb6 100644
--- a/src/lib3270/Makefile.in
+++ b/src/lib3270/Makefile.in
@@ -118,6 +118,7 @@ $(OBJDBG)/%.o: \
$(CFLAGS) \
-Wall -Wextra -fstack-check \
-DDEBUG=1 \
+ -DDATADIR=. \
-o $@ -c $<
$(OBJDBG)/%.o: \
@@ -138,6 +139,7 @@ $(OBJRLS)/%.o: \
@$(CC) \
$(CFLAGS) \
-DNDEBUG=1 \
+ -DDATADIR=$(datarootdir)/pw3270 \
-o $@ -c $<
$(OBJRLS)/%.o: \
diff --git a/src/lib3270/linux/util.c b/src/lib3270/linux/util.c
new file mode 100644
index 0000000..bbffed8
--- /dev/null
+++ b/src/lib3270/linux/util.c
@@ -0,0 +1,42 @@
+/*
+ * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
+ * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
+ * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob
+ * o nome G3270.
+ *
+ * Copyright (C) <2008>
+ *
+ * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
+ * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
+ * Free Software Foundation.
+ *
+ * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
+ * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
+ * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
+ * obter mais detalhes.
+ *
+ * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
+ * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
+ * St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Este programa está nomeado como - e possui - linhas de código.
+ *
+ * Contatos:
+ *
+ * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
+ * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
+ *
+ */
+
+/**
+ * @brief Linux Utility functions.
+ */
+
+
+#include
+#include "../private.h"
+
+char * lib3270_build_data_filename(const char *name)
+{
+ return lib3270_strdup_printf("%s/%s",LIB3270_STRINGIZE_VALUE_OF(DATADIR),name);
+}
diff --git a/src/lib3270/windows/util.c b/src/lib3270/windows/util.c
index 2f12b27..4567c88 100644
--- a/src/lib3270/windows/util.c
+++ b/src/lib3270/windows/util.c
@@ -208,3 +208,22 @@ int gettimeofday(struct timeval *tv, void *ignored unused)
return 0;
}
+char * lib3270_build_data_filename(const char *name)
+{
+ // https://github.com/GNOME/glib/blob/master/glib/gwin32.c
+
+ char *p;
+ wchar_t wc_fn[MAX_PATH];
+
+ if (!GetModuleFileNameW(NULL, wc_fn, MAX_PATH))
+ return NULL;
+
+ if((p = strrchr (filename, '\\')) != NULL)
+ *p = '\0';
+
+ if((p = strrchr (filename, '/')) != NULL)
+ *p = '\0';
+
+ return lib3270_strdup_printf("%s\\%s",wc_fn,name);
+
+}
--
libgit2 0.21.2