Changes with Apache 2.0b1
+ *) Get the functions in server/linked into the server, regardless of
+ which modules linked into the server. This uses the same hack
+ for Apache that we use for APR and apr-util to ensure all of the
+ necessary functions are linked. As a part of thise, the CHARSET_EBCIDC
+ was renamed to AP_CHARSET_EBCDIC for namespace protection, and to make
+ the scripts a bit easier.
+ [Ryan Bloom]
*) Rework the RFC1413 handling to make it thread-safe, use a timeout
on the query, and remove IPv4 dependencies. [Jeff Trawick]
$(AP_LIBS)
PROGRAMS = $(PROGRAM_NAME)
-targets = $(PROGRAMS)
+targets = $(PROGRAMS)
phony_targets = $(srcdir)/buildmark.c
install_targets = install-conf install-htdocs install-icons install-other \
install-cgi install-include install-support
APACHE_SUBST(sysconfdir)
APACHE_SUBST(progname)
APACHE_SUBST(prefix)
+ APACHE_SUBST(AWK)
APACHE_SUBST(CC)
APACHE_SUBST(CFLAGS)
APACHE_SUBST(CPPFLAGS)
ac_cv_ebcdic="no"
])])
if test "$ac_cv_ebcdic" = "yes"; then
- AC_DEFINE(CHARSET_EBCDIC,, [Define if system uses EBCDIC])
+ AC_DEFINE(AP_CHARSET_EBCDIC,, [Define if system uses EBCDIC])
fi
])
-/^APR_/ { print "#if", $1 }
+/^(APR?_|defined)/ { print "#if", $1 }
/^\t*apr?_/ { print "const void *ap_hack_" $1 " = (const void *)" $1 ";" }
-/^\/APR_/ { print "#endif /*", substr($1,2), "*/" }
+/^\/(APR?_|defined)/ { print "#endif /*", substr($1,2), "*/" }
#! /bin/sh
if test -z "$1"; then
- echo "USAGE: $0 SRCLIB-DIRECTORY"
+ echo "USAGE: $0 HTTPD-DIRECTORY"
echo ""
- echo "for example: $0 ../srclib"
+ echo "for example: $0 .."
exit 1
fi
echo " * the base server uses them."
echo " */"
echo ""
+echo "#define CORE_PRIVATE"
cur_dir="`pwd`"
-for dir in $1/apr/include $1/apr-util/include
+for dir in $1/srclib/apr/include $1/srclib/apr-util/include $1/include
do
cd $dir
for file in *.h; do
#define AP_HAVE_RELIABLE_PIPED_LOGS TRUE
#endif
-#if defined(CHARSET_EBCDIC) && !defined(APACHE_XLATE)
+#if defined(AP_CHARSET_EBCDIC) && !defined(APACHE_XLATE)
#define APACHE_XLATE
#endif
#define AP_LISTEN_H
#include "apr_network_io.h"
+#include "httpd.h"
#include "http_config.h"
/**
* Prefork or SPMT_OS2 MPMs.
*/
int ap_setup_listeners(server_rec *s);
-#else
+#endif
+/* Split into two #if's to make the exports scripts easier.
+ */
+#if defined(WIN32) || defined(SPMT_OS2_MPM)
/**
* Create and open a socket on the specified port. This includes listening
* and binding the socket.
NULL, \
MODULE_MAGIC_COOKIE
+#if AP_RBB_HACK
/**
* Generic accessors for other modules to get at their own module-specific
* data
* @deffunc void *ap_get_module_config(void *conf_vector, module *m)
*/
AP_DECLARE(void *) ap_get_module_config(void *conf_vector, module *m);
+#endif
+#if AP_RBB_HACK
/**
* Generic accessors for other modules to set at their own module-specific
* data
* @deffunc void ap_set_module_config(void *conf_vector, module *m, void *val)
*/
AP_DECLARE(void) ap_set_module_config(void *conf_vector, module *m, void *val);
+#endif
#define ap_get_module_config(v,m) \
(((void **)(v))[(m)->module_index])
#define DIR_MAGIC_TYPE "httpd/unix-directory"
/* Just in case your linefeed isn't the one the other end is expecting. */
-#ifndef CHARSET_EBCDIC
+#ifndef AP_CHARSET_EBCDIC
#define LF 10
#define CR 13
#define CRLF "\015\012"
-#else /* CHARSET_EBCDIC */
+#else /* AP_CHARSET_EBCDIC */
/* For platforms using the EBCDIC charset, the transition ASCII->EBCDIC is done
* in the buff package (bread/bputs/bwrite). Everywhere else, we use
* "native EBCDIC" CR and NL characters. These are therefore
#define CR '\r'
#define LF '\n'
#define CRLF "\r\n"
-#endif /* CHARSET_EBCDIC */
+#endif /* AP_CHARSET_EBCDIC */
/* Possible values for request_rec.read_body (set by handling module):
* REQUEST_NO_BODY Send 413 error if message has any body
#ifndef APACHE_UTIL_EBCDIC_H
#define APACHE_UTIL_EBCDIC_H
-#ifdef CHARSET_EBCDIC
#ifdef __cplusplus
extern "C" {
* @package Utilities for EBCDIC conversion
*/
+#ifdef AP_CHARSET_EBCDIC
+
/**
* Setup all of the global translation handlers
* @param pool pool to allocate out of
}
#endif
-#else /* CHARSET_EBCDIC */
+#else /* AP_CHARSET_EBCDIC */
#define ap_xlate_proto_to_ascii(x,y) /* NOOP */
#define ap_xlate_proto_from_ascii(x,y) /* NOOP */
-#endif /* CHARSET_EBCDIC */
+#endif /* AP_CHARSET_EBCDIC */
#endif /* !APACHE_UTIL_EBCDIC_H */
*/
if (strncasecmp(mime_type, "text/", 5) &&
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
/* On an EBCDIC machine, be willing to translate mod_autoindex-
* generated output. Otherwise, it doesn't look too cool.
*
#define SIZEFMT_BYTES 0
#define SIZEFMT_KMG 1
#define TMP_BUF_SIZE 1024
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
#define RAW_ASCII_CHAR(ch) apr_xlate_conv_byte(ap_hdrs_from_ascii, (unsigned char)ch)
-#else /*CHARSET_EBCDIC*/
+#else /*AP_CHARSET_EBCDIC*/
#define RAW_ASCII_CHAR(ch) (ch)
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
module AP_MODULE_DECLARE_DATA includes_module;
#define HDR_APP (0) /* append header, for proxy_add_header() */
#define HDR_REP (1) /* replace header, for proxy_add_header() */
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
#define CRLF "\r\n"
-#else /*CHARSET_EBCDIC*/
+#else /*AP_CHARSET_EBCDIC*/
#define CRLF "\015\012"
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
#define DEFAULT_FTP_DATA_PORT 20
#define DEFAULT_FTP_PORT 21
ch = ap_proxy_hex2c(&x[i + 1]);
i += 2;
}
-#ifndef CHARSET_EBCDIC
+#ifndef AP_CHARSET_EBCDIC
if (ch == '\015' || ch == '\012' || (ch & 0x80))
-#else /*CHARSET_EBCDIC*/
+#else /*AP_CHARSET_EBCDIC*/
if (ch == '\r' || ch == '\n' || (os_toascii[ch] & 0x80))
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
return 0;
}
return 1;
ap_bpush_socket(f, sock);
/* shouldn't we implement telnet control options here? */
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
ap_bsetflag(f, B_ASCII2EBCDIC|B_EBCDIC2ASCII, 1);
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
/* possible results: */
/* 120 Service ready in nnn minutes. */
{
int i, ch;
-#ifndef CHARSET_EBCDIC
+#ifndef AP_CHARSET_EBCDIC
ch = x[0];
if (apr_isdigit(ch))
i = ch - '0';
else
i += ch - ('a' - 10);
return i;
-#else /*CHARSET_EBCDIC*/
+#else /*AP_CHARSET_EBCDIC*/
return (1 == sscanf(x, "%2x", &i)) ? os_toebcdic[i&0xFF] : 0;
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
}
void ap_proxy_c2hex(int ch, char *x)
{
-#ifndef CHARSET_EBCDIC
+#ifndef AP_CHARSET_EBCDIC
int i;
x[0] = '%';
x[2] = ('A' - 10) + i;
else
x[2] = '0' + i;
-#else /*CHARSET_EBCDIC*/
+#else /*AP_CHARSET_EBCDIC*/
static const char ntoa[] = { "0123456789ABCDEF" };
ch &= 0xFF;
x[0] = '%';
x[1] = ntoa[(os_toascii[ch]>>4)&0x0F];
x[2] = ntoa[os_toascii[ch]&0x0F];
x[3] = '\0';
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
}
/*
if (c) ap_cache_el_data(c, &cachefp);
#if 0
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
/* The cache copy is ASCII, not EBCDIC, even for text/html) */
ap_bsetflag(f, B_ASCII2EBCDIC|B_EBCDIC2ASCII, 0);
if (c != NULL && c->fp != NULL)
* University of Illinois, Urbana-Champaign.
*/
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
#include "ap_config.h"
#include "ebcdic.h"
/*
*dest++ = os_toebcdic[*srce++];
}
}
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
* University of Illinois, Urbana-Champaign.
*/
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
#include "ap_config.h"
#include "ebcdic.h"
/*
*udest++ = os_toebcdic[*usrce++];
}
}
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
-CLEANFILES = gen_test_char gen_uri_delims test_char.h uri_delims.h
+CLEANFILES = gen_test_char gen_uri_delims test_char.h uri_delims.h apache.exports
SUBDIRS = mpm
+TARGET_EXPORTS = apache.exports
LTLIBRARY_NAME = libmain.la
LTLIBRARY_SOURCES = \
uri_delims.h test_char.h \
util_uri.lo: uri_delims.h
util.lo: test_char.h
-EXPORT_FILES = ../srclib/apr/apr.exports ../srclib/apr-util/aprutil.exports
+EXPORT_FILES = ../srclib/apr/apr.exports ../srclib/apr-util/aprutil.exports apache.exports
-exports.c: $(EXPORT_FILES)
- (cat $(EXPORT_FILES) | ../build/buildexports.sh ../srclib) > $@
+delete-exports:
+ @if test -f $(TARGET_EXPORTS); then \
+ headers="`find include/*.h -newer $(TARGET_EXPORTS)`" ; \
+ if test -n "$$headers"; then \
+ echo Found newer headers. Will rebuild $(TARGET_EXPORTS). ; \
+ echo $(RM) -f $(TARGET_EXPORTS) ; \
+ $(RM) -f $(TARGET_EXPORTS) ; \
+ fi \
+ fi
+
+
+$(TARGET_EXPORTS):
+ $(AWK) -f $(top_srcdir)/srclib/apr/helpers/make_export.awk $(top_srcdir)/include/*.h > $@ ; \
+
+exports.c: delete-exports $(EXPORT_FILES)
+ (cat $(EXPORT_FILES) | ../build/buildexports.sh ..) > $@
printf(" -D PIPE_BUF=%ld\n",(long)PIPE_BUF);
#endif
#endif
-#ifdef CHARSET_EBCDIC
- printf(" -D CHARSET_EBCDIC\n");
+#ifdef AP_CHARSET_EBCDIC
+ printf(" -D AP_CHARSET_EBCDIC\n");
#endif
#ifdef APACHE_XLATE
printf(" -D APACHE_XLATE\n");
pconf = process->pconf;
ap_server_argv0 = process->short_name;
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
if (ap_init_ebcdic(pglobal) != APR_SUCCESS) {
destroy_and_exit_process(process, 1);
}
{
register char digit;
-#ifndef CHARSET_EBCDIC
+#ifndef AP_CHARSET_EBCDIC
digit = ((what[0] >= 'A') ? ((what[0] & 0xdf) - 'A') + 10 : (what[0] - '0'));
digit *= 16;
digit += (what[1] >= 'A' ? ((what[1] & 0xdf) - 'A') + 10 : (what[1] - '0'));
-#else /*CHARSET_EBCDIC*/
+#else /*AP_CHARSET_EBCDIC*/
char xstr[5];
xstr[0]='0';
xstr[1]='x';
xstr[3]=what[1];
xstr[4]='\0';
digit = apr_xlate_conv_byte(ap_hdrs_from_ascii, 0xFF & strtol(xstr, NULL, 16));
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
return (digit);
}
static apr_inline unsigned char *c2x(unsigned what, unsigned char *where)
{
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
what = apr_xlate_conv_byte(ap_hdrs_to_ascii, (unsigned char)what);
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
*where++ = '%';
*where++ = c2x_table[what >> 4];
*where++ = c2x_table[what & 0xf];
#include "ap_config.h"
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
#include "apr_strings.h"
#include "httpd.h"
buffer, &outbytes_left);
}
-#endif /* CHARSET_EBCDIC */
+#endif /* AP_CHARSET_EBCDIC */
*/
apr_MD5Init(&my_md5);
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
apr_MD5SetXlate(&my_md5, ap_hdrs_to_ascii);
#endif
apr_MD5Update(&my_md5, buf, (unsigned int)length);
/* if we see a bogus header don't ignore it. Shout and scream */
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
/* Chances are that we received an ASCII header text instead of
* the expected EBCDIC header lines. Try to auto-detect:
*/
w, &inbytes_left, w, &outbytes_left);
}
}
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
if (!(l = strchr(w, ':'))) {
char malformed[(sizeof MALFORMED_MESSAGE) + 1
+ MALFORMED_HEADER_LENGTH_TO_SHOW];
#endif
#if 'A' == 0xC1
-#define CHARSET_EBCDIC
+#define AP_CHARSET_EBCDIC
#endif
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
#define LF '\n'
#define CR '\r'
#else
#define LF 10
#define CR 13
-#endif /* CHARSET_EBCDIC */
+#endif /* AP_CHARSET_EBCDIC */
#define MAX_STRING_LEN 256
char *tn;
apr_pool_t *cntxt;
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
apr_xlate_t *to_ascii;
#endif
sprintf(string, "%s:%s:%s", user, realm, pw);
apr_MD5Init(&context);
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
apr_MD5SetXlate(&context, to_ascii);
#endif
apr_MD5Update(&context, (unsigned char *) string, strlen(string));
atexit(apr_terminate);
apr_create_pool(&cntxt, NULL);
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
rv = apr_xlate_open(&to_ascii, "ISO8859-1", APR_DEFAULT_CHARSET, cntxt);
if (rv) {
fprintf(stderr, "apr_xlate_open(): %s (%d)\n",
#define unlink _unlink
#endif
-#ifndef CHARSET_EBCDIC
+#ifndef AP_CHARSET_EBCDIC
#define LF 10
#define CR 13
-#else /*CHARSET_EBCDIC*/
+#else /*AP_CHARSET_EBCDIC*/
#define LF '\n'
#define CR '\r'
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
#define MAX_STRING_LEN 256
#define ALG_PLAIN 0
int noninteractive = 0;
int i;
int args_left = 2;
-#ifdef CHARSET_EBCDIC
+#ifdef AP_CHARSET_EBCDIC
apr_pool_t *pool;
apr_status_t rv;
apr_xlate_t *to_ascii;
fprintf(stderr, "apr_MD5InitEBCDIC()->%d\n", rv);
exit(1);
}
-#endif /*CHARSET_EBCDIC*/
+#endif /*AP_CHARSET_EBCDIC*/
tempfilename = NULL;
signal(SIGINT, (void (*)(int)) interrupted);