diff options
| author | 2007-10-20 13:18:20 +0000 | |
|---|---|---|
| committer | 2007-10-20 13:18:20 +0000 | |
| commit | 1415cc4f58be08f90e646096cbf7e229a92faea5 (patch) | |
| tree | a4c705e47adbc941e1de5287ef3b67e50e2a2bca | |
| parent | fdee18399169716032a052effedf886480590efc (diff) | |
updated with new code to allow better dynamic configuration of logged fields
| -rw-r--r-- | apache13.h | 11 | ||||
| -rwxr-xr-x | config.guess | 1314 | ||||
| -rwxr-xr-x | config.sub | 1410 | ||||
| -rw-r--r-- | configure.ac | 4 | ||||
| -rw-r--r-- | functions.h | 8 | ||||
| -rw-r--r-- | mod_log_sql.c | 618 | ||||
| -rw-r--r-- | mod_log_sql.h | 48 | ||||
| -rw-r--r-- | mod_log_sql_logio.c | 19 | ||||
| -rw-r--r-- | mod_log_sql_ssl.c | 22 |
9 files changed, 542 insertions, 2912 deletions
| @@ -47,7 +47,7 @@ | |||
| 47 | /* Functions */ | 47 | /* Functions */ |
| 48 | #define ap_get_remote_host(a,b,c,d) ap_get_remote_host(a,b,c) | 48 | #define ap_get_remote_host(a,b,c,d) ap_get_remote_host(a,b,c) |
| 49 | #define ap_set_deprecated NULL | 49 | #define ap_set_deprecated NULL |
| 50 | 50 | ||
| 51 | #define apr_uri_unparse ap_unparse_uri_components | 51 | #define apr_uri_unparse ap_unparse_uri_components |
| 52 | #define apr_uri_parse ap_parse_uri_components | 52 | #define apr_uri_parse ap_parse_uri_components |
| 53 | #define ap_add_version_component(p,s) ap_add_version_component(s) | 53 | #define ap_add_version_component(p,s) ap_add_version_component(s) |
| @@ -75,15 +75,18 @@ | |||
| 75 | #define apr_array_cat ap_array_cat | 75 | #define apr_array_cat ap_array_cat |
| 76 | #define apr_is_empty_array(t) (((t) == NULL)||((t)->nelts == 0)) | 76 | #define apr_is_empty_array(t) (((t) == NULL)||((t)->nelts == 0)) |
| 77 | 77 | ||
| 78 | #define apr_file_t FILE | ||
| 79 | #define apr_file_printf fprintf | ||
| 80 | |||
| 78 | #define apr_tolower ap_tolower | 81 | #define apr_tolower ap_tolower |
| 79 | 82 | ||
| 80 | void log_error(char *file, int line, int level, apr_status_t status, | 83 | void log_error(char *file, int line, int level, apr_status_t status, |
| 81 | const server_rec *s, const char *fmt, ...) __attribute__ ((format (printf, 6,7))); | 84 | const server_rec *s, const char *fmt, ...) __attribute__ ((format (printf, 6,7))); |
| 82 | 85 | ||
| 83 | #ifndef WIN32 | 86 | #ifndef WIN32 |
| 84 | inline | 87 | inline |
| 85 | #endif | 88 | #endif |
| 86 | void log_error(char *file, int line, int level, | 89 | void log_error(char *file, int line, int level, |
| 87 | apr_status_t status, const server_rec *s, const char *fmt, ...) | 90 | apr_status_t status, const server_rec *s, const char *fmt, ...) |
| 88 | { | 91 | { |
| 89 | static char buff[MAX_STRING_LEN]; | 92 | static char buff[MAX_STRING_LEN]; |
diff --git a/config.guess b/config.guess deleted file mode 100755 index cd430f6..0000000 --- a/config.guess +++ /dev/null | |||
| @@ -1,1314 +0,0 @@ | |||
| 1 | #! /bin/sh | ||
| 2 | # Attempt to guess a canonical system name. | ||
| 3 | # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 | ||
| 4 | # Free Software Foundation, Inc. | ||
| 5 | |||
| 6 | timestamp='2001-08-21' | ||
| 7 | |||
| 8 | # This file is free software; you can redistribute it and/or modify it | ||
| 9 | # under the terms of the GNU General Public License as published by | ||
| 10 | # the Free Software Foundation; either version 2 of the License, or | ||
| 11 | # (at your option) any later version. | ||
| 12 | # | ||
| 13 | # This program is distributed in the hope that it will be useful, but | ||
| 14 | # WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 16 | # General Public License for more details. | ||
| 17 | # | ||
| 18 | # You should have received a copy of the GNU General Public License | ||
| 19 | # along with this program; if not, write to the Free Software | ||
| 20 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
| 21 | # | ||
| 22 | # As a special exception to the GNU General Public License, if you | ||
| 23 | # distribute this file as part of a program that contains a | ||
| 24 | # configuration script generated by Autoconf, you may include it under | ||
| 25 | # the same distribution terms that you use for the rest of that program. | ||
| 26 | |||
| 27 | # Written by Per Bothner <bothner@cygnus.com>. | ||
| 28 | # Please send patches to <config-patches@gnu.org>. | ||
| 29 | # | ||
| 30 | # This script attempts to guess a canonical system name similar to | ||
| 31 | # config.sub. If it succeeds, it prints the system name on stdout, and | ||
| 32 | # exits with 0. Otherwise, it exits with 1. | ||
| 33 | # | ||
| 34 | # The plan is that this can be called by configure scripts if you | ||
| 35 | # don't specify an explicit build system type. | ||
| 36 | |||
| 37 | me=`echo "$0" | sed -e 's,.*/,,'` | ||
| 38 | |||
| 39 | usage="\ | ||
| 40 | Usage: $0 [OPTION] | ||
| 41 | |||
| 42 | Output the configuration name of the system \`$me' is run on. | ||
| 43 | |||
| 44 | Operation modes: | ||
| 45 | -h, --help print this help, then exit | ||
| 46 | -t, --time-stamp print date of last modification, then exit | ||
| 47 | -v, --version print version number, then exit | ||
| 48 | |||
| 49 | Report bugs and patches to <config-patches@gnu.org>." | ||
| 50 | |||
| 51 | version="\ | ||
| 52 | GNU config.guess ($timestamp) | ||
| 53 | |||
| 54 | Originally written by Per Bothner. | ||
| 55 | Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 | ||
| 56 | Free Software Foundation, Inc. | ||
| 57 | |||
| 58 | This is free software; see the source for copying conditions. There is NO | ||
| 59 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." | ||
| 60 | |||
| 61 | help=" | ||
| 62 | Try \`$me --help' for more information." | ||
| 63 | |||
| 64 | # Parse command line | ||
| 65 | while test $# -gt 0 ; do | ||
| 66 | case $1 in | ||
| 67 | --time-stamp | --time* | -t ) | ||
| 68 | echo "$timestamp" ; exit 0 ;; | ||
| 69 | --version | -v ) | ||
| 70 | echo "$version" ; exit 0 ;; | ||
| 71 | --help | --h* | -h ) | ||
| 72 | echo "$usage"; exit 0 ;; | ||
| 73 | -- ) # Stop option processing | ||
| 74 | shift; break ;; | ||
| 75 | - ) # Use stdin as input. | ||
| 76 | break ;; | ||
| 77 | -* ) | ||
| 78 | echo "$me: invalid option $1$help" >&2 | ||
| 79 | exit 1 ;; | ||
| 80 | * ) | ||
| 81 | break ;; | ||
| 82 | esac | ||
| 83 | done | ||
| 84 | |||
| 85 | if test $# != 0; then | ||
| 86 | echo "$me: too many arguments$help" >&2 | ||
| 87 | exit 1 | ||
| 88 | fi | ||
| 89 | |||
| 90 | |||
| 91 | dummy=dummy-$$ | ||
| 92 | trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 | ||
| 93 | |||
| 94 | # CC_FOR_BUILD -- compiler used by this script. | ||
| 95 | # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still | ||
| 96 | # use `HOST_CC' if defined, but it is deprecated. | ||
| 97 | |||
| 98 | set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in | ||
| 99 | ,,) echo "int dummy(){}" > $dummy.c ; | ||
| 100 | for c in cc gcc c89 ; do | ||
| 101 | ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; | ||
| 102 | if test $? = 0 ; then | ||
| 103 | CC_FOR_BUILD="$c"; break ; | ||
| 104 | fi ; | ||
| 105 | done ; | ||
| 106 | rm -f $dummy.c $dummy.o $dummy.rel ; | ||
| 107 | if test x"$CC_FOR_BUILD" = x ; then | ||
| 108 | CC_FOR_BUILD=no_compiler_found ; | ||
| 109 | fi | ||
| 110 | ;; | ||
| 111 | ,,*) CC_FOR_BUILD=$CC ;; | ||
| 112 | ,*,*) CC_FOR_BUILD=$HOST_CC ;; | ||
| 113 | esac' | ||
| 114 | |||
| 115 | # This is needed to find uname on a Pyramid OSx when run in the BSD universe. | ||
| 116 | # (ghazi@noc.rutgers.edu 1994-08-24) | ||
| 117 | if (test -f /.attbin/uname) >/dev/null 2>&1 ; then | ||
| 118 | PATH=$PATH:/.attbin ; export PATH | ||
| 119 | fi | ||
| 120 | |||
| 121 | UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown | ||
| 122 | UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown | ||
| 123 | UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown | ||
| 124 | UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown | ||
| 125 | |||
| 126 | # Note: order is significant - the case branches are not exclusive. | ||
| 127 | |||
| 128 | case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in | ||
| 129 | *:NetBSD:*:*) | ||
| 130 | # Netbsd (nbsd) targets should (where applicable) match one or | ||
| 131 | # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, | ||
| 132 | # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently | ||
| 133 | # switched to ELF, *-*-netbsd* would select the old | ||
| 134 | # object file format. This provides both forward | ||
| 135 | # compatibility and a consistent mechanism for selecting the | ||
| 136 | # object file format. | ||
| 137 | # Determine the machine/vendor (is the vendor relevant). | ||
| 138 | case "${UNAME_MACHINE}" in | ||
| 139 | amiga) machine=m68k-unknown ;; | ||
| 140 | arm32) machine=arm-unknown ;; | ||
| 141 | atari*) machine=m68k-atari ;; | ||
| 142 | sun3*) machine=m68k-sun ;; | ||
| 143 | mac68k) machine=m68k-apple ;; | ||
| 144 | macppc) machine=powerpc-apple ;; | ||
| 145 | hp3[0-9][05]) machine=m68k-hp ;; | ||
| 146 | ibmrt|romp-ibm) machine=romp-ibm ;; | ||
| 147 | *) machine=${UNAME_MACHINE}-unknown ;; | ||
| 148 | esac | ||
| 149 | # The Operating System including object format, if it has switched | ||
| 150 | # to ELF recently, or will in the future. | ||
| 151 | case "${UNAME_MACHINE}" in | ||
| 152 | i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) | ||
| 153 | eval $set_cc_for_build | ||
| 154 | if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | ||
| 155 | | grep __ELF__ >/dev/null | ||
| 156 | then | ||
| 157 | # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). | ||
| 158 | # Return netbsd for either. FIX? | ||
| 159 | os=netbsd | ||
| 160 | else | ||
| 161 | os=netbsdelf | ||
| 162 | fi | ||
| 163 | ;; | ||
| 164 | *) | ||
| 165 | os=netbsd | ||
| 166 | ;; | ||
| 167 | esac | ||
| 168 | # The OS release | ||
| 169 | release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` | ||
| 170 | # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: | ||
| 171 | # contains redundant information, the shorter form: | ||
| 172 | # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. | ||
| 173 | echo "${machine}-${os}${release}" | ||
| 174 | exit 0 ;; | ||
| 175 | alpha:OSF1:*:*) | ||
| 176 | if test $UNAME_RELEASE = "V4.0"; then | ||
| 177 | UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` | ||
| 178 | fi | ||
| 179 | # A Vn.n version is a released version. | ||
| 180 | # A Tn.n version is a released field test version. | ||
| 181 | # A Xn.n version is an unreleased experimental baselevel. | ||
| 182 | # 1.2 uses "1.2" for uname -r. | ||
| 183 | cat <<EOF >$dummy.s | ||
| 184 | .data | ||
| 185 | \$Lformat: | ||
| 186 | .byte 37,100,45,37,120,10,0 # "%d-%x\n" | ||
| 187 | |||
| 188 | .text | ||
| 189 | .globl main | ||
| 190 | .align 4 | ||
| 191 | .ent main | ||
| 192 | main: | ||
| 193 | .frame \$30,16,\$26,0 | ||
| 194 | ldgp \$29,0(\$27) | ||
| 195 | .prologue 1 | ||
| 196 | .long 0x47e03d80 # implver \$0 | ||
| 197 | lda \$2,-1 | ||
| 198 | .long 0x47e20c21 # amask \$2,\$1 | ||
| 199 | lda \$16,\$Lformat | ||
| 200 | mov \$0,\$17 | ||
| 201 | not \$1,\$18 | ||
| 202 | jsr \$26,printf | ||
| 203 | ldgp \$29,0(\$26) | ||
| 204 | mov 0,\$16 | ||
| 205 | jsr \$26,exit | ||
| 206 | .end main | ||
| 207 | EOF | ||
| 208 | eval $set_cc_for_build | ||
| 209 | $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null | ||
| 210 | if test "$?" = 0 ; then | ||
| 211 | case `./$dummy` in | ||
| 212 | 0-0) | ||
| 213 | UNAME_MACHINE="alpha" | ||
| 214 | ;; | ||
| 215 | 1-0) | ||
| 216 | UNAME_MACHINE="alphaev5" | ||
| 217 | ;; | ||
| 218 | 1-1) | ||
| 219 | UNAME_MACHINE="alphaev56" | ||
| 220 | ;; | ||
| 221 | 1-101) | ||
| 222 | UNAME_MACHINE="alphapca56" | ||
| 223 | ;; | ||
| 224 | 2-303) | ||
| 225 | UNAME_MACHINE="alphaev6" | ||
| 226 | ;; | ||
| 227 | 2-307) | ||
| 228 | UNAME_MACHINE="alphaev67" | ||
| 229 | ;; | ||
| 230 | 2-1307) | ||
| 231 | UNAME_MACHINE="alphaev68" | ||
| 232 | ;; | ||
| 233 | esac | ||
| 234 | fi | ||
| 235 | rm -f $dummy.s $dummy | ||
| 236 | echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` | ||
| 237 | exit 0 ;; | ||
| 238 | Alpha\ *:Windows_NT*:*) | ||
| 239 | # How do we know it's Interix rather than the generic POSIX subsystem? | ||
| 240 | # Should we change UNAME_MACHINE based on the output of uname instead | ||
| 241 | # of the specific Alpha model? | ||
| 242 | echo alpha-pc-interix | ||
| 243 | exit 0 ;; | ||
| 244 | 21064:Windows_NT:50:3) | ||
| 245 | echo alpha-dec-winnt3.5 | ||
| 246 | exit 0 ;; | ||
| 247 | Amiga*:UNIX_System_V:4.0:*) | ||
| 248 | echo m68k-unknown-sysv4 | ||
| 249 | exit 0;; | ||
| 250 | amiga:OpenBSD:*:*) | ||
| 251 | echo m68k-unknown-openbsd${UNAME_RELEASE} | ||
| 252 | exit 0 ;; | ||
| 253 | *:[Aa]miga[Oo][Ss]:*:*) | ||
| 254 | echo ${UNAME_MACHINE}-unknown-amigaos | ||
| 255 | exit 0 ;; | ||
| 256 | arc64:OpenBSD:*:*) | ||
| 257 | echo mips64el-unknown-openbsd${UNAME_RELEASE} | ||
| 258 | exit 0 ;; | ||
| 259 | arc:OpenBSD:*:*) | ||
| 260 | echo mipsel-unknown-openbsd${UNAME_RELEASE} | ||
| 261 | exit 0 ;; | ||
| 262 | hkmips:OpenBSD:*:*) | ||
| 263 | echo mips-unknown-openbsd${UNAME_RELEASE} | ||
| 264 | exit 0 ;; | ||
| 265 | pmax:OpenBSD:*:*) | ||
| 266 | echo mipsel-unknown-openbsd${UNAME_RELEASE} | ||
| 267 | exit 0 ;; | ||
| 268 | sgi:OpenBSD:*:*) | ||
| 269 | echo mips-unknown-openbsd${UNAME_RELEASE} | ||
| 270 | exit 0 ;; | ||
| 271 | wgrisc:OpenBSD:*:*) | ||
| 272 | echo mipsel-unknown-openbsd${UNAME_RELEASE} | ||
| 273 | exit 0 ;; | ||
| 274 | *:OS/390:*:*) | ||
| 275 | echo i370-ibm-openedition | ||
| 276 | exit 0 ;; | ||
| 277 | arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) | ||
| 278 | echo arm-acorn-riscix${UNAME_RELEASE} | ||
| 279 | exit 0;; | ||
| 280 | SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) | ||
| 281 | echo hppa1.1-hitachi-hiuxmpp | ||
| 282 | exit 0;; | ||
| 283 | Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) | ||
| 284 | # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. | ||
| 285 | if test "`(/bin/universe) 2>/dev/null`" = att ; then | ||
| 286 | echo pyramid-pyramid-sysv3 | ||
| 287 | else | ||
| 288 | echo pyramid-pyramid-bsd | ||
| 289 | fi | ||
| 290 | exit 0 ;; | ||
| 291 | NILE*:*:*:dcosx) | ||
| 292 | echo pyramid-pyramid-svr4 | ||
| 293 | exit 0 ;; | ||
| 294 | sun4H:SunOS:5.*:*) | ||
| 295 | echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | ||
| 296 | exit 0 ;; | ||
| 297 | sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) | ||
| 298 | echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | ||
| 299 | exit 0 ;; | ||
| 300 | i86pc:SunOS:5.*:*) | ||
| 301 | echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | ||
| 302 | exit 0 ;; | ||
| 303 | sun4*:SunOS:6*:*) | ||
| 304 | # According to config.sub, this is the proper way to canonicalize | ||
| 305 | # SunOS6. Hard to guess exactly what SunOS6 will be like, but | ||
| 306 | # it's likely to be more like Solaris than SunOS4. | ||
| 307 | echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | ||
| 308 | exit 0 ;; | ||
| 309 | sun4*:SunOS:*:*) | ||
| 310 | case "`/usr/bin/arch -k`" in | ||
| 311 | Series*|S4*) | ||
| 312 | UNAME_RELEASE=`uname -v` | ||
| 313 | ;; | ||
| 314 | esac | ||
| 315 | # Japanese Language versions have a version number like `4.1.3-JL'. | ||
| 316 | echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` | ||
| 317 | exit 0 ;; | ||
| 318 | sun3*:SunOS:*:*) | ||
| 319 | echo m68k-sun-sunos${UNAME_RELEASE} | ||
| 320 | exit 0 ;; | ||
| 321 | sun*:*:4.2BSD:*) | ||
| 322 | UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` | ||
| 323 | test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 | ||
| 324 | case "`/bin/arch`" in | ||
| 325 | sun3) | ||
| 326 | echo m68k-sun-sunos${UNAME_RELEASE} | ||
| 327 | ;; | ||
| 328 | sun4) | ||
| 329 | echo sparc-sun-sunos${UNAME_RELEASE} | ||
| 330 | ;; | ||
| 331 | esac | ||
| 332 | exit 0 ;; | ||
| 333 | aushp:SunOS:*:*) | ||
| 334 | echo sparc-auspex-sunos${UNAME_RELEASE} | ||
| 335 | exit 0 ;; | ||
| 336 | sparc*:NetBSD:*) | ||
| 337 | echo `uname -p`-unknown-netbsd${UNAME_RELEASE} | ||
| 338 | exit 0 ;; | ||
| 339 | atari*:OpenBSD:*:*) | ||
| 340 | echo m68k-unknown-openbsd${UNAME_RELEASE} | ||
| 341 | exit 0 ;; | ||
| 342 | # The situation for MiNT is a little confusing. The machine name | ||
| 343 | # can be virtually everything (everything which is not | ||
| 344 | # "atarist" or "atariste" at least should have a processor | ||
| 345 | # > m68000). The system name ranges from "MiNT" over "FreeMiNT" | ||
| 346 | # to the lowercase version "mint" (or "freemint"). Finally | ||
| 347 | # the system name "TOS" denotes a system which is actually not | ||
| 348 | # MiNT. But MiNT is downward compatible to TOS, so this should | ||
| 349 | # be no problem. | ||
| 350 | atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) | ||
| 351 | echo m68k-atari-mint${UNAME_RELEASE} | ||
| 352 | exit 0 ;; | ||
| 353 | atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) | ||
| 354 | echo m68k-atari-mint${UNAME_RELEASE} | ||
| 355 | exit 0 ;; | ||
| 356 | *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) | ||
| 357 | echo m68k-atari-mint${UNAME_RELEASE} | ||
| 358 | exit 0 ;; | ||
| 359 | milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) | ||
| 360 | echo m68k-milan-mint${UNAME_RELEASE} | ||
| 361 | exit 0 ;; | ||
| 362 | hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) | ||
| 363 | echo m68k-hades-mint${UNAME_RELEASE} | ||
| 364 | exit 0 ;; | ||
| 365 | *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) | ||
| 366 | echo m68k-unknown-mint${UNAME_RELEASE} | ||
| 367 | exit 0 ;; | ||
| 368 | sun3*:OpenBSD:*:*) | ||
| 369 | echo m68k-unknown-openbsd${UNAME_RELEASE} | ||
| 370 | exit 0 ;; | ||
| 371 | mac68k:OpenBSD:*:*) | ||
| 372 | echo m68k-unknown-openbsd${UNAME_RELEASE} | ||
| 373 | exit 0 ;; | ||
| 374 | mvme68k:OpenBSD:*:*) | ||
| 375 | echo m68k-unknown-openbsd${UNAME_RELEASE} | ||
| 376 | exit 0 ;; | ||
| 377 | mvme88k:OpenBSD:*:*) | ||
| 378 | echo m88k-unknown-openbsd${UNAME_RELEASE} | ||
| 379 | exit 0 ;; | ||
| 380 | powerpc:machten:*:*) | ||
| 381 | echo powerpc-apple-machten${UNAME_RELEASE} | ||
| 382 | exit 0 ;; | ||
| 383 | RISC*:Mach:*:*) | ||
| 384 | echo mips-dec-mach_bsd4.3 | ||
| 385 | exit 0 ;; | ||
| 386 | RISC*:ULTRIX:*:*) | ||
| 387 | echo mips-dec-ultrix${UNAME_RELEASE} | ||
| 388 | exit 0 ;; | ||
| 389 | VAX*:ULTRIX*:*:*) | ||
| 390 | echo vax-dec-ultrix${UNAME_RELEASE} | ||
| 391 | exit 0 ;; | ||
| 392 | 2020:CLIX:*:* | 2430:CLIX:*:*) | ||
| 393 | echo clipper-intergraph-clix${UNAME_RELEASE} | ||
| 394 | exit 0 ;; | ||
| 395 | mips:*:*:UMIPS | mips:*:*:RISCos) | ||
| 396 | sed 's/^ //' << EOF >$dummy.c | ||
| 397 | #ifdef __cplusplus | ||
| 398 | #include <stdio.h> /* for printf() prototype */ | ||
| 399 | int main (int argc, char *argv[]) { | ||
| 400 | #else | ||
| 401 | int main (argc, argv) int argc; char *argv[]; { | ||
| 402 | #endif | ||
| 403 | #if defined (host_mips) && defined (MIPSEB) | ||
| 404 | #if defined (SYSTYPE_SYSV) | ||
| 405 | printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); | ||
| 406 | #endif | ||
| 407 | #if defined (SYSTYPE_SVR4) | ||
| 408 | printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); | ||
| 409 | #endif | ||
| 410 | #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) | ||
| 411 | printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); | ||
| 412 | #endif | ||
| 413 | #endif | ||
| 414 | exit (-1); | ||
| 415 | } | ||
| 416 | EOF | ||
| 417 | eval $set_cc_for_build | ||
| 418 | $CC_FOR_BUILD $dummy.c -o $dummy \ | ||
| 419 | && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ | ||
| 420 | && rm -f $dummy.c $dummy && exit 0 | ||
| 421 | rm -f $dummy.c $dummy | ||
| 422 | echo mips-mips-riscos${UNAME_RELEASE} | ||
| 423 | exit 0 ;; | ||
| 424 | Motorola:PowerMAX_OS:*:*) | ||
| 425 | echo powerpc-motorola-powermax | ||
| 426 | exit 0 ;; | ||
| 427 | Night_Hawk:Power_UNIX:*:*) | ||
| 428 | echo powerpc-harris-powerunix | ||
| 429 | exit 0 ;; | ||
| 430 | m88k:CX/UX:7*:*) | ||
| 431 | echo m88k-harris-cxux7 | ||
| 432 | exit 0 ;; | ||
| 433 | m88k:*:4*:R4*) | ||
| 434 | echo m88k-motorola-sysv4 | ||
| 435 | exit 0 ;; | ||
| 436 | m88k:*:3*:R3*) | ||
| 437 | echo m88k-motorola-sysv3 | ||
| 438 | exit 0 ;; | ||
| 439 | AViiON:dgux:*:*) | ||
| 440 | # DG/UX returns AViiON for all architectures | ||
| 441 | UNAME_PROCESSOR=`/usr/bin/uname -p` | ||
| 442 | if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] | ||
| 443 | then | ||
| 444 | if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ | ||
| 445 | [ ${TARGET_BINARY_INTERFACE}x = x ] | ||
| 446 | then | ||
| 447 | echo m88k-dg-dgux${UNAME_RELEASE} | ||
| 448 | else | ||
| 449 | echo m88k-dg-dguxbcs${UNAME_RELEASE} | ||
| 450 | fi | ||
| 451 | else | ||
| 452 | echo i586-dg-dgux${UNAME_RELEASE} | ||
| 453 | fi | ||
| 454 | exit 0 ;; | ||
| 455 | M88*:DolphinOS:*:*) # DolphinOS (SVR3) | ||
| 456 | echo m88k-dolphin-sysv3 | ||
| 457 | exit 0 ;; | ||
| 458 | M88*:*:R3*:*) | ||
| 459 | # Delta 88k system running SVR3 | ||
| 460 | echo m88k-motorola-sysv3 | ||
| 461 | exit 0 ;; | ||
| 462 | XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) | ||
| 463 | echo m88k-tektronix-sysv3 | ||
| 464 | exit 0 ;; | ||
| 465 | Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) | ||
| 466 | echo m68k-tektronix-bsd | ||
| 467 | exit 0 ;; | ||
| 468 | *:IRIX*:*:*) | ||
| 469 | echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` | ||
| 470 | exit 0 ;; | ||
| 471 | ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. | ||
| 472 | echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id | ||
| 473 | exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' | ||
| 474 | i*86:AIX:*:*) | ||
| 475 | echo i386-ibm-aix | ||
| 476 | exit 0 ;; | ||
| 477 | ia64:AIX:*:*) | ||
| 478 | if [ -x /usr/bin/oslevel ] ; then | ||
| 479 | IBM_REV=`/usr/bin/oslevel` | ||
| 480 | else | ||
| 481 | IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} | ||
| 482 | fi | ||
| 483 | echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} | ||
| 484 | exit 0 ;; | ||
| 485 | *:AIX:2:3) | ||
| 486 | if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then | ||
| 487 | sed 's/^ //' << EOF >$dummy.c | ||
| 488 | #include <sys/systemcfg.h> | ||
| 489 | |||
| 490 | main() | ||
| 491 | { | ||
| 492 | if (!__power_pc()) | ||
| 493 | exit(1); | ||
| 494 | puts("powerpc-ibm-aix3.2.5"); | ||
| 495 | exit(0); | ||
| 496 | } | ||
| 497 | EOF | ||
| 498 | eval $set_cc_for_build | ||
| 499 | $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 | ||
| 500 | rm -f $dummy.c $dummy | ||
| 501 | echo rs6000-ibm-aix3.2.5 | ||
| 502 | elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then | ||
| 503 | echo rs6000-ibm-aix3.2.4 | ||
| 504 | else | ||
| 505 | echo rs6000-ibm-aix3.2 | ||
| 506 | fi | ||
| 507 | exit 0 ;; | ||
| 508 | *:AIX:*:[45]) | ||
| 509 | IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` | ||
| 510 | if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then | ||
| 511 | IBM_ARCH=rs6000 | ||
| 512 | else | ||
| 513 | IBM_ARCH=powerpc | ||
| 514 | fi | ||
| 515 | if [ -x /usr/bin/oslevel ] ; then | ||
| 516 | IBM_REV=`/usr/bin/oslevel` | ||
| 517 | else | ||
| 518 | IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} | ||
| 519 | fi | ||
| 520 | echo ${IBM_ARCH}-ibm-aix${IBM_REV} | ||
| 521 | exit 0 ;; | ||
| 522 | *:AIX:*:*) | ||
| 523 | echo rs6000-ibm-aix | ||
| 524 | exit 0 ;; | ||
| 525 | ibmrt:4.4BSD:*|romp-ibm:BSD:*) | ||
| 526 | echo romp-ibm-bsd4.4 | ||
| 527 | exit 0 ;; | ||
| 528 | ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and | ||
| 529 | echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to | ||
| 530 | exit 0 ;; # report: romp-ibm BSD 4.3 | ||
| 531 | *:BOSX:*:*) | ||
| 532 | echo rs6000-bull-bosx | ||
| 533 | exit 0 ;; | ||
| 534 | DPX/2?00:B.O.S.:*:*) | ||
| 535 | echo m68k-bull-sysv3 | ||
| 536 | exit 0 ;; | ||
| 537 | 9000/[34]??:4.3bsd:1.*:*) | ||
| 538 | echo m68k-hp-bsd | ||
| 539 | exit 0 ;; | ||
| 540 | hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) | ||
| 541 | echo m68k-hp-bsd4.4 | ||
| 542 | exit 0 ;; | ||
| 543 | 9000/[34678]??:HP-UX:*:*) | ||
| 544 | HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` | ||
| 545 | case "${UNAME_MACHINE}" in | ||
| 546 | 9000/31? ) HP_ARCH=m68000 ;; | ||
| 547 | 9000/[34]?? ) HP_ARCH=m68k ;; | ||
| 548 | 9000/[678][0-9][0-9]) | ||
| 549 | case "${HPUX_REV}" in | ||
| 550 | 11.[0-9][0-9]) | ||
| 551 | if [ -x /usr/bin/getconf ]; then | ||
| 552 | sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` | ||
| 553 | sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` | ||
| 554 | case "${sc_cpu_version}" in | ||
| 555 | 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 | ||
| 556 | 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 | ||
| 557 | 532) # CPU_PA_RISC2_0 | ||
| 558 | case "${sc_kernel_bits}" in | ||
| 559 | 32) HP_ARCH="hppa2.0n" ;; | ||
| 560 | 64) HP_ARCH="hppa2.0w" ;; | ||
| 561 | esac ;; | ||
| 562 | esac | ||
| 563 | fi ;; | ||
| 564 | esac | ||
| 565 | if [ "${HP_ARCH}" = "" ]; then | ||
| 566 | sed 's/^ //' << EOF >$dummy.c | ||
| 567 | |||
| 568 | #define _HPUX_SOURCE | ||
| 569 | #include <stdlib.h> | ||
| 570 | #include <unistd.h> | ||
| 571 | |||
| 572 | int main () | ||
| 573 | { | ||
| 574 | #if defined(_SC_KERNEL_BITS) | ||
| 575 | long bits = sysconf(_SC_KERNEL_BITS); | ||
| 576 | #endif | ||
| 577 | long cpu = sysconf (_SC_CPU_VERSION); | ||
| 578 | |||
| 579 | switch (cpu) | ||
| 580 | { | ||
| 581 | case CPU_PA_RISC1_0: puts ("hppa1.0"); break; | ||
| 582 | case CPU_PA_RISC1_1: puts ("hppa1.1"); break; | ||
| 583 | case CPU_PA_RISC2_0: | ||
| 584 | #if defined(_SC_KERNEL_BITS) | ||
| 585 | switch (bits) | ||
| 586 | { | ||
| 587 | case 64: puts ("hppa2.0w"); break; | ||
| 588 | case 32: puts ("hppa2.0n"); break; | ||
| 589 | default: puts ("hppa2.0"); break; | ||
| 590 | } break; | ||
| 591 | #else /* !defined(_SC_KERNEL_BITS) */ | ||
| 592 | puts ("hppa2.0"); break; | ||
| 593 | #endif | ||
| 594 | default: puts ("hppa1.0"); break; | ||
| 595 | } | ||
| 596 | exit (0); | ||
| 597 | } | ||
| 598 | EOF | ||
| 599 | eval $set_cc_for_build | ||
| 600 | (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` | ||
| 601 | if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi | ||
| 602 | rm -f $dummy.c $dummy | ||
| 603 | fi ;; | ||
| 604 | esac | ||
| 605 | echo ${HP_ARCH}-hp-hpux${HPUX_REV} | ||
| 606 | exit 0 ;; | ||
| 607 | ia64:HP-UX:*:*) | ||
| 608 | HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` | ||
| 609 | echo ia64-hp-hpux${HPUX_REV} | ||
| 610 | exit 0 ;; | ||
| 611 | 3050*:HI-UX:*:*) | ||
| 612 | sed 's/^ //' << EOF >$dummy.c | ||
| 613 | #include <unistd.h> | ||
| 614 | int | ||
| 615 | main () | ||
| 616 | { | ||
| 617 | long cpu = sysconf (_SC_CPU_VERSION); | ||
| 618 | /* The order matters, because CPU_IS_HP_MC68K erroneously returns | ||
| 619 | true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct | ||
| 620 | results, however. */ | ||
| 621 | if (CPU_IS_PA_RISC (cpu)) | ||
| 622 | { | ||
| 623 | switch (cpu) | ||
| 624 | { | ||
| 625 | case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; | ||
| 626 | case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; | ||
| 627 | case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; | ||
| 628 | default: puts ("hppa-hitachi-hiuxwe2"); break; | ||
| 629 | } | ||
| 630 | } | ||
| 631 | else if (CPU_IS_HP_MC68K (cpu)) | ||
| 632 | puts ("m68k-hitachi-hiuxwe2"); | ||
| 633 | else puts ("unknown-hitachi-hiuxwe2"); | ||
| 634 | exit (0); | ||
| 635 | } | ||
| 636 | EOF | ||
| 637 | eval $set_cc_for_build | ||
| 638 | $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 | ||
| 639 | rm -f $dummy.c $dummy | ||
| 640 | echo unknown-hitachi-hiuxwe2 | ||
| 641 | exit 0 ;; | ||
| 642 | 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) | ||
| 643 | echo hppa1.1-hp-bsd | ||
| 644 | exit 0 ;; | ||
| 645 | 9000/8??:4.3bsd:*:*) | ||
| 646 | echo hppa1.0-hp-bsd | ||
| 647 | exit 0 ;; | ||
| 648 | *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) | ||
| 649 | echo hppa1.0-hp-mpeix | ||
| 650 | exit 0 ;; | ||
| 651 | hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) | ||
| 652 | echo hppa1.1-hp-osf | ||
| 653 | exit 0 ;; | ||
| 654 | hp8??:OSF1:*:*) | ||
| 655 | echo hppa1.0-hp-osf | ||
| 656 | exit 0 ;; | ||
| 657 | i*86:OSF1:*:*) | ||
| 658 | if [ -x /usr/sbin/sysversion ] ; then | ||
| 659 | echo ${UNAME_MACHINE}-unknown-osf1mk | ||
| 660 | else | ||
| 661 | echo ${UNAME_MACHINE}-unknown-osf1 | ||
| 662 | fi | ||
| 663 | exit 0 ;; | ||
| 664 | parisc*:Lites*:*:*) | ||
| 665 | echo hppa1.1-hp-lites | ||
| 666 | exit 0 ;; | ||
| 667 | hppa*:OpenBSD:*:*) | ||
| 668 | echo hppa-unknown-openbsd | ||
| 669 | exit 0 ;; | ||
| 670 | C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) | ||
| 671 | echo c1-convex-bsd | ||
| 672 | exit 0 ;; | ||
| 673 | C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) | ||
| 674 | if getsysinfo -f scalar_acc | ||
| 675 | then echo c32-convex-bsd | ||
| 676 | else echo c2-convex-bsd | ||
| 677 | fi | ||
| 678 | exit 0 ;; | ||
| 679 | C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) | ||
| 680 | echo c34-convex-bsd | ||
| 681 | exit 0 ;; | ||
| 682 | C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) | ||
| 683 | echo c38-convex-bsd | ||
| 684 | exit 0 ;; | ||
| 685 | C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) | ||
| 686 | echo c4-convex-bsd | ||
| 687 | exit 0 ;; | ||
| 688 | CRAY*X-MP:*:*:*) | ||
| 689 | echo xmp-cray-unicos | ||
| 690 | exit 0 ;; | ||
| 691 | CRAY*Y-MP:*:*:*) | ||
| 692 | echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | ||
| 693 | exit 0 ;; | ||
| 694 | CRAY*[A-Z]90:*:*:*) | ||
| 695 | echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | ||
| 696 | | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ | ||
| 697 | -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ | ||
| 698 | -e 's/\.[^.]*$/.X/' | ||
| 699 | exit 0 ;; | ||
| 700 | CRAY*TS:*:*:*) | ||
| 701 | echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | ||
| 702 | exit 0 ;; | ||
| 703 | CRAY*T3D:*:*:*) | ||
| 704 | echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | ||
| 705 | exit 0 ;; | ||
| 706 | CRAY*T3E:*:*:*) | ||
| 707 | echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | ||
| 708 | exit 0 ;; | ||
| 709 | CRAY*SV1:*:*:*) | ||
| 710 | echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | ||
| 711 | exit 0 ;; | ||
| 712 | CRAY-2:*:*:*) | ||
| 713 | echo cray2-cray-unicos | ||
| 714 | exit 0 ;; | ||
| 715 | F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) | ||
| 716 | FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` | ||
| 717 | FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` | ||
| 718 | FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` | ||
| 719 | echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | ||
| 720 | exit 0 ;; | ||
| 721 | hp300:OpenBSD:*:*) | ||
| 722 | echo m68k-unknown-openbsd${UNAME_RELEASE} | ||
| 723 | exit 0 ;; | ||
| 724 | i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) | ||
| 725 | echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} | ||
| 726 | exit 0 ;; | ||
| 727 | sparc*:BSD/OS:*:*) | ||
| 728 | echo sparc-unknown-bsdi${UNAME_RELEASE} | ||
| 729 | exit 0 ;; | ||
| 730 | *:BSD/OS:*:*) | ||
| 731 | echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} | ||
| 732 | exit 0 ;; | ||
| 733 | *:FreeBSD:*:*) | ||
| 734 | echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` | ||
| 735 | exit 0 ;; | ||
| 736 | *:OpenBSD:*:*) | ||
| 737 | echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` | ||
| 738 | exit 0 ;; | ||
| 739 | i*:CYGWIN*:*) | ||
| 740 | echo ${UNAME_MACHINE}-pc-cygwin | ||
| 741 | exit 0 ;; | ||
| 742 | i*:MINGW*:*) | ||
| 743 | echo ${UNAME_MACHINE}-pc-mingw32 | ||
| 744 | exit 0 ;; | ||
| 745 | i*:PW*:*) | ||
| 746 | echo ${UNAME_MACHINE}-pc-pw32 | ||
| 747 | exit 0 ;; | ||
| 748 | i*:Windows_NT*:* | Pentium*:Windows_NT*:*) | ||
| 749 | # How do we know it's Interix rather than the generic POSIX subsystem? | ||
| 750 | # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we | ||
| 751 | # UNAME_MACHINE based on the output of uname instead of i386? | ||
| 752 | echo i386-pc-interix | ||
| 753 | exit 0 ;; | ||
| 754 | i*:UWIN*:*) | ||
| 755 | echo ${UNAME_MACHINE}-pc-uwin | ||
| 756 | exit 0 ;; | ||
| 757 | p*:CYGWIN*:*) | ||
| 758 | echo powerpcle-unknown-cygwin | ||
| 759 | exit 0 ;; | ||
| 760 | prep*:SunOS:5.*:*) | ||
| 761 | echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` | ||
| 762 | exit 0 ;; | ||
| 763 | *:GNU:*:*) | ||
| 764 | echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` | ||
| 765 | exit 0 ;; | ||
| 766 | i*86:Minix:*:*) | ||
| 767 | echo ${UNAME_MACHINE}-pc-minix | ||
| 768 | exit 0 ;; | ||
| 769 | arm*:Linux:*:*) | ||
| 770 | echo ${UNAME_MACHINE}-unknown-linux-gnu | ||
| 771 | exit 0 ;; | ||
| 772 | ia64:Linux:*:*) | ||
| 773 | echo ${UNAME_MACHINE}-unknown-linux | ||
| 774 | exit 0 ;; | ||
| 775 | m68*:Linux:*:*) | ||
| 776 | echo ${UNAME_MACHINE}-unknown-linux-gnu | ||
| 777 | exit 0 ;; | ||
| 778 | mips:Linux:*:*) | ||
| 779 | case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in | ||
| 780 | big) echo mips-unknown-linux-gnu && exit 0 ;; | ||
| 781 | little) echo mipsel-unknown-linux-gnu && exit 0 ;; | ||
| 782 | esac | ||
| 783 | ;; | ||
| 784 | ppc:Linux:*:*) | ||
| 785 | echo powerpc-unknown-linux-gnu | ||
| 786 | exit 0 ;; | ||
| 787 | ppc64:Linux:*:*) | ||
| 788 | echo powerpc64-unknown-linux-gnu | ||
| 789 | exit 0 ;; | ||
| 790 | alpha:Linux:*:*) | ||
| 791 | case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in | ||
| 792 | EV5) UNAME_MACHINE=alphaev5 ;; | ||
| 793 | EV56) UNAME_MACHINE=alphaev56 ;; | ||
| 794 | PCA56) UNAME_MACHINE=alphapca56 ;; | ||
| 795 | PCA57) UNAME_MACHINE=alphapca56 ;; | ||
| 796 | EV6) UNAME_MACHINE=alphaev6 ;; | ||
| 797 | EV67) UNAME_MACHINE=alphaev67 ;; | ||
| 798 | EV68*) UNAME_MACHINE=alphaev68 ;; | ||
| 799 | esac | ||
| 800 | objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null | ||
| 801 | if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi | ||
| 802 | echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} | ||
| 803 | exit 0 ;; | ||
| 804 | parisc:Linux:*:* | hppa:Linux:*:*) | ||
| 805 | # Look for CPU level | ||
| 806 | case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in | ||
| 807 | PA7*) echo hppa1.1-unknown-linux-gnu ;; | ||
| 808 | PA8*) echo hppa2.0-unknown-linux-gnu ;; | ||
| 809 | *) echo hppa-unknown-linux-gnu ;; | ||
| 810 | esac | ||
| 811 | exit 0 ;; | ||
| 812 | parisc64:Linux:*:* | hppa64:Linux:*:*) | ||
| 813 | echo hppa64-unknown-linux-gnu | ||
| 814 | exit 0 ;; | ||
| 815 | s390:Linux:*:* | s390x:Linux:*:*) | ||
| 816 | echo ${UNAME_MACHINE}-ibm-linux | ||
| 817 | exit 0 ;; | ||
| 818 | sh*:Linux:*:*) | ||
| 819 | echo ${UNAME_MACHINE}-unknown-linux-gnu | ||
| 820 | exit 0 ;; | ||
| 821 | sparc:Linux:*:* | sparc64:Linux:*:*) | ||
| 822 | echo ${UNAME_MACHINE}-unknown-linux-gnu | ||
| 823 | exit 0 ;; | ||
| 824 | x86_64:Linux:*:*) | ||
| 825 | echo x86_64-unknown-linux-gnu | ||
| 826 | exit 0 ;; | ||
| 827 | i*86:Linux:*:*) | ||
| 828 | # The BFD linker knows what the default object file format is, so | ||
| 829 | # first see if it will tell us. cd to the root directory to prevent | ||
| 830 | # problems with other programs or directories called `ld' in the path. | ||
| 831 | ld_supported_targets=`cd /; ld --help 2>&1 \ | ||
| 832 | | sed -ne '/supported targets:/!d | ||
| 833 | s/[ ][ ]*/ /g | ||
| 834 | s/.*supported targets: *// | ||
| 835 | s/ .*// | ||
| 836 | p'` | ||
| 837 | case "$ld_supported_targets" in | ||
| 838 | elf32-i386) | ||
| 839 | TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" | ||
| 840 | ;; | ||
| 841 | a.out-i386-linux) | ||
| 842 | echo "${UNAME_MACHINE}-pc-linux-gnuaout" | ||
| 843 | exit 0 ;; | ||
| 844 | coff-i386) | ||
| 845 | echo "${UNAME_MACHINE}-pc-linux-gnucoff" | ||
| 846 | exit 0 ;; | ||
| 847 | "") | ||
| 848 | # Either a pre-BFD a.out linker (linux-gnuoldld) or | ||
| 849 | # one that does not give us useful --help. | ||
| 850 | echo "${UNAME_MACHINE}-pc-linux-gnuoldld" | ||
| 851 | exit 0 ;; | ||
| 852 | esac | ||
| 853 | # Determine whether the default compiler is a.out or elf | ||
| 854 | cat >$dummy.c <<EOF | ||
| 855 | #include <features.h> | ||
| 856 | #ifdef __cplusplus | ||
| 857 | #include <stdio.h> /* for printf() prototype */ | ||
| 858 | int main (int argc, char *argv[]) { | ||
| 859 | #else | ||
| 860 | int main (argc, argv) int argc; char *argv[]; { | ||
| 861 | #endif | ||
| 862 | #ifdef __ELF__ | ||
| 863 | # ifdef __GLIBC__ | ||
| 864 | # if __GLIBC__ >= 2 | ||
| 865 | printf ("%s-pc-linux-gnu\n", argv[1]); | ||
| 866 | # else | ||
| 867 | printf ("%s-pc-linux-gnulibc1\n", argv[1]); | ||
| 868 | # endif | ||
| 869 | # else | ||
| 870 | printf ("%s-pc-linux-gnulibc1\n", argv[1]); | ||
| 871 | # endif | ||
| 872 | #else | ||
| 873 | printf ("%s-pc-linux-gnuaout\n", argv[1]); | ||
| 874 | #endif | ||
| 875 | return 0; | ||
| 876 | } | ||
| 877 | EOF | ||
| 878 | eval $set_cc_for_build | ||
| 879 | $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 | ||
| 880 | rm -f $dummy.c $dummy | ||
| 881 | test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 | ||
| 882 | ;; | ||
| 883 | i*86:DYNIX/ptx:4*:*) | ||
| 884 | # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. | ||
| 885 | # earlier versions are messed up and put the nodename in both | ||
| 886 | # sysname and nodename. | ||
| 887 | echo i386-sequent-sysv4 | ||
| 888 | exit 0 ;; | ||
| 889 | i*86:UNIX_SV:4.2MP:2.*) | ||
| 890 | # Unixware is an offshoot of SVR4, but it has its own version | ||
| 891 | # number series starting with 2... | ||
| 892 | # I am not positive that other SVR4 systems won't match this, | ||
| 893 | # I just have to hope. -- rms. | ||
| 894 | # Use sysv4.2uw... so that sysv4* matches it. | ||
| 895 | echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} | ||
| 896 | exit 0 ;; | ||
| 897 | i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) | ||
| 898 | UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` | ||
| 899 | if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then | ||
| 900 | echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} | ||
| 901 | else | ||
| 902 | echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} | ||
| 903 | fi | ||
| 904 | exit 0 ;; | ||
| 905 | i*86:*:5:[78]*) | ||
| 906 | case `/bin/uname -X | grep "^Machine"` in | ||
| 907 | *486*) UNAME_MACHINE=i486 ;; | ||
| 908 | *Pentium) UNAME_MACHINE=i586 ;; | ||
| 909 | *Pent*|*Celeron) UNAME_MACHINE=i686 ;; | ||
| 910 | esac | ||
| 911 | echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} | ||
| 912 | exit 0 ;; | ||
| 913 | i*86:*:3.2:*) | ||
| 914 | if test -f /usr/options/cb.name; then | ||
| 915 | UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` | ||
| 916 | echo ${UNAME_MACHINE}-pc-isc$UNAME_REL | ||
| 917 | elif /bin/uname -X 2>/dev/null >/dev/null ; then | ||
| 918 | UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` | ||
| 919 | (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 | ||
| 920 | (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ | ||
| 921 | && UNAME_MACHINE=i586 | ||
| 922 | (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ | ||
| 923 | && UNAME_MACHINE=i686 | ||
| 924 | (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ | ||
| 925 | && UNAME_MACHINE=i686 | ||
| 926 | echo ${UNAME_MACHINE}-pc-sco$UNAME_REL | ||
| 927 | else | ||
| 928 | echo ${UNAME_MACHINE}-pc-sysv32 | ||
| 929 | fi | ||
| 930 | exit 0 ;; | ||
| 931 | i*86:*DOS:*:*) | ||
| 932 | echo ${UNAME_MACHINE}-pc-msdosdjgpp | ||
| 933 | exit 0 ;; | ||
| 934 | pc:*:*:*) | ||
| 935 | # Left here for compatibility: | ||
| 936 | # uname -m prints for DJGPP always 'pc', but it prints nothing about | ||
| 937 | # the processor, so we play safe by assuming i386. | ||
| 938 | echo i386-pc-msdosdjgpp | ||
| 939 | exit 0 ;; | ||
| 940 | Intel:Mach:3*:*) | ||
| 941 | echo i386-pc-mach3 | ||
| 942 | exit 0 ;; | ||
| 943 | paragon:*:*:*) | ||
| 944 | echo i860-intel-osf1 | ||
| 945 | exit 0 ;; | ||
| 946 | i860:*:4.*:*) # i860-SVR4 | ||
| 947 | if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then | ||
| 948 | echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 | ||
| 949 | else # Add other i860-SVR4 vendors below as they are discovered. | ||
| 950 | echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 | ||
| 951 | fi | ||
| 952 | exit 0 ;; | ||
| 953 | mini*:CTIX:SYS*5:*) | ||
| 954 | # "miniframe" | ||
| 955 | echo m68010-convergent-sysv | ||
| 956 | exit 0 ;; | ||
| 957 | M68*:*:R3V[567]*:*) | ||
| 958 | test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; | ||
| 959 | 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) | ||
| 960 | OS_REL='' | ||
| 961 | test -r /etc/.relid \ | ||
| 962 | && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` | ||
| 963 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ | ||
| 964 | && echo i486-ncr-sysv4.3${OS_REL} && exit 0 | ||
| 965 | /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ | ||
| 966 | && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; | ||
| 967 | 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) | ||
| 968 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ | ||
| 969 | && echo i486-ncr-sysv4 && exit 0 ;; | ||
| 970 | m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) | ||
| 971 | echo m68k-unknown-lynxos${UNAME_RELEASE} | ||
| 972 | exit 0 ;; | ||
| 973 | mc68030:UNIX_System_V:4.*:*) | ||
| 974 | echo m68k-atari-sysv4 | ||
| 975 | exit 0 ;; | ||
| 976 | i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) | ||
| 977 | echo i386-unknown-lynxos${UNAME_RELEASE} | ||
| 978 | exit 0 ;; | ||
| 979 | TSUNAMI:LynxOS:2.*:*) | ||
| 980 | echo sparc-unknown-lynxos${UNAME_RELEASE} | ||
| 981 | exit 0 ;; | ||
| 982 | rs6000:LynxOS:2.*:*) | ||
| 983 | echo rs6000-unknown-lynxos${UNAME_RELEASE} | ||
| 984 | exit 0 ;; | ||
| 985 | PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) | ||
| 986 | echo powerpc-unknown-lynxos${UNAME_RELEASE} | ||
| 987 | exit 0 ;; | ||
| 988 | SM[BE]S:UNIX_SV:*:*) | ||
| 989 | echo mips-dde-sysv${UNAME_RELEASE} | ||
| 990 | exit 0 ;; | ||
| 991 | RM*:ReliantUNIX-*:*:*) | ||
| 992 | echo mips-sni-sysv4 | ||
| 993 | exit 0 ;; | ||
| 994 | RM*:SINIX-*:*:*) | ||
| 995 | echo mips-sni-sysv4 | ||
| 996 | exit 0 ;; | ||
| 997 | *:SINIX-*:*:*) | ||
| 998 | if uname -p 2>/dev/null >/dev/null ; then | ||
| 999 | UNAME_MACHINE=`(uname -p) 2>/dev/null` | ||
| 1000 | echo ${UNAME_MACHINE}-sni-sysv4 | ||
| 1001 | else | ||
| 1002 | echo ns32k-sni-sysv | ||
| 1003 | fi | ||
| 1004 | exit 0 ;; | ||
| 1005 | PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort | ||
| 1006 | # says <Richard.M.Bartel@ccMail.Census.GOV> | ||
| 1007 | echo i586-unisys-sysv4 | ||
| 1008 | exit 0 ;; | ||
| 1009 | *:UNIX_System_V:4*:FTX*) | ||
| 1010 | # From Gerald Hewes <hewes@openmarket.com>. | ||
| 1011 | # How about differentiating between stratus architectures? -djm | ||
| 1012 | echo hppa1.1-stratus-sysv4 | ||
| 1013 | exit 0 ;; | ||
| 1014 | *:*:*:FTX*) | ||
| 1015 | # From seanf@swdc.stratus.com. | ||
| 1016 | echo i860-stratus-sysv4 | ||
| 1017 | exit 0 ;; | ||
| 1018 | *:VOS:*:*) | ||
| 1019 | # From Paul.Green@stratus.com. | ||
| 1020 | echo hppa1.1-stratus-vos | ||
| 1021 | exit 0 ;; | ||
| 1022 | mc68*:A/UX:*:*) | ||
| 1023 | echo m68k-apple-aux${UNAME_RELEASE} | ||
| 1024 | exit 0 ;; | ||
| 1025 | news*:NEWS-OS:6*:*) | ||
| 1026 | echo mips-sony-newsos6 | ||
| 1027 | exit 0 ;; | ||
| 1028 | R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) | ||
| 1029 | if [ -d /usr/nec ]; then | ||
| 1030 | echo mips-nec-sysv${UNAME_RELEASE} | ||
| 1031 | else | ||
| 1032 | echo mips-unknown-sysv${UNAME_RELEASE} | ||
| 1033 | fi | ||
| 1034 | exit 0 ;; | ||
| 1035 | BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. | ||
| 1036 | echo powerpc-be-beos | ||
| 1037 | exit 0 ;; | ||
| 1038 | BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. | ||
| 1039 | echo powerpc-apple-beos | ||
| 1040 | exit 0 ;; | ||
| 1041 | BePC:BeOS:*:*) # BeOS running on Intel PC compatible. | ||
| 1042 | echo i586-pc-beos | ||
| 1043 | exit 0 ;; | ||
| 1044 | SX-4:SUPER-UX:*:*) | ||
| 1045 | echo sx4-nec-superux${UNAME_RELEASE} | ||
| 1046 | exit 0 ;; | ||
| 1047 | SX-5:SUPER-UX:*:*) | ||
| 1048 | echo sx5-nec-superux${UNAME_RELEASE} | ||
| 1049 | exit 0 ;; | ||
| 1050 | Power*:Rhapsody:*:*) | ||
| 1051 | echo powerpc-apple-rhapsody${UNAME_RELEASE} | ||
| 1052 | exit 0 ;; | ||
| 1053 | *:Rhapsody:*:*) | ||
| 1054 | echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} | ||
| 1055 | exit 0 ;; | ||
| 1056 | *:Darwin:*:*) | ||
| 1057 | echo `uname -p`-apple-darwin${UNAME_RELEASE} | ||
| 1058 | exit 0 ;; | ||
| 1059 | *:procnto*:*:* | *:QNX:[0123456789]*:*) | ||
| 1060 | if test "${UNAME_MACHINE}" = "x86pc"; then | ||
| 1061 | UNAME_MACHINE=pc | ||
| 1062 | fi | ||
| 1063 | echo `uname -p`-${UNAME_MACHINE}-nto-qnx | ||
| 1064 | exit 0 ;; | ||
| 1065 | *:QNX:*:4*) | ||
| 1066 | echo i386-pc-qnx | ||
| 1067 | exit 0 ;; | ||
| 1068 | NSR-[KW]:NONSTOP_KERNEL:*:*) | ||
| 1069 | echo nsr-tandem-nsk${UNAME_RELEASE} | ||
| 1070 | exit 0 ;; | ||
| 1071 | *:NonStop-UX:*:*) | ||
| 1072 | echo mips-compaq-nonstopux | ||
| 1073 | exit 0 ;; | ||
| 1074 | BS2000:POSIX*:*:*) | ||
| 1075 | echo bs2000-siemens-sysv | ||
| 1076 | exit 0 ;; | ||
| 1077 | DS/*:UNIX_System_V:*:*) | ||
| 1078 | echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} | ||
| 1079 | exit 0 ;; | ||
| 1080 | *:Plan9:*:*) | ||
| 1081 | # "uname -m" is not consistent, so use $cputype instead. 386 | ||
| 1082 | # is converted to i386 for consistency with other x86 | ||
| 1083 | # operating systems. | ||
| 1084 | if test "$cputype" = "386"; then | ||
| 1085 | UNAME_MACHINE=i386 | ||
| 1086 | else | ||
| 1087 | UNAME_MACHINE="$cputype" | ||
| 1088 | fi | ||
| 1089 | echo ${UNAME_MACHINE}-unknown-plan9 | ||
| 1090 | exit 0 ;; | ||
| 1091 | i*86:OS/2:*:*) | ||
| 1092 | # If we were able to find `uname', then EMX Unix compatibility | ||
| 1093 | # is probably installed. | ||
| 1094 | echo ${UNAME_MACHINE}-pc-os2-emx | ||
| 1095 | exit 0 ;; | ||
| 1096 | *:TOPS-10:*:*) | ||
| 1097 | echo pdp10-unknown-tops10 | ||
| 1098 | exit 0 ;; | ||
| 1099 | *:TENEX:*:*) | ||
| 1100 | echo pdp10-unknown-tenex | ||
| 1101 | exit 0 ;; | ||
| 1102 | KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) | ||
| 1103 | echo pdp10-dec-tops20 | ||
| 1104 | exit 0 ;; | ||
| 1105 | XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) | ||
| 1106 | echo pdp10-xkl-tops20 | ||
| 1107 | exit 0 ;; | ||
| 1108 | *:TOPS-20:*:*) | ||
| 1109 | echo pdp10-unknown-tops20 | ||
| 1110 | exit 0 ;; | ||
| 1111 | *:ITS:*:*) | ||
| 1112 | echo pdp10-unknown-its | ||
| 1113 | exit 0 ;; | ||
| 1114 | i*86:XTS-300:*:STOP) | ||
| 1115 | echo ${UNAME_MACHINE}-unknown-stop | ||
| 1116 | exit 0 ;; | ||
| 1117 | esac | ||
| 1118 | |||
| 1119 | #echo '(No uname command or uname output not recognized.)' 1>&2 | ||
| 1120 | #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 | ||
| 1121 | |||
| 1122 | cat >$dummy.c <<EOF | ||
| 1123 | #ifdef _SEQUENT_ | ||
| 1124 | # include <sys/types.h> | ||
| 1125 | # include <sys/utsname.h> | ||
| 1126 | #endif | ||
| 1127 | main () | ||
| 1128 | { | ||
| 1129 | #if defined (sony) | ||
| 1130 | #if defined (MIPSEB) | ||
| 1131 | /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, | ||
| 1132 | I don't know.... */ | ||
| 1133 | printf ("mips-sony-bsd\n"); exit (0); | ||
| 1134 | #else | ||
| 1135 | #include <sys/param.h> | ||
| 1136 | printf ("m68k-sony-newsos%s\n", | ||
| 1137 | #ifdef NEWSOS4 | ||
| 1138 | "4" | ||
| 1139 | #else | ||
| 1140 | "" | ||
| 1141 | #endif | ||
| 1142 | ); exit (0); | ||
| 1143 | #endif | ||
| 1144 | #endif | ||
| 1145 | |||
| 1146 | #if defined (__arm) && defined (__acorn) && defined (__unix) | ||
| 1147 | printf ("arm-acorn-riscix"); exit (0); | ||
| 1148 | #endif | ||
| 1149 | |||
| 1150 | #if defined (hp300) && !defined (hpux) | ||
| 1151 | printf ("m68k-hp-bsd\n"); exit (0); | ||
| 1152 | #endif | ||
| 1153 | |||
| 1154 | #if defined (NeXT) | ||
| 1155 | #if !defined (__ARCHITECTURE__) | ||
| 1156 | #define __ARCHITECTURE__ "m68k" | ||
| 1157 | #endif | ||
| 1158 | int version; | ||
| 1159 | version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; | ||
| 1160 | if (version < 4) | ||
| 1161 | printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); | ||
| 1162 | else | ||
| 1163 | printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); | ||
| 1164 | exit (0); | ||
| 1165 | #endif | ||
| 1166 | |||
| 1167 | #if defined (MULTIMAX) || defined (n16) | ||
| 1168 | #if defined (UMAXV) | ||
| 1169 | printf ("ns32k-encore-sysv\n"); exit (0); | ||
| 1170 | #else | ||
| 1171 | #if defined (CMU) | ||
| 1172 | printf ("ns32k-encore-mach\n"); exit (0); | ||
| 1173 | #else | ||
| 1174 | printf ("ns32k-encore-bsd\n"); exit (0); | ||
| 1175 | #endif | ||
| 1176 | #endif | ||
| 1177 | #endif | ||
| 1178 | |||
| 1179 | #if defined (__386BSD__) | ||
| 1180 | printf ("i386-pc-bsd\n"); exit (0); | ||
| 1181 | #endif | ||
| 1182 | |||
| 1183 | #if defined (sequent) | ||
| 1184 | #if defined (i386) | ||
| 1185 | printf ("i386-sequent-dynix\n"); exit (0); | ||
| 1186 | #endif | ||
| 1187 | #if defined (ns32000) | ||
| 1188 | printf ("ns32k-sequent-dynix\n"); exit (0); | ||
| 1189 | #endif | ||
| 1190 | #endif | ||
| 1191 | |||
| 1192 | #if defined (_SEQUENT_) | ||
| 1193 | struct utsname un; | ||
| 1194 | |||
| 1195 | uname(&un); | ||
| 1196 | |||
| 1197 | if (strncmp(un.version, "V2", 2) == 0) { | ||
| 1198 | printf ("i386-sequent-ptx2\n"); exit (0); | ||
| 1199 | } | ||
| 1200 | if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ | ||
| 1201 | printf ("i386-sequent-ptx1\n"); exit (0); | ||
| 1202 | } | ||
| 1203 | printf ("i386-sequent-ptx\n"); exit (0); | ||
| 1204 | |||
| 1205 | #endif | ||
| 1206 | |||
| 1207 | #if defined (vax) | ||
| 1208 | # if !defined (ultrix) | ||
| 1209 | # include <sys/param.h> | ||
| 1210 | # if defined (BSD) | ||
| 1211 | # if BSD == 43 | ||
| 1212 | printf ("vax-dec-bsd4.3\n"); exit (0); | ||
| 1213 | # else | ||
| 1214 | # if BSD == 199006 | ||
| 1215 | printf ("vax-dec-bsd4.3reno\n"); exit (0); | ||
| 1216 | # else | ||
| 1217 | printf ("vax-dec-bsd\n"); exit (0); | ||
| 1218 | # endif | ||
| 1219 | # endif | ||
| 1220 | # else | ||
| 1221 | printf ("vax-dec-bsd\n"); exit (0); | ||
| 1222 | # endif | ||
| 1223 | # else | ||
| 1224 | printf ("vax-dec-ultrix\n"); exit (0); | ||
| 1225 | # endif | ||
| 1226 | #endif | ||
| 1227 | |||
| 1228 | #if defined (alliant) && defined (i860) | ||
| 1229 | printf ("i860-alliant-bsd\n"); exit (0); | ||
| 1230 | #endif | ||
| 1231 | |||
| 1232 | exit (1); | ||
| 1233 | } | ||
| 1234 | EOF | ||
| 1235 | |||
| 1236 | eval $set_cc_for_build | ||
| 1237 | $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 | ||
| 1238 | rm -f $dummy.c $dummy | ||
| 1239 | |||
| 1240 | # Apollos put the system type in the environment. | ||
| 1241 | |||
| 1242 | test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } | ||
| 1243 | |||
| 1244 | # Convex versions that predate uname can use getsysinfo(1) | ||
| 1245 | |||
| 1246 | if [ -x /usr/convex/getsysinfo ] | ||
| 1247 | then | ||
| 1248 | case `getsysinfo -f cpu_type` in | ||
| 1249 | c1*) | ||
| 1250 | echo c1-convex-bsd | ||
| 1251 | exit 0 ;; | ||
| 1252 | c2*) | ||
| 1253 | if getsysinfo -f scalar_acc | ||
| 1254 | then echo c32-convex-bsd | ||
| 1255 | else echo c2-convex-bsd | ||
| 1256 | fi | ||
| 1257 | exit 0 ;; | ||
| 1258 | c34*) | ||
| 1259 | echo c34-convex-bsd | ||
| 1260 | exit 0 ;; | ||
| 1261 | c38*) | ||
| 1262 | echo c38-convex-bsd | ||
| 1263 | exit 0 ;; | ||
| 1264 | c4*) | ||
| 1265 | echo c4-convex-bsd | ||
| 1266 | exit 0 ;; | ||
| 1267 | esac | ||
| 1268 | fi | ||
| 1269 | |||
| 1270 | cat >&2 <<EOF | ||
| 1271 | $0: unable to guess system type | ||
| 1272 | |||
| 1273 | This script, last modified $timestamp, has failed to recognize | ||
| 1274 | the operating system you are using. It is advised that you | ||
| 1275 | download the most up to date version of the config scripts from | ||
| 1276 | |||
| 1277 | ftp://ftp.gnu.org/pub/gnu/config/ | ||
| 1278 | |||
| 1279 | If the version you run ($0) is already up to date, please | ||
| 1280 | send the following data and any information you think might be | ||
| 1281 | pertinent to <config-patches@gnu.org> in order to provide the needed | ||
| 1282 | information to handle your system. | ||
| 1283 | |||
| 1284 | config.guess timestamp = $timestamp | ||
| 1285 | |||
| 1286 | uname -m = `(uname -m) 2>/dev/null || echo unknown` | ||
| 1287 | uname -r = `(uname -r) 2>/dev/null || echo unknown` | ||
| 1288 | uname -s = `(uname -s) 2>/dev/null || echo unknown` | ||
| 1289 | uname -v = `(uname -v) 2>/dev/null || echo unknown` | ||
| 1290 | |||
| 1291 | /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` | ||
| 1292 | /bin/uname -X = `(/bin/uname -X) 2>/dev/null` | ||
| 1293 | |||
| 1294 | hostinfo = `(hostinfo) 2>/dev/null` | ||
| 1295 | /bin/universe = `(/bin/universe) 2>/dev/null` | ||
| 1296 | /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` | ||
| 1297 | /bin/arch = `(/bin/arch) 2>/dev/null` | ||
| 1298 | /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` | ||
| 1299 | /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` | ||
| 1300 | |||
| 1301 | UNAME_MACHINE = ${UNAME_MACHINE} | ||
| 1302 | UNAME_RELEASE = ${UNAME_RELEASE} | ||
| 1303 | UNAME_SYSTEM = ${UNAME_SYSTEM} | ||
| 1304 | UNAME_VERSION = ${UNAME_VERSION} | ||
| 1305 | EOF | ||
| 1306 | |||
| 1307 | exit 1 | ||
| 1308 | |||
| 1309 | # Local variables: | ||
| 1310 | # eval: (add-hook 'write-file-hooks 'time-stamp) | ||
| 1311 | # time-stamp-start: "timestamp='" | ||
| 1312 | # time-stamp-format: "%:y-%02m-%02d" | ||
| 1313 | # time-stamp-end: "'" | ||
| 1314 | # End: | ||
diff --git a/config.sub b/config.sub deleted file mode 100755 index 12ebc78..0000000 --- a/config.sub +++ /dev/null | |||
| @@ -1,1410 +0,0 @@ | |||
| 1 | #! /bin/sh | ||
| 2 | # Configuration validation subroutine script. | ||
| 3 | # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 | ||
| 4 | # Free Software Foundation, Inc. | ||
| 5 | |||
| 6 | timestamp='2001-08-13' | ||
| 7 | |||
| 8 | # This file is (in principle) common to ALL GNU software. | ||
| 9 | # The presence of a machine in this file suggests that SOME GNU software | ||
| 10 | # can handle that machine. It does not imply ALL GNU software can. | ||
| 11 | # | ||
| 12 | # This file is free software; you can redistribute it and/or modify | ||
| 13 | # it under the terms of the GNU General Public License as published by | ||
| 14 | # the Free Software Foundation; either version 2 of the License, or | ||
| 15 | # (at your option) any later version. | ||
| 16 | # | ||
| 17 | # This program is distributed in the hope that it will be useful, | ||
| 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 20 | # GNU General Public License for more details. | ||
| 21 | # | ||
| 22 | # You should have received a copy of the GNU General Public License | ||
| 23 | # along with this program; if not, write to the Free Software | ||
| 24 | # Foundation, Inc., 59 Temple Place - Suite 330, | ||
| 25 | # Boston, MA 02111-1307, USA. | ||
| 26 | |||
| 27 | # As a special exception to the GNU General Public License, if you | ||
| 28 | # distribute this file as part of a program that contains a | ||
| 29 | # configuration script generated by Autoconf, you may include it under | ||
| 30 | # the same distribution terms that you use for the rest of that program. | ||
| 31 | |||
| 32 | # Please send patches to <config-patches@gnu.org>. | ||
| 33 | # | ||
| 34 | # Configuration subroutine to validate and canonicalize a configuration type. | ||
| 35 | # Supply the specified configuration type as an argument. | ||
| 36 | # If it is invalid, we print an error message on stderr and exit with code 1. | ||
| 37 | # Otherwise, we print the canonical config type on stdout and succeed. | ||
| 38 | |||
| 39 | # This file is supposed to be the same for all GNU packages | ||
| 40 | # and recognize all the CPU types, system types and aliases | ||
| 41 | # that are meaningful with *any* GNU software. | ||
| 42 | # Each package is responsible for reporting which valid configurations | ||
| 43 | # it does not support. The user should be able to distinguish | ||
| 44 | # a failure to support a valid configuration from a meaningless | ||
| 45 | # configuration. | ||
| 46 | |||
| 47 | # The goal of this file is to map all the various variations of a given | ||
| 48 | # machine specification into a single specification in the form: | ||
| 49 | # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM | ||
| 50 | # or in some cases, the newer four-part form: | ||
| 51 | # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM | ||
| 52 | # It is wrong to echo any other type of specification. | ||
| 53 | |||
| 54 | me=`echo "$0" | sed -e 's,.*/,,'` | ||
| 55 | |||
| 56 | usage="\ | ||
| 57 | Usage: $0 [OPTION] CPU-MFR-OPSYS | ||
| 58 | $0 [OPTION] ALIAS | ||
| 59 | |||
| 60 | Canonicalize a configuration name. | ||
| 61 | |||
| 62 | Operation modes: | ||
| 63 | -h, --help print this help, then exit | ||
| 64 | -t, --time-stamp print date of last modification, then exit | ||
| 65 | -v, --version print version number, then exit | ||
| 66 | |||
| 67 | Report bugs and patches to <config-patches@gnu.org>." | ||
| 68 | |||
| 69 | version="\ | ||
| 70 | GNU config.sub ($timestamp) | ||
| 71 | |||
| 72 | Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 | ||
| 73 | Free Software Foundation, Inc. | ||
| 74 | |||
| 75 | This is free software; see the source for copying conditions. There is NO | ||
| 76 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." | ||
| 77 | |||
| 78 | help=" | ||
| 79 | Try \`$me --help' for more information." | ||
| 80 | |||
| 81 | # Parse command line | ||
| 82 | while test $# -gt 0 ; do | ||
| 83 | case $1 in | ||
| 84 | --time-stamp | --time* | -t ) | ||
| 85 | echo "$timestamp" ; exit 0 ;; | ||
| 86 | --version | -v ) | ||
| 87 | echo "$version" ; exit 0 ;; | ||
| 88 | --help | --h* | -h ) | ||
| 89 | echo "$usage"; exit 0 ;; | ||
| 90 | -- ) # Stop option processing | ||
| 91 | shift; break ;; | ||
| 92 | - ) # Use stdin as input. | ||
| 93 | break ;; | ||
| 94 | -* ) | ||
| 95 | echo "$me: invalid option $1$help" | ||
| 96 | exit 1 ;; | ||
| 97 | |||
| 98 | *local*) | ||
| 99 | # First pass through any local machine types. | ||
| 100 | echo $1 | ||
| 101 | exit 0;; | ||
| 102 | |||
| 103 | * ) | ||
| 104 | break ;; | ||
| 105 | esac | ||
| 106 | done | ||
| 107 | |||
| 108 | case $# in | ||
| 109 | 0) echo "$me: missing argument$help" >&2 | ||
| 110 | exit 1;; | ||
| 111 | 1) ;; | ||
| 112 | *) echo "$me: too many arguments$help" >&2 | ||
| 113 | exit 1;; | ||
| 114 | esac | ||
| 115 | |||
| 116 | # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). | ||
| 117 | # Here we must recognize all the valid KERNEL-OS combinations. | ||
| 118 | maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` | ||
| 119 | case $maybe_os in | ||
| 120 | nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) | ||
| 121 | os=-$maybe_os | ||
| 122 | basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` | ||
| 123 | ;; | ||
| 124 | *) | ||
| 125 | basic_machine=`echo $1 | sed 's/-[^-]*$//'` | ||
| 126 | if [ $basic_machine != $1 ] | ||
| 127 | then os=`echo $1 | sed 's/.*-/-/'` | ||
| 128 | else os=; fi | ||
| 129 | ;; | ||
| 130 | esac | ||
| 131 | |||
| 132 | ### Let's recognize common machines as not being operating systems so | ||
| 133 | ### that things like config.sub decstation-3100 work. We also | ||
| 134 | ### recognize some manufacturers as not being operating systems, so we | ||
| 135 | ### can provide default operating systems below. | ||
| 136 | case $os in | ||
| 137 | -sun*os*) | ||
| 138 | # Prevent following clause from handling this invalid input. | ||
| 139 | ;; | ||
| 140 | -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ | ||
| 141 | -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ | ||
| 142 | -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ | ||
| 143 | -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ | ||
| 144 | -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ | ||
| 145 | -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ | ||
| 146 | -apple | -axis) | ||
| 147 | os= | ||
| 148 | basic_machine=$1 | ||
| 149 | ;; | ||
| 150 | -sim | -cisco | -oki | -wec | -winbond) | ||
| 151 | os= | ||
| 152 | basic_machine=$1 | ||
| 153 | ;; | ||
| 154 | -scout) | ||
| 155 | ;; | ||
| 156 | -wrs) | ||
| 157 | os=-vxworks | ||
| 158 | basic_machine=$1 | ||
| 159 | ;; | ||
| 160 | -chorusos*) | ||
| 161 | os=-chorusos | ||
| 162 | basic_machine=$1 | ||
| 163 | ;; | ||
| 164 | -chorusrdb) | ||
| 165 | os=-chorusrdb | ||
| 166 | basic_machine=$1 | ||
| 167 | ;; | ||
| 168 | -hiux*) | ||
| 169 | os=-hiuxwe2 | ||
| 170 | ;; | ||
| 171 | -sco5) | ||
| 172 | os=-sco3.2v5 | ||
| 173 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||
| 174 | ;; | ||
| 175 | -sco4) | ||
| 176 | os=-sco3.2v4 | ||
| 177 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||
| 178 | ;; | ||
| 179 | -sco3.2.[4-9]*) | ||
| 180 | os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` | ||
| 181 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||
| 182 | ;; | ||
| 183 | -sco3.2v[4-9]*) | ||
| 184 | # Don't forget version if it is 3.2v4 or newer. | ||
| 185 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||
| 186 | ;; | ||
| 187 | -sco*) | ||
| 188 | os=-sco3.2v2 | ||
| 189 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||
| 190 | ;; | ||
| 191 | -udk*) | ||
| 192 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||
| 193 | ;; | ||
| 194 | -isc) | ||
| 195 | os=-isc2.2 | ||
| 196 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||
| 197 | ;; | ||
| 198 | -clix*) | ||
| 199 | basic_machine=clipper-intergraph | ||
| 200 | ;; | ||
| 201 | -isc*) | ||
| 202 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` | ||
| 203 | ;; | ||
| 204 | -lynx*) | ||
| 205 | os=-lynxos | ||
| 206 | ;; | ||
| 207 | -ptx*) | ||
| 208 | basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` | ||
| 209 | ;; | ||
| 210 | -windowsnt*) | ||
| 211 | os=`echo $os | sed -e 's/windowsnt/winnt/'` | ||
| 212 | ;; | ||
| 213 | -psos*) | ||
| 214 | os=-psos | ||
| 215 | ;; | ||
| 216 | -mint | -mint[0-9]*) | ||
| 217 | basic_machine=m68k-atari | ||
| 218 | os=-mint | ||
| 219 | ;; | ||
| 220 | esac | ||
| 221 | |||
| 222 | # Decode aliases for certain CPU-COMPANY combinations. | ||
| 223 | case $basic_machine in | ||
| 224 | # Recognize the basic CPU types without company name. | ||
| 225 | # Some are omitted here because they have special meanings below. | ||
| 226 | 1750a | 580 \ | ||
| 227 | | a29k \ | ||
| 228 | | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | ||
| 229 | | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | ||
| 230 | | c4x | clipper \ | ||
| 231 | | d10v | d30v | dsp16xx \ | ||
| 232 | | fr30 \ | ||
| 233 | | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | ||
| 234 | | i370 | i860 | i960 | ia64 \ | ||
| 235 | | m32r | m68000 | m68k | m88k | mcore \ | ||
| 236 | | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ | ||
| 237 | | mips64vr4100 | mips64vr4100el | mips64vr4300 \ | ||
| 238 | | mips64vr4300el | mips64vr5000 | mips64vr5000el \ | ||
| 239 | | mipsbe | mipsel | mipsle | mipstx39 | mipstx39el \ | ||
| 240 | | mn10200 | mn10300 \ | ||
| 241 | | ns16k | ns32k \ | ||
| 242 | | openrisc \ | ||
| 243 | | pdp10 | pdp11 | pj | pjl \ | ||
| 244 | | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | ||
| 245 | | pyramid \ | ||
| 246 | | s390 | s390x \ | ||
| 247 | | sh | sh[34] | sh[34]eb | shbe | shle \ | ||
| 248 | | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ | ||
| 249 | | strongarm \ | ||
| 250 | | tahoe | thumb | tic80 | tron \ | ||
| 251 | | v850 \ | ||
| 252 | | we32k \ | ||
| 253 | | x86 | xscale \ | ||
| 254 | | z8k) | ||
| 255 | basic_machine=$basic_machine-unknown | ||
| 256 | ;; | ||
| 257 | m6811 | m68hc11 | m6812 | m68hc12) | ||
| 258 | # Motorola 68HC11/12. | ||
| 259 | basic_machine=$basic_machine-unknown | ||
| 260 | os=-none | ||
| 261 | ;; | ||
| 262 | m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) | ||
| 263 | ;; | ||
| 264 | |||
| 265 | # We use `pc' rather than `unknown' | ||
| 266 | # because (1) that's what they normally are, and | ||
| 267 | # (2) the word "unknown" tends to confuse beginning users. | ||
| 268 | i*86 | x86_64) | ||
| 269 | basic_machine=$basic_machine-pc | ||
| 270 | ;; | ||
| 271 | # Object if more than one company name word. | ||
| 272 | *-*-*) | ||
| 273 | echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 | ||
| 274 | exit 1 | ||
| 275 | ;; | ||
| 276 | # Recognize the basic CPU types with company name. | ||
| 277 | 580-* \ | ||
| 278 | | a29k-* \ | ||
| 279 | | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | ||
| 280 | | alphapca5[67]-* | arc-* \ | ||
| 281 | | arm-* | armbe-* | armle-* | armv*-* \ | ||
| 282 | | bs2000-* \ | ||
| 283 | | c[123]* | c30-* | [cjt]90-* | c54x-* \ | ||
| 284 | | clipper-* | cray2-* | cydra-* \ | ||
| 285 | | d10v-* | d30v-* \ | ||
| 286 | | elxsi-* \ | ||
| 287 | | f30[01]-* | f700-* | fr30-* | fx80-* \ | ||
| 288 | | h8300-* | h8500-* \ | ||
| 289 | | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | ||
| 290 | | i*86-* | i860-* | i960-* | ia64-* \ | ||
| 291 | | m32r-* \ | ||
| 292 | | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ | ||
| 293 | | m88110-* | m88k-* | mcore-* \ | ||
| 294 | | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ | ||
| 295 | | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ | ||
| 296 | | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipsel-* \ | ||
| 297 | | mipsle-* | mipstx39-* | mipstx39el-* \ | ||
| 298 | | none-* | np1-* | ns16k-* | ns32k-* \ | ||
| 299 | | orion-* \ | ||
| 300 | | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | ||
| 301 | | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | ||
| 302 | | pyramid-* \ | ||
| 303 | | romp-* | rs6000-* \ | ||
| 304 | | s390-* | s390x-* \ | ||
| 305 | | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ | ||
| 306 | | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ | ||
| 307 | | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \ | ||
| 308 | | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | ||
| 309 | | v850-* | vax-* \ | ||
| 310 | | we32k-* \ | ||
| 311 | | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ | ||
| 312 | | ymp-* \ | ||
| 313 | | z8k-*) | ||
| 314 | ;; | ||
| 315 | # Recognize the various machine names and aliases which stand | ||
| 316 | # for a CPU type and a company and sometimes even an OS. | ||
| 317 | 386bsd) | ||
| 318 | basic_machine=i386-unknown | ||
| 319 | os=-bsd | ||
| 320 | ;; | ||
| 321 | 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) | ||
| 322 | basic_machine=m68000-att | ||
| 323 | ;; | ||
| 324 | 3b*) | ||
| 325 | basic_machine=we32k-att | ||
| 326 | ;; | ||
| 327 | a29khif) | ||
| 328 | basic_machine=a29k-amd | ||
| 329 | os=-udi | ||
| 330 | ;; | ||
| 331 | adobe68k) | ||
| 332 | basic_machine=m68010-adobe | ||
| 333 | os=-scout | ||
| 334 | ;; | ||
| 335 | alliant | fx80) | ||
| 336 | basic_machine=fx80-alliant | ||
| 337 | ;; | ||
| 338 | altos | altos3068) | ||
| 339 | basic_machine=m68k-altos | ||
| 340 | ;; | ||
| 341 | am29k) | ||
| 342 | basic_machine=a29k-none | ||
| 343 | os=-bsd | ||
| 344 | ;; | ||
| 345 | amdahl) | ||
| 346 | basic_machine=580-amdahl | ||
| 347 | os=-sysv | ||
| 348 | ;; | ||
| 349 | amiga | amiga-*) | ||
| 350 | basic_machine=m68k-unknown | ||
| 351 | ;; | ||
| 352 | amigaos | amigados) | ||
| 353 | basic_machine=m68k-unknown | ||
| 354 | os=-amigaos | ||
| 355 | ;; | ||
| 356 | amigaunix | amix) | ||
| 357 | basic_machine=m68k-unknown | ||
| 358 | os=-sysv4 | ||
| 359 | ;; | ||
| 360 | apollo68) | ||
| 361 | basic_machine=m68k-apollo | ||
| 362 | os=-sysv | ||
| 363 | ;; | ||
| 364 | apollo68bsd) | ||
| 365 | basic_machine=m68k-apollo | ||
| 366 | os=-bsd | ||
| 367 | ;; | ||
| 368 | aux) | ||
| 369 | basic_machine=m68k-apple | ||
| 370 | os=-aux | ||
| 371 | ;; | ||
| 372 | balance) | ||
| 373 | basic_machine=ns32k-sequent | ||
| 374 | os=-dynix | ||
| 375 | ;; | ||
| 376 | convex-c1) | ||
| 377 | basic_machine=c1-convex | ||
| 378 | os=-bsd | ||
| 379 | ;; | ||
| 380 | convex-c2) | ||
| 381 | basic_machine=c2-convex | ||
| 382 | os=-bsd | ||
| 383 | ;; | ||
| 384 | convex-c32) | ||
| 385 | basic_machine=c32-convex | ||
| 386 | os=-bsd | ||
| 387 | ;; | ||
| 388 | convex-c34) | ||
| 389 | basic_machine=c34-convex | ||
| 390 | os=-bsd | ||
| 391 | ;; | ||
| 392 | convex-c38) | ||
| 393 | basic_machine=c38-convex | ||
| 394 | os=-bsd | ||
| 395 | ;; | ||
| 396 | cray | ymp) | ||
| 397 | basic_machine=ymp-cray | ||
| 398 | os=-unicos | ||
| 399 | ;; | ||
| 400 | cray2) | ||
| 401 | basic_machine=cray2-cray | ||
| 402 | os=-unicos | ||
| 403 | ;; | ||
| 404 | [cjt]90) | ||
| 405 | basic_machine=${basic_machine}-cray | ||
| 406 | os=-unicos | ||
| 407 | ;; | ||
| 408 | crds | unos) | ||
| 409 | basic_machine=m68k-crds | ||
| 410 | ;; | ||
| 411 | cris | cris-* | etrax*) | ||
| 412 | basic_machine=cris-axis | ||
| 413 | ;; | ||
| 414 | da30 | da30-*) | ||
| 415 | basic_machine=m68k-da30 | ||
| 416 | ;; | ||
| 417 | decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) | ||
| 418 | basic_machine=mips-dec | ||
| 419 | ;; | ||
| 420 | delta | 3300 | motorola-3300 | motorola-delta \ | ||
| 421 | | 3300-motorola | delta-motorola) | ||
| 422 | basic_machine=m68k-motorola | ||
| 423 | ;; | ||
| 424 | delta88) | ||
| 425 | basic_machine=m88k-motorola | ||
| 426 | os=-sysv3 | ||
| 427 | ;; | ||
| 428 | dpx20 | dpx20-*) | ||
| 429 | basic_machine=rs6000-bull | ||
| 430 | os=-bosx | ||
| 431 | ;; | ||
| 432 | dpx2* | dpx2*-bull) | ||
| 433 | basic_machine=m68k-bull | ||
| 434 | os=-sysv3 | ||
| 435 | ;; | ||
| 436 | ebmon29k) | ||
| 437 | basic_machine=a29k-amd | ||
| 438 | os=-ebmon | ||
| 439 | ;; | ||
| 440 | elxsi) | ||
| 441 | basic_machine=elxsi-elxsi | ||
| 442 | os=-bsd | ||
| 443 | ;; | ||
| 444 | encore | umax | mmax) | ||
| 445 | basic_machine=ns32k-encore | ||
| 446 | ;; | ||
| 447 | es1800 | OSE68k | ose68k | ose | OSE) | ||
| 448 | basic_machine=m68k-ericsson | ||
| 449 | os=-ose | ||
| 450 | ;; | ||
| 451 | fx2800) | ||
| 452 | basic_machine=i860-alliant | ||
| 453 | ;; | ||
| 454 | genix) | ||
| 455 | basic_machine=ns32k-ns | ||
| 456 | ;; | ||
| 457 | gmicro) | ||
| 458 | basic_machine=tron-gmicro | ||
| 459 | os=-sysv | ||
| 460 | ;; | ||
| 461 | go32) | ||
| 462 | basic_machine=i386-pc | ||
| 463 | os=-go32 | ||
| 464 | ;; | ||
| 465 | h3050r* | hiux*) | ||
| 466 | basic_machine=hppa1.1-hitachi | ||
| 467 | os=-hiuxwe2 | ||
| 468 | ;; | ||
| 469 | h8300hms) | ||
| 470 | basic_machine=h8300-hitachi | ||
| 471 | os=-hms | ||
| 472 | ;; | ||
| 473 | h8300xray) | ||
| 474 | basic_machine=h8300-hitachi | ||
| 475 | os=-xray | ||
| 476 | ;; | ||
| 477 | h8500hms) | ||
| 478 | basic_machine=h8500-hitachi | ||
| 479 | os=-hms | ||
| 480 | ;; | ||
| 481 | harris) | ||
| 482 | basic_machine=m88k-harris | ||
| 483 | os=-sysv3 | ||
| 484 | ;; | ||
| 485 | hp300-*) | ||
| 486 | basic_machine=m68k-hp | ||
| 487 | ;; | ||
| 488 | hp300bsd) | ||
| 489 | basic_machine=m68k-hp | ||
| 490 | os=-bsd | ||
| 491 | ;; | ||
| 492 | hp300hpux) | ||
| 493 | basic_machine=m68k-hp | ||
| 494 | os=-hpux | ||
| 495 | ;; | ||
| 496 | hp3k9[0-9][0-9] | hp9[0-9][0-9]) | ||
| 497 | basic_machine=hppa1.0-hp | ||
| 498 | ;; | ||
| 499 | hp9k2[0-9][0-9] | hp9k31[0-9]) | ||
| 500 | basic_machine=m68000-hp | ||
| 501 | ;; | ||
| 502 | hp9k3[2-9][0-9]) | ||
| 503 | basic_machine=m68k-hp | ||
| 504 | ;; | ||
| 505 | hp9k6[0-9][0-9] | hp6[0-9][0-9]) | ||
| 506 | basic_machine=hppa1.0-hp | ||
| 507 | ;; | ||
| 508 | hp9k7[0-79][0-9] | hp7[0-79][0-9]) | ||
| 509 | basic_machine=hppa1.1-hp | ||
| 510 | ;; | ||
| 511 | hp9k78[0-9] | hp78[0-9]) | ||
| 512 | # FIXME: really hppa2.0-hp | ||
| 513 | basic_machine=hppa1.1-hp | ||
| 514 | ;; | ||
| 515 | hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) | ||
| 516 | # FIXME: really hppa2.0-hp | ||
| 517 | basic_machine=hppa1.1-hp | ||
| 518 | ;; | ||
| 519 | hp9k8[0-9][13679] | hp8[0-9][13679]) | ||
| 520 | basic_machine=hppa1.1-hp | ||
| 521 | ;; | ||
| 522 | hp9k8[0-9][0-9] | hp8[0-9][0-9]) | ||
| 523 | basic_machine=hppa1.0-hp | ||
| 524 | ;; | ||
| 525 | hppa-next) | ||
| 526 | os=-nextstep3 | ||
| 527 | ;; | ||
| 528 | hppaosf) | ||
| 529 | basic_machine=hppa1.1-hp | ||
| 530 | os=-osf | ||
| 531 | ;; | ||
| 532 | hppro) | ||
| 533 | basic_machine=hppa1.1-hp | ||
| 534 | os=-proelf | ||
| 535 | ;; | ||
| 536 | i370-ibm* | ibm*) | ||
| 537 | basic_machine=i370-ibm | ||
| 538 | ;; | ||
| 539 | # I'm not sure what "Sysv32" means. Should this be sysv3.2? | ||
| 540 | i*86v32) | ||
| 541 | basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` | ||
| 542 | os=-sysv32 | ||
| 543 | ;; | ||
| 544 | i*86v4*) | ||
| 545 | basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` | ||
| 546 | os=-sysv4 | ||
| 547 | ;; | ||
| 548 | i*86v) | ||
| 549 | basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` | ||
| 550 | os=-sysv | ||
| 551 | ;; | ||
| 552 | i*86sol2) | ||
| 553 | basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` | ||
| 554 | os=-solaris2 | ||
| 555 | ;; | ||
| 556 | i386mach) | ||
| 557 | basic_machine=i386-mach | ||
| 558 | os=-mach | ||
| 559 | ;; | ||
| 560 | i386-vsta | vsta) | ||
| 561 | basic_machine=i386-unknown | ||
| 562 | os=-vsta | ||
| 563 | ;; | ||
| 564 | iris | iris4d) | ||
| 565 | basic_machine=mips-sgi | ||
| 566 | case $os in | ||
| 567 | -irix*) | ||
| 568 | ;; | ||
| 569 | *) | ||
| 570 | os=-irix4 | ||
| 571 | ;; | ||
| 572 | esac | ||
| 573 | ;; | ||
| 574 | isi68 | isi) | ||
| 575 | basic_machine=m68k-isi | ||
| 576 | os=-sysv | ||
| 577 | ;; | ||
| 578 | m88k-omron*) | ||
| 579 | basic_machine=m88k-omron | ||
| 580 | ;; | ||
| 581 | magnum | m3230) | ||
| 582 | basic_machine=mips-mips | ||
| 583 | os=-sysv | ||
| 584 | ;; | ||
| 585 | merlin) | ||
| 586 | basic_machine=ns32k-utek | ||
| 587 | os=-sysv | ||
| 588 | ;; | ||
| 589 | mingw32) | ||
| 590 | basic_machine=i386-pc | ||
| 591 | os=-mingw32 | ||
| 592 | ;; | ||
| 593 | miniframe) | ||
| 594 | basic_machine=m68000-convergent | ||
| 595 | ;; | ||
| 596 | *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) | ||
| 597 | basic_machine=m68k-atari | ||
| 598 | os=-mint | ||
| 599 | ;; | ||
| 600 | mipsel*-linux*) | ||
| 601 | basic_machine=mipsel-unknown | ||
| 602 | os=-linux-gnu | ||
| 603 | ;; | ||
| 604 | mips*-linux*) | ||
| 605 | basic_machine=mips-unknown | ||
| 606 | os=-linux-gnu | ||
| 607 | ;; | ||
| 608 | mips3*-*) | ||
| 609 | basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` | ||
| 610 | ;; | ||
| 611 | mips3*) | ||
| 612 | basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown | ||
| 613 | ;; | ||
| 614 | mmix*) | ||
| 615 | basic_machine=mmix-knuth | ||
| 616 | os=-mmixware | ||
| 617 | ;; | ||
| 618 | monitor) | ||
| 619 | basic_machine=m68k-rom68k | ||
| 620 | os=-coff | ||
| 621 | ;; | ||
| 622 | msdos) | ||
| 623 | basic_machine=i386-pc | ||
| 624 | os=-msdos | ||
| 625 | ;; | ||
| 626 | mvs) | ||
| 627 | basic_machine=i370-ibm | ||
| 628 | os=-mvs | ||
| 629 | ;; | ||
| 630 | ncr3000) | ||
| 631 | basic_machine=i486-ncr | ||
| 632 | os=-sysv4 | ||
| 633 | ;; | ||
| 634 | netbsd386) | ||
| 635 | basic_machine=i386-unknown | ||
| 636 | os=-netbsd | ||
| 637 | ;; | ||
| 638 | netwinder) | ||
| 639 | basic_machine=armv4l-rebel | ||
| 640 | os=-linux | ||
| 641 | ;; | ||
| 642 | news | news700 | news800 | news900) | ||
| 643 | basic_machine=m68k-sony | ||
| 644 | os=-newsos | ||
| 645 | ;; | ||
| 646 | news1000) | ||
| 647 | basic_machine=m68030-sony | ||
| 648 | os=-newsos | ||
| 649 | ;; | ||
| 650 | news-3600 | risc-news) | ||
| 651 | basic_machine=mips-sony | ||
| 652 | os=-newsos | ||
| 653 | ;; | ||
| 654 | necv70) | ||
| 655 | basic_machine=v70-nec | ||
| 656 | os=-sysv | ||
| 657 | ;; | ||
| 658 | next | m*-next ) | ||
| 659 | basic_machine=m68k-next | ||
| 660 | case $os in | ||
| 661 | -nextstep* ) | ||
| 662 | ;; | ||
| 663 | -ns2*) | ||
| 664 | os=-nextstep2 | ||
| 665 | ;; | ||
| 666 | *) | ||
| 667 | os=-nextstep3 | ||
| 668 | ;; | ||
| 669 | esac | ||
| 670 | ;; | ||
| 671 | nh3000) | ||
| 672 | basic_machine=m68k-harris | ||
| 673 | os=-cxux | ||
| 674 | ;; | ||
| 675 | nh[45]000) | ||
| 676 | basic_machine=m88k-harris | ||
| 677 | os=-cxux | ||
| 678 | ;; | ||
| 679 | nindy960) | ||
| 680 | basic_machine=i960-intel | ||
| 681 | os=-nindy | ||
| 682 | ;; | ||
| 683 | mon960) | ||
| 684 | basic_machine=i960-intel | ||
| 685 | os=-mon960 | ||
| 686 | ;; | ||
| 687 | nonstopux) | ||
| 688 | basic_machine=mips-compaq | ||
| 689 | os=-nonstopux | ||
| 690 | ;; | ||
| 691 | np1) | ||
| 692 | basic_machine=np1-gould | ||
| 693 | ;; | ||
| 694 | nsr-tandem) | ||
| 695 | basic_machine=nsr-tandem | ||
| 696 | ;; | ||
| 697 | op50n-* | op60c-*) | ||
| 698 | basic_machine=hppa1.1-oki | ||
| 699 | os=-proelf | ||
| 700 | ;; | ||
| 701 | OSE68000 | ose68000) | ||
| 702 | basic_machine=m68000-ericsson | ||
| 703 | os=-ose | ||
| 704 | ;; | ||
| 705 | os68k) | ||
| 706 | basic_machine=m68k-none | ||
| 707 | os=-os68k | ||
| 708 | ;; | ||
| 709 | pa-hitachi) | ||
| 710 | basic_machine=hppa1.1-hitachi | ||
| 711 | os=-hiuxwe2 | ||
| 712 | ;; | ||
| 713 | paragon) | ||
| 714 | basic_machine=i860-intel | ||
| 715 | os=-osf | ||
| 716 | ;; | ||
| 717 | pbd) | ||
| 718 | basic_machine=sparc-tti | ||
| 719 | ;; | ||
| 720 | pbb) | ||
| 721 | basic_machine=m68k-tti | ||
| 722 | ;; | ||
| 723 | pc532 | pc532-*) | ||
| 724 | basic_machine=ns32k-pc532 | ||
| 725 | ;; | ||
| 726 | pentium | p5 | k5 | k6 | nexgen) | ||
| 727 | basic_machine=i586-pc | ||
| 728 | ;; | ||
| 729 | pentiumpro | p6 | 6x86 | athlon) | ||
| 730 | basic_machine=i686-pc | ||
| 731 | ;; | ||
| 732 | pentiumii | pentium2) | ||
| 733 | basic_machine=i686-pc | ||
| 734 | ;; | ||
| 735 | pentium-* | p5-* | k5-* | k6-* | nexgen-*) | ||
| 736 | basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` | ||
| 737 | ;; | ||
| 738 | pentiumpro-* | p6-* | 6x86-* | athlon-*) | ||
| 739 | basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` | ||
| 740 | ;; | ||
| 741 | pentiumii-* | pentium2-*) | ||
| 742 | basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` | ||
| 743 | ;; | ||
| 744 | pn) | ||
| 745 | basic_machine=pn-gould | ||
| 746 | ;; | ||
| 747 | power) basic_machine=power-ibm | ||
| 748 | ;; | ||
| 749 | ppc) basic_machine=powerpc-unknown | ||
| 750 | ;; | ||
| 751 | ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` | ||
| 752 | ;; | ||
| 753 | ppcle | powerpclittle | ppc-le | powerpc-little) | ||
| 754 | basic_machine=powerpcle-unknown | ||
| 755 | ;; | ||
| 756 | ppcle-* | powerpclittle-*) | ||
| 757 | basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` | ||
| 758 | ;; | ||
| 759 | ppc64) basic_machine=powerpc64-unknown | ||
| 760 | ;; | ||
| 761 | ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` | ||
| 762 | ;; | ||
| 763 | ppc64le | powerpc64little | ppc64-le | powerpc64-little) | ||
| 764 | basic_machine=powerpc64le-unknown | ||
| 765 | ;; | ||
| 766 | ppc64le-* | powerpc64little-*) | ||
| 767 | basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` | ||
| 768 | ;; | ||
| 769 | ps2) | ||
| 770 | basic_machine=i386-ibm | ||
| 771 | ;; | ||
| 772 | pw32) | ||
| 773 | basic_machine=i586-unknown | ||
| 774 | os=-pw32 | ||
| 775 | ;; | ||
| 776 | rom68k) | ||
| 777 | basic_machine=m68k-rom68k | ||
| 778 | os=-coff | ||
| 779 | ;; | ||
| 780 | rm[46]00) | ||
| 781 | basic_machine=mips-siemens | ||
| 782 | ;; | ||
| 783 | rtpc | rtpc-*) | ||
| 784 | basic_machine=romp-ibm | ||
| 785 | ;; | ||
| 786 | sa29200) | ||
| 787 | basic_machine=a29k-amd | ||
| 788 | os=-udi | ||
| 789 | ;; | ||
| 790 | sequent) | ||
| 791 | basic_machine=i386-sequent | ||
| 792 | ;; | ||
| 793 | sh) | ||
| 794 | basic_machine=sh-hitachi | ||
| 795 | os=-hms | ||
| 796 | ;; | ||
| 797 | sparclite-wrs) | ||
| 798 | basic_machine=sparclite-wrs | ||
| 799 | os=-vxworks | ||
| 800 | ;; | ||
| 801 | sps7) | ||
| 802 | basic_machine=m68k-bull | ||
| 803 | os=-sysv2 | ||
| 804 | ;; | ||
| 805 | spur) | ||
| 806 | basic_machine=spur-unknown | ||
| 807 | ;; | ||
| 808 | st2000) | ||
| 809 | basic_machine=m68k-tandem | ||
| 810 | ;; | ||
| 811 | stratus) | ||
| 812 | basic_machine=i860-stratus | ||
| 813 | os=-sysv4 | ||
| 814 | ;; | ||
| 815 | sun2) | ||
| 816 | basic_machine=m68000-sun | ||
| 817 | ;; | ||
| 818 | sun2os3) | ||
| 819 | basic_machine=m68000-sun | ||
| 820 | os=-sunos3 | ||
| 821 | ;; | ||
| 822 | sun2os4) | ||
| 823 | basic_machine=m68000-sun | ||
| 824 | os=-sunos4 | ||
| 825 | ;; | ||
| 826 | sun3os3) | ||
| 827 | basic_machine=m68k-sun | ||
| 828 | os=-sunos3 | ||
| 829 | ;; | ||
| 830 | sun3os4) | ||
| 831 | basic_machine=m68k-sun | ||
| 832 | os=-sunos4 | ||
| 833 | ;; | ||
| 834 | sun4os3) | ||
| 835 | basic_machine=sparc-sun | ||
| 836 | os=-sunos3 | ||
| 837 | ;; | ||
| 838 | sun4os4) | ||
| 839 | basic_machine=sparc-sun | ||
| 840 | os=-sunos4 | ||
| 841 | ;; | ||
| 842 | sun4sol2) | ||
| 843 | basic_machine=sparc-sun | ||
| 844 | os=-solaris2 | ||
| 845 | ;; | ||
| 846 | sun3 | sun3-*) | ||
| 847 | basic_machine=m68k-sun | ||
| 848 | ;; | ||
| 849 | sun4) | ||
| 850 | basic_machine=sparc-sun | ||
| 851 | ;; | ||
| 852 | sun386 | sun386i | roadrunner) | ||
| 853 | basic_machine=i386-sun | ||
| 854 | ;; | ||
| 855 | sv1) | ||
| 856 | basic_machine=sv1-cray | ||
| 857 | os=-unicos | ||
| 858 | ;; | ||
| 859 | symmetry) | ||
| 860 | basic_machine=i386-sequent | ||
| 861 | os=-dynix | ||
| 862 | ;; | ||
| 863 | t3e) | ||
| 864 | basic_machine=t3e-cray | ||
| 865 | os=-unicos | ||
| 866 | ;; | ||
| 867 | tic54x | c54x*) | ||
| 868 | basic_machine=tic54x-unknown | ||
| 869 | os=-coff | ||
| 870 | ;; | ||
| 871 | tx39) | ||
| 872 | basic_machine=mipstx39-unknown | ||
| 873 | ;; | ||
| 874 | tx39el) | ||
| 875 | basic_machine=mipstx39el-unknown | ||
| 876 | ;; | ||
| 877 | tower | tower-32) | ||
| 878 | basic_machine=m68k-ncr | ||
| 879 | ;; | ||
| 880 | udi29k) | ||
| 881 | basic_machine=a29k-amd | ||
| 882 | os=-udi | ||
| 883 | ;; | ||
| 884 | ultra3) | ||
| 885 | basic_machine=a29k-nyu | ||
| 886 | os=-sym1 | ||
| 887 | ;; | ||
| 888 | v810 | necv810) | ||
| 889 | basic_machine=v810-nec | ||
| 890 | os=-none | ||
| 891 | ;; | ||
| 892 | vaxv) | ||
| 893 | basic_machine=vax-dec | ||
| 894 | os=-sysv | ||
| 895 | ;; | ||
| 896 | vms) | ||
| 897 | basic_machine=vax-dec | ||
| 898 | os=-vms | ||
| 899 | ;; | ||
| 900 | vpp*|vx|vx-*) | ||
| 901 | basic_machine=f301-fujitsu | ||
| 902 | ;; | ||
| 903 | vxworks960) | ||
| 904 | basic_machine=i960-wrs | ||
| 905 | os=-vxworks | ||
| 906 | ;; | ||
| 907 | vxworks68) | ||
| 908 | basic_machine=m68k-wrs | ||
| 909 | os=-vxworks | ||
| 910 | ;; | ||
| 911 | vxworks29k) | ||
| 912 | basic_machine=a29k-wrs | ||
| 913 | os=-vxworks | ||
| 914 | ;; | ||
| 915 | w65*) | ||
| 916 | basic_machine=w65-wdc | ||
| 917 | os=-none | ||
| 918 | ;; | ||
| 919 | w89k-*) | ||
| 920 | basic_machine=hppa1.1-winbond | ||
| 921 | os=-proelf | ||
| 922 | ;; | ||
| 923 | windows32) | ||
| 924 | basic_machine=i386-pc | ||
| 925 | os=-windows32-msvcrt | ||
| 926 | ;; | ||
| 927 | xmp) | ||
| 928 | basic_machine=xmp-cray | ||
| 929 | os=-unicos | ||
| 930 | ;; | ||
| 931 | xps | xps100) | ||
| 932 | basic_machine=xps100-honeywell | ||
| 933 | ;; | ||
| 934 | z8k-*-coff) | ||
| 935 | basic_machine=z8k-unknown | ||
| 936 | os=-sim | ||
| 937 | ;; | ||
| 938 | none) | ||
| 939 | basic_machine=none-none | ||
| 940 | os=-none | ||
| 941 | ;; | ||
| 942 | |||
| 943 | # Here we handle the default manufacturer of certain CPU types. It is in | ||
| 944 | # some cases the only manufacturer, in others, it is the most popular. | ||
| 945 | w89k) | ||
| 946 | basic_machine=hppa1.1-winbond | ||
| 947 | ;; | ||
| 948 | op50n) | ||
| 949 | basic_machine=hppa1.1-oki | ||
| 950 | ;; | ||
| 951 | op60c) | ||
| 952 | basic_machine=hppa1.1-oki | ||
| 953 | ;; | ||
| 954 | mips) | ||
| 955 | if [ x$os = x-linux-gnu ]; then | ||
| 956 | basic_machine=mips-unknown | ||
| 957 | else | ||
| 958 | basic_machine=mips-mips | ||
| 959 | fi | ||
| 960 | ;; | ||
| 961 | romp) | ||
| 962 | basic_machine=romp-ibm | ||
| 963 | ;; | ||
| 964 | rs6000) | ||
| 965 | basic_machine=rs6000-ibm | ||
| 966 | ;; | ||
| 967 | vax) | ||
| 968 | basic_machine=vax-dec | ||
| 969 | ;; | ||
| 970 | pdp10) | ||
| 971 | # there are many clones, so DEC is not a safe bet | ||
| 972 | basic_machine=pdp10-unknown | ||
| 973 | ;; | ||
| 974 | pdp11) | ||
| 975 | basic_machine=pdp11-dec | ||
| 976 | ;; | ||
| 977 | we32k) | ||
| 978 | basic_machine=we32k-att | ||
| 979 | ;; | ||
| 980 | sh3 | sh4 | sh3eb | sh4eb) | ||
| 981 | basic_machine=sh-unknown | ||
| 982 | ;; | ||
| 983 | sparc | sparcv9 | sparcv9b) | ||
| 984 | basic_machine=sparc-sun | ||
| 985 | ;; | ||
| 986 | cydra) | ||
| 987 | basic_machine=cydra-cydrome | ||
| 988 | ;; | ||
| 989 | orion) | ||
| 990 | basic_machine=orion-highlevel | ||
| 991 | ;; | ||
| 992 | orion105) | ||
| 993 | basic_machine=clipper-highlevel | ||
| 994 | ;; | ||
| 995 | mac | mpw | mac-mpw) | ||
| 996 | basic_machine=m68k-apple | ||
| 997 | ;; | ||
| 998 | pmac | pmac-mpw) | ||
| 999 | basic_machine=powerpc-apple | ||
| 1000 | ;; | ||
| 1001 | c4x*) | ||
| 1002 | basic_machine=c4x-none | ||
| 1003 | os=-coff | ||
| 1004 | ;; | ||
| 1005 | *-unknown) | ||
| 1006 | # Make sure to match an already-canonicalized machine name. | ||
| 1007 | ;; | ||
| 1008 | *) | ||
| 1009 | echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 | ||
| 1010 | exit 1 | ||
| 1011 | ;; | ||
| 1012 | esac | ||
| 1013 | |||
| 1014 | # Here we canonicalize certain aliases for manufacturers. | ||
| 1015 | case $basic_machine in | ||
| 1016 | *-digital*) | ||
| 1017 | basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` | ||
| 1018 | ;; | ||
| 1019 | *-commodore*) | ||
| 1020 | basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` | ||
| 1021 | ;; | ||
| 1022 | *) | ||
| 1023 | ;; | ||
| 1024 | esac | ||
| 1025 | |||
| 1026 | # Decode manufacturer-specific aliases for certain operating systems. | ||
| 1027 | |||
| 1028 | if [ x"$os" != x"" ] | ||
| 1029 | then | ||
| 1030 | case $os in | ||
| 1031 | # First match some system type aliases | ||
| 1032 | # that might get confused with valid system types. | ||
| 1033 | # -solaris* is a basic system type, with this one exception. | ||
| 1034 | -solaris1 | -solaris1.*) | ||
| 1035 | os=`echo $os | sed -e 's|solaris1|sunos4|'` | ||
| 1036 | ;; | ||
| 1037 | -solaris) | ||
| 1038 | os=-solaris2 | ||
| 1039 | ;; | ||
| 1040 | -svr4*) | ||
| 1041 | os=-sysv4 | ||
| 1042 | ;; | ||
| 1043 | -unixware*) | ||
| 1044 | os=-sysv4.2uw | ||
| 1045 | ;; | ||
| 1046 | -gnu/linux*) | ||
| 1047 | os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` | ||
| 1048 | ;; | ||
| 1049 | # First accept the basic system types. | ||
| 1050 | # The portable systems comes first. | ||
| 1051 | # Each alternative MUST END IN A *, to match a version number. | ||
| 1052 | # -sysv* is not here because it comes later, after sysvr4. | ||
| 1053 | -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | ||
| 1054 | | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | ||
| 1055 | | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | ||
| 1056 | | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | ||
| 1057 | | -aos* \ | ||
| 1058 | | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | ||
| 1059 | | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | ||
| 1060 | | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | ||
| 1061 | | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | ||
| 1062 | | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | ||
| 1063 | | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | ||
| 1064 | | -chorusos* | -chorusrdb* \ | ||
| 1065 | | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | ||
| 1066 | | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | ||
| 1067 | | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | ||
| 1068 | | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | ||
| 1069 | | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | ||
| 1070 | | -os2* | -vos*) | ||
| 1071 | # Remember, each alternative MUST END IN *, to match a version number. | ||
| 1072 | ;; | ||
| 1073 | -qnx*) | ||
| 1074 | case $basic_machine in | ||
| 1075 | x86-* | i*86-*) | ||
| 1076 | ;; | ||
| 1077 | *) | ||
| 1078 | os=-nto$os | ||
| 1079 | ;; | ||
| 1080 | esac | ||
| 1081 | ;; | ||
| 1082 | -nto*) | ||
| 1083 | os=-nto-qnx | ||
| 1084 | ;; | ||
| 1085 | -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | ||
| 1086 | | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | ||
| 1087 | | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) | ||
| 1088 | ;; | ||
| 1089 | -mac*) | ||
| 1090 | os=`echo $os | sed -e 's|mac|macos|'` | ||
| 1091 | ;; | ||
| 1092 | -linux*) | ||
| 1093 | os=`echo $os | sed -e 's|linux|linux-gnu|'` | ||
| 1094 | ;; | ||
| 1095 | -sunos5*) | ||
| 1096 | os=`echo $os | sed -e 's|sunos5|solaris2|'` | ||
| 1097 | ;; | ||
| 1098 | -sunos6*) | ||
| 1099 | os=`echo $os | sed -e 's|sunos6|solaris3|'` | ||
| 1100 | ;; | ||
| 1101 | -opened*) | ||
| 1102 | os=-openedition | ||
| 1103 | ;; | ||
| 1104 | -wince*) | ||
| 1105 | os=-wince | ||
| 1106 | ;; | ||
| 1107 | -osfrose*) | ||
| 1108 | os=-osfrose | ||
| 1109 | ;; | ||
| 1110 | -osf*) | ||
| 1111 | os=-osf | ||
| 1112 | ;; | ||
| 1113 | -utek*) | ||
| 1114 | os=-bsd | ||
| 1115 | ;; | ||
| 1116 | -dynix*) | ||
| 1117 | os=-bsd | ||
| 1118 | ;; | ||
| 1119 | -acis*) | ||
| 1120 | os=-aos | ||
| 1121 | ;; | ||
| 1122 | -386bsd) | ||
| 1123 | os=-bsd | ||
| 1124 | ;; | ||
| 1125 | -ctix* | -uts*) | ||
| 1126 | os=-sysv | ||
| 1127 | ;; | ||
| 1128 | -ns2 ) | ||
| 1129 | os=-nextstep2 | ||
| 1130 | ;; | ||
| 1131 | -nsk*) | ||
| 1132 | os=-nsk | ||
| 1133 | ;; | ||
| 1134 | # Preserve the version number of sinix5. | ||
| 1135 | -sinix5.*) | ||
| 1136 | os=`echo $os | sed -e 's|sinix|sysv|'` | ||
| 1137 | ;; | ||
| 1138 | -sinix*) | ||
| 1139 | os=-sysv4 | ||
| 1140 | ;; | ||
| 1141 | -triton*) | ||
| 1142 | os=-sysv3 | ||
| 1143 | ;; | ||
| 1144 | -oss*) | ||
| 1145 | os=-sysv3 | ||
| 1146 | ;; | ||
| 1147 | -svr4) | ||
| 1148 | os=-sysv4 | ||
| 1149 | ;; | ||
| 1150 | -svr3) | ||
| 1151 | os=-sysv3 | ||
| 1152 | ;; | ||
| 1153 | -sysvr4) | ||
| 1154 | os=-sysv4 | ||
| 1155 | ;; | ||
| 1156 | # This must come after -sysvr4. | ||
| 1157 | -sysv*) | ||
| 1158 | ;; | ||
| 1159 | -ose*) | ||
| 1160 | os=-ose | ||
| 1161 | ;; | ||
| 1162 | -es1800*) | ||
| 1163 | os=-ose | ||
| 1164 | ;; | ||
| 1165 | -xenix) | ||
| 1166 | os=-xenix | ||
| 1167 | ;; | ||
| 1168 | -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) | ||
| 1169 | os=-mint | ||
| 1170 | ;; | ||
| 1171 | -none) | ||
| 1172 | ;; | ||
| 1173 | *) | ||
| 1174 | # Get rid of the `-' at the beginning of $os. | ||
| 1175 | os=`echo $os | sed 's/[^-]*-//'` | ||
| 1176 | echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 | ||
| 1177 | exit 1 | ||
| 1178 | ;; | ||
| 1179 | esac | ||
| 1180 | else | ||
| 1181 | |||
| 1182 | # Here we handle the default operating systems that come with various machines. | ||
| 1183 | # The value should be what the vendor currently ships out the door with their | ||
| 1184 | # machine or put another way, the most popular os provided with the machine. | ||
| 1185 | |||
| 1186 | # Note that if you're going to try to match "-MANUFACTURER" here (say, | ||
| 1187 | # "-sun"), then you have to tell the case statement up towards the top | ||
| 1188 | # that MANUFACTURER isn't an operating system. Otherwise, code above | ||
| 1189 | # will signal an error saying that MANUFACTURER isn't an operating | ||
| 1190 | # system, and we'll never get to this point. | ||
| 1191 | |||
| 1192 | case $basic_machine in | ||
| 1193 | *-acorn) | ||
| 1194 | os=-riscix1.2 | ||
| 1195 | ;; | ||
| 1196 | arm*-rebel) | ||
| 1197 | os=-linux | ||
| 1198 | ;; | ||
| 1199 | arm*-semi) | ||
| 1200 | os=-aout | ||
| 1201 | ;; | ||
| 1202 | pdp10-*) | ||
| 1203 | os=-tops20 | ||
| 1204 | ;; | ||
| 1205 | pdp11-*) | ||
| 1206 | os=-none | ||
| 1207 | ;; | ||
| 1208 | *-dec | vax-*) | ||
| 1209 | os=-ultrix4.2 | ||
| 1210 | ;; | ||
| 1211 | m68*-apollo) | ||
| 1212 | os=-domain | ||
| 1213 | ;; | ||
| 1214 | i386-sun) | ||
| 1215 | os=-sunos4.0.2 | ||
| 1216 | ;; | ||
| 1217 | m68000-sun) | ||
| 1218 | os=-sunos3 | ||
| 1219 | # This also exists in the configure program, but was not the | ||
| 1220 | # default. | ||
| 1221 | # os=-sunos4 | ||
| 1222 | ;; | ||
| 1223 | m68*-cisco) | ||
| 1224 | os=-aout | ||
| 1225 | ;; | ||
| 1226 | mips*-cisco) | ||
| 1227 | os=-elf | ||
| 1228 | ;; | ||
| 1229 | mips*-*) | ||
| 1230 | os=-elf | ||
| 1231 | ;; | ||
| 1232 | *-tti) # must be before sparc entry or we get the wrong os. | ||
| 1233 | os=-sysv3 | ||
| 1234 | ;; | ||
| 1235 | sparc-* | *-sun) | ||
| 1236 | os=-sunos4.1.1 | ||
| 1237 | ;; | ||
| 1238 | *-be) | ||
| 1239 | os=-beos | ||
| 1240 | ;; | ||
| 1241 | *-ibm) | ||
| 1242 | os=-aix | ||
| 1243 | ;; | ||
| 1244 | *-wec) | ||
| 1245 | os=-proelf | ||
| 1246 | ;; | ||
| 1247 | *-winbond) | ||
| 1248 | os=-proelf | ||
| 1249 | ;; | ||
| 1250 | *-oki) | ||
| 1251 | os=-proelf | ||
| 1252 | ;; | ||
| 1253 | *-hp) | ||
| 1254 | os=-hpux | ||
| 1255 | ;; | ||
| 1256 | *-hitachi) | ||
| 1257 | os=-hiux | ||
| 1258 | ;; | ||
| 1259 | i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) | ||
| 1260 | os=-sysv | ||
| 1261 | ;; | ||
| 1262 | *-cbm) | ||
| 1263 | os=-amigaos | ||
| 1264 | ;; | ||
| 1265 | *-dg) | ||
| 1266 | os=-dgux | ||
| 1267 | ;; | ||
| 1268 | *-dolphin) | ||
| 1269 | os=-sysv3 | ||
| 1270 | ;; | ||
| 1271 | m68k-ccur) | ||
| 1272 | os=-rtu | ||
| 1273 | ;; | ||
| 1274 | m88k-omron*) | ||
| 1275 | os=-luna | ||
| 1276 | ;; | ||
| 1277 | *-next ) | ||
| 1278 | os=-nextstep | ||
| 1279 | ;; | ||
| 1280 | *-sequent) | ||
| 1281 | os=-ptx | ||
| 1282 | ;; | ||
| 1283 | *-crds) | ||
| 1284 | os=-unos | ||
| 1285 | ;; | ||
| 1286 | *-ns) | ||
| 1287 | os=-genix | ||
| 1288 | ;; | ||
| 1289 | i370-*) | ||
| 1290 | os=-mvs | ||
| 1291 | ;; | ||
| 1292 | *-next) | ||
| 1293 | os=-nextstep3 | ||
| 1294 | ;; | ||
| 1295 | *-gould) | ||
| 1296 | os=-sysv | ||
| 1297 | ;; | ||
| 1298 | *-highlevel) | ||
| 1299 | os=-bsd | ||
| 1300 | ;; | ||
| 1301 | *-encore) | ||
| 1302 | os=-bsd | ||
| 1303 | ;; | ||
| 1304 | *-sgi) | ||
| 1305 | os=-irix | ||
| 1306 | ;; | ||
| 1307 | *-siemens) | ||
| 1308 | os=-sysv4 | ||
| 1309 | ;; | ||
| 1310 | *-masscomp) | ||
| 1311 | os=-rtu | ||
| 1312 | ;; | ||
| 1313 | f30[01]-fujitsu | f700-fujitsu) | ||
| 1314 | os=-uxpv | ||
| 1315 | ;; | ||
| 1316 | *-rom68k) | ||
| 1317 | os=-coff | ||
| 1318 | ;; | ||
| 1319 | *-*bug) | ||
| 1320 | os=-coff | ||
| 1321 | ;; | ||
| 1322 | *-apple) | ||
| 1323 | os=-macos | ||
| 1324 | ;; | ||
| 1325 | *-atari*) | ||
| 1326 | os=-mint | ||
| 1327 | ;; | ||
| 1328 | *) | ||
| 1329 | os=-none | ||
| 1330 | ;; | ||
| 1331 | esac | ||
| 1332 | fi | ||
| 1333 | |||
| 1334 | # Here we handle the case where we know the os, and the CPU type, but not the | ||
| 1335 | # manufacturer. We pick the logical manufacturer. | ||
| 1336 | vendor=unknown | ||
| 1337 | case $basic_machine in | ||
| 1338 | *-unknown) | ||
| 1339 | case $os in | ||
| 1340 | -riscix*) | ||
| 1341 | vendor=acorn | ||
| 1342 | ;; | ||
| 1343 | -sunos*) | ||
| 1344 | vendor=sun | ||
| 1345 | ;; | ||
| 1346 | -aix*) | ||
| 1347 | vendor=ibm | ||
| 1348 | ;; | ||
| 1349 | -beos*) | ||
| 1350 | vendor=be | ||
| 1351 | ;; | ||
| 1352 | -hpux*) | ||
| 1353 | vendor=hp | ||
| 1354 | ;; | ||
| 1355 | -mpeix*) | ||
| 1356 | vendor=hp | ||
| 1357 | ;; | ||
| 1358 | -hiux*) | ||
| 1359 | vendor=hitachi | ||
| 1360 | ;; | ||
| 1361 | -unos*) | ||
| 1362 | vendor=crds | ||
| 1363 | ;; | ||
| 1364 | -dgux*) | ||
| 1365 | vendor=dg | ||
| 1366 | ;; | ||
| 1367 | -luna*) | ||
| 1368 | vendor=omron | ||
| 1369 | ;; | ||
| 1370 | -genix*) | ||
| 1371 | vendor=ns | ||
| 1372 | ;; | ||
| 1373 | -mvs* | -opened*) | ||
| 1374 | vendor=ibm | ||
| 1375 | ;; | ||
| 1376 | -ptx*) | ||
| 1377 | vendor=sequent | ||
| 1378 | ;; | ||
| 1379 | -vxsim* | -vxworks*) | ||
| 1380 | vendor=wrs | ||
| 1381 | ;; | ||
| 1382 | -aux*) | ||
| 1383 | vendor=apple | ||
| 1384 | ;; | ||
| 1385 | -hms*) | ||
| 1386 | vendor=hitachi | ||
| 1387 | ;; | ||
| 1388 | -mpw* | -macos*) | ||
| 1389 | vendor=apple | ||
| 1390 | ;; | ||
| 1391 | -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) | ||
| 1392 | vendor=atari | ||
| 1393 | ;; | ||
| 1394 | -vos*) | ||
| 1395 | vendor=stratus | ||
| 1396 | ;; | ||
| 1397 | esac | ||
| 1398 | basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` | ||
| 1399 | ;; | ||
| 1400 | esac | ||
| 1401 | |||
| 1402 | echo $basic_machine$os | ||
| 1403 | exit 0 | ||
| 1404 | |||
| 1405 | # Local variables: | ||
| 1406 | # eval: (add-hook 'write-file-hooks 'time-stamp) | ||
| 1407 | # time-stamp-start: "timestamp='" | ||
| 1408 | # time-stamp-format: "%:y-%02m-%02d" | ||
| 1409 | # time-stamp-end: "'" | ||
| 1410 | # End: | ||
diff --git a/configure.ac b/configure.ac index ee2d474..8a348dc 100644 --- a/configure.ac +++ b/configure.ac | |||
| @@ -1,15 +1,15 @@ | |||
| 1 | dnl Required initializer | 1 | dnl Required initializer |
| 2 | AC_INIT(mod_log_sql, 1.101) | 2 | AC_INIT(mod_log_sql, 1.102) |
| 3 | OOO_CONFIG_NICE(config.nice) | 3 | OOO_CONFIG_NICE(config.nice) |
| 4 | AC_PREREQ(2.53) | 4 | AC_PREREQ(2.53) |
| 5 | AC_CONFIG_HEADERS(config.h) | 5 | AC_CONFIG_HEADERS(config.h) |
| 6 | |||
| 7 | AC_CONFIG_SRCDIR(mod_log_sql.c) | 6 | AC_CONFIG_SRCDIR(mod_log_sql.c) |
| 8 | 7 | ||
| 9 | OOO_MAINTAIN_MODE | 8 | OOO_MAINTAIN_MODE |
| 10 | 9 | ||
| 11 | dnl Add a test for a compiler. | 10 | dnl Add a test for a compiler. |
| 12 | AC_PROG_CC | 11 | AC_PROG_CC |
| 12 | AC_PROG_LIBTOOL | ||
| 13 | 13 | ||
| 14 | APACHE20_VERSION=2.0.40 | 14 | APACHE20_VERSION=2.0.40 |
| 15 | APACHE13_VERSION=1.3.20 | 15 | APACHE13_VERSION=1.3.20 |
diff --git a/functions.h b/functions.h index b35634a..07711d2 100644 --- a/functions.h +++ b/functions.h | |||
| @@ -52,11 +52,11 @@ static const char *extract_request_line(request_rec *r, char *a) | |||
| 52 | * (note the truncation before the protocol string for HTTP/0.9 requests) | 52 | * (note the truncation before the protocol string for HTTP/0.9 requests) |
| 53 | * (note also that r->the_request contains the unmodified request) | 53 | * (note also that r->the_request contains the unmodified request) |
| 54 | */ | 54 | */ |
| 55 | return (r->parsed_uri.password) | 55 | return (r->parsed_uri.password) |
| 56 | ? apr_pstrcat(r->pool, r->method, " ", | 56 | ? apr_pstrcat(r->pool, r->method, " ", |
| 57 | apr_uri_unparse(r->pool, | 57 | apr_uri_unparse(r->pool, |
| 58 | &r->parsed_uri, 0), | 58 | &r->parsed_uri, 0), |
| 59 | r->assbackwards ? NULL : " ", | 59 | r->assbackwards ? NULL : " ", |
| 60 | r->protocol, NULL) | 60 | r->protocol, NULL) |
| 61 | : r->the_request; | 61 | : r->the_request; |
| 62 | } | 62 | } |
| @@ -239,13 +239,13 @@ static const char *extract_specific_cookie(request_rec *r, char *a) | |||
| 239 | return "-"; | 239 | return "-"; |
| 240 | } | 240 | } |
| 241 | 241 | ||
| 242 | static const char *extract_cookie(request_rec *r, char *a) | 242 | /*static const char *extract_cookie(request_rec *r, char *a) |
| 243 | { | 243 | { |
| 244 | logsql_state *cls = ap_get_module_config(r->server->module_config, | 244 | logsql_state *cls = ap_get_module_config(r->server->module_config, |
| 245 | &log_sql_module); | 245 | &log_sql_module); |
| 246 | 246 | ||
| 247 | return extract_specific_cookie(r, (char *)cls->cookie_name); | 247 | return extract_specific_cookie(r, (char *)cls->cookie_name); |
| 248 | } | 248 | }*/ |
| 249 | 249 | ||
| 250 | static const char *extract_unique_id(request_rec *r, char *a) | 250 | static const char *extract_unique_id(request_rec *r, char *a) |
| 251 | { | 251 | { |
diff --git a/mod_log_sql.c b/mod_log_sql.c index 1892eec..a6086d7 100644 --- a/mod_log_sql.c +++ b/mod_log_sql.c | |||
| @@ -59,18 +59,37 @@ typedef struct { | |||
| 59 | int announce; | 59 | int announce; |
| 60 | logsql_dbconnection db; | 60 | logsql_dbconnection db; |
| 61 | logsql_dbdriver *driver; | 61 | logsql_dbdriver *driver; |
| 62 | /** Show config support */ | ||
| 63 | char *showconfig; | ||
| 64 | apr_file_t *showconfig_fp; | ||
| 62 | } global_config_t; | 65 | } global_config_t; |
| 63 | 66 | ||
| 64 | static global_config_t global_config; | 67 | static global_config_t global_config; |
| 65 | 68 | ||
| 66 | /* structure to hold helper function info */ | 69 | /* structure to hold helper function info */ |
| 67 | typedef struct { | 70 | typedef struct { |
| 68 | char key; /* item letter character */ | 71 | const char *alias; /* The function alias */ |
| 69 | logsql_item_func *func; /* its extraction function */ | 72 | logsql_item_func *func; /* The extraction function pointer */ |
| 73 | int want_orig_req; /* if it requires the original request prior to internal redirection */ | ||
| 74 | } logsql_function; | ||
| 75 | |||
| 76 | /* list of logsql_functions's for log types */ | ||
| 77 | static apr_array_header_t *logsql_function_list; | ||
| 78 | |||
| 79 | /* structure to hold sqlfield mappings */ | ||
| 80 | typedef struct { | ||
| 81 | const char *alias; /* long name for item */ | ||
| 82 | const char *funcalias; /* The function alias */ | ||
| 83 | logsql_function *func; /* its extraction function */ | ||
| 84 | char *param; /* Parameter for function */ | ||
| 70 | const char *sql_field_name; /* its column in SQL */ | 85 | const char *sql_field_name; /* its column in SQL */ |
| 71 | int want_orig_default; /* if it requires the original request prior to internal redirection */ | 86 | char string_contents; /* Whether this is a string field or not */ |
| 72 | int string_contents; /* if it returns a string */ | 87 | logsql_field_datatype datatype; /* the field data type */ |
| 73 | } logsql_item; | 88 | apr_size_t size; /* The size of the data type */ |
| 89 | } logsql_field; | ||
| 90 | |||
| 91 | /* list of logsql_item's for log types */ | ||
| 92 | static apr_array_header_t *logsql_field_list; | ||
| 74 | 93 | ||
| 75 | /* But the contents of this structure will vary by virtual server. | 94 | /* But the contents of this structure will vary by virtual server. |
| 76 | * This permits each virtual server to vary its configuration slightly | 95 | * This permits each virtual server to vary its configuration slightly |
| @@ -91,45 +110,140 @@ typedef struct { | |||
| 91 | const char *hin_table_name; | 110 | const char *hin_table_name; |
| 92 | const char *cookie_table_name; | 111 | const char *cookie_table_name; |
| 93 | const char *transfer_table_name; | 112 | const char *transfer_table_name; |
| 94 | const char *transfer_log_format; | 113 | apr_array_header_t *transfer_log_format; |
| 95 | apr_pool_t *parsed_pool; | 114 | apr_pool_t *parsed_pool; |
| 96 | logsql_item **parsed_log_format; | 115 | logsql_field **parsed_log_format; |
| 97 | const char *preserve_file; | 116 | const char *preserve_file; |
| 98 | const char *cookie_name; | 117 | const char *cookie_name; |
| 99 | } logsql_state; | 118 | } logsql_state; |
| 100 | 119 | ||
| 120 | /** Registration function for extract functions | ||
| 121 | * | ||
| 122 | * This functions registers an alias for a function | ||
| 123 | * | ||
| 124 | * @note This is exported from the module | ||
| 125 | */ | ||
| 126 | LOGSQL_DECLARE(void) log_sql_register_function(apr_pool_t *p, | ||
| 127 | const char *alias, logsql_item_func *func, | ||
| 128 | logsql_function_req want_orig_req) | ||
| 129 | { | ||
| 130 | logsql_function *item; | ||
| 131 | if (!logsql_function_list) | ||
| 132 | logsql_function_list = apr_array_make(p,10, sizeof(logsql_function)); | ||
| 101 | 133 | ||
| 102 | /* list of "handlers" for log types */ | 134 | item = apr_array_push(logsql_function_list); |
| 103 | static apr_array_header_t *logsql_item_list; | 135 | item->alias = alias; |
| 104 | 136 | item->func = func; | |
| 105 | /* Registration function for extract functions * | 137 | item->want_orig_req = want_orig_req; |
| 106 | * and update parse cache for transfer_log_format * | 138 | if (global_config.showconfig_fp) { |
| 107 | * this is exported from the module */ | 139 | apr_file_printf(global_config.showconfig_fp," Function : %s\n",alias); |
| 108 | LOGSQL_DECLARE(void) log_sql_register_item(server_rec *s, apr_pool_t *p, | 140 | } |
| 109 | char key, logsql_item_func *func, const char *sql_field_name, | 141 | } |
| 110 | int want_orig_default, int string_contents) | 142 | /** Register a old style sql mapping to the new style |
| 143 | * | ||
| 144 | * @note This is exported from the module | ||
| 145 | */ | ||
| 146 | LOGSQL_DECLARE(void) log_sql_register_alias(server_rec *s, apr_pool_t *p, | ||
| 147 | char key, const char *alias) | ||
| 111 | { | 148 | { |
| 112 | server_rec *ts; | 149 | server_rec *ts; |
| 113 | logsql_item *item; | 150 | for (ts = s; ts; ts = ts->next) { |
| 114 | if (!logsql_item_list) | 151 | logsql_state *cfg = ap_get_module_config(ts->module_config, |
| 115 | logsql_item_list = apr_array_make(p,10, sizeof(logsql_item)); | 152 | &log_sql_module); |
| 153 | int itr; | ||
| 154 | for (itr = 0; itr < cfg->transfer_log_format->nelts; itr++) { | ||
| 155 | const char *logformat = ((const char **)cfg->transfer_log_format->elts)[itr]; | ||
| 156 | //log_error(APLOG_MARK, APLOG_DEBUG, 0, s, "Testing Logformat %s against %c for %s",logformat,key,alias); | ||
| 157 | // Check if it is only one character AND it is our key | ||
| 158 | if (logformat[1]=='\0' && logformat[0]==key) { | ||
| 159 | ((const char **)cfg->transfer_log_format->elts)[itr] = alias; | ||
| 160 | } | ||
| 161 | } | ||
| 162 | } | ||
| 163 | } | ||
| 116 | 164 | ||
| 117 | item= apr_array_push(logsql_item_list); | 165 | |
| 118 | item->key = key; | 166 | /** Registration sqlfield aliases to functions |
| 119 | item->func = func; | 167 | * |
| 120 | item->sql_field_name = sql_field_name; | 168 | * And update parse cache for transfer_log_format |
| 121 | item->want_orig_default = want_orig_default; | 169 | * |
| 122 | item->string_contents = string_contents; | 170 | * @note This is exported from the module |
| 171 | */ | ||
| 172 | LOGSQL_DECLARE(void) log_sql_register_field(apr_pool_t *p, | ||
| 173 | const char *alias, | ||
| 174 | const char *funcalias, const char *param, | ||
| 175 | const char *sql_field_name, | ||
| 176 | logsql_field_datatype datatype, apr_size_t size) | ||
| 177 | { | ||
| 178 | logsql_field *item; | ||
| 179 | |||
| 180 | if (!logsql_field_list) | ||
| 181 | logsql_field_list = apr_array_make(p,10, sizeof(logsql_field)); | ||
| 182 | |||
| 183 | item = apr_array_push(logsql_field_list); | ||
| 184 | item->func = NULL; | ||
| 185 | item->alias = apr_pstrdup(p, alias); | ||
| 186 | item->funcalias = apr_pstrdup(p, funcalias); | ||
| 187 | item->param = apr_pstrdup(p, param); | ||
| 188 | item->sql_field_name = apr_pstrdup(p,sql_field_name); | ||
| 189 | item->datatype = datatype; | ||
| 190 | item->string_contents = 0; | ||
| 191 | if (datatype == LOGSQL_DATATYPE_CHAR || datatype == LOGSQL_DATATYPE_VARCHAR) { | ||
| 192 | item->string_contents = 1; | ||
| 193 | } | ||
| 194 | item->size = size; | ||
| 195 | } | ||
| 196 | |||
| 197 | /** | ||
| 198 | * Links sql field items with their functions | ||
| 199 | */ | ||
| 200 | LOGSQL_DECLARE(void) log_sql_register_finish(server_rec *s) | ||
| 201 | { | ||
| 202 | server_rec *ts; | ||
| 203 | int itr, f; | ||
| 204 | logsql_field *item; | ||
| 205 | logsql_function *func; | ||
| 206 | for (itr = 0; itr < logsql_field_list->nelts; itr++) { | ||
| 207 | item = &((logsql_field *)logsql_field_list->elts)[itr]; | ||
| 208 | if (item->func) continue; | ||
| 209 | /* Find function alias in function list */ | ||
| 210 | for (f = 0; f < logsql_function_list->nelts; f++) { | ||
| 211 | func = &((logsql_function *)logsql_function_list->elts)[f]; | ||
| 212 | if (strcmp(func->alias,item->funcalias)==0) { | ||
| 213 | item->func = func; | ||
| 214 | if (global_config.showconfig_fp) { | ||
| 215 | apr_file_printf(global_config.showconfig_fp," Item : %s using function %s(%s)\n" | ||
| 216 | "\tStoring in field %s of type %s(%d)\n", | ||
| 217 | item->alias, item->funcalias, item->param, | ||
| 218 | item->sql_field_name, item->string_contents ? "TEXT":"NUMERIC", item->size); | ||
| 219 | } | ||
| 220 | break; | ||
| 221 | } | ||
| 222 | } | ||
| 223 | if (!item->func) { | ||
| 224 | log_error(APLOG_MARK, APLOG_DEBUG, 0, s, | ||
| 225 | "Could not find function %s for item %s",item->funcalias, item->alias); | ||
| 226 | } | ||
| 227 | } | ||
| 123 | /* some voodoo here to post parse logitems in all servers * | 228 | /* some voodoo here to post parse logitems in all servers * |
| 124 | * so a "cached" list is used in the main logging loop for speed */ | 229 | * so a "cached" list is used in the main logging loop for speed */ |
| 125 | for (ts = s; ts; ts = ts->next) { | 230 | for (ts = s; ts; ts = ts->next) { |
| 126 | logsql_state *cfg = ap_get_module_config(ts->module_config, | 231 | logsql_state *cfg = ap_get_module_config(ts->module_config, |
| 127 | &log_sql_module); | 232 | &log_sql_module); |
| 128 | char *pos; | ||
| 129 | 233 | ||
| 130 | if (cfg->transfer_log_format) { | 234 | if (!cfg->parsed_log_format) { |
| 131 | if ( (pos = ap_strchr_c(cfg->transfer_log_format,key))!=NULL) { | 235 | cfg->parsed_log_format = apr_pcalloc(cfg->parsed_pool, |
| 132 | cfg->parsed_log_format[pos - cfg->transfer_log_format] = item; | 236 | cfg->transfer_log_format->nelts * sizeof(logsql_field *)); |
| 237 | } | ||
| 238 | |||
| 239 | for (itr = 0; itr < cfg->transfer_log_format->nelts; itr++) { | ||
| 240 | const char *logformat = ((char **)cfg->transfer_log_format->elts)[itr]; | ||
| 241 | for (f = 0; f < logsql_field_list->nelts; f++) { | ||
| 242 | item = &((logsql_field *)logsql_field_list->elts)[f]; | ||
| 243 | if (item->func && strcmp(logformat,item->alias)==0) { | ||
| 244 | cfg->parsed_log_format[itr] = item; | ||
| 245 | break; | ||
| 246 | } | ||
| 133 | } | 247 | } |
| 134 | } | 248 | } |
| 135 | } | 249 | } |
| @@ -157,7 +271,7 @@ static logsql_opendb_ret log_sql_opendb_link(server_rec* s) | |||
| 157 | return LOGSQL_OPENDB_FAIL; | 271 | return LOGSQL_OPENDB_FAIL; |
| 158 | } | 272 | } |
| 159 | if (global_config.forcepreserve) { | 273 | if (global_config.forcepreserve) { |
| 160 | //global_config.db.connected = 1; | 274 | /*global_config.db.connected = 1;*/ |
| 161 | return LOGSQL_OPENDB_PRESERVE; | 275 | return LOGSQL_OPENDB_PRESERVE; |
| 162 | } | 276 | } |
| 163 | if (global_config.db.connected) { | 277 | if (global_config.db.connected) { |
| @@ -187,13 +301,9 @@ static void preserve_entry(request_rec *r, const char *query) | |||
| 187 | { | 301 | { |
| 188 | logsql_state *cls = ap_get_module_config(r->server->module_config, | 302 | logsql_state *cls = ap_get_module_config(r->server->module_config, |
| 189 | &log_sql_module); | 303 | &log_sql_module); |
| 190 | #if defined(WITH_APACHE20) | 304 | apr_status_t result; |
| 191 | apr_file_t *fp; | 305 | apr_file_t *fp; |
| 192 | apr_status_t result; | 306 | |
| 193 | #elif defined(WITH_APACHE13) | ||
| 194 | FILE *fp; | ||
| 195 | int result; | ||
| 196 | #endif | ||
| 197 | /* If preserve file is disabled bail out */ | 307 | /* If preserve file is disabled bail out */ |
| 198 | if (global_config.disablepreserve) | 308 | if (global_config.disablepreserve) |
| 199 | return; | 309 | return; |
| @@ -207,11 +317,10 @@ static void preserve_entry(request_rec *r, const char *query) | |||
| 207 | log_error(APLOG_MARK, APLOG_ERR, result, r->server, | 317 | log_error(APLOG_MARK, APLOG_ERR, result, r->server, |
| 208 | "attempted append of local preserve file '%s' but failed.",cls->preserve_file); | 318 | "attempted append of local preserve file '%s' but failed.",cls->preserve_file); |
| 209 | } else { | 319 | } else { |
| 320 | apr_file_printf(fp,"%s;\n", query); | ||
| 210 | #if defined(WITH_APACHE20) | 321 | #if defined(WITH_APACHE20) |
| 211 | apr_file_printf(fp,"%s;\n", query); | ||
| 212 | apr_file_close(fp); | 322 | apr_file_close(fp); |
| 213 | #elif defined(WITH_APACHE13) | 323 | #elif defined(WITH_APACHE13) |
| 214 | fprintf(fp,"%s;\n", query); | ||
| 215 | ap_pfclose(r->pool, fp); | 324 | ap_pfclose(r->pool, fp); |
| 216 | #endif | 325 | #endif |
| 217 | log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, | 326 | log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, |
| @@ -262,6 +371,7 @@ static const char *set_global_string_slot(cmd_parms *cmd, | |||
| 262 | *(const char **)((char *)ptr + offset) = apr_pstrdup(cmd->pool,arg); | 371 | *(const char **)((char *)ptr + offset) = apr_pstrdup(cmd->pool,arg); |
| 263 | return NULL; | 372 | return NULL; |
| 264 | } | 373 | } |
| 374 | |||
| 265 | static const char *set_server_string_slot(cmd_parms *cmd, | 375 | static const char *set_server_string_slot(cmd_parms *cmd, |
| 266 | void *struct_ptr, | 376 | void *struct_ptr, |
| 267 | const char *arg) | 377 | const char *arg) |
| @@ -296,18 +406,25 @@ static const char *set_server_file_slot(cmd_parms *cmd, | |||
| 296 | return NULL; | 406 | return NULL; |
| 297 | } | 407 | } |
| 298 | 408 | ||
| 299 | static const char *set_logformat_slot(cmd_parms *cmd, | 409 | static apr_array_header_t *create_logformat_default(apr_pool_t *p) |
| 300 | void *struct_ptr, | ||
| 301 | const char *arg) | ||
| 302 | { | 410 | { |
| 303 | logsql_state *cfg = ap_get_module_config(cmd->server->module_config, | 411 | apr_array_header_t *logformat; |
| 304 | &log_sql_module); | 412 | char **addme; |
| 305 | 413 | ||
| 306 | cfg->transfer_log_format = arg; | 414 | logformat = apr_array_make(p, 12, sizeof(char *)); |
| 307 | /* apr_pool_clear(cfg->parsed_pool);*/ | 415 | addme = apr_array_push(logformat); *addme = "useragent"; |
| 308 | cfg->parsed_log_format = apr_pcalloc(cfg->parsed_pool, | 416 | addme = apr_array_push(logformat); *addme = "bytes_sent"; |
| 309 | strlen(arg) * sizeof(logsql_item *)); | 417 | addme = apr_array_push(logformat); *addme = "request_protocol"; |
| 310 | return NULL; | 418 | addme = apr_array_push(logformat); *addme = "remote_host"; |
| 419 | addme = apr_array_push(logformat); *addme = "request_method"; | ||
| 420 | addme = apr_array_push(logformat); *addme = "referer"; | ||
| 421 | addme = apr_array_push(logformat); *addme = "timestamp"; | ||
| 422 | addme = apr_array_push(logformat); *addme = "status"; | ||
| 423 | addme = apr_array_push(logformat); *addme = "request_duration"; | ||
| 424 | addme = apr_array_push(logformat); *addme = "request_uri"; | ||
| 425 | addme = apr_array_push(logformat); *addme = "remote_user"; | ||
| 426 | addme = apr_array_push(logformat); *addme = "virtual_host"; | ||
| 427 | return logformat; | ||
| 311 | } | 428 | } |
| 312 | 429 | ||
| 313 | static const char *set_server_nmv_string_slot(cmd_parms *parms, | 430 | static const char *set_server_nmv_string_slot(cmd_parms *parms, |
| @@ -404,6 +521,60 @@ static const char *add_server_string_slot(cmd_parms *cmd, | |||
| 404 | return NULL; | 521 | return NULL; |
| 405 | } | 522 | } |
| 406 | 523 | ||
| 524 | static const char *set_logformat_slot(cmd_parms *cmd, | ||
| 525 | void *struct_ptr, | ||
| 526 | const char *arg) | ||
| 527 | { | ||
| 528 | const char *t; | ||
| 529 | char t2[2] = {'\0','\0'}; | ||
| 530 | for (t = arg; *t != '\0'; t++) { | ||
| 531 | t2[0] = *t; | ||
| 532 | add_server_string_slot(cmd, NULL, t2); | ||
| 533 | } | ||
| 534 | return NULL; | ||
| 535 | } | ||
| 536 | |||
| 537 | static const char *set_register_field(cmd_parms *cmd, | ||
| 538 | void *struct_ptr, | ||
| 539 | const char *arg) | ||
| 540 | { | ||
| 541 | char *alias, *funcalias, *param, *field, *datatype_s, *size_s; | ||
| 542 | logsql_field_datatype datatype; | ||
| 543 | apr_size_t size; | ||
| 544 | |||
| 545 | alias = ap_getword_white(cmd->pool, &arg); | ||
| 546 | funcalias = ap_getword_white(cmd->pool, &arg); | ||
| 547 | param = ap_getword_conf(cmd->pool, &arg); | ||
| 548 | field = ap_getword_white(cmd->pool, &arg); | ||
| 549 | datatype_s = ap_getword_white(cmd->pool, &arg); | ||
| 550 | size_s = ap_getword_white(cmd->pool, &arg); | ||
| 551 | |||
| 552 | if (strcasecmp("VARCHAR",datatype_s)==0) { | ||
| 553 | datatype = LOGSQL_DATATYPE_VARCHAR; | ||
| 554 | } else if (strcasecmp("INT",datatype_s)==0) { | ||
| 555 | datatype = LOGSQL_DATATYPE_INT; | ||
| 556 | } else if (strcasecmp("CHAR",datatype_s)==0) { | ||
| 557 | datatype = LOGSQL_DATATYPE_CHAR; | ||
| 558 | } else if (strcasecmp("SMALLINT",datatype_s)==0) { | ||
| 559 | datatype = LOGSQL_DATATYPE_SMALLINT; | ||
| 560 | } else if (strcasecmp("BIGINT",datatype_s)==0) { | ||
| 561 | datatype = LOGSQL_DATATYPE_BIGINT; | ||
| 562 | } else { | ||
| 563 | return apr_psprintf(cmd->pool, "Unknown data type %s",datatype_s); | ||
| 564 | } | ||
| 565 | |||
| 566 | size = atoi(size_s); | ||
| 567 | |||
| 568 | log_error(APLOG_MARK, APLOG_DEBUG, 0, cmd->server, | ||
| 569 | "%s, %s, %s, %s, %s(%d), %s(%d)", | ||
| 570 | alias, funcalias, param, field, datatype_s, datatype, size_s, size); | ||
| 571 | |||
| 572 | log_sql_register_field(cmd->pool, alias, funcalias, param, | ||
| 573 | field, datatype, size); | ||
| 574 | |||
| 575 | return NULL; | ||
| 576 | } | ||
| 577 | |||
| 407 | /*------------------------------------------------------------* | 578 | /*------------------------------------------------------------* |
| 408 | * Apache-specific hooks into the module code * | 579 | * Apache-specific hooks into the module code * |
| 409 | * that are defined in the array 'mysql_lgog_module' (at EOF) * | 580 | * that are defined in the array 'mysql_lgog_module' (at EOF) * |
| @@ -460,6 +631,8 @@ static void log_sql_child_init(server_rec *s, apr_pool_t *p) | |||
| 460 | } | 631 | } |
| 461 | } | 632 | } |
| 462 | 633 | ||
| 634 | static apr_array_header_t *do_merge_array(apr_array_header_t *parent, apr_array_header_t *child, apr_pool_t *p); | ||
| 635 | |||
| 463 | /* post_config / module_init */ | 636 | /* post_config / module_init */ |
| 464 | #if defined(WITH_APACHE20) | 637 | #if defined(WITH_APACHE20) |
| 465 | static int log_sql_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) | 638 | static int log_sql_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) |
| @@ -467,47 +640,161 @@ static int log_sql_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptem | |||
| 467 | static void log_sql_module_init(server_rec *s, apr_pool_t *p) | 640 | static void log_sql_module_init(server_rec *s, apr_pool_t *p) |
| 468 | #endif | 641 | #endif |
| 469 | { | 642 | { |
| 470 | /* TODO: Add local_address, remote_address, server_name, connection_status */ | 643 | server_rec *cur_s; |
| 644 | const char *default_p = ap_server_root_relative(p, DEFAULT_PRESERVE_FILE); | ||
| 645 | apr_array_header_t *parent = NULL; | ||
| 646 | |||
| 647 | if (global_config.showconfig != NULL) { | ||
| 648 | const char *tempfile = ap_server_root_relative(p, global_config.showconfig); | ||
| 649 | apr_status_t result; | ||
| 650 | #if defined(WITH_APACHE20) | ||
| 651 | result = apr_file_open(&global_config.showconfig_fp, tempfile,APR_TRUNCATE | APR_WRITE | APR_CREATE, APR_OS_DEFAULT, p); | ||
| 652 | #elif defined(WITH_APACHE13) | ||
| 653 | global_config.showconfig_fp = ap_pfopen(p, tempfile, "w"); | ||
| 654 | result = (fp)?0:errno; | ||
| 655 | #endif | ||
| 656 | if (result != APR_SUCCESS) { | ||
| 657 | log_error(APLOG_MARK, APLOG_ERR, result, s, | ||
| 658 | "attempted open of showconfig file '%s' failed.",tempfile); | ||
| 659 | global_config.showconfig_fp = NULL; | ||
| 660 | } else { | ||
| 661 | #if defined(WITH_APACHE20) | ||
| 662 | char temp_time[APR_RFC822_DATE_LEN]; | ||
| 663 | apr_rfc822_date(temp_time,apr_time_now()); | ||
| 664 | #elif defined(WITH_APACHE13) | ||
| 665 | char *temp_time = ap_get_time()); | ||
| 666 | #endif | ||
| 667 | apr_file_printf(global_config.showconfig_fp,"Mod_log_sql Config dump created on %s\n", temp_time); | ||
| 668 | } | ||
| 669 | } | ||
| 670 | |||
| 671 | for (cur_s = s; cur_s != NULL; cur_s= cur_s->next) { | ||
| 672 | logsql_state *cls = ap_get_module_config(cur_s->module_config, | ||
| 673 | &log_sql_module); | ||
| 674 | /* ap_server_root_relative any default preserve file locations */ | ||
| 675 | if (cls->preserve_file == DEFAULT_PRESERVE_FILE) | ||
| 676 | cls->preserve_file = default_p; | ||
| 677 | |||
| 678 | /* Post-process logformats */ | ||
| 679 | if (!cur_s->is_virtual) { | ||
| 680 | parent = create_logformat_default(p); | ||
| 681 | cls->transfer_log_format = do_merge_array(parent, cls->transfer_log_format, p); | ||
| 682 | parent = cls->transfer_log_format; | ||
| 683 | } else { | ||
| 684 | cls->transfer_log_format = do_merge_array(parent, cls->transfer_log_format, p); | ||
| 685 | } | ||
| 686 | } | ||
| 687 | |||
| 688 | /* TODO: Add local_address, remote_address, connection_status */ | ||
| 689 | /** Register functions */ | ||
| 690 | /** register_function(p, funcname, func_ptr, which request_rec); */ | ||
| 691 | log_sql_register_function(p, "useragent", extract_agent, LOGSQL_FUNCTION_REQ_ORIG); | ||
| 692 | log_sql_register_function(p, "request_args", extract_request_query, LOGSQL_FUNCTION_REQ_ORIG); | ||
| 693 | log_sql_register_function(p, "bytes_sent", extract_bytes_sent, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 694 | log_sql_register_function(p, "cookie", extract_specific_cookie,LOGSQL_FUNCTION_REQ_FINAL); | ||
| 695 | log_sql_register_function(p, "request_file", extract_request_file, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 696 | log_sql_register_function(p, "request_protocol",extract_request_protocol,LOGSQL_FUNCTION_REQ_FINAL); | ||
| 697 | log_sql_register_function(p, "remote_host", extract_remote_host, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 698 | log_sql_register_function(p, "unique_id", extract_unique_id, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 699 | log_sql_register_function(p, "remote_logname", extract_remote_logname, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 700 | log_sql_register_function(p, "request_method", extract_request_method, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 701 | log_sql_register_function(p, "machine_id", extract_machine_id, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 702 | log_sql_register_function(p, "child_pid", extract_child_pid, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 703 | log_sql_register_function(p, "server_port", extract_server_port, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 704 | log_sql_register_function(p, "referrer", extract_referer, LOGSQL_FUNCTION_REQ_ORIG); | ||
| 705 | log_sql_register_function(p, "request_line", extract_request_line, LOGSQL_FUNCTION_REQ_ORIG); | ||
| 706 | log_sql_register_function(p, "timestamp", extract_request_timestamp,LOGSQL_FUNCTION_REQ_FINAL); | ||
| 707 | log_sql_register_function(p, "status", extract_status, LOGSQL_FUNCTION_REQ_ORIG); | ||
| 708 | log_sql_register_function(p, "request_duration",extract_request_duration,LOGSQL_FUNCTION_REQ_ORIG); | ||
| 709 | log_sql_register_function(p, "request_time", extract_request_time, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 710 | log_sql_register_function(p, "remote_user", extract_remote_user, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 711 | log_sql_register_function(p, "request_uri", extract_request_uri, LOGSQL_FUNCTION_REQ_ORIG); | ||
| 712 | log_sql_register_function(p, "virtual_host", extract_virtual_host, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 713 | log_sql_register_function(p, "server_name", extract_server_name, LOGSQL_FUNCTION_REQ_FINAL); | ||
| 714 | |||
| 715 | /** Old style aliases */ | ||
| 716 | /** register_alias(s, shortname, longname) */ | ||
| 717 | log_sql_register_alias(s,p,'A',"useragent"); | ||
| 718 | log_sql_register_alias(s,p,'a',"request_args"); | ||
| 719 | log_sql_register_alias(s,p,'b',"bytes_sent"); | ||
| 720 | log_sql_register_alias(s,p,'c',"cookie"); | ||
| 721 | log_sql_register_alias(s,p,'f',"request_file"); | ||
| 722 | log_sql_register_alias(s,p,'H',"request_protocol"); | ||
| 723 | log_sql_register_alias(s,p,'h',"remote_host"); | ||
| 724 | log_sql_register_alias(s,p,'I',"unique_id"); | ||
| 725 | log_sql_register_alias(s,p,'l',"remote_logname"); | ||
| 726 | log_sql_register_alias(s,p,'m',"request_method"); | ||
| 727 | log_sql_register_alias(s,p,'M',"machine_id"); | ||
| 728 | log_sql_register_alias(s,p,'P',"child_pid"); | ||
| 729 | log_sql_register_alias(s,p,'p',"server_port"); | ||
| 730 | log_sql_register_alias(s,p,'R',"referrer"); | ||
| 731 | log_sql_register_alias(s,p,'r',"request_line"); | ||
| 732 | log_sql_register_alias(s,p,'S',"timestamp"); | ||
| 733 | log_sql_register_alias(s,p,'s',"status"); | ||
| 734 | log_sql_register_alias(s,p,'T',"request_duration"); | ||
| 735 | log_sql_register_alias(s,p,'t',"request_time"); | ||
| 736 | log_sql_register_alias(s,p,'u',"remote_user"); | ||
| 737 | log_sql_register_alias(s,p,'U',"request_uri"); | ||
| 738 | log_sql_register_alias(s,p,'v',"virtual_host"); | ||
| 739 | log_sql_register_alias(s,p,'V',"server_name"); | ||
| 740 | |||
| 471 | /* Register handlers */ | 741 | /* Register handlers */ |
| 472 | log_sql_register_item(s,p,'A', extract_agent, "agent", 1, 1); | 742 | /** register_field(s,p, longname, funcalias, arg, |
| 473 | log_sql_register_item(s,p,'a', extract_request_query, "request_args", 1, 1); | 743 | * sqlfieldname, DATATYPE, DATA LENGTH); */ |
| 474 | log_sql_register_item(s,p,'b', extract_bytes_sent, "bytes_sent", 0, 0); | 744 | log_sql_register_field(p,"useragent", "useragent",NULL, |
| 475 | log_sql_register_item(s,p,'c', extract_cookie, "cookie", 0, 1); | 745 | "agent", LOGSQL_DATATYPE_VARCHAR, 0); |
| 476 | /* TODO: Document */ | 746 | log_sql_register_field(p,"request_args", "request_args",NULL, |
| 477 | log_sql_register_item(s,p,'f', extract_request_file, "request_file", 0, 1); | 747 | "request_args",LOGSQL_DATATYPE_VARCHAR,0); |
| 478 | log_sql_register_item(s,p,'H', extract_request_protocol, "request_protocol", 0, 1); | 748 | log_sql_register_field(p,"bytes_sent", "bytes_sent",NULL, |
| 479 | log_sql_register_item(s,p,'h', extract_remote_host, "remote_host", 0, 1); | 749 | "bytes_sent",LOGSQL_DATATYPE_INT,0); |
| 480 | log_sql_register_item(s,p,'I', extract_unique_id, "id", 0, 1); | 750 | log_sql_register_field(p,"cookie", "cookie","Apache", |
| 481 | log_sql_register_item(s,p,'l', extract_remote_logname, "remote_logname", 0, 1); | 751 | "cookie",LOGSQL_DATATYPE_VARCHAR,0); |
| 482 | log_sql_register_item(s,p,'m', extract_request_method, "request_method", 0, 1); | 752 | log_sql_register_field(p,"request_file", "request_file",NULL, |
| 483 | log_sql_register_item(s,p,'M', extract_machine_id, "machine_id", 0, 1); | 753 | "request_file",LOGSQL_DATATYPE_VARCHAR,0); |
| 484 | log_sql_register_item(s,p,'P', extract_child_pid, "child_pid", 0, 0); | 754 | log_sql_register_field(p,"request_protocol", "request_protocol",NULL, |
| 485 | log_sql_register_item(s,p,'p', extract_server_port, "server_port", 0, 0); | 755 | "request_protocol",LOGSQL_DATATYPE_VARCHAR,0); |
| 486 | log_sql_register_item(s,p,'R', extract_referer, "referer", 1, 1); | 756 | log_sql_register_field(p,"remote_host", "remote_host",NULL, |
| 487 | log_sql_register_item(s,p,'r', extract_request_line, "request_line", 1, 1); | 757 | "remote_host",LOGSQL_DATATYPE_VARCHAR,0); |
| 488 | log_sql_register_item(s,p,'S', extract_request_timestamp, "time_stamp", 0, 0); | 758 | log_sql_register_field(p,"unique_id", "unique_id",NULL, |
| 489 | log_sql_register_item(s,p,'s', extract_status, "status", 1, 0); | 759 | "id",LOGSQL_DATATYPE_VARCHAR,0); |
| 490 | log_sql_register_item(s,p,'T', extract_request_duration, "request_duration", 1, 0); | 760 | log_sql_register_field(p,"remote_logname", "remote_logname",NULL, |
| 491 | log_sql_register_item(s,p,'t', extract_request_time, "request_time", 0, 1); | 761 | "remote_logname",LOGSQL_DATATYPE_VARCHAR,0); |
| 492 | log_sql_register_item(s,p,'u', extract_remote_user, "remote_user", 0, 1); | 762 | log_sql_register_field(p,"request_method", "request_method",NULL, |
| 493 | log_sql_register_item(s,p,'U', extract_request_uri, "request_uri", 1, 1); | 763 | "request_method",LOGSQL_DATATYPE_VARCHAR,0); |
| 494 | log_sql_register_item(s,p,'v', extract_virtual_host, "virtual_host", 0, 1); | 764 | log_sql_register_field(p,"machine_id", "machine_id",NULL, |
| 495 | log_sql_register_item(s,p,'V', extract_server_name, "virtual_host", 0, 1); | 765 | "machine_id",LOGSQL_DATATYPE_VARCHAR,0); |
| 766 | log_sql_register_field(p,"child_pid", "child_pid",NULL, | ||
| 767 | "child_pid",LOGSQL_DATATYPE_INT,0); | ||
| 768 | log_sql_register_field(p,"server_port", "server_port",NULL, | ||
| 769 | "server_port",LOGSQL_DATATYPE_INT,0); | ||
| 770 | log_sql_register_field(p,"referer", "referrer",NULL, | ||
| 771 | "referer",LOGSQL_DATATYPE_VARCHAR,0); | ||
| 772 | log_sql_register_field(p,"referrer", "referrer",NULL, | ||
| 773 | "referer",LOGSQL_DATATYPE_VARCHAR,0); | ||
| 774 | log_sql_register_field(p,"request_line", "request_line",NULL, | ||
| 775 | "request_line",LOGSQL_DATATYPE_VARCHAR,0); | ||
| 776 | log_sql_register_field(p,"timestamp", "timestamp",NULL, | ||
| 777 | "time_stamp",LOGSQL_DATATYPE_INT,0); | ||
| 778 | log_sql_register_field(p,"status", "status",NULL, | ||
| 779 | "status",LOGSQL_DATATYPE_INT,0); | ||
| 780 | log_sql_register_field(p,"request_duration", "request_duration",NULL, | ||
| 781 | "request_duration",LOGSQL_DATATYPE_INT,0); | ||
| 782 | log_sql_register_field(p,"request_time", "request_time",NULL, | ||
| 783 | "request_time",LOGSQL_DATATYPE_VARCHAR,0); | ||
| 784 | log_sql_register_field(p,"remote_user", "remote_user",NULL, | ||
| 785 | "remote_user",LOGSQL_DATATYPE_VARCHAR,0); | ||
| 786 | log_sql_register_field(p,"request_uri", "request_uri",NULL, | ||
| 787 | "request_uri",LOGSQL_DATATYPE_VARCHAR,0); | ||
| 788 | log_sql_register_field(p,"virtual_host", "virtual_host",NULL, | ||
| 789 | "virtual_host",LOGSQL_DATATYPE_VARCHAR,0); | ||
| 790 | log_sql_register_field(p,"server_name", "server_name",NULL, | ||
| 791 | "virtual_host",LOGSQL_DATATYPE_VARCHAR,0); | ||
| 792 | |||
| 793 | log_sql_register_finish(s); | ||
| 496 | 794 | ||
| 497 | if (global_config.announce) { | 795 | if (global_config.announce) { |
| 498 | ap_add_version_component(p, PACKAGE_NAME"/"PACKAGE_VERSION); | 796 | ap_add_version_component(p, PACKAGE_NAME"/"PACKAGE_VERSION); |
| 499 | } | 797 | } |
| 500 | /* ap_server_root_relative any default preserve file locations */ | ||
| 501 | { | ||
| 502 | server_rec *cur_s; | ||
| 503 | const char *default_p = ap_server_root_relative(p, DEFAULT_PRESERVE_FILE); | ||
| 504 | for (cur_s = s; cur_s != NULL; cur_s= cur_s->next) { | ||
| 505 | logsql_state *cls = ap_get_module_config(cur_s->module_config, | ||
| 506 | &log_sql_module); | ||
| 507 | if (cls->preserve_file == DEFAULT_PRESERVE_FILE) | ||
| 508 | cls->preserve_file = default_p; | ||
| 509 | } | ||
| 510 | } | ||
| 511 | global_config.db.p = p; | 798 | global_config.db.p = p; |
| 512 | 799 | ||
| 513 | #if defined(WITH_APACHE20) | 800 | #if defined(WITH_APACHE20) |
| @@ -639,10 +926,9 @@ static void *log_sql_make_state(apr_pool_t *p, server_rec *s) | |||
| 639 | logsql_state *cls = (logsql_state *) apr_pcalloc(p, sizeof(logsql_state)); | 926 | logsql_state *cls = (logsql_state *) apr_pcalloc(p, sizeof(logsql_state)); |
| 640 | 927 | ||
| 641 | /* These defaults are overridable in the httpd.conf file. */ | 928 | /* These defaults are overridable in the httpd.conf file. */ |
| 642 | cls->transfer_log_format = DEFAULT_TRANSFER_LOG_FMT; | 929 | cls->transfer_log_format = apr_array_make(p, 1, sizeof(char *)); |
| 643 | apr_pool_create(&cls->parsed_pool, p); | 930 | cls->parsed_pool = p; |
| 644 | cls->parsed_log_format = apr_pcalloc(cls->parsed_pool, | 931 | |
| 645 | strlen(cls->transfer_log_format) * sizeof(logsql_item *)); | ||
| 646 | cls->notes_table_name = DEFAULT_NOTES_TABLE_NAME; | 932 | cls->notes_table_name = DEFAULT_NOTES_TABLE_NAME; |
| 647 | cls->hin_table_name = DEFAULT_HIN_TABLE_NAME; | 933 | cls->hin_table_name = DEFAULT_HIN_TABLE_NAME; |
| 648 | cls->hout_table_name = DEFAULT_HOUT_TABLE_NAME; | 934 | cls->hout_table_name = DEFAULT_HOUT_TABLE_NAME; |
| @@ -656,7 +942,6 @@ static void *log_sql_make_state(apr_pool_t *p, server_rec *s) | |||
| 656 | cls->hin_list = apr_array_make(p, 1, sizeof(char *)); | 942 | cls->hin_list = apr_array_make(p, 1, sizeof(char *)); |
| 657 | cls->hout_list = apr_array_make(p, 1, sizeof(char *)); | 943 | cls->hout_list = apr_array_make(p, 1, sizeof(char *)); |
| 658 | cls->cookie_list = apr_array_make(p, 1, sizeof(char *)); | 944 | cls->cookie_list = apr_array_make(p, 1, sizeof(char *)); |
| 659 | |||
| 660 | return (void *) cls; | 945 | return (void *) cls; |
| 661 | } | 946 | } |
| 662 | 947 | ||
| @@ -675,43 +960,52 @@ static int in_array(apr_array_header_t *ary, const char *elem) | |||
| 675 | } | 960 | } |
| 676 | 961 | ||
| 677 | 962 | ||
| 678 | /* Parse through cookie lists and merge based on +/- prefixes */ | 963 | /* Parse through lists and merge based on +/- prefixes */ |
| 679 | /* TODO: rewrite as a function */ | 964 | static apr_array_header_t *do_merge_array(apr_array_header_t *parent, apr_array_header_t *child, apr_pool_t *p) |
| 680 | #define DO_MERGE_ARRAY(parent,child,pool) \ | 965 | { |
| 681 | if (apr_is_empty_array(child)) { \ | 966 | apr_array_header_t *ret; |
| 682 | apr_array_cat(child, parent); \ | 967 | ret = apr_array_make(p, 1, sizeof(char *)); |
| 683 | } else { \ | 968 | if (apr_is_empty_array(child)) { |
| 684 | apr_array_header_t *addlist, *dellist; \ | 969 | apr_array_cat(ret, parent); |
| 685 | char **elem, **ptr = (char **)(child->elts); \ | 970 | } else { |
| 686 | int itr, overwrite = 0; \ | 971 | apr_array_header_t *addlist, *dellist; |
| 687 | addlist = apr_array_make(pool,5,sizeof(char *)); \ | 972 | apr_pool_t *subp; |
| 688 | dellist = apr_array_make(subp,5,sizeof(char *)); \ | 973 | char **elem, **ptr = (char **)(child->elts); |
| 689 | \ | 974 | int itr, overwrite = 0; |
| 690 | for (itr=0; itr<child->nelts; itr++) { \ | 975 | |
| 691 | if (*ptr[itr] == '+') { \ | 976 | apr_pool_create(&subp,p); |
| 692 | elem = (char **)apr_array_push(addlist); \ | 977 | |
| 693 | *elem = (ptr[itr]+1); \ | 978 | addlist = apr_array_make(subp,5,sizeof(char *)); |
| 694 | } else if (*ptr[itr] == '-') { \ | 979 | dellist = apr_array_make(subp,5,sizeof(char *)); |
| 695 | elem = (char **)apr_array_push(dellist); \ | 980 | |
| 696 | *elem = (ptr[itr]+1); \ | 981 | for (itr=0; itr<child->nelts; itr++) { |
| 697 | } else { \ | 982 | if (*ptr[itr] == '+') { |
| 698 | overwrite = 1; \ | 983 | elem = (char **)apr_array_push(addlist); |
| 699 | elem = (char **)apr_array_push(addlist); \ | 984 | *elem = (ptr[itr]+1); |
| 700 | *elem = ptr[itr]; \ | 985 | } else if (*ptr[itr] == '-') { |
| 701 | } \ | 986 | elem = (char **)apr_array_push(dellist); |
| 702 | } \ | 987 | *elem = (ptr[itr]+1); |
| 703 | child = apr_array_make(p,1,sizeof(char *)); \ | 988 | } else { |
| 704 | ptr = (char **)(parent->elts); \ | 989 | overwrite = 1; |
| 705 | if (overwrite==0) { \ | 990 | elem = (char **)apr_array_push(addlist); |
| 706 | /* if we are not overwriting the existing then prepare for merge */ \ | 991 | *elem = ptr[itr]; |
| 707 | for (itr=0; itr<parent->nelts; itr++) { \ | 992 | } |
| 708 | if (!in_array(addlist, ptr[itr]) && !in_array(dellist,ptr[itr])) { \ | 993 | } |
| 709 | elem = apr_array_push(child); \ | 994 | child = apr_array_make(p,1,sizeof(char *)); |
| 710 | *elem = apr_pstrdup(p, ptr[itr]); \ | 995 | ptr = (char **)(parent->elts); |
| 711 | } \ | 996 | if (overwrite==0) { |
| 712 | } \ | 997 | /* if we are not overwriting the existing then prepare for merge */ |
| 713 | } \ | 998 | for (itr=0; itr<parent->nelts; itr++) { |
| 714 | apr_array_cat(child, addlist); \ | 999 | if (!in_array(addlist, ptr[itr]) && !in_array(dellist,ptr[itr])) { |
| 1000 | elem = apr_array_push(ret); | ||
| 1001 | *elem = apr_pstrdup(p, ptr[itr]); | ||
| 1002 | } | ||
| 1003 | } | ||
| 1004 | } | ||
| 1005 | apr_array_cat(ret, addlist); | ||
| 1006 | apr_pool_destroy(subp); | ||
| 1007 | } | ||
| 1008 | return ret; | ||
| 715 | } | 1009 | } |
| 716 | 1010 | ||
| 717 | static void *log_sql_merge_state(apr_pool_t *p, void *basev, void *addv) | 1011 | static void *log_sql_merge_state(apr_pool_t *p, void *basev, void *addv) |
| @@ -720,10 +1014,6 @@ static void *log_sql_merge_state(apr_pool_t *p, void *basev, void *addv) | |||
| 720 | logsql_state *parent = (logsql_state *) basev; | 1014 | logsql_state *parent = (logsql_state *) basev; |
| 721 | logsql_state *child = (logsql_state *) addv; | 1015 | logsql_state *child = (logsql_state *) addv; |
| 722 | 1016 | ||
| 723 | apr_pool_t *subp; | ||
| 724 | |||
| 725 | apr_pool_create(&subp,p); | ||
| 726 | |||
| 727 | /* Child can override these, otherwise they default to parent's choice. | 1017 | /* Child can override these, otherwise they default to parent's choice. |
| 728 | * If the parent didn't set them, create reasonable defaults for the | 1018 | * If the parent didn't set them, create reasonable defaults for the |
| 729 | * ones that should have such default settings. Leave the others null. */ | 1019 | * ones that should have such default settings. Leave the others null. */ |
| @@ -734,13 +1024,6 @@ static void *log_sql_merge_state(apr_pool_t *p, void *basev, void *addv) | |||
| 734 | child->transfer_table_name = parent->transfer_table_name; | 1024 | child->transfer_table_name = parent->transfer_table_name; |
| 735 | } | 1025 | } |
| 736 | 1026 | ||
| 737 | if (child->transfer_log_format == DEFAULT_TRANSFER_LOG_FMT) { | ||
| 738 | child->transfer_log_format = parent->transfer_log_format; | ||
| 739 | /*apr_pool_clear(child->parsed_pool);*/ | ||
| 740 | child->parsed_log_format = apr_pcalloc(child->parsed_pool, | ||
| 741 | strlen(child->transfer_log_format) * sizeof(logsql_item *)); | ||
| 742 | } | ||
| 743 | |||
| 744 | if (child->preserve_file == DEFAULT_PRESERVE_FILE) | 1027 | if (child->preserve_file == DEFAULT_PRESERVE_FILE) |
| 745 | child->preserve_file = parent->preserve_file; | 1028 | child->preserve_file = parent->preserve_file; |
| 746 | /* server_root_relative the preserve file location */ | 1029 | /* server_root_relative the preserve file location */ |
| @@ -759,15 +1042,13 @@ static void *log_sql_merge_state(apr_pool_t *p, void *basev, void *addv) | |||
| 759 | if (child->cookie_table_name == DEFAULT_COOKIE_TABLE_NAME) | 1042 | if (child->cookie_table_name == DEFAULT_COOKIE_TABLE_NAME) |
| 760 | child->cookie_table_name = parent->cookie_table_name; | 1043 | child->cookie_table_name = parent->cookie_table_name; |
| 761 | 1044 | ||
| 762 | DO_MERGE_ARRAY(parent->transfer_ignore_list, child->transfer_ignore_list, subp); | 1045 | child->transfer_ignore_list = do_merge_array(parent->transfer_ignore_list, child->transfer_ignore_list, p); |
| 763 | DO_MERGE_ARRAY(parent->transfer_accept_list, child->transfer_accept_list, subp); | 1046 | child->transfer_accept_list = do_merge_array(parent->transfer_accept_list, child->transfer_accept_list, p); |
| 764 | DO_MERGE_ARRAY(parent->remhost_ignore_list, child->remhost_ignore_list, subp); | 1047 | child->remhost_ignore_list = do_merge_array(parent->remhost_ignore_list, child->remhost_ignore_list, p); |
| 765 | DO_MERGE_ARRAY(parent->notes_list, child->notes_list, subp); | 1048 | child->notes_list = do_merge_array(parent->notes_list, child->notes_list, p); |
| 766 | DO_MERGE_ARRAY(parent->hin_list, child->hin_list, subp); | 1049 | child->hin_list = do_merge_array(parent->hin_list, child->hin_list, p); |
| 767 | DO_MERGE_ARRAY(parent->hout_list, child->hout_list, subp); | 1050 | child->hout_list = do_merge_array(parent->hout_list, child->hout_list, p); |
| 768 | DO_MERGE_ARRAY(parent->cookie_list,child->cookie_list, subp); | 1051 | child->cookie_list = do_merge_array(parent->cookie_list,child->cookie_list, p); |
| 769 | |||
| 770 | apr_pool_destroy(subp); | ||
| 771 | 1052 | ||
| 772 | if (!child->cookie_name) | 1053 | if (!child->cookie_name) |
| 773 | child->cookie_name = parent->cookie_name; | 1054 | child->cookie_name = parent->cookie_name; |
| @@ -844,7 +1125,7 @@ static int log_sql_transaction(request_rec *orig) | |||
| 844 | char *cookie_query = NULL; | 1125 | char *cookie_query = NULL; |
| 845 | const char *unique_id; | 1126 | const char *unique_id; |
| 846 | const char *formatted_item; | 1127 | const char *formatted_item; |
| 847 | int i,length; | 1128 | int i, showcomma; |
| 848 | int proceed; | 1129 | int proceed; |
| 849 | 1130 | ||
| 850 | for (r = orig; r->next; r = r->next) { | 1131 | for (r = orig; r->next; r = r->next) { |
| @@ -885,7 +1166,7 @@ static int log_sql_transaction(request_rec *orig) | |||
| 885 | thehost = ap_get_remote_host(r->connection, r->per_dir_config, REMOTE_NAME, NULL); | 1166 | thehost = ap_get_remote_host(r->connection, r->per_dir_config, REMOTE_NAME, NULL); |
| 886 | if (thehost) { | 1167 | if (thehost) { |
| 887 | for (ptrptr = (char **) cls->remhost_ignore_list->elts; ptrptr < ptrptr2; ptrptr = (char **) ((char *) ptrptr + cls->remhost_ignore_list->elt_size)) | 1168 | for (ptrptr = (char **) cls->remhost_ignore_list->elts; ptrptr < ptrptr2; ptrptr = (char **) ((char *) ptrptr + cls->remhost_ignore_list->elt_size)) |
| 888 | if (ap_strstr(thehost, *ptrptr)) { | 1169 | if (ap_strstr_c(thehost, *ptrptr)) { |
| 889 | return OK; | 1170 | return OK; |
| 890 | } | 1171 | } |
| 891 | } | 1172 | } |
| @@ -893,18 +1174,19 @@ static int log_sql_transaction(request_rec *orig) | |||
| 893 | 1174 | ||
| 894 | /* Iterate through the format characters and set up the INSERT string according to | 1175 | /* Iterate through the format characters and set up the INSERT string according to |
| 895 | * what the user has configured. */ | 1176 | * what the user has configured. */ |
| 896 | length = strlen(cls->transfer_log_format); | 1177 | showcomma = 0; |
| 897 | for (i = 0; i<length; i++) { | 1178 | for (i = 0; i<cls->transfer_log_format->nelts; i++) { |
| 898 | logsql_item *item = cls->parsed_log_format[i]; | 1179 | logsql_field *item = cls->parsed_log_format[i]; |
| 899 | if (item==NULL) { | 1180 | if (item==NULL || item->func==NULL) { |
| 900 | log_error(APLOG_MARK, APLOG_ERR, 0, orig->server, | 1181 | log_error(APLOG_MARK, APLOG_ERR, 0, orig->server, |
| 901 | "Log Format '%c' unknown",cls->transfer_log_format[i]); | 1182 | "Log Format '%s' unknown or incomplete",((char **)cls->transfer_log_format->elts)[i]); |
| 902 | continue; | 1183 | continue; |
| 903 | } | 1184 | } |
| 904 | 1185 | ||
| 905 | /* Yes, this key is one of the configured keys. | 1186 | /* Yes, this key is one of the configured keys. |
| 906 | * Call the key's function and put the returned value into 'formatted_item' */ | 1187 | * Call the key's function and put the returned value into 'formatted_item' */ |
| 907 | formatted_item = item->func(item->want_orig_default ? orig : r, ""); | 1188 | formatted_item = item->func->func(item->func->want_orig_req ? orig : r, |
| 1189 | item->param ? item->param : ""); | ||
| 908 | 1190 | ||
| 909 | /* Massage 'formatted_item' for proper SQL eligibility... */ | 1191 | /* Massage 'formatted_item' for proper SQL eligibility... */ |
| 910 | if (!formatted_item) { | 1192 | if (!formatted_item) { |
| @@ -916,10 +1198,11 @@ static int log_sql_transaction(request_rec *orig) | |||
| 916 | } | 1198 | } |
| 917 | 1199 | ||
| 918 | /* Append the fieldname and value-to-insert to the appropriate strings, quoting stringvals with ' as appropriate */ | 1200 | /* Append the fieldname and value-to-insert to the appropriate strings, quoting stringvals with ' as appropriate */ |
| 919 | fields = apr_pstrcat(r->pool, fields, (i ? "," : ""), | 1201 | fields = apr_pstrcat(r->pool, fields, (showcomma ? "," : ""), |
| 920 | item->sql_field_name, NULL); | 1202 | item->sql_field_name, NULL); |
| 921 | values = apr_pstrcat(r->pool, values, (i ? "," : ""), | 1203 | values = apr_pstrcat(r->pool, values, (showcomma ? "," : ""), |
| 922 | global_config.driver->escape(formatted_item, r->pool,&global_config.db), NULL); | 1204 | global_config.driver->escape(formatted_item, r->pool,&global_config.db), NULL); |
| 1205 | showcomma = 1; | ||
| 923 | } | 1206 | } |
| 924 | 1207 | ||
| 925 | /* Work through the list of notes defined by LogSQLWhichNotes */ | 1208 | /* Work through the list of notes defined by LogSQLWhichNotes */ |
| @@ -1171,10 +1454,19 @@ static const command_rec log_sql_cmds[] = { | |||
| 1171 | (void *)APR_OFFSETOF(logsql_state, cookie_table_name), RSRC_CONF, | 1454 | (void *)APR_OFFSETOF(logsql_state, cookie_table_name), RSRC_CONF, |
| 1172 | "The database table that holds the cookie info") | 1455 | "The database table that holds the cookie info") |
| 1173 | , | 1456 | , |
| 1174 | /* Log format */ | 1457 | /* New Log Format */ |
| 1175 | AP_INIT_TAKE1("LogSQLTransferLogFormat", set_logformat_slot, | 1458 | AP_INIT_ITERATE("LogSQLTransferLogItems", add_server_string_slot, |
| 1459 | (void *)APR_OFFSETOF(logsql_state, transfer_log_format), RSRC_CONF, | ||
| 1460 | "What fields to log to the database transfer log") | ||
| 1461 | , | ||
| 1462 | AP_INIT_RAW_ARGS("LogSQLRegisterItem", set_register_field, | ||
| 1176 | NULL, RSRC_CONF, | 1463 | NULL, RSRC_CONF, |
| 1177 | "Instruct the module what information to log to the database transfer log") | 1464 | "Register a new Item for logging, Arguments: ItemName function argument sqlfield datatype datalen<br>" |
| 1465 | "datatypes are INT, SMALLINT, VARCHAR, CHAR<br>") | ||
| 1466 | , | ||
| 1467 | AP_INIT_TAKE1("LogSQLShowConfig", set_global_string_slot, | ||
| 1468 | (void *)APR_OFFSETOF(global_config_t, showconfig), RSRC_CONF, | ||
| 1469 | "Add this to export the entire running function and dfield configuration to the named file") | ||
| 1178 | , | 1470 | , |
| 1179 | /* Machine ID */ | 1471 | /* Machine ID */ |
| 1180 | AP_INIT_TAKE1("LogSQLMachineID", set_global_string_slot, | 1472 | AP_INIT_TAKE1("LogSQLMachineID", set_global_string_slot, |
| @@ -1194,7 +1486,7 @@ static const command_rec log_sql_cmds[] = { | |||
| 1194 | (void *)APR_OFFSETOF(logsql_state, remhost_ignore_list), RSRC_CONF, | 1486 | (void *)APR_OFFSETOF(logsql_state, remhost_ignore_list), RSRC_CONF, |
| 1195 | "List of remote hosts to ignore. Accesses that match will not be logged to database") | 1487 | "List of remote hosts to ignore. Accesses that match will not be logged to database") |
| 1196 | , | 1488 | , |
| 1197 | /* Special loggin table configuration */ | 1489 | /* Special logging table configuration */ |
| 1198 | AP_INIT_TAKE1("LogSQLWhichCookie", set_server_string_slot, | 1490 | AP_INIT_TAKE1("LogSQLWhichCookie", set_server_string_slot, |
| 1199 | (void *)APR_OFFSETOF(logsql_state, cookie_name), RSRC_CONF, | 1491 | (void *)APR_OFFSETOF(logsql_state, cookie_name), RSRC_CONF, |
| 1200 | "The single cookie that you want logged in the access_log when using the 'c' config directive") | 1492 | "The single cookie that you want logged in the access_log when using the 'c' config directive") |
| @@ -1219,6 +1511,10 @@ static const command_rec log_sql_cmds[] = { | |||
| 1219 | "<br><b>Deprecated</b><br>The following Commands are deprecated and should not be used.. <br>Read the documentation for more information<br><b>Deprecated</b>") | 1511 | "<br><b>Deprecated</b><br>The following Commands are deprecated and should not be used.. <br>Read the documentation for more information<br><b>Deprecated</b>") |
| 1220 | , | 1512 | , |
| 1221 | /* Deprecated commands */ | 1513 | /* Deprecated commands */ |
| 1514 | AP_INIT_TAKE1("LogSQLTransferLogFormat", set_logformat_slot, | ||
| 1515 | (void *)APR_OFFSETOF(logsql_state, transfer_log_format), RSRC_CONF, | ||
| 1516 | "<b>(Deprecated) Use LogSQLTransferLogItem to specify symbolic log items instead") | ||
| 1517 | , | ||
| 1222 | AP_INIT_TAKE1("LogSQLDatabase", set_dbparam_slot, | 1518 | AP_INIT_TAKE1("LogSQLDatabase", set_dbparam_slot, |
| 1223 | (void *)"database", RSRC_CONF, | 1519 | (void *)"database", RSRC_CONF, |
| 1224 | "<b>(Deprecated) Use LogSQLDBParam database dbname.</b> The name of the database database for logging") | 1520 | "<b>(Deprecated) Use LogSQLDBParam database dbname.</b> The name of the database database for logging") |
diff --git a/mod_log_sql.h b/mod_log_sql.h index 6bcd6cb..2d20374 100644 --- a/mod_log_sql.h +++ b/mod_log_sql.h | |||
| @@ -24,13 +24,40 @@ | |||
| 24 | #define LOGSQL_DECLARE_DATA __declspec(dllimport) | 24 | #define LOGSQL_DECLARE_DATA __declspec(dllimport) |
| 25 | #endif | 25 | #endif |
| 26 | 26 | ||
| 27 | #define LOG_SQL_PLUGIN_VERSION 20070704 | ||
| 28 | |||
| 27 | /* Registration function for extract functions */ | 29 | /* Registration function for extract functions */ |
| 28 | 30 | ||
| 29 | typedef const char *logsql_item_func(request_rec *r, char *a); | 31 | typedef const char *logsql_item_func(request_rec *r, char *a); |
| 30 | 32 | ||
| 31 | LOGSQL_DECLARE(void) log_sql_register_item(server_rec *s, apr_pool_t *p, | 33 | |
| 32 | char key, logsql_item_func *func, const char *sql_field_name, | 34 | typedef enum { |
| 33 | int want_orig_default, int string_contents); | 35 | LOGSQL_FUNCTION_REQ_FINAL = 0, |
| 36 | LOGSQL_FUNCTION_REQ_ORIG | ||
| 37 | } logsql_function_req; | ||
| 38 | |||
| 39 | LOGSQL_DECLARE(void) log_sql_register_function(apr_pool_t *p, | ||
| 40 | const char *alias, logsql_item_func *func, | ||
| 41 | logsql_function_req want_orig_default); | ||
| 42 | |||
| 43 | LOGSQL_DECLARE(void) log_sql_register_alias(server_rec *s, apr_pool_t *p, | ||
| 44 | char key, const char *alias); | ||
| 45 | |||
| 46 | typedef enum { | ||
| 47 | LOGSQL_DATATYPE_INT = 0, | ||
| 48 | LOGSQL_DATATYPE_SMALLINT, | ||
| 49 | LOGSQL_DATATYPE_VARCHAR, | ||
| 50 | LOGSQL_DATATYPE_CHAR, | ||
| 51 | LOGSQL_DATATYPE_BIGINT | ||
| 52 | } logsql_field_datatype; | ||
| 53 | |||
| 54 | LOGSQL_DECLARE(void) log_sql_register_field(apr_pool_t *p, | ||
| 55 | const char *alias, | ||
| 56 | const char *funcalias, const char *param, | ||
| 57 | const char *sql_field_name, | ||
| 58 | logsql_field_datatype datatype, apr_size_t size); | ||
| 59 | |||
| 60 | LOGSQL_DECLARE(void) log_sql_register_finish(server_rec *s); | ||
| 34 | 61 | ||
| 35 | /* DB Connection structure holds connection handle */ | 62 | /* DB Connection structure holds connection handle */ |
| 36 | typedef struct { | 63 | typedef struct { |
| @@ -88,7 +115,7 @@ typedef struct { | |||
| 88 | /* disconnect from the underlying database layer */ | 115 | /* disconnect from the underlying database layer */ |
| 89 | void (*disconnect)(logsql_dbconnection *db); | 116 | void (*disconnect)(logsql_dbconnection *db); |
| 90 | /* escape the SQL statement according to database rules */ | 117 | /* escape the SQL statement according to database rules */ |
| 91 | const char *(*escape)(const char *from_str, apr_pool_t *p, | 118 | const char *(*escape)(const char *from_str, apr_pool_t *p, |
| 92 | logsql_dbconnection *db); | 119 | logsql_dbconnection *db); |
| 93 | /* insert a SQL query statement */ | 120 | /* insert a SQL query statement */ |
| 94 | logsql_query_ret (*insert)(request_rec *r,logsql_dbconnection *db, | 121 | logsql_query_ret (*insert)(request_rec *r,logsql_dbconnection *db, |
| @@ -102,35 +129,38 @@ LOGSQL_DECLARE(void) log_sql_register_driver(apr_pool_t *p, | |||
| 102 | logsql_dbdriver *driver); | 129 | logsql_dbdriver *driver); |
| 103 | 130 | ||
| 104 | /* Module initialization Macros */ | 131 | /* Module initialization Macros */ |
| 132 | #define LOGSQL_MODULE(driver) log_sql_##driver##_module | ||
| 105 | #if defined(WITH_APACHE20) | 133 | #if defined(WITH_APACHE20) |
| 134 | # define LOGSQL_MODULE_FORWARD(driver) module AP_MODULE_DECLARE_DATA LOGSQL_MODULE(driver) | ||
| 106 | # define LOGSQL_REGISTER(driver) \ | 135 | # define LOGSQL_REGISTER(driver) \ |
| 107 | static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s); \ | 136 | static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s); \ |
| 108 | static void register_hooks(apr_pool_t *p) { \ | 137 | static void register_hooks(apr_pool_t *p) { \ |
| 109 | ap_hook_post_config(post_config, NULL, NULL, APR_HOOK_REALLY_FIRST); \ | 138 | ap_hook_post_config(post_config, NULL, NULL, APR_HOOK_REALLY_FIRST); \ |
| 110 | } \ | 139 | } \ |
| 111 | \ | 140 | \ |
| 112 | module AP_MODULE_DECLARE_DATA log_sql_##driver##_module = { \ | 141 | LOGSQL_MODULE_FORWARD(driver) = { \ |
| 113 | STANDARD20_MODULE_STUFF, \ | 142 | STANDARD20_MODULE_STUFF, \ |
| 114 | NULL, NULL, NULL, NULL, NULL, register_hooks }; \ | 143 | NULL, NULL, NULL, NULL, NULL, register_hooks }; \ |
| 115 | static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) | 144 | static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) |
| 116 | #elif defined(WITH_APACHE13) | 145 | #elif defined(WITH_APACHE13) |
| 146 | # define LOGSQL_MODULE_FORWARD(driver) module MODULE_VAR_EXPORT LOGSQL_MODULE(driver) | ||
| 117 | # define LOGSQL_REGISTER(driver) \ | 147 | # define LOGSQL_REGISTER(driver) \ |
| 118 | static void module_init(server_rec *s, apr_pool_t *p); \ | 148 | static void module_init(server_rec *s, apr_pool_t *p); \ |
| 119 | module MODULE_VAR_EXPORT log_sql_##driver##_module = { \ | 149 | LOGSQL_MODULE_FORWARD(driver) = { \ |
| 120 | STANDARD_MODULE_STUFF, module_init }; \ | 150 | STANDARD_MODULE_STUFF, module_init }; \ |
| 121 | static void module_init(server_rec *s, apr_pool_t *p) | 151 | static void module_init(server_rec *s, apr_pool_t *p) |
| 122 | #endif | 152 | #endif |
| 123 | 153 | ||
| 124 | #if defined(WITH_APACHE20) | 154 | #if defined(WITH_APACHE20) |
| 125 | # define LOGSQL_SHUTDOWN \ | 155 | # define LOGSQL_SHUTDOWN \ |
| 126 | static | 156 | static |
| 127 | #endif | 157 | #endif |
| 128 | 158 | ||
| 129 | 159 | ||
| 130 | #if defined(WITH_APACHE20) | 160 | #if defined(WITH_APACHE20) |
| 131 | #define LOGSQL_REGISTER_RETURN return OK; | 161 | #define LOGSQL_REGISTER_RETURN log_sql_register_finish(s); return OK; |
| 132 | #elif defined(WITH_APACHE13) | 162 | #elif defined(WITH_APACHE13) |
| 133 | #define LOGSQL_REGISTER_RETURN | 163 | #define LOGSQL_REGISTER_RETURN log_sql_register_finish(s); |
| 134 | #endif | 164 | #endif |
| 135 | 165 | ||
| 136 | #endif /* MOD_LOG_SQL_H */ | 166 | #endif /* MOD_LOG_SQL_H */ |
diff --git a/mod_log_sql_logio.c b/mod_log_sql_logio.c index 95d1763..ed69acf 100644 --- a/mod_log_sql_logio.c +++ b/mod_log_sql_logio.c | |||
| @@ -21,6 +21,8 @@ | |||
| 21 | 21 | ||
| 22 | #include "mod_log_sql.h" | 22 | #include "mod_log_sql.h" |
| 23 | 23 | ||
| 24 | #include "http_connection.h" | ||
| 25 | |||
| 24 | module AP_MODULE_DECLARE_DATA log_sql_logio_module; | 26 | module AP_MODULE_DECLARE_DATA log_sql_logio_module; |
| 25 | 27 | ||
| 26 | // From apachge 2.2's mod_logio.c to provide logging ACTUAL incoming and outgoing bytes | 28 | // From apachge 2.2's mod_logio.c to provide logging ACTUAL incoming and outgoing bytes |
| @@ -96,7 +98,7 @@ static apr_status_t logio_out_filter(ap_filter_t *f, | |||
| 96 | } | 98 | } |
| 97 | 99 | ||
| 98 | static int logio_pre_conn(conn_rec *c, void *csd) { | 100 | static int logio_pre_conn(conn_rec *c, void *csd) { |
| 99 | logio_config_t *cf = apr_pcalloc(c->pool, sizeof(*cf)); | 101 | logio_config_t *cf = apr_pcalloc(c->pool, sizeof(logio_config_t)); |
| 100 | 102 | ||
| 101 | ap_set_module_config(c->conn_config, &log_sql_logio_module, cf); | 103 | ap_set_module_config(c->conn_config, &log_sql_logio_module, cf); |
| 102 | 104 | ||
| @@ -108,10 +110,21 @@ static int logio_pre_conn(conn_rec *c, void *csd) { | |||
| 108 | 110 | ||
| 109 | static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) | 111 | static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) |
| 110 | { | 112 | { |
| 111 | log_sql_register_item(s,p,'i', log_bytes_in, "bytes_in", 0, 0); | 113 | log_sql_register_function(p, "bytes_in", log_bytes_in, LOGSQL_FUNCTION_REQ_FINAL); |
| 112 | log_sql_register_item(s,p,'o', log_bytes_out, "bytes_out", 0, 0); | 114 | log_sql_register_function(p, "bytes_out", log_bytes_out, LOGSQL_FUNCTION_REQ_FINAL); |
| 115 | |||
| 116 | log_sql_register_alias(s,p,'i', "bytes_in"); | ||
| 117 | log_sql_register_alias(s,p,'o', "bytes_out"); | ||
| 118 | |||
| 119 | log_sql_register_field(p, "bytes_in", "bytes_in", NULL, | ||
| 120 | "bytes_in", LOGSQL_DATATYPE_INT, 0); | ||
| 121 | log_sql_register_field(p, "bytes_out", "bytes_out", NULL, | ||
| 122 | "bytes_out", LOGSQL_DATATYPE_INT, 0); | ||
| 123 | |||
| 124 | log_sql_register_finish(s); | ||
| 113 | return OK; | 125 | return OK; |
| 114 | } | 126 | } |
| 127 | |||
| 115 | static void register_hooks(apr_pool_t *p) { | 128 | static void register_hooks(apr_pool_t *p) { |
| 116 | static const char *pre[] = { "mod_log_sql.c", NULL }; | 129 | static const char *pre[] = { "mod_log_sql.c", NULL }; |
| 117 | 130 | ||
diff --git a/mod_log_sql_ssl.c b/mod_log_sql_ssl.c index d94a79f..47bba8b 100644 --- a/mod_log_sql_ssl.c +++ b/mod_log_sql_ssl.c | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | #endif | 9 | #endif |
| 10 | 10 | ||
| 11 | #ifdef HAVE_CONFIG_H | 11 | #ifdef HAVE_CONFIG_H |
| 12 | /* Undefine these to prevent conflicts between Apache ap_config_auto.h and | 12 | /* Undefine these to prevent conflicts between Apache ap_config_auto.h and |
| 13 | * my config.h. Only really needed for Apache < 2.0.48, but it can't hurt. | 13 | * my config.h. Only really needed for Apache < 2.0.48, but it can't hurt. |
| 14 | */ | 14 | */ |
| 15 | #undef PACKAGE_BUGREPORT | 15 | #undef PACKAGE_BUGREPORT |
| @@ -52,7 +52,7 @@ static const char *extract_ssl_keysize(request_rec *r, char *a) | |||
| 52 | static const char *extract_ssl_maxkeysize(request_rec *r, char *a) | 52 | static const char *extract_ssl_maxkeysize(request_rec *r, char *a) |
| 53 | { | 53 | { |
| 54 | char *result = NULL; | 54 | char *result = NULL; |
| 55 | if (TEST_SSL(r) != NULL) | 55 | if (TEST_SSL(r) != NULL) |
| 56 | { | 56 | { |
| 57 | result = header_ssl_lookup(r->pool, r->server, r->connection, r, "SSL_CIPHER_ALGKEYSIZE"); | 57 | result = header_ssl_lookup(r->pool, r->server, r->connection, r, "SSL_CIPHER_ALGKEYSIZE"); |
| 58 | log_error(APLOG_MARK,APLOG_DEBUG,0, r->server,"SSL_ALGKEYSIZE: %s", result); | 58 | log_error(APLOG_MARK,APLOG_DEBUG,0, r->server,"SSL_ALGKEYSIZE: %s", result); |
| @@ -84,9 +84,21 @@ static const char *extract_ssl_cipher(request_rec *r, char *a) | |||
| 84 | 84 | ||
| 85 | LOGSQL_REGISTER(ssl) | 85 | LOGSQL_REGISTER(ssl) |
| 86 | { | 86 | { |
| 87 | log_sql_register_item(s,p,'q', extract_ssl_keysize, "ssl_keysize", 0, 1); | 87 | log_sql_register_function(p, "ssl_keysize", extract_ssl_keysize, LOGSQL_FUNCTION_REQ_FINAL); |
| 88 | log_sql_register_item(s,p,'Q', extract_ssl_maxkeysize, "ssl_maxkeysize", 0, 1); | 88 | log_sql_register_function(p, "ssl_maxkeysize", extract_ssl_maxkeysize, LOGSQL_FUNCTION_REQ_FINAL); |
| 89 | log_sql_register_item(s,p,'z', extract_ssl_cipher, "ssl_cipher", 0, 1); | 89 | log_sql_register_function(p, "ssl_cipher", extract_ssl_cipher, LOGSQL_FUNCTION_REQ_FINAL); |
| 90 | |||
| 91 | log_sql_register_alias(s,p,'q', "ssl_keysize"); | ||
| 92 | log_sql_register_alias(s,p,'Q', "ssl_maxkeysize"); | ||
| 93 | log_sql_register_alias(s,p,'z', "ssl_cipher"); | ||
| 94 | |||
| 95 | log_sql_register_field(p, "ssl_keysize", "ssl_keysize", NULL, | ||
| 96 | "ssl_keysize", LOGSQL_DATATYPE_VARCHAR, 0); | ||
| 97 | log_sql_register_field(p, "ssl_maxkeysize", "ssl_maxkeysize", NULL, | ||
| 98 | "ssl_maxkeysize", LOGSQL_DATATYPE_VARCHAR, 0); | ||
| 99 | log_sql_register_field(p, "ssl_cipher", "ssl_cipher", NULL, | ||
| 100 | "ssl_cipher", LOGSQL_DATATYPE_VARCHAR, 0); | ||
| 101 | |||
| 90 | #if defined(WITH_APACHE20) | 102 | #if defined(WITH_APACHE20) |
| 91 | header_ssl_lookup = APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup); | 103 | header_ssl_lookup = APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup); |
| 92 | #endif | 104 | #endif |
