More Linux compatibility fixes
This commit is contained in:
@@ -15,7 +15,6 @@ AC_PROG_YACC
|
||||
# Checks for libraries.
|
||||
PKG_CHECK_MODULES([libxml2], [libxml-2.0])
|
||||
PKG_CHECK_MODULES([libxslt], [libxslt])
|
||||
AC_CHECK_LIB([bsd], [strlcpy], [ PKG_CHECK_MODULES([libbsd], [libbsd]) ])
|
||||
|
||||
# Checks for header files.
|
||||
AC_FUNC_ALLOCA
|
||||
|
||||
@@ -11,22 +11,24 @@ Options options = { .progname = NULL, .datadir = DATADIR, .styleSheetName = "htm
|
||||
char*
|
||||
datadir(const char* progname) {
|
||||
struct stat sb;
|
||||
const char* progdir = dirname(progname);
|
||||
char* progname_copy = strdup(progname);
|
||||
const char* progdir = dirname(progname_copy);
|
||||
char* local_datadir = NULL;
|
||||
char result[PATH_MAX];
|
||||
int l = strlen(progdir) + 9;
|
||||
|
||||
if (stat(DATADIR, &sb) == 0) {
|
||||
if (S_ISDIR(sb.st_mode)) {
|
||||
free(progname_copy);
|
||||
return strdup(DATADIR);
|
||||
}
|
||||
}
|
||||
|
||||
local_datadir = malloc(l);
|
||||
strlcpy(local_datadir, progdir, l);
|
||||
strlcat(local_datadir, "/../data", l);
|
||||
snprintf(local_datadir, l, "%s/../data", progdir);
|
||||
realpath(local_datadir, result);
|
||||
free(local_datadir);
|
||||
free(progname_copy);
|
||||
if (stat(result, &sb) == 0) {
|
||||
if (S_ISDIR(sb.st_mode)) {
|
||||
return strdup(result);
|
||||
@@ -74,9 +76,7 @@ void InitOptions(int argc, const char* argv[]) {
|
||||
char*
|
||||
OptionsDataFile(const char* fname) {
|
||||
char result[PATH_MAX], *t = malloc(strlen(options.datadir) + strlen(fname) + 2);
|
||||
strlcpy(t, options.datadir, PATH_MAX);
|
||||
strlcat(t, "/", PATH_MAX);
|
||||
strlcat(t, fname, PATH_MAX);
|
||||
snprintf(t, PATH_MAX, "%s/%s", options.datadir, fname);
|
||||
realpath(t, result);
|
||||
free(t);
|
||||
return strdup(result);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <libxml/tree.h>
|
||||
#include <libxslt/xslt.h>
|
||||
@@ -11,8 +12,7 @@ applyStyleSheet(xmlDocPtr document, const char* styleSheetName) {
|
||||
xsltStylesheetPtr xsl = NULL;
|
||||
xmlDocPtr res = NULL;
|
||||
|
||||
strlcpy(t, styleSheetName, l);
|
||||
strlcat(t, ".xsl", l);
|
||||
snprintf(t, l, "%s.xsl", styleSheetName);
|
||||
styleSheetFileName = OptionsDataFile(t);
|
||||
free(t);
|
||||
fprintf(stderr, "Loading stylesheet %s ...\n", styleSheetFileName);
|
||||
|
||||
Reference in New Issue
Block a user