diff options
Diffstat (limited to 'rubbos/app/httpd-2.0.64/srclib/apr-util/misc')
22 files changed, 0 insertions, 1924 deletions
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_date.o b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_date.o Binary files differdeleted file mode 100644 index 8d660c0c..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_date.o +++ /dev/null diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_queue.o b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_queue.o Binary files differdeleted file mode 100644 index dddfa1f3..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_queue.o +++ /dev/null diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_reslist.o b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_reslist.o Binary files differdeleted file mode 100644 index cb01aecd..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_reslist.o +++ /dev/null diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_rmm.o b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_rmm.o Binary files differdeleted file mode 100644 index a54d3310..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apr_rmm.o +++ /dev/null diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apu_version.o b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apu_version.o Binary files differdeleted file mode 100644 index 936c54e4..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/.libs/apu_version.o +++ /dev/null diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/Makefile b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/Makefile deleted file mode 100644 index 4ad97fc1..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/Makefile +++ /dev/null @@ -1,8 +0,0 @@ - - -INCLUDES = -I/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/include -I/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/include/private -I/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr/include -I/bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/xml/expat/lib - -TARGETS = apr_date.lo apr_rmm.lo apr_reslist.lo apr_queue.lo apu_version.lo - -# bring in rules.mk for standard functionality -include /bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr-util/build/rules.mk diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/Makefile.in b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/Makefile.in deleted file mode 100644 index 993648ef..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/Makefile.in +++ /dev/null @@ -1,8 +0,0 @@ -VPATH = @srcdir@ - -INCLUDES = @APRUTIL_PRIV_INCLUDES@ @APR_INCLUDES@ @APRUTIL_INCLUDES@ - -TARGETS = apr_date.lo apr_rmm.lo apr_reslist.lo apr_queue.lo apu_version.lo - -# bring in rules.mk for standard functionality -@INCLUDE_RULES@ diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_date.c b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_date.c deleted file mode 100644 index f584e093..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_date.c +++ /dev/null @@ -1,616 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_date.c: date parsing utility routines - * These routines are (hopefully) platform independent. - * - * 27 Oct 1996 Roy Fielding - * Extracted (with many modifications) from mod_proxy.c and - * tested with over 50,000 randomly chosen valid date strings - * and several hundred variations of invalid date strings. - * - */ - -#include "apr.h" -#include "apr_lib.h" - -#define APR_WANT_STRFUNC -#include "apr_want.h" - -#if APR_HAVE_STDLIB_H -#include <stdlib.h> -#endif - -#if APR_HAVE_CTYPE_H -#include <ctype.h> -#endif - -#include "apr_date.h" - -/* - * Compare a string to a mask - * Mask characters (arbitrary maximum is 256 characters, just in case): - * @ - uppercase letter - * $ - lowercase letter - * & - hex digit - * # - digit - * ~ - digit or space - * * - swallow remaining characters - * <x> - exact match for any other character - */ -APU_DECLARE(int) apr_date_checkmask(const char *data, const char *mask) -{ - int i; - char d; - - for (i = 0; i < 256; i++) { - d = data[i]; - switch (mask[i]) { - case '\0': - return (d == '\0'); - - case '*': - return 1; - - case '@': - if (!apr_isupper(d)) - return 0; - break; - case '$': - if (!apr_islower(d)) - return 0; - break; - case '#': - if (!apr_isdigit(d)) - return 0; - break; - case '&': - if (!apr_isxdigit(d)) - return 0; - break; - case '~': - if ((d != ' ') && !apr_isdigit(d)) - return 0; - break; - default: - if (mask[i] != d) - return 0; - break; - } - } - return 0; /* We only get here if mask is corrupted (exceeds 256) */ -} - -/* - * Parses an HTTP date in one of three standard forms: - * - * Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 - * Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 - * Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format - * - * and returns the apr_time_t number of microseconds since 1 Jan 1970 GMT, - * or APR_DATE_BAD if this would be out of range or if the date is invalid. - * - * The restricted HTTP syntax is - * - * HTTP-date = rfc1123-date | rfc850-date | asctime-date - * - * rfc1123-date = wkday "," SP date1 SP time SP "GMT" - * rfc850-date = weekday "," SP date2 SP time SP "GMT" - * asctime-date = wkday SP date3 SP time SP 4DIGIT - * - * date1 = 2DIGIT SP month SP 4DIGIT - * ; day month year (e.g., 02 Jun 1982) - * date2 = 2DIGIT "-" month "-" 2DIGIT - * ; day-month-year (e.g., 02-Jun-82) - * date3 = month SP ( 2DIGIT | ( SP 1DIGIT )) - * ; month day (e.g., Jun 2) - * - * time = 2DIGIT ":" 2DIGIT ":" 2DIGIT - * ; 00:00:00 - 23:59:59 - * - * wkday = "Mon" | "Tue" | "Wed" - * | "Thu" | "Fri" | "Sat" | "Sun" - * - * weekday = "Monday" | "Tuesday" | "Wednesday" - * | "Thursday" | "Friday" | "Saturday" | "Sunday" - * - * month = "Jan" | "Feb" | "Mar" | "Apr" - * | "May" | "Jun" | "Jul" | "Aug" - * | "Sep" | "Oct" | "Nov" | "Dec" - * - * However, for the sake of robustness (and Netscapeness), we ignore the - * weekday and anything after the time field (including the timezone). - * - * This routine is intended to be very fast; 10x faster than using sscanf. - * - * Originally from Andrew Daviel <andrew@vancouver-webpages.com>, 29 Jul 96 - * but many changes since then. - * - */ -APU_DECLARE(apr_time_t) apr_date_parse_http(const char *date) -{ - apr_time_exp_t ds; - apr_time_t result; - int mint, mon; - const char *monstr, *timstr; - static const int months[12] = - { - ('J' << 16) | ('a' << 8) | 'n', ('F' << 16) | ('e' << 8) | 'b', - ('M' << 16) | ('a' << 8) | 'r', ('A' << 16) | ('p' << 8) | 'r', - ('M' << 16) | ('a' << 8) | 'y', ('J' << 16) | ('u' << 8) | 'n', - ('J' << 16) | ('u' << 8) | 'l', ('A' << 16) | ('u' << 8) | 'g', - ('S' << 16) | ('e' << 8) | 'p', ('O' << 16) | ('c' << 8) | 't', - ('N' << 16) | ('o' << 8) | 'v', ('D' << 16) | ('e' << 8) | 'c'}; - - if (!date) - return APR_DATE_BAD; - - while (*date && apr_isspace(*date)) /* Find first non-whitespace char */ - ++date; - - if (*date == '\0') - return APR_DATE_BAD; - - if ((date = strchr(date, ' ')) == NULL) /* Find space after weekday */ - return APR_DATE_BAD; - - ++date; /* Now pointing to first char after space, which should be */ - - /* start of the actual date information for all 4 formats. */ - - if (apr_date_checkmask(date, "## @$$ #### ##:##:## *")) { - /* RFC 1123 format with two days */ - ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100; - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0'); - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 12; - } - else if (apr_date_checkmask(date, "##-@$$-## ##:##:## *")) { - /* RFC 850 format */ - ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0'); - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 10; - } - else if (apr_date_checkmask(date, "@$$ ~# ##:##:## ####*")) { - /* asctime format */ - ds.tm_year = ((date[16] - '0') * 10 + (date[17] - '0') - 19) * 100; - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[18] - '0') * 10) + (date[19] - '0'); - - if (date[4] == ' ') - ds.tm_mday = 0; - else - ds.tm_mday = (date[4] - '0') * 10; - - ds.tm_mday += (date[5] - '0'); - - monstr = date; - timstr = date + 7; - } - else if (apr_date_checkmask(date, "# @$$ #### ##:##:## *")) { - /* RFC 1123 format with one day */ - ds.tm_year = ((date[6] - '0') * 10 + (date[7] - '0') - 19) * 100; - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[8] - '0') * 10) + (date[9] - '0'); - - ds.tm_mday = (date[0] - '0'); - - monstr = date + 2; - timstr = date + 11; - } - else - return APR_DATE_BAD; - - if (ds.tm_mday <= 0 || ds.tm_mday > 31) - return APR_DATE_BAD; - - ds.tm_hour = ((timstr[0] - '0') * 10) + (timstr[1] - '0'); - ds.tm_min = ((timstr[3] - '0') * 10) + (timstr[4] - '0'); - ds.tm_sec = ((timstr[6] - '0') * 10) + (timstr[7] - '0'); - - if ((ds.tm_hour > 23) || (ds.tm_min > 59) || (ds.tm_sec > 61)) - return APR_DATE_BAD; - - mint = (monstr[0] << 16) | (monstr[1] << 8) | monstr[2]; - for (mon = 0; mon < 12; mon++) - if (mint == months[mon]) - break; - - if (mon == 12) - return APR_DATE_BAD; - - if ((ds.tm_mday == 31) && (mon == 3 || mon == 5 || mon == 8 || mon == 10)) - return APR_DATE_BAD; - - /* February gets special check for leapyear */ - if ((mon == 1) && - ((ds.tm_mday > 29) || - ((ds.tm_mday == 29) - && ((ds.tm_year & 3) - || (((ds.tm_year % 100) == 0) - && (((ds.tm_year % 400) != 100))))))) - return APR_DATE_BAD; - - ds.tm_mon = mon; - - /* ap_mplode_time uses tm_usec and tm_gmtoff fields, but they haven't - * been set yet. - * It should be safe to just zero out these values. - * tm_usec is the number of microseconds into the second. HTTP only - * cares about second granularity. - * tm_gmtoff is the number of seconds off of GMT the time is. By - * definition all times going through this function are in GMT, so this - * is zero. - */ - ds.tm_usec = 0; - ds.tm_gmtoff = 0; - if (apr_time_exp_get(&result, &ds) != APR_SUCCESS) - return APR_DATE_BAD; - - return result; -} - -/* - * Parses a string resembling an RFC 822 date. This is meant to be - * leinent in its parsing of dates. Hence, this will parse a wider - * range of dates than apr_date_parse_http. - * - * The prominent mailer (or poster, if mailer is unknown) that has - * been seen in the wild is included for the unknown formats. - * - * Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 - * Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 - * Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format - * Sun, 6 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 - * Sun, 06 Nov 94 08:49:37 GMT ; RFC 822 - * Sun, 6 Nov 94 08:49:37 GMT ; RFC 822 - * Sun, 06 Nov 94 08:49 GMT ; Unknown [drtr@ast.cam.ac.uk] - * Sun, 6 Nov 94 08:49 GMT ; Unknown [drtr@ast.cam.ac.uk] - * Sun, 06 Nov 94 8:49:37 GMT ; Unknown [Elm 70.85] - * Sun, 6 Nov 94 8:49:37 GMT ; Unknown [Elm 70.85] - * Mon, 7 Jan 2002 07:21:22 GMT ; Unknown [Postfix] - * Sun, 06-Nov-1994 08:49:37 GMT ; RFC 850 with four digit years - * - */ - -#define TIMEPARSE(ds,hr10,hr1,min10,min1,sec10,sec1) \ - { \ - ds.tm_hour = ((hr10 - '0') * 10) + (hr1 - '0'); \ - ds.tm_min = ((min10 - '0') * 10) + (min1 - '0'); \ - ds.tm_sec = ((sec10 - '0') * 10) + (sec1 - '0'); \ - } -#define TIMEPARSE_STD(ds,timstr) \ - { \ - TIMEPARSE(ds, timstr[0],timstr[1], \ - timstr[3],timstr[4], \ - timstr[6],timstr[7]); \ - } - -APU_DECLARE(apr_time_t) apr_date_parse_rfc(const char *date) -{ - apr_time_exp_t ds; - apr_time_t result; - int mint, mon; - const char *monstr, *timstr, *gmtstr; - static const int months[12] = - { - ('J' << 16) | ('a' << 8) | 'n', ('F' << 16) | ('e' << 8) | 'b', - ('M' << 16) | ('a' << 8) | 'r', ('A' << 16) | ('p' << 8) | 'r', - ('M' << 16) | ('a' << 8) | 'y', ('J' << 16) | ('u' << 8) | 'n', - ('J' << 16) | ('u' << 8) | 'l', ('A' << 16) | ('u' << 8) | 'g', - ('S' << 16) | ('e' << 8) | 'p', ('O' << 16) | ('c' << 8) | 't', - ('N' << 16) | ('o' << 8) | 'v', ('D' << 16) | ('e' << 8) | 'c' }; - - if (!date) - return APR_DATE_BAD; - - /* Not all dates have text months at the beginning. */ - if (!apr_isdigit(date[0])) - { - while (*date && apr_isspace(*date)) /* Find first non-whitespace char */ - ++date; - - if (*date == '\0') - return APR_DATE_BAD; - - if ((date = strchr(date, ' ')) == NULL) /* Find space after weekday */ - return APR_DATE_BAD; - - ++date; /* Now pointing to first char after space, which should be */ } - - /* start of the actual date information for all 11 formats. */ - if (apr_date_checkmask(date, "## @$$ #### ##:##:## *")) { /* RFC 1123 format */ - ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100; - - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0'); - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 12; - gmtstr = date + 20; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "##-@$$-## ##:##:## *")) {/* RFC 850 format */ - ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 10; - gmtstr = date + 19; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "@$$ ~# ##:##:## ####*")) { - /* asctime format */ - ds.tm_year = ((date[16] - '0') * 10 + (date[17] - '0') - 19) * 100; - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[18] - '0') * 10) + (date[19] - '0'); - - if (date[4] == ' ') - ds.tm_mday = 0; - else - ds.tm_mday = (date[4] - '0') * 10; - - ds.tm_mday += (date[5] - '0'); - - monstr = date; - timstr = date + 7; - gmtstr = NULL; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "# @$$ #### ##:##:## *")) { - /* RFC 1123 format*/ - ds.tm_year = ((date[6] - '0') * 10 + (date[7] - '0') - 19) * 100; - - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[8] - '0') * 10) + (date[9] - '0'); - ds.tm_mday = (date[0] - '0'); - - monstr = date + 2; - timstr = date + 11; - gmtstr = date + 20; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "## @$$ ## ##:##:## *")) { - /* This is the old RFC 1123 date format - many many years ago, people - * used two-digit years. Oh, how foolish. */ - ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 10; - gmtstr = date + 19; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "# @$$ ## ##:##:## *")) { - /* This is the old RFC 1123 date format - many many years ago, people - * used two-digit years. Oh, how foolish. */ - ds.tm_year = ((date[6] - '0') * 10) + (date[7] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = (date[0] - '0'); - - monstr = date + 2; - timstr = date + 9; - gmtstr = date + 18; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "## @$$ ## ##:## *")) { - /* Loser format. This is quite bogus. */ - ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 10; - gmtstr = NULL; - - TIMEPARSE(ds, timstr[0],timstr[1], timstr[3],timstr[4], '0','0'); - } - else if (apr_date_checkmask(date, "# @$$ ## ##:## *")) { - /* Loser format. This is quite bogus. */ - ds.tm_year = ((date[6] - '0') * 10) + (date[7] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = (date[0] - '0'); - - monstr = date + 2; - timstr = date + 9; - gmtstr = NULL; - - TIMEPARSE(ds, timstr[0],timstr[1], timstr[3],timstr[4], '0','0'); - } - else if (apr_date_checkmask(date, "## @$$ ## #:##:## *")) { - /* Loser format. This is quite bogus. */ - ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 9; - gmtstr = date + 18; - - TIMEPARSE(ds, '0',timstr[1], timstr[3],timstr[4], timstr[6],timstr[7]); - } - else if (apr_date_checkmask(date, "# @$$ ## #:##:## *")) { - /* Loser format. This is quite bogus. */ - ds.tm_year = ((date[6] - '0') * 10) + (date[7] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = (date[0] - '0'); - - monstr = date + 2; - timstr = date + 8; - gmtstr = date + 17; - - TIMEPARSE(ds, '0',timstr[1], timstr[3],timstr[4], timstr[6],timstr[7]); - } - else if (apr_date_checkmask(date, " # @$$ #### ##:##:## *")) { - /* RFC 1123 format with a space instead of a leading zero. */ - ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100; - - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0'); - - ds.tm_mday = (date[1] - '0'); - - monstr = date + 3; - timstr = date + 12; - gmtstr = date + 20; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "##-@$$-#### ##:##:## *")) { - /* RFC 1123 with dashes instead of spaces between date/month/year - * This also looks like RFC 850 with four digit years. - */ - ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100; - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0'); - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 12; - gmtstr = date + 21; - - TIMEPARSE_STD(ds, timstr); - } - else - return APR_DATE_BAD; - - if (ds.tm_mday <= 0 || ds.tm_mday > 31) - return APR_DATE_BAD; - - if ((ds.tm_hour > 23) || (ds.tm_min > 59) || (ds.tm_sec > 61)) - return APR_DATE_BAD; - - mint = (monstr[0] << 16) | (monstr[1] << 8) | monstr[2]; - for (mon = 0; mon < 12; mon++) - if (mint == months[mon]) - break; - - if (mon == 12) - return APR_DATE_BAD; - - if ((ds.tm_mday == 31) && (mon == 3 || mon == 5 || mon == 8 || mon == 10)) - return APR_DATE_BAD; - - /* February gets special check for leapyear */ - - if ((mon == 1) && - ((ds.tm_mday > 29) - || ((ds.tm_mday == 29) - && ((ds.tm_year & 3) - || (((ds.tm_year % 100) == 0) - && (((ds.tm_year % 400) != 100))))))) - return APR_DATE_BAD; - - ds.tm_mon = mon; - - /* tm_gmtoff is the number of seconds off of GMT the time is. - * - * We only currently support: [+-]ZZZZ where Z is the offset in - * hours from GMT. - * - * If there is any confusion, tm_gmtoff will remain 0. - */ - ds.tm_gmtoff = 0; - if (gmtstr && *gmtstr != '\0') { - /* Do we have a GMT? */ - if (*(++gmtstr) != '\0') { - int offset; - switch (*(gmtstr++)) { - case '-': - offset = atoi(gmtstr); - ds.tm_gmtoff -= (offset / 100) * 60 * 60; - ds.tm_gmtoff -= (offset % 100) * 60; - break; - case '+': - offset = atoi(gmtstr); - ds.tm_gmtoff += (offset / 100) * 60 * 60; - ds.tm_gmtoff += (offset % 100) * 60; - break; - } - } - } - - /* apr_time_exp_get uses tm_usec field, but it hasn't been set yet. - * It should be safe to just zero out this value. - * tm_usec is the number of microseconds into the second. HTTP only - * cares about second granularity. - */ - ds.tm_usec = 0; - - if (apr_time_exp_gmt_get(&result, &ds) != APR_SUCCESS) - return APR_DATE_BAD; - - return result; -} diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_date.lo b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_date.lo deleted file mode 100644 index 83a18a4c..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_date.lo +++ /dev/null @@ -1,12 +0,0 @@ -# apr_date.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/apr_date.o' - -# Name of the non-PIC object. -non_pic_object='apr_date.o' - diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_date.o b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_date.o Binary files differdeleted file mode 100644 index 08839f99..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_date.o +++ /dev/null diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_queue.c b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_queue.c deleted file mode 100644 index 0d75f001..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_queue.c +++ /dev/null @@ -1,392 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr.h" - -#if APR_HAVE_STDIO_H -#include <stdio.h> -#endif -#if APR_HAVE_STDLIB_H -#include <stdlib.h> -#endif -#if APR_HAVE_UNISTD_H -#include <unistd.h> -#endif - -#include "apu.h" -#include "apr_portable.h" -#include "apr_thread_mutex.h" -#include "apr_thread_cond.h" -#include "apr_errno.h" -#include "apr_queue.h" - -#if APR_HAS_THREADS -/* - * define this to get debug messages - * -#define QUEUE_DEBUG - */ - -struct apr_queue_t { - void **data; - unsigned int nelts; /**< # elements */ - unsigned int in; /**< next empty location */ - unsigned int out; /**< next filled location */ - unsigned int bounds;/**< max size of queue */ - unsigned int full_waiters; - unsigned int empty_waiters; - apr_thread_mutex_t *one_big_mutex; - apr_thread_cond_t *not_empty; - apr_thread_cond_t *not_full; - int terminated; -}; - -#ifdef QUEUE_DEBUG -static void Q_DBG(char*msg, apr_queue_t *q) { - fprintf(stderr, "%ld\t#%d in %d out %d\t%s\n", - apr_os_thread_current(), - q->nelts, q->in, q->out, - msg - ); -} -#else -#define Q_DBG(x,y) -#endif - -/** - * Detects when the apr_queue_t is full. This utility function is expected - * to be called from within critical sections, and is not threadsafe. - */ -#define apr_queue_full(queue) ((queue)->nelts == (queue)->bounds) - -/** - * Detects when the apr_queue_t is empty. This utility function is expected - * to be called from within critical sections, and is not threadsafe. - */ -#define apr_queue_empty(queue) ((queue)->nelts == 0) - -/** - * Callback routine that is called to destroy this - * apr_queue_t when its pool is destroyed. - */ -static apr_status_t queue_destroy(void *data) -{ - apr_queue_t *queue = data; - - /* Ignore errors here, we can't do anything about them anyway. */ - - apr_thread_cond_destroy(queue->not_empty); - apr_thread_cond_destroy(queue->not_full); - apr_thread_mutex_destroy(queue->one_big_mutex); - - return APR_SUCCESS; -} - -/** - * Initialize the apr_queue_t. - */ -APU_DECLARE(apr_status_t) apr_queue_create(apr_queue_t **q, - unsigned int queue_capacity, - apr_pool_t *a) -{ - apr_status_t rv; - apr_queue_t *queue; - queue = apr_palloc(a, sizeof(apr_queue_t)); - *q = queue; - - /* nested doesn't work ;( */ - rv = apr_thread_mutex_create(&queue->one_big_mutex, - APR_THREAD_MUTEX_UNNESTED, - a); - if (rv != APR_SUCCESS) { - return rv; - } - - rv = apr_thread_cond_create(&queue->not_empty, a); - if (rv != APR_SUCCESS) { - return rv; - } - - rv = apr_thread_cond_create(&queue->not_full, a); - if (rv != APR_SUCCESS) { - return rv; - } - - /* Set all the data in the queue to NULL */ - queue->data = apr_pcalloc(a, queue_capacity * sizeof(void*)); - queue->bounds = queue_capacity; - queue->nelts = 0; - queue->in = 0; - queue->out = 0; - queue->terminated = 0; - queue->full_waiters = 0; - queue->empty_waiters = 0; - - apr_pool_cleanup_register(a, queue, queue_destroy, apr_pool_cleanup_null); - - return APR_SUCCESS; -} - -/** - * Push new data onto the queue. Blocks if the queue is full. Once - * the push operation has completed, it signals other threads waiting - * in apr_queue_pop() that they may continue consuming sockets. - */ -APU_DECLARE(apr_status_t) apr_queue_push(apr_queue_t *queue, void *data) -{ - apr_status_t rv; - - if (queue->terminated) { - return APR_EOF; /* no more elements ever again */ - } - - rv = apr_thread_mutex_lock(queue->one_big_mutex); - if (rv != APR_SUCCESS) { - return rv; - } - - if (apr_queue_full(queue)) { - if (!queue->terminated) { - queue->full_waiters++; - rv = apr_thread_cond_wait(queue->not_full, queue->one_big_mutex); - queue->full_waiters--; - if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(queue->one_big_mutex); - return rv; - } - } - /* If we wake up and it's still empty, then we were interrupted */ - if (apr_queue_full(queue)) { - Q_DBG("queue full (intr)", queue); - rv = apr_thread_mutex_unlock(queue->one_big_mutex); - if (rv != APR_SUCCESS) { - return rv; - } - if (queue->terminated) { - return APR_EOF; /* no more elements ever again */ - } - else { - return APR_EINTR; - } - } - } - - queue->data[queue->in] = data; - queue->in = (queue->in + 1) % queue->bounds; - queue->nelts++; - - if (queue->empty_waiters) { - Q_DBG("sig !empty", queue); - rv = apr_thread_cond_signal(queue->not_empty); - if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(queue->one_big_mutex); - return rv; - } - } - - rv = apr_thread_mutex_unlock(queue->one_big_mutex); - return rv; -} - -/** - * Push new data onto the queue. Blocks if the queue is full. Once - * the push operation has completed, it signals other threads waiting - * in apr_queue_pop() that they may continue consuming sockets. - */ -APU_DECLARE(apr_status_t) apr_queue_trypush(apr_queue_t *queue, void *data) -{ - apr_status_t rv; - - if (queue->terminated) { - return APR_EOF; /* no more elements ever again */ - } - - rv = apr_thread_mutex_lock(queue->one_big_mutex); - if (rv != APR_SUCCESS) { - return rv; - } - - if (apr_queue_full(queue)) { - rv = apr_thread_mutex_unlock(queue->one_big_mutex); - return APR_EAGAIN; - } - - queue->data[queue->in] = data; - queue->in = (queue->in + 1) % queue->bounds; - queue->nelts++; - - if (queue->empty_waiters) { - Q_DBG("sig !empty", queue); - rv = apr_thread_cond_signal(queue->not_empty); - if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(queue->one_big_mutex); - return rv; - } - } - - rv = apr_thread_mutex_unlock(queue->one_big_mutex); - return rv; -} - -/** - * not thread safe - */ -APU_DECLARE(unsigned int) apr_queue_size(apr_queue_t *queue) { - return queue->nelts; -} - -/** - * Retrieves the next item from the queue. If there are no - * items available, it will block until one becomes available. - * Once retrieved, the item is placed into the address specified by - * 'data'. - */ -APU_DECLARE(apr_status_t) apr_queue_pop(apr_queue_t *queue, void **data) -{ - apr_status_t rv; - - if (queue->terminated) { - return APR_EOF; /* no more elements ever again */ - } - - rv = apr_thread_mutex_lock(queue->one_big_mutex); - if (rv != APR_SUCCESS) { - return rv; - } - - /* Keep waiting until we wake up and find that the queue is not empty. */ - if (apr_queue_empty(queue)) { - if (!queue->terminated) { - queue->empty_waiters++; - rv = apr_thread_cond_wait(queue->not_empty, queue->one_big_mutex); - queue->empty_waiters--; - if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(queue->one_big_mutex); - return rv; - } - } - /* If we wake up and it's still empty, then we were interrupted */ - if (apr_queue_empty(queue)) { - Q_DBG("queue empty (intr)", queue); - rv = apr_thread_mutex_unlock(queue->one_big_mutex); - if (rv != APR_SUCCESS) { - return rv; - } - if (queue->terminated) { - return APR_EOF; /* no more elements ever again */ - } - else { - return APR_EINTR; - } - } - } - - *data = queue->data[queue->out]; - queue->nelts--; - - queue->out = (queue->out + 1) % queue->bounds; - if (queue->full_waiters) { - Q_DBG("signal !full", queue); - rv = apr_thread_cond_signal(queue->not_full); - if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(queue->one_big_mutex); - return rv; - } - } - - rv = apr_thread_mutex_unlock(queue->one_big_mutex); - return rv; -} - -/** - * Retrieves the next item from the queue. If there are no - * items available, it will block until one becomes available. - * Once retrieved, the item is placed into the address specified by - * 'data'. - */ -APU_DECLARE(apr_status_t) apr_queue_trypop(apr_queue_t *queue, void **data) -{ - apr_status_t rv; - - if (queue->terminated) { - return APR_EOF; /* no more elements ever again */ - } - - rv = apr_thread_mutex_lock(queue->one_big_mutex); - if (rv != APR_SUCCESS) { - return rv; - } - - /* Keep waiting until we wake up and find that the queue is not empty. */ - if (apr_queue_empty(queue)) { - rv = apr_thread_mutex_unlock(queue->one_big_mutex); - return APR_EAGAIN; - } - - *data = queue->data[queue->out]; - queue->nelts--; - - queue->out = (queue->out + 1) % queue->bounds; - if (queue->full_waiters) { - Q_DBG("signal !full", queue); - rv = apr_thread_cond_signal(queue->not_full); - if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(queue->one_big_mutex); - return rv; - } - } - - rv = apr_thread_mutex_unlock(queue->one_big_mutex); - return rv; -} - -APU_DECLARE(apr_status_t) apr_queue_interrupt_all(apr_queue_t *queue) -{ - apr_status_t rv; - Q_DBG("intr all", queue); - if ((rv = apr_thread_mutex_lock(queue->one_big_mutex)) != APR_SUCCESS) { - return rv; - } - apr_thread_cond_broadcast(queue->not_empty); - apr_thread_cond_broadcast(queue->not_full); - - if ((rv = apr_thread_mutex_unlock(queue->one_big_mutex)) != APR_SUCCESS) { - return rv; - } - - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_queue_term(apr_queue_t *queue) -{ - apr_status_t rv; - - if ((rv = apr_thread_mutex_lock(queue->one_big_mutex)) != APR_SUCCESS) { - return rv; - } - - /* we must hold one_big_mutex when setting this... otherwise, - * we could end up setting it and waking everybody up just after a - * would-be popper checks it but right before they block - */ - queue->terminated = 1; - if ((rv = apr_thread_mutex_unlock(queue->one_big_mutex)) != APR_SUCCESS) { - return rv; - } - return apr_queue_interrupt_all(queue); -} - -#endif /* APR_HAS_THREADS */ diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_queue.lo b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_queue.lo deleted file mode 100644 index c23cf9f8..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_queue.lo +++ /dev/null @@ -1,12 +0,0 @@ -# apr_queue.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/apr_queue.o' - -# Name of the non-PIC object. -non_pic_object='apr_queue.o' - diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_queue.o b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_queue.o Binary files differdeleted file mode 100644 index 7e51f1f8..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_queue.o +++ /dev/null diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_reslist.c b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_reslist.c deleted file mode 100644 index 9bb5de90..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_reslist.c +++ /dev/null @@ -1,375 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <assert.h> - -#include "apu.h" -#include "apr_reslist.h" -#include "apr_errno.h" -#include "apr_strings.h" -#include "apr_thread_mutex.h" -#include "apr_thread_cond.h" -#include "apr_ring.h" - -#if APR_HAS_THREADS - -/** - * A single resource element. - */ -struct apr_res_t { - apr_time_t freed; - void *opaque; - APR_RING_ENTRY(apr_res_t) link; -}; -typedef struct apr_res_t apr_res_t; - -/** - * A ring of resources representing the list of available resources. - */ -APR_RING_HEAD(apr_resring_t, apr_res_t); -typedef struct apr_resring_t apr_resring_t; - -struct apr_reslist_t { - apr_pool_t *pool; /* the pool used in constructor and destructor calls */ - int ntotal; /* total number of resources managed by this list */ - int nidle; /* number of available resources */ - int min; /* desired minimum number of available resources */ - int smax; /* soft maximum on the total number of resources */ - int hmax; /* hard maximum on the total number of resources */ - apr_interval_time_t ttl; /* TTL when we have too many resources */ - apr_interval_time_t timeout; /* Timeout for waiting on resource */ - apr_reslist_constructor constructor; - apr_reslist_destructor destructor; - void *params; /* opaque data passed to constructor and destructor calls */ - apr_resring_t avail_list; - apr_resring_t free_list; - apr_thread_mutex_t *listlock; - apr_thread_cond_t *avail; -}; - -/** - * Grab a resource from the front of the resource list. - * Assumes: that the reslist is locked. - */ -static apr_res_t *pop_resource(apr_reslist_t *reslist) -{ - apr_res_t *res; - res = APR_RING_FIRST(&reslist->avail_list); - APR_RING_REMOVE(res, link); - reslist->nidle--; - return res; -} - -/** - * Add a resource to the end of the list, set the time at which - * it was added to the list. - * Assumes: that the reslist is locked. - */ -static void push_resource(apr_reslist_t *reslist, apr_res_t *resource) -{ - APR_RING_INSERT_TAIL(&reslist->avail_list, resource, apr_res_t, link); - resource->freed = apr_time_now(); - reslist->nidle++; -} - -/** - * Get an empty resource container from the free list. - */ -static apr_res_t *get_container(apr_reslist_t *reslist) -{ - apr_res_t *res; - - assert(!APR_RING_EMPTY(&reslist->free_list, apr_res_t, link)); - - res = APR_RING_FIRST(&reslist->free_list); - APR_RING_REMOVE(res, link); - - return res; -} - -/** - * Free up a resource container by placing it on the free list. - */ -static void free_container(apr_reslist_t *reslist, apr_res_t *container) -{ - APR_RING_INSERT_TAIL(&reslist->free_list, container, apr_res_t, link); -} - -/** - * Create a new resource and return it. - * Assumes: that the reslist is locked. - */ -static apr_status_t create_resource(apr_reslist_t *reslist, apr_res_t **ret_res) -{ - apr_status_t rv; - apr_res_t *res; - - res = apr_pcalloc(reslist->pool, sizeof(*res)); - - rv = reslist->constructor(&res->opaque, reslist->params, reslist->pool); - - *ret_res = res; - return rv; -} - -/** - * Destroy a single idle resource. - * Assumes: that the reslist is locked. - */ -static apr_status_t destroy_resource(apr_reslist_t *reslist, apr_res_t *res) -{ - return reslist->destructor(res->opaque, reslist->params, reslist->pool); -} - -static apr_status_t reslist_cleanup(void *data_) -{ - apr_status_t rv; - apr_reslist_t *rl = data_; - apr_res_t *res; - - apr_thread_mutex_lock(rl->listlock); - - while (rl->nidle > 0) { - res = pop_resource(rl); - rl->ntotal--; - rv = destroy_resource(rl, res); - if (rv != APR_SUCCESS) { - return rv; - } - free_container(rl, res); - } - - assert(rl->nidle == 0); - assert(rl->ntotal == 0); - - apr_thread_mutex_destroy(rl->listlock); - apr_thread_cond_destroy(rl->avail); - - return APR_SUCCESS; -} - -/** - * Perform routine maintenance on the resource list. This call - * may instantiate new resources or expire old resources. - */ -static apr_status_t reslist_maint(apr_reslist_t *reslist) -{ - apr_time_t now; - apr_status_t rv; - apr_res_t *res; - int created_one = 0; - - apr_thread_mutex_lock(reslist->listlock); - - /* Check if we need to create more resources, and if we are allowed to. */ - while (reslist->nidle < reslist->min && reslist->ntotal <= reslist->hmax) { - /* Create the resource */ - rv = create_resource(reslist, &res); - if (rv != APR_SUCCESS) { - free_container(reslist, res); - apr_thread_mutex_unlock(reslist->listlock); - return rv; - } - /* Add it to the list */ - push_resource(reslist, res); - /* Update our counters */ - reslist->ntotal++; - /* If someone is waiting on that guy, wake them up. */ - rv = apr_thread_cond_signal(reslist->avail); - if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(reslist->listlock); - return rv; - } - created_one++; - } - - /* We don't need to see if we're over the max if we were under it before */ - if (created_one) { - apr_thread_mutex_unlock(reslist->listlock); - return APR_SUCCESS; - } - - /* Check if we need to expire old resources */ - now = apr_time_now(); - while (reslist->nidle > reslist->smax && reslist->nidle > 0) { - /* Peak at the first resource in the list */ - res = APR_RING_FIRST(&reslist->avail_list); - /* See if the oldest entry should be expired */ - if (now - res->freed < reslist->ttl) { - /* If this entry is too young, none of the others - * will be ready to be expired either, so we are done. */ - break; - } - res = pop_resource(reslist); - reslist->ntotal--; - rv = destroy_resource(reslist, res); - if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(reslist->listlock); - return rv; - } - free_container(reslist, res); - } - - apr_thread_mutex_unlock(reslist->listlock); - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_reslist_create(apr_reslist_t **reslist, - int min, int smax, int hmax, - apr_interval_time_t ttl, - apr_reslist_constructor con, - apr_reslist_destructor de, - void *params, - apr_pool_t *pool) -{ - apr_status_t rv; - apr_reslist_t *rl; - - /* Do some sanity checks so we don't thrash around in the - * maintenance routine later. */ - if (min > smax || min > hmax || smax > hmax || ttl < 0) { - return APR_EINVAL; - } - - rl = apr_pcalloc(pool, sizeof(*rl)); - rl->pool = pool; - rl->min = min; - rl->smax = smax; - rl->hmax = hmax; - rl->ttl = ttl; - rl->constructor = con; - rl->destructor = de; - rl->params = params; - - APR_RING_INIT(&rl->avail_list, apr_res_t, link); - APR_RING_INIT(&rl->free_list, apr_res_t, link); - - rv = apr_thread_mutex_create(&rl->listlock, APR_THREAD_MUTEX_DEFAULT, - pool); - if (rv != APR_SUCCESS) { - return rv; - } - rv = apr_thread_cond_create(&rl->avail, pool); - if (rv != APR_SUCCESS) { - return rv; - } - - rv = reslist_maint(rl); - if (rv != APR_SUCCESS) { - return rv; - } - - apr_pool_cleanup_register(rl->pool, rl, reslist_cleanup, - apr_pool_cleanup_null); - - *reslist = rl; - - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_reslist_destroy(apr_reslist_t *reslist) -{ - return apr_pool_cleanup_run(reslist->pool, reslist, reslist_cleanup); -} - -APU_DECLARE(apr_status_t) apr_reslist_acquire(apr_reslist_t *reslist, - void **resource) -{ - apr_status_t rv; - apr_res_t *res; - - apr_thread_mutex_lock(reslist->listlock); - /* If there are idle resources on the available list, use - * them right away. */ - if (reslist->nidle > 0) { - /* Pop off the first resource */ - res = pop_resource(reslist); - *resource = res->opaque; - free_container(reslist, res); - apr_thread_mutex_unlock(reslist->listlock); - return APR_SUCCESS; - } - /* If we've hit our max, block until we're allowed to create - * a new one, or something becomes free. */ - else while (reslist->ntotal >= reslist->hmax - && reslist->nidle <= 0) { - if (reslist->timeout) { - if ((rv = apr_thread_cond_timedwait(reslist->avail, - reslist->listlock, reslist->timeout)) != APR_SUCCESS) { - apr_thread_mutex_unlock(reslist->listlock); - return rv; - } - } - else - apr_thread_cond_wait(reslist->avail, reslist->listlock); - } - /* If we popped out of the loop, first try to see if there - * are new resources available for immediate use. */ - if (reslist->nidle > 0) { - res = pop_resource(reslist); - *resource = res->opaque; - free_container(reslist, res); - apr_thread_mutex_unlock(reslist->listlock); - return APR_SUCCESS; - } - /* Otherwise the reason we dropped out of the loop - * was because there is a new slot available, so create - * a resource to fill the slot and use it. */ - else { - rv = create_resource(reslist, &res); - if (rv == APR_SUCCESS) { - reslist->ntotal++; - *resource = res->opaque; - } - free_container(reslist, res); - apr_thread_mutex_unlock(reslist->listlock); - return rv; - } -} - -APU_DECLARE(apr_status_t) apr_reslist_release(apr_reslist_t *reslist, - void *resource) -{ - apr_res_t *res; - - apr_thread_mutex_lock(reslist->listlock); - res = get_container(reslist); - res->opaque = resource; - push_resource(reslist, res); - apr_thread_cond_signal(reslist->avail); - apr_thread_mutex_unlock(reslist->listlock); - - return reslist_maint(reslist); -} - -APU_DECLARE(void) apr_reslist_timeout_set(apr_reslist_t *reslist, - apr_interval_time_t timeout) -{ - reslist->timeout = timeout; -} - -APU_DECLARE(apr_status_t) apr_reslist_invalidate(apr_reslist_t *reslist, - void *resource) -{ - apr_status_t ret; - apr_thread_mutex_lock(reslist->listlock); - ret = reslist->destructor(resource, reslist->params, reslist->pool); - reslist->ntotal--; - apr_thread_mutex_unlock(reslist->listlock); - return ret; -} - -#endif /* APR_HAS_THREADS */ diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_reslist.lo b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_reslist.lo deleted file mode 100644 index dbd705a1..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_reslist.lo +++ /dev/null @@ -1,12 +0,0 @@ -# apr_reslist.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/apr_reslist.o' - -# Name of the non-PIC object. -non_pic_object='apr_reslist.o' - diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_reslist.o b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_reslist.o Binary files differdeleted file mode 100644 index a65ef873..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_reslist.o +++ /dev/null diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_rmm.c b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_rmm.c deleted file mode 100644 index ec09c6bc..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_rmm.c +++ /dev/null @@ -1,428 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_general.h" -#include "apr_rmm.h" -#include "apr_errno.h" -#include "apr_lib.h" -#include "apr_strings.h" - -typedef struct rmm_block_t { - apr_size_t size; - apr_rmm_off_t prev; - apr_rmm_off_t next; -} rmm_block_t; - -/* Always at our apr_rmm_off(0): - */ -typedef struct rmm_hdr_block_t { - apr_size_t abssize; - apr_rmm_off_t /* rmm_block_t */ firstused; - apr_rmm_off_t /* rmm_block_t */ firstfree; -} rmm_hdr_block_t; - -#define RMM_HDR_BLOCK_SIZE (APR_ALIGN_DEFAULT(sizeof(rmm_hdr_block_t))) -#define RMM_BLOCK_SIZE (APR_ALIGN_DEFAULT(sizeof(rmm_block_t))) - -struct apr_rmm_t { - apr_pool_t *p; - rmm_hdr_block_t *base; - apr_size_t size; - apr_anylock_t lock; -}; - -static apr_rmm_off_t find_block_by_offset(apr_rmm_t *rmm, apr_rmm_off_t next, - apr_rmm_off_t find, int includes) -{ - apr_rmm_off_t prev = 0; - - while (next) { - struct rmm_block_t *blk = (rmm_block_t*)((char*)rmm->base + next); - - if (find == next) - return next; - - /* Overshot? */ - if (find < next) - return includes ? prev : 0; - - prev = next; - next = blk->next; - } - return includes ? prev : 0; -} - -static apr_rmm_off_t find_block_of_size(apr_rmm_t *rmm, apr_size_t size) -{ - apr_rmm_off_t next = rmm->base->firstfree; - apr_rmm_off_t best = 0; - apr_rmm_off_t bestsize = 0; - - while (next) { - struct rmm_block_t *blk = (rmm_block_t*)((char*)rmm->base + next); - - if (blk->size == size) - return next; - - if (blk->size >= size) { - /* XXX: sub optimal algorithm - * We need the most thorough best-fit logic, since we can - * never grow our rmm, we are SOL when we hit the wall. - */ - if (!bestsize || (blk->size < bestsize)) { - bestsize = blk->size; - best = next; - } - } - - next = blk->next; - } - - if (bestsize > RMM_BLOCK_SIZE + size) { - struct rmm_block_t *blk = (rmm_block_t*)((char*)rmm->base + best); - struct rmm_block_t *new = (rmm_block_t*)((char*)rmm->base + best + size); - - new->size = blk->size - size; - new->next = blk->next; - new->prev = best; - - blk->size = size; - blk->next = best + size; - - if (new->next) { - blk = (rmm_block_t*)((char*)rmm->base + new->next); - blk->prev = best + size; - } - } - - return best; -} - -static void move_block(apr_rmm_t *rmm, apr_rmm_off_t this, int free) -{ - struct rmm_block_t *blk = (rmm_block_t*)((char*)rmm->base + this); - - /* close the gap */ - if (blk->prev) { - struct rmm_block_t *prev = (rmm_block_t*)((char*)rmm->base + blk->prev); - prev->next = blk->next; - } - else { - if (free) { - rmm->base->firstused = blk->next; - } - else { - rmm->base->firstfree = blk->next; - } - } - if (blk->next) { - struct rmm_block_t *next = (rmm_block_t*)((char*)rmm->base + blk->next); - next->prev = blk->prev; - } - - /* now find it in the other list, pushing it to the head if required */ - if (free) { - blk->prev = find_block_by_offset(rmm, rmm->base->firstfree, this, 1); - if (!blk->prev) { - blk->next = rmm->base->firstfree; - rmm->base->firstfree = this; - } - } - else { - blk->prev = find_block_by_offset(rmm, rmm->base->firstused, this, 1); - if (!blk->prev) { - blk->next = rmm->base->firstused; - rmm->base->firstused = this; - } - } - - /* and open it up */ - if (blk->prev) { - struct rmm_block_t *prev = (rmm_block_t*)((char*)rmm->base + blk->prev); - if (free && (blk->prev + prev->size == this)) { - /* Collapse us into our predecessor */ - prev->size += blk->size; - this = blk->prev; - blk = prev; - } - else { - blk->next = prev->next; - prev->next = this; - } - } - - if (blk->next) { - struct rmm_block_t *next = (rmm_block_t*)((char*)rmm->base + blk->next); - if (free && (this + blk->size == blk->next)) { - /* Collapse us into our successor */ - blk->size += next->size; - blk->next = next->next; - if (blk->next) { - next = (rmm_block_t*)((char*)rmm->base + blk->next); - next->prev = this; - } - } - else { - next->prev = this; - } - } -} - -APU_DECLARE(apr_status_t) apr_rmm_init(apr_rmm_t **rmm, apr_anylock_t *lock, - void *base, apr_size_t size, - apr_pool_t *p) -{ - apr_status_t rv; - rmm_block_t *blk; - apr_anylock_t nulllock; - - if (!lock) { - nulllock.type = apr_anylock_none; - nulllock.lock.pm = NULL; - lock = &nulllock; - } - if ((rv = APR_ANYLOCK_LOCK(lock)) != APR_SUCCESS) - return rv; - - (*rmm) = (apr_rmm_t *)apr_pcalloc(p, sizeof(apr_rmm_t)); - (*rmm)->p = p; - (*rmm)->base = base; - (*rmm)->size = size; - (*rmm)->lock = *lock; - - (*rmm)->base->abssize = size; - (*rmm)->base->firstused = 0; - (*rmm)->base->firstfree = RMM_HDR_BLOCK_SIZE; - - blk = (rmm_block_t *)((char*)base + (*rmm)->base->firstfree); - - blk->size = size - (*rmm)->base->firstfree; - blk->prev = 0; - blk->next = 0; - - return APR_ANYLOCK_UNLOCK(lock); -} - -APU_DECLARE(apr_status_t) apr_rmm_destroy(apr_rmm_t *rmm) -{ - apr_status_t rv; - rmm_block_t *blk; - - if ((rv = APR_ANYLOCK_LOCK(&rmm->lock)) != APR_SUCCESS) { - return rv; - } - /* Blast it all --- no going back :) */ - if (rmm->base->firstused) { - apr_rmm_off_t this = rmm->base->firstused; - do { - blk = (rmm_block_t *)((char*)rmm->base + this); - this = blk->next; - blk->next = blk->prev = 0; - } while (this); - rmm->base->firstused = 0; - } - if (rmm->base->firstfree) { - apr_rmm_off_t this = rmm->base->firstfree; - do { - blk = (rmm_block_t *)((char*)rmm->base + this); - this = blk->next; - blk->next = blk->prev = 0; - } while (this); - rmm->base->firstfree = 0; - } - rmm->base->abssize = 0; - rmm->size = 0; - - return APR_ANYLOCK_UNLOCK(&rmm->lock); -} - -APU_DECLARE(apr_status_t) apr_rmm_attach(apr_rmm_t **rmm, apr_anylock_t *lock, - void *base, apr_pool_t *p) -{ - apr_anylock_t nulllock; - - if (!lock) { - nulllock.type = apr_anylock_none; - nulllock.lock.pm = NULL; - lock = &nulllock; - } - - /* sanity would be good here */ - (*rmm) = (apr_rmm_t *)apr_pcalloc(p, sizeof(apr_rmm_t)); - (*rmm)->p = p; - (*rmm)->base = base; - (*rmm)->size = (*rmm)->base->abssize; - (*rmm)->lock = *lock; - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_rmm_detach(apr_rmm_t *rmm) -{ - /* A noop until we introduce locked/refcounts */ - return APR_SUCCESS; -} - -APU_DECLARE(apr_rmm_off_t) apr_rmm_malloc(apr_rmm_t *rmm, apr_size_t reqsize) -{ - apr_size_t size; - apr_rmm_off_t this; - - size = APR_ALIGN_DEFAULT(reqsize) + RMM_BLOCK_SIZE; - if (size < reqsize) { - return 0; - } - - APR_ANYLOCK_LOCK(&rmm->lock); - - this = find_block_of_size(rmm, size); - - if (this) { - move_block(rmm, this, 0); - this += RMM_BLOCK_SIZE; - } - - APR_ANYLOCK_UNLOCK(&rmm->lock); - return this; -} - -APU_DECLARE(apr_rmm_off_t) apr_rmm_calloc(apr_rmm_t *rmm, apr_size_t reqsize) -{ - apr_size_t size; - apr_rmm_off_t this; - - size = APR_ALIGN_DEFAULT(reqsize) + RMM_BLOCK_SIZE; - if (size < reqsize) { - return 0; - } - - APR_ANYLOCK_LOCK(&rmm->lock); - - this = find_block_of_size(rmm, size); - - if (this) { - move_block(rmm, this, 0); - this += RMM_BLOCK_SIZE; - memset((char*)rmm->base + this, 0, size - RMM_BLOCK_SIZE); - } - - APR_ANYLOCK_UNLOCK(&rmm->lock); - return this; -} - -APU_DECLARE(apr_rmm_off_t) apr_rmm_realloc(apr_rmm_t *rmm, void *entity, - apr_size_t reqsize) -{ - apr_rmm_off_t this; - apr_rmm_off_t old; - struct rmm_block_t *blk; - apr_size_t size, oldsize; - - if (!entity) { - return apr_rmm_malloc(rmm, reqsize); - } - - size = APR_ALIGN_DEFAULT(reqsize); - if (size < reqsize) { - return 0; - } - old = apr_rmm_offset_get(rmm, entity); - - if ((this = apr_rmm_malloc(rmm, size)) == 0) { - return 0; - } - - blk = (rmm_block_t*)((char*)rmm->base + old - RMM_BLOCK_SIZE); - oldsize = blk->size; - - memcpy(apr_rmm_addr_get(rmm, this), - apr_rmm_addr_get(rmm, old), oldsize < size ? oldsize : size); - apr_rmm_free(rmm, old); - - return this; -} - -APU_DECLARE(apr_status_t) apr_rmm_free(apr_rmm_t *rmm, apr_rmm_off_t this) -{ - apr_status_t rv; - struct rmm_block_t *blk; - - /* A little sanity check is always healthy, especially here. - * If we really cared, we could make this compile-time - */ - if (this < RMM_HDR_BLOCK_SIZE + RMM_BLOCK_SIZE) { - return APR_EINVAL; - } - - this -= RMM_BLOCK_SIZE; - - blk = (rmm_block_t*)((char*)rmm->base + this); - - if ((rv = APR_ANYLOCK_LOCK(&rmm->lock)) != APR_SUCCESS) { - return rv; - } - if (blk->prev) { - struct rmm_block_t *prev = (rmm_block_t*)((char*)rmm->base + blk->prev); - if (prev->next != this) { - APR_ANYLOCK_UNLOCK(&rmm->lock); - return APR_EINVAL; - } - } - else { - if (rmm->base->firstused != this) { - APR_ANYLOCK_UNLOCK(&rmm->lock); - return APR_EINVAL; - } - } - - if (blk->next) { - struct rmm_block_t *next = (rmm_block_t*)((char*)rmm->base + blk->next); - if (next->prev != this) { - APR_ANYLOCK_UNLOCK(&rmm->lock); - return APR_EINVAL; - } - } - - /* Ok, it remained [apparently] sane, so unlink it - */ - move_block(rmm, this, 1); - - return APR_ANYLOCK_UNLOCK(&rmm->lock); -} - -APU_DECLARE(void *) apr_rmm_addr_get(apr_rmm_t *rmm, apr_rmm_off_t entity) -{ - /* debug-sanity checking here would be good - */ - return (void*)((char*)rmm->base + entity); -} - -APU_DECLARE(apr_rmm_off_t) apr_rmm_offset_get(apr_rmm_t *rmm, void* entity) -{ - /* debug, or always, sanity checking here would be good - * since the primitive is apr_rmm_off_t, I don't mind penalizing - * inverse conversions for safety, unless someone can prove that - * there is no choice in some cases. - */ - return ((char*)entity - (char*)rmm->base); -} - -APU_DECLARE(apr_size_t) apr_rmm_overhead_get(int n) -{ - /* overhead per block is at most APR_ALIGN_DEFAULT(1) wasted bytes - * for alignment overhead, plus the size of the rmm_block_t - * structure. */ - return RMM_HDR_BLOCK_SIZE + n * (RMM_BLOCK_SIZE + APR_ALIGN_DEFAULT(1)); -} diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_rmm.lo b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_rmm.lo deleted file mode 100644 index facd7478..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_rmm.lo +++ /dev/null @@ -1,12 +0,0 @@ -# apr_rmm.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/apr_rmm.o' - -# Name of the non-PIC object. -non_pic_object='apr_rmm.o' - diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_rmm.o b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_rmm.o Binary files differdeleted file mode 100644 index 6a0e1874..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apr_rmm.o +++ /dev/null diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apu_version.c b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apu_version.c deleted file mode 100644 index dab34b71..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apu_version.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_general.h" /* for APR_STRINGIFY */ - -#include "apu.h" -#include "apu_version.h" - -APU_DECLARE(void) apu_version(apr_version_t *pvsn) -{ - pvsn->major = APU_MAJOR_VERSION; - pvsn->minor = APU_MINOR_VERSION; - pvsn->patch = APU_PATCH_VERSION; -#ifdef APU_IS_DEV_VERSION - pvsn->is_dev = 1; -#else - pvsn->is_dev = 0; -#endif -} - -APU_DECLARE(const char *) apu_version_string(void) -{ - return APU_VERSION_STRING; -} diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apu_version.lo b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apu_version.lo deleted file mode 100644 index 3c72fd09..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apu_version.lo +++ /dev/null @@ -1,12 +0,0 @@ -# apu_version.lo - a libtool object file -# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18) -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object='.libs/apu_version.o' - -# Name of the non-PIC object. -non_pic_object='apu_version.o' - diff --git a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apu_version.o b/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apu_version.o Binary files differdeleted file mode 100644 index cc0201b8..00000000 --- a/rubbos/app/httpd-2.0.64/srclib/apr-util/misc/apu_version.o +++ /dev/null |