summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjfclere <jfclere@13f79535-47bb-0310-9956-ffa450edef68>2004-06-29 15:25:56 +0000
committerjfclere <jfclere@13f79535-47bb-0310-9956-ffa450edef68>2004-06-29 15:25:56 +0000
commit0c68207034d26b314ea2d5ecfe274c9a186a0c0e (patch)
tree985757aae081a0df5943cc1cf214b955a3834f10
parentabddb6a7ee161f1f76a8f02e06ef60efedd58d2b (diff)
downloadlibapr-0c68207034d26b314ea2d5ecfe274c9a186a0c0e.tar.gz
Add support for BS2000 (_OSD_POSIX).
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@65234 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--build/jlibtool.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/build/jlibtool.c b/build/jlibtool.c
index a3fd9138b..0d49cce9e 100644
--- a/build/jlibtool.c
+++ b/build/jlibtool.c
@@ -53,6 +53,9 @@
*/
#include <stdio.h>
+#if defined(_OSD_POSIX)
+#include <stdarg.h>
+#endif
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>
@@ -123,6 +126,18 @@
# define LINKER_FLAG_PREFIX "-Wl,"
#endif
+#if defined(_OSD_POSIX)
+# define SHELL_CMD "/usr/bin/sh"
+# define DYNAMIC_LIB_EXT "so"
+# define MODULE_LIB_EXT "so"
+# define STATIC_LIB_EXT "a"
+# define OBJECT_EXT "o"
+# define LIBRARIAN "ar"
+# define LIBRARIAN_OPTS "cr"
+# define DYNAMIC_LINK_OPTS "-G"
+# define LINKER_FLAG_PREFIX "-Wl,"
+#endif
+
#ifndef SHELL_CMD
#error Unsupported platform: Please add defines for SHELL_CMD etc. for your platform.
#endif
@@ -217,6 +232,44 @@ typedef struct {
const char *version_info;
} command_t;
+#if defined(_OSD_POSIX)
+/* Write at most n characters to the buffer in str, return the
+ * number of chars written or -1 if the buffer would have been
+ * overflowed.
+ *
+ * This is portable to any POSIX-compliant system has /dev/null
+ */
+static FILE *f=NULL;
+static int vsnprintf( char *str, size_t n, const char *fmt, va_list ap )
+{
+ int res;
+
+ if (f == NULL)
+ f = fopen("/dev/null","w");
+ if (f == NULL)
+ return -1;
+
+ setvbuf( f, str, _IOFBF, n );
+
+ res = vfprintf( f, fmt, ap );
+
+ if ( res > 0 && res < n ) {
+ res = vsprintf( str, fmt, ap );
+ }
+ return res;
+}
+static int snprintf( char *str, size_t n, const char *fmt, ... )
+{
+ va_list ap;
+ int res;
+
+ va_start( ap, fmt );
+ res = vsnprintf( str, n, fmt, ap );
+ va_end( ap );
+ return res;
+}
+#endif
+
void init_count_chars(count_chars *cc)
{
cc->vals = (const char**)malloc(PATH_MAX);
@@ -859,6 +912,9 @@ int parse_output_file_name(char *arg, command_t *cmd_data)
if (!ext) {
cmd_data->basename = arg;
cmd_data->output = otProgram;
+#if defined(_OSD_POSIX)
+ cmd_data->options.pic_mode = AVOID;
+#endif
newarg = (char *)malloc(strlen(arg) + 5);
strcpy(newarg, arg);
#ifdef EXE_EXT