More Linux compatibility fixes

This commit is contained in:
David Baer
2015-08-17 23:12:10 -04:00
parent 62fa34fd92
commit eb83530788
3 changed files with 8 additions and 9 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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);