summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorrbb <rbb@13f79535-47bb-0310-9956-ffa450edef68>1999-09-07 13:17:07 +0000
committerrbb <rbb@13f79535-47bb-0310-9956-ffa450edef68>1999-09-07 13:17:07 +0000
commitf46ddc6f2f87c4233e79d9e412f6c02791ecd12a (patch)
treea8e6ce480996df1da0642acb8b190a3932433a70 /misc
parent5cedc7ab9a0cd059b2a5eb908a12e39ae7698929 (diff)
downloadlibapr-f46ddc6f2f87c4233e79d9e412f6c02791ecd12a.tar.gz
A bunch of APR BEOS changes. Including: Better autoconf support, adding
ap_getopt, adding BEOS portability support. And, getting it much closer to the same level as Unix is currently at. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@59199 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'misc')
-rw-r--r--misc/beos/Makefile.in6
-rw-r--r--misc/beos/getopt.c143
-rw-r--r--misc/beos/start.c36
3 files changed, 176 insertions, 9 deletions
diff --git a/misc/beos/Makefile.in b/misc/beos/Makefile.in
index b590ca1f3..f0dc07ce9 100644
--- a/misc/beos/Makefile.in
+++ b/misc/beos/Makefile.in
@@ -15,7 +15,7 @@ INCLUDES=-I$(INCDIR) -I$(INCDIR1) -I$(INCDIR2) -I.
LIB=libmisc.a
-OBJS=start.o \
+OBJS=start.o getopt.o \
.c.o:
$(CC) $(CFLAGS) -c $(INCLUDES) $<
@@ -50,7 +50,3 @@ depend:
&& rm Makefile.new
# DO NOT REMOVE
-start.o: start.c $(INCDIR)/apr_config.h \
- ../../include/apr_general.h ../../include/apr_errno.h \
- $(INCDIR)/apr_pools.h $(INCDIR)/apr_lib.h \
- $(INCDIR)/hsregex.h
diff --git a/misc/beos/getopt.c b/misc/beos/getopt.c
new file mode 100644
index 000000000..55fb69b10
--- /dev/null
+++ b/misc/beos/getopt.c
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 1987, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "misc.h"
+
+int opterr = 1, /* if error message should be printed */
+ optind = 1, /* index into parent argv vector */
+ optopt, /* character checked for validity */
+ optreset; /* reset getopt */
+char *optarg; /* argument associated with option */
+
+#define EMSG ""
+
+/* ***APRDOC********************************************************
+ * ap_status_t ap_getopt(ap_context_t *, ap_int32_t, char *const *,
+ * const char *, ap_int32_t)
+ * Parse the command line options passed to the program.
+ * arg 1) The context to operate on.
+ * arg 2) The number of arguments passed to ap_getopt to parse
+ * arg 3) The array of command line options to parse
+ * arg 4) A string of characters that are acceptable options to the program.
+ * characters followed by ":" are required to have an option
+ * associated
+ * arg 5) The next option found. There are four potential values for
+ * this variable on exit. They are:
+ * APR_EOF -- No more options to parse
+ * APR_BADCH -- Found a bad option character
+ * APR_BADARG -- Missing parameter for the found option
+ * Other -- The next option found.
+ * NOTE: Arguments 2 and 3 are most commonly argc and argv from
+ * main(argc, argv)
+ */
+ap_status_t ap_getopt(struct context_t *cont, ap_int32_t nargc,
+ char *const *nargv, const char *ostr, ap_int32_t *rv)
+{
+ char *p;
+ static char *place = EMSG; /* option letter processing */
+ char *oli; /* option letter list index */
+
+ if (optreset || !*place) { /* update scanning pointer */
+ optreset = 0;
+ if (optind >= nargc || *(place = nargv[optind]) != '-') {
+ place = EMSG;
+ *rv = optopt;
+ return (APR_EOF);
+ }
+ if (place[1] && *++place == '-') { /* found "--" */
+ ++optind;
+ place = EMSG;
+ *rv = optopt;
+ return (APR_EOF);
+ }
+ } /* option letter okay? */
+ if ((optopt = (int) *place++) == (int) ':' ||
+ !(oli = strchr(ostr, optopt))) {
+ /*
+ * if the user didn't specify '-' as an option,
+ * assume it means -1.
+ */
+ if (optopt == (int) '-')
+ *rv = optopt;
+ return (APR_EOF);
+ if (!*place)
+ ++optind;
+ if (opterr && *ostr != ':') {
+ if (!(p = strrchr(*nargv, '/')))
+ p = *nargv;
+ else
+ ++p;
+ (void) fprintf(stderr,
+ "%s: illegal option -- %c\n", p, optopt);
+ }
+ *rv = optopt;
+ return APR_BADCH;
+ }
+ if (*++oli != ':') { /* don't need argument */
+ optarg = NULL;
+ if (!*place)
+ ++optind;
+ }
+ else { /* need an argument */
+ if (*place) /* no white space */
+ optarg = place;
+ else if (nargc <= ++optind) { /* no arg */
+ place = EMSG;
+ if (*ostr == ':')
+ *rv = optopt;
+ return (APR_BADARG);
+ if (opterr) {
+ if (!(p = strrchr(*nargv, '/')))
+ p = *nargv;
+ else
+ ++p;
+ (void) fprintf(stderr,
+ "%s: option requires an argument -- %c\n",
+ p, optopt);
+ }
+ *rv = optopt;
+ return (APR_BADCH);
+ }
+ else /* white space */
+ optarg = nargv[optind];
+ place = EMSG;
+ ++optind;
+ }
+ *rv = optopt;
+ return APR_SUCCESS;
+}
+
+
diff --git a/misc/beos/start.c b/misc/beos/start.c
index 0f6409448..8b036eefd 100644
--- a/misc/beos/start.c
+++ b/misc/beos/start.c
@@ -69,13 +69,13 @@ ap_status_t ap_create_context(ap_context_t *cont, void *data, ap_context_t **new
ap_pool_t *pool;
if (cont) {
- ap_context_t = ap_make_sub_pool(cont->pool);
+ pool = ap_make_sub_pool(cont->pool);
}
else {
- ap_context_t = ap_init_alloc();;
+ pool = ap_init_alloc();;
}
- if (ap_context_t == NULL) {
+ if (pool == NULL) {
return APR_ENOPOOL;
}
@@ -100,6 +100,34 @@ ap_status_t ap_create_context(ap_context_t *cont, void *data, ap_context_t **new
ap_status_t ap_destroy_context(ap_context_t *cont)
{
- ap_destroy_pool(cont->pool);
+ ap_destroy_pool(cont);
return APR_SUCCESS;
}
+
+ap_status_t ap_set_userdata(struct context_t *cont, void *data)
+{
+ if (cont) {
+ cont->prog_data = data;
+ return APR_SUCCESS;
+ }
+ return APR_ENOCONT;
+}
+
+ap_status_t ap_get_userdata(struct context_t *cont, void **data)
+{
+ if (cont) {
+ (*data) = cont->prog_data;
+ return APR_SUCCESS;
+ }
+ return APR_ENOCONT;
+}
+
+ap_status_t ap_initialize(void)
+{
+ sigset_t sigset;
+
+ sigfillset(&sigset);
+ sigprocmask(SIG_BLOCK, &sigset, NULL);
+ return APR_SUCCESS;
+}
+