ref: 63274538954ad3aa062290f7a349ff461adca2b4
parent: 2c2c145fbb538b7fc8080bf69fb56ff5c9adc098
parent: 56b46ba923c2aa4d150bbb28de29fa57c3adbef6
author: Jeff Bezanson <jeff.bezanson@gmail.com>
date: Mon Jun 3 17:15:47 EDT 2013
Merge pull request #8 from jturner/master Adds support for OpenBSD and INITFILE define
--- a/flisp.c
+++ b/flisp.c
@@ -2303,6 +2303,8 @@
set(symbol("*os-name*"), symbol("win32"));
#elif defined(MACOSX)
set(symbol("*os-name*"), symbol("macos"));
+#elif defined(OPENBSD)
+ set(symbol("*os-name*"), symbol("openbsd"));
#else
set(symbol("*os-name*"), symbol("unknown"));
#endif
--- a/flmain.c
+++ b/flmain.c
@@ -38,6 +38,9 @@
fl_init(512*1024);
fname_buf[0] = '\0';
+#ifdef INITFILE
+ strcat(fname_buf, INITFILE);
+#else
value_t str = symbol_value(symbol("*install-dir*"));
char *exedir = (str == UNBOUND ? NULL : cvalue_data(str));
if (exedir != NULL) {
@@ -45,6 +48,7 @@
strcat(fname_buf, PATHSEPSTRING);
}
strcat(fname_buf, "flisp.boot");
+#endif
value_t args[2];
fl_gc_handle(&args[0]);
--- a/llt/dirpath.c
+++ b/llt/dirpath.c
@@ -89,6 +89,12 @@
return buf;
}
+#elif defined(OPENBSD)
+char *get_exename(char *buf, size_t size)
+{
+ /* OpenBSD currently has no way of determining a processes pathname */
+ return NULL;
+}
#elif defined(__FreeBSD__)
#include <sys/types.h>
#include <sys/sysctl.h>
--- a/llt/dtypes.h
+++ b/llt/dtypes.h
@@ -21,6 +21,8 @@
# define LINUX
#elif defined(__APPLE__) && defined(__MACH__)
# define MACOSX
+#elif defined(__OpenBSD__)
+# define OPENBSD
#elif defined(_WIN32)
# define WIN32
#else
@@ -27,6 +29,13 @@
# error "unknown platform"
#endif
+#if defined(OPENBSD)
+#if defined(__x86_64__)
+# define __SIZEOF_POINTER__ 8
+#else
+# define __SIZEOF_POINTER__ 4
+#endif
+#endif
#if !defined (BITS32) && !defined (BITS64)
#ifndef __SIZEOF_POINTER__
@@ -61,7 +70,7 @@
# define BIG_ENDIAN __BIG_ENDIAN
# define PDP_ENDIAN __PDP_ENDIAN
# define BYTE_ORDER __BYTE_ORDER
-#elif defined(MACOSX)
+#elif defined(MACOSX) || defined(OPENBSD)
# include <machine/endian.h>
# define __LITTLE_ENDIAN LITTLE_ENDIAN
# define __BIG_ENDIAN BIG_ENDIAN
--- a/llt/timefuncs.c
+++ b/llt/timefuncs.c
@@ -106,7 +106,7 @@
#endif
}
-#if defined(LINUX) || defined(MACOSX)
+#if defined(LINUX) || defined(MACOSX) || defined(OPENBSD)
extern char *strptime(const char *s, const char *format, struct tm *tm);
double parsetime(const char *str)
{
--- a/llt/utf8.c
+++ b/llt/utf8.c
@@ -25,9 +25,9 @@
#include <malloc.h>
#define snprintf _snprintf
#else
-#ifndef __FreeBSD__
+#if !defined(__FreeBSD__) && !defined(__OpenBSD__)
#include <alloca.h>
-#endif /* __FreeBSD__ */
+#endif /* __FreeBSD__ && __OpenBSD__ */
#endif
#include <assert.h>