Fossil SCM
Receive updates from trunk.
Commit
5c6891b2ab10c4d06417ea76327010bd452b005b
Parent
088e961a2bcf223…
37 files changed
+1
-1
+2
+240
-331
+154
-103
+19
-2
+8
-8
+55
+1
-1
+1
-1
+16
-5
+1
-1
+3
+5
+3
-8
+1
-1
+5
-5
+2
-2
+1
-1
+7
-6
+1
+31
-31
+2
-1
+3
-3
+8
-4
+28
-15
+42
-43
+2
-2
+166
-154
+36
-3
+1
-1
+1
-1
+1
+1
+1
+29
-30
+8
+1
-1
~
Makefile.in
~
auto.def
~
autosetup/config.guess
~
autosetup/config.sub
~
src/allrepo.c
~
src/attach.c
~
src/blob.c
~
src/branch.c
~
src/browse.c
~
src/checkin.c
~
src/checkout.c
~
src/comformat.c
~
src/config.h
~
src/db.c
~
src/descendants.c
~
src/diff.c
~
src/finfo.c
~
src/info.c
~
src/main.c
~
src/makemake.tcl
~
src/manifest.c
~
src/mkindex.c
~
src/name.c
~
src/printf.c
~
src/shell.c
~
src/timeline.c
~
src/tkt.c
~
src/unicode.c
~
test/merge_renames.test
~
win/Makefile.PellesCGMake
~
win/Makefile.dmc
~
win/Makefile.mingw
~
win/Makefile.mingw.mistachkin
~
win/Makefile.msc
~
www/branching.wiki
~
www/changes.wiki
~
www/shunning.wiki
+1
-1
| --- Makefile.in | ||
| +++ Makefile.in | ||
| @@ -37,11 +37,11 @@ | ||
| 37 | 37 | # care about testing the end result, this can be blank. |
| 38 | 38 | # |
| 39 | 39 | TCLSH = tclsh |
| 40 | 40 | |
| 41 | 41 | LIB = @LDFLAGS@ @EXTRA_LDFLAGS@ @LIBS@ |
| 42 | -TCC += @EXTRA_CFLAGS@ @CPPFLAGS@ @CFLAGS@ -DHAVE_AUTOCONFIG_H | |
| 42 | +TCC += @EXTRA_CFLAGS@ @CPPFLAGS@ @CFLAGS@ -DHAVE_AUTOCONFIG_H -D_HAVE_SQLITE_CONFIG_H | |
| 43 | 43 | INSTALLDIR = $(DESTDIR)@prefix@/bin |
| 44 | 44 | USE_SYSTEM_SQLITE = @USE_SYSTEM_SQLITE@ |
| 45 | 45 | |
| 46 | 46 | include $(SRCDIR)/main.mk |
| 47 | 47 | |
| 48 | 48 |
| --- Makefile.in | |
| +++ Makefile.in | |
| @@ -37,11 +37,11 @@ | |
| 37 | # care about testing the end result, this can be blank. |
| 38 | # |
| 39 | TCLSH = tclsh |
| 40 | |
| 41 | LIB = @LDFLAGS@ @EXTRA_LDFLAGS@ @LIBS@ |
| 42 | TCC += @EXTRA_CFLAGS@ @CPPFLAGS@ @CFLAGS@ -DHAVE_AUTOCONFIG_H |
| 43 | INSTALLDIR = $(DESTDIR)@prefix@/bin |
| 44 | USE_SYSTEM_SQLITE = @USE_SYSTEM_SQLITE@ |
| 45 | |
| 46 | include $(SRCDIR)/main.mk |
| 47 | |
| 48 |
| --- Makefile.in | |
| +++ Makefile.in | |
| @@ -37,11 +37,11 @@ | |
| 37 | # care about testing the end result, this can be blank. |
| 38 | # |
| 39 | TCLSH = tclsh |
| 40 | |
| 41 | LIB = @LDFLAGS@ @EXTRA_LDFLAGS@ @LIBS@ |
| 42 | TCC += @EXTRA_CFLAGS@ @CPPFLAGS@ @CFLAGS@ -DHAVE_AUTOCONFIG_H -D_HAVE_SQLITE_CONFIG_H |
| 43 | INSTALLDIR = $(DESTDIR)@prefix@/bin |
| 44 | USE_SYSTEM_SQLITE = @USE_SYSTEM_SQLITE@ |
| 45 | |
| 46 | include $(SRCDIR)/main.mk |
| 47 | |
| 48 |
M
auto.def
+2
| --- auto.def | ||
| +++ auto.def | ||
| @@ -261,10 +261,12 @@ | ||
| 261 | 261 | if {[string match *mingw* [get-define host]]} { |
| 262 | 262 | define-append LIBS -lwsock32 |
| 263 | 263 | } |
| 264 | 264 | } |
| 265 | 265 | cc-check-function-in-lib iconv iconv |
| 266 | +cc-check-functions utime | |
| 267 | +cc-check-functions usleep | |
| 266 | 268 | |
| 267 | 269 | # Check for getloadavg(), and if it doesn't exist, define FOSSIL_OMIT_LOAD_AVERAGE |
| 268 | 270 | if {![cc-check-functions getloadavg]} { |
| 269 | 271 | define FOSSIL_OMIT_LOAD_AVERAGE 1 |
| 270 | 272 | msg-result "Load average support unavailable" |
| 271 | 273 |
| --- auto.def | |
| +++ auto.def | |
| @@ -261,10 +261,12 @@ | |
| 261 | if {[string match *mingw* [get-define host]]} { |
| 262 | define-append LIBS -lwsock32 |
| 263 | } |
| 264 | } |
| 265 | cc-check-function-in-lib iconv iconv |
| 266 | |
| 267 | # Check for getloadavg(), and if it doesn't exist, define FOSSIL_OMIT_LOAD_AVERAGE |
| 268 | if {![cc-check-functions getloadavg]} { |
| 269 | define FOSSIL_OMIT_LOAD_AVERAGE 1 |
| 270 | msg-result "Load average support unavailable" |
| 271 |
| --- auto.def | |
| +++ auto.def | |
| @@ -261,10 +261,12 @@ | |
| 261 | if {[string match *mingw* [get-define host]]} { |
| 262 | define-append LIBS -lwsock32 |
| 263 | } |
| 264 | } |
| 265 | cc-check-function-in-lib iconv iconv |
| 266 | cc-check-functions utime |
| 267 | cc-check-functions usleep |
| 268 | |
| 269 | # Check for getloadavg(), and if it doesn't exist, define FOSSIL_OMIT_LOAD_AVERAGE |
| 270 | if {![cc-check-functions getloadavg]} { |
| 271 | define FOSSIL_OMIT_LOAD_AVERAGE 1 |
| 272 | msg-result "Load average support unavailable" |
| 273 |
+240
-331
| --- autosetup/config.guess | ||
| +++ autosetup/config.guess | ||
| @@ -1,44 +1,38 @@ | ||
| 1 | 1 | #! /bin/sh |
| 2 | 2 | # Attempt to guess a canonical system name. |
| 3 | -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, | |
| 4 | -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 | |
| 5 | -# Free Software Foundation, Inc. | |
| 3 | +# Copyright 1992-2014 Free Software Foundation, Inc. | |
| 6 | 4 | |
| 7 | -timestamp='2010-09-24' | |
| 5 | +timestamp='2014-03-23' | |
| 8 | 6 | |
| 9 | 7 | # This file is free software; you can redistribute it and/or modify it |
| 10 | 8 | # under the terms of the GNU General Public License as published by |
| 11 | -# the Free Software Foundation; either version 2 of the License, or | |
| 9 | +# the Free Software Foundation; either version 3 of the License, or | |
| 12 | 10 | # (at your option) any later version. |
| 13 | 11 | # |
| 14 | 12 | # This program is distributed in the hope that it will be useful, but |
| 15 | 13 | # WITHOUT ANY WARRANTY; without even the implied warranty of |
| 16 | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 17 | 15 | # General Public License for more details. |
| 18 | 16 | # |
| 19 | 17 | # You should have received a copy of the GNU General Public License |
| 20 | -# along with this program; if not, write to the Free Software | |
| 21 | -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA | |
| 22 | -# 02110-1301, USA. | |
| 18 | +# along with this program; if not, see <http://www.gnu.org/licenses/>. | |
| 23 | 19 | # |
| 24 | 20 | # As a special exception to the GNU General Public License, if you |
| 25 | 21 | # distribute this file as part of a program that contains a |
| 26 | 22 | # configuration script generated by Autoconf, you may include it under |
| 27 | -# the same distribution terms that you use for the rest of that program. | |
| 28 | - | |
| 29 | - | |
| 30 | -# Originally written by Per Bothner. Please send patches (context | |
| 31 | -# diff format) to <[email protected]> and include a ChangeLog | |
| 32 | -# entry. | |
| 33 | -# | |
| 34 | -# This script attempts to guess a canonical system name similar to | |
| 35 | -# config.sub. If it succeeds, it prints the system name on stdout, and | |
| 36 | -# exits with 0. Otherwise, it exits with 1. | |
| 23 | +# the same distribution terms that you use for the rest of that | |
| 24 | +# program. This Exception is an additional permission under section 7 | |
| 25 | +# of the GNU General Public License, version 3 ("GPLv3"). | |
| 26 | +# | |
| 27 | +# Originally written by Per Bothner. | |
| 37 | 28 | # |
| 38 | 29 | # You can get the latest version of this script from: |
| 39 | 30 | # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD |
| 31 | +# | |
| 32 | +# Please send patches with a ChangeLog entry to [email protected]. | |
| 33 | + | |
| 40 | 34 | |
| 41 | 35 | me=`echo "$0" | sed -e 's,.*/,,'` |
| 42 | 36 | |
| 43 | 37 | usage="\ |
| 44 | 38 | Usage: $0 [OPTION] |
| @@ -54,13 +48,11 @@ | ||
| 54 | 48 | |
| 55 | 49 | version="\ |
| 56 | 50 | GNU config.guess ($timestamp) |
| 57 | 51 | |
| 58 | 52 | Originally written by Per Bothner. |
| 59 | -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, | |
| 60 | -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free | |
| 61 | -Software Foundation, Inc. | |
| 53 | +Copyright 1992-2014 Free Software Foundation, Inc. | |
| 62 | 54 | |
| 63 | 55 | This is free software; see the source for copying conditions. There is NO |
| 64 | 56 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." |
| 65 | 57 | |
| 66 | 58 | help=" |
| @@ -90,11 +82,11 @@ | ||
| 90 | 82 | if test $# != 0; then |
| 91 | 83 | echo "$me: too many arguments$help" >&2 |
| 92 | 84 | exit 1 |
| 93 | 85 | fi |
| 94 | 86 | |
| 95 | -trap 'exit 1' HUP INT TERM | |
| 87 | +trap 'exit 1' 1 2 15 | |
| 96 | 88 | |
| 97 | 89 | # CC_FOR_BUILD -- compiler used by this script. Note that the use of a |
| 98 | 90 | # compiler to aid in system detection is discouraged as it requires |
| 99 | 91 | # temporary files to be created and, as you can see below, it is a |
| 100 | 92 | # headache to deal with in a portable fashion. |
| @@ -104,11 +96,11 @@ | ||
| 104 | 96 | |
| 105 | 97 | # Portable tmp directory creation inspired by the Autoconf team. |
| 106 | 98 | |
| 107 | 99 | set_cc_for_build=' |
| 108 | 100 | trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; |
| 109 | -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ; | |
| 101 | +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; | |
| 110 | 102 | : ${TMPDIR=/tmp} ; |
| 111 | 103 | { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || |
| 112 | 104 | { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || |
| 113 | 105 | { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || |
| 114 | 106 | { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; |
| @@ -137,17 +129,38 @@ | ||
| 137 | 129 | |
| 138 | 130 | UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown |
| 139 | 131 | UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown |
| 140 | 132 | UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown |
| 141 | 133 | UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown |
| 134 | + | |
| 135 | +case "${UNAME_SYSTEM}" in | |
| 136 | +Linux|GNU|GNU/*) | |
| 137 | + # If the system lacks a compiler, then just pick glibc. | |
| 138 | + # We could probably try harder. | |
| 139 | + LIBC=gnu | |
| 140 | + | |
| 141 | + eval $set_cc_for_build | |
| 142 | + cat <<-EOF > $dummy.c | |
| 143 | + #include <features.h> | |
| 144 | + #if defined(__UCLIBC__) | |
| 145 | + LIBC=uclibc | |
| 146 | + #elif defined(__dietlibc__) | |
| 147 | + LIBC=dietlibc | |
| 148 | + #else | |
| 149 | + LIBC=gnu | |
| 150 | + #endif | |
| 151 | + EOF | |
| 152 | + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` | |
| 153 | + ;; | |
| 154 | +esac | |
| 142 | 155 | |
| 143 | 156 | # Note: order is significant - the case branches are not exclusive. |
| 144 | 157 | |
| 145 | 158 | case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in |
| 146 | 159 | *:NetBSD:*:*) |
| 147 | 160 | # NetBSD (nbsd) targets should (where applicable) match one or |
| 148 | - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, | |
| 161 | + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, | |
| 149 | 162 | # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently |
| 150 | 163 | # switched to ELF, *-*-netbsd* would select the old |
| 151 | 164 | # object file format. This provides both forward |
| 152 | 165 | # compatibility and a consistent mechanism for selecting the |
| 153 | 166 | # object file format. |
| @@ -179,11 +192,11 @@ | ||
| 179 | 192 | else |
| 180 | 193 | os=netbsdelf |
| 181 | 194 | fi |
| 182 | 195 | ;; |
| 183 | 196 | *) |
| 184 | - os=netbsd | |
| 197 | + os=netbsd | |
| 185 | 198 | ;; |
| 186 | 199 | esac |
| 187 | 200 | # The OS release |
| 188 | 201 | # Debian GNU/NetBSD machines have a different userland, and |
| 189 | 202 | # thus, need a distinct triplet. However, they do not need |
| @@ -200,10 +213,14 @@ | ||
| 200 | 213 | # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: |
| 201 | 214 | # contains redundant information, the shorter form: |
| 202 | 215 | # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. |
| 203 | 216 | echo "${machine}-${os}${release}" |
| 204 | 217 | exit ;; |
| 218 | + *:Bitrig:*:*) | |
| 219 | + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` | |
| 220 | + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} | |
| 221 | + exit ;; | |
| 205 | 222 | *:OpenBSD:*:*) |
| 206 | 223 | UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` |
| 207 | 224 | echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} |
| 208 | 225 | exit ;; |
| 209 | 226 | *:ekkoBSD:*:*) |
| @@ -222,11 +239,11 @@ | ||
| 222 | 239 | case $UNAME_RELEASE in |
| 223 | 240 | *4.0) |
| 224 | 241 | UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` |
| 225 | 242 | ;; |
| 226 | 243 | *5.*) |
| 227 | - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` | |
| 244 | + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` | |
| 228 | 245 | ;; |
| 229 | 246 | esac |
| 230 | 247 | # According to Compaq, /usr/sbin/psrinfo has been available on |
| 231 | 248 | # OSF/1 and Tru64 systems produced since 1995. I hope that |
| 232 | 249 | # covers most systems running today. This code pipes the CPU |
| @@ -268,11 +285,14 @@ | ||
| 268 | 285 | # A Vn.n version is a released version. |
| 269 | 286 | # A Tn.n version is a released field test version. |
| 270 | 287 | # A Xn.n version is an unreleased experimental baselevel. |
| 271 | 288 | # 1.2 uses "1.2" for uname -r. |
| 272 | 289 | echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` |
| 273 | - exit ;; | |
| 290 | + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. | |
| 291 | + exitcode=$? | |
| 292 | + trap '' 0 | |
| 293 | + exit $exitcode ;; | |
| 274 | 294 | Alpha\ *:Windows_NT*:*) |
| 275 | 295 | # How do we know it's Interix rather than the generic POSIX subsystem? |
| 276 | 296 | # Should we change UNAME_MACHINE based on the output of uname instead |
| 277 | 297 | # of the specific Alpha model? |
| 278 | 298 | echo alpha-pc-interix |
| @@ -294,16 +314,16 @@ | ||
| 294 | 314 | exit ;; |
| 295 | 315 | *:z/VM:*:*) |
| 296 | 316 | echo s390-ibm-zvmoe |
| 297 | 317 | exit ;; |
| 298 | 318 | *:OS400:*:*) |
| 299 | - echo powerpc-ibm-os400 | |
| 319 | + echo powerpc-ibm-os400 | |
| 300 | 320 | exit ;; |
| 301 | 321 | arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) |
| 302 | 322 | echo arm-acorn-riscix${UNAME_RELEASE} |
| 303 | 323 | exit ;; |
| 304 | - arm:riscos:*:*|arm:RISCOS:*:*) | |
| 324 | + arm*:riscos:*:*|arm*:RISCOS:*:*) | |
| 305 | 325 | echo arm-unknown-riscos |
| 306 | 326 | exit ;; |
| 307 | 327 | SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) |
| 308 | 328 | echo hppa1.1-hitachi-hiuxmpp |
| 309 | 329 | exit ;; |
| @@ -393,27 +413,27 @@ | ||
| 393 | 413 | # to the lowercase version "mint" (or "freemint"). Finally |
| 394 | 414 | # the system name "TOS" denotes a system which is actually not |
| 395 | 415 | # MiNT. But MiNT is downward compatible to TOS, so this should |
| 396 | 416 | # be no problem. |
| 397 | 417 | atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) |
| 398 | - echo m68k-atari-mint${UNAME_RELEASE} | |
| 418 | + echo m68k-atari-mint${UNAME_RELEASE} | |
| 399 | 419 | exit ;; |
| 400 | 420 | atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) |
| 401 | 421 | echo m68k-atari-mint${UNAME_RELEASE} |
| 402 | - exit ;; | |
| 422 | + exit ;; | |
| 403 | 423 | *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) |
| 404 | - echo m68k-atari-mint${UNAME_RELEASE} | |
| 424 | + echo m68k-atari-mint${UNAME_RELEASE} | |
| 405 | 425 | exit ;; |
| 406 | 426 | milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) |
| 407 | - echo m68k-milan-mint${UNAME_RELEASE} | |
| 408 | - exit ;; | |
| 427 | + echo m68k-milan-mint${UNAME_RELEASE} | |
| 428 | + exit ;; | |
| 409 | 429 | hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) |
| 410 | - echo m68k-hades-mint${UNAME_RELEASE} | |
| 411 | - exit ;; | |
| 430 | + echo m68k-hades-mint${UNAME_RELEASE} | |
| 431 | + exit ;; | |
| 412 | 432 | *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) |
| 413 | - echo m68k-unknown-mint${UNAME_RELEASE} | |
| 414 | - exit ;; | |
| 433 | + echo m68k-unknown-mint${UNAME_RELEASE} | |
| 434 | + exit ;; | |
| 415 | 435 | m68k:machten:*:*) |
| 416 | 436 | echo m68k-apple-machten${UNAME_RELEASE} |
| 417 | 437 | exit ;; |
| 418 | 438 | powerpc:machten:*:*) |
| 419 | 439 | echo powerpc-apple-machten${UNAME_RELEASE} |
| @@ -479,12 +499,12 @@ | ||
| 479 | 499 | exit ;; |
| 480 | 500 | m88k:*:3*:R3*) |
| 481 | 501 | echo m88k-motorola-sysv3 |
| 482 | 502 | exit ;; |
| 483 | 503 | AViiON:dgux:*:*) |
| 484 | - # DG/UX returns AViiON for all architectures | |
| 485 | - UNAME_PROCESSOR=`/usr/bin/uname -p` | |
| 504 | + # DG/UX returns AViiON for all architectures | |
| 505 | + UNAME_PROCESSOR=`/usr/bin/uname -p` | |
| 486 | 506 | if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] |
| 487 | 507 | then |
| 488 | 508 | if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ |
| 489 | 509 | [ ${TARGET_BINARY_INTERFACE}x = x ] |
| 490 | 510 | then |
| @@ -493,11 +513,11 @@ | ||
| 493 | 513 | echo m88k-dg-dguxbcs${UNAME_RELEASE} |
| 494 | 514 | fi |
| 495 | 515 | else |
| 496 | 516 | echo i586-dg-dgux${UNAME_RELEASE} |
| 497 | 517 | fi |
| 498 | - exit ;; | |
| 518 | + exit ;; | |
| 499 | 519 | M88*:DolphinOS:*:*) # DolphinOS (SVR3) |
| 500 | 520 | echo m88k-dolphin-sysv3 |
| 501 | 521 | exit ;; |
| 502 | 522 | M88*:*:R3*:*) |
| 503 | 523 | # Delta 88k system running SVR3 |
| @@ -593,56 +613,56 @@ | ||
| 593 | 613 | 9000/31? ) HP_ARCH=m68000 ;; |
| 594 | 614 | 9000/[34]?? ) HP_ARCH=m68k ;; |
| 595 | 615 | 9000/[678][0-9][0-9]) |
| 596 | 616 | if [ -x /usr/bin/getconf ]; then |
| 597 | 617 | sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` |
| 598 | - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` | |
| 599 | - case "${sc_cpu_version}" in | |
| 600 | - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 | |
| 601 | - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 | |
| 602 | - 532) # CPU_PA_RISC2_0 | |
| 603 | - case "${sc_kernel_bits}" in | |
| 604 | - 32) HP_ARCH="hppa2.0n" ;; | |
| 605 | - 64) HP_ARCH="hppa2.0w" ;; | |
| 618 | + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` | |
| 619 | + case "${sc_cpu_version}" in | |
| 620 | + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 | |
| 621 | + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 | |
| 622 | + 532) # CPU_PA_RISC2_0 | |
| 623 | + case "${sc_kernel_bits}" in | |
| 624 | + 32) HP_ARCH="hppa2.0n" ;; | |
| 625 | + 64) HP_ARCH="hppa2.0w" ;; | |
| 606 | 626 | '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 |
| 607 | - esac ;; | |
| 608 | - esac | |
| 627 | + esac ;; | |
| 628 | + esac | |
| 609 | 629 | fi |
| 610 | 630 | if [ "${HP_ARCH}" = "" ]; then |
| 611 | 631 | eval $set_cc_for_build |
| 612 | - sed 's/^ //' << EOF >$dummy.c | |
| 613 | - | |
| 614 | - #define _HPUX_SOURCE | |
| 615 | - #include <stdlib.h> | |
| 616 | - #include <unistd.h> | |
| 617 | - | |
| 618 | - int main () | |
| 619 | - { | |
| 620 | - #if defined(_SC_KERNEL_BITS) | |
| 621 | - long bits = sysconf(_SC_KERNEL_BITS); | |
| 622 | - #endif | |
| 623 | - long cpu = sysconf (_SC_CPU_VERSION); | |
| 624 | - | |
| 625 | - switch (cpu) | |
| 626 | - { | |
| 627 | - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; | |
| 628 | - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; | |
| 629 | - case CPU_PA_RISC2_0: | |
| 630 | - #if defined(_SC_KERNEL_BITS) | |
| 631 | - switch (bits) | |
| 632 | - { | |
| 633 | - case 64: puts ("hppa2.0w"); break; | |
| 634 | - case 32: puts ("hppa2.0n"); break; | |
| 635 | - default: puts ("hppa2.0"); break; | |
| 636 | - } break; | |
| 637 | - #else /* !defined(_SC_KERNEL_BITS) */ | |
| 638 | - puts ("hppa2.0"); break; | |
| 639 | - #endif | |
| 640 | - default: puts ("hppa1.0"); break; | |
| 641 | - } | |
| 642 | - exit (0); | |
| 643 | - } | |
| 632 | + sed 's/^ //' << EOF >$dummy.c | |
| 633 | + | |
| 634 | + #define _HPUX_SOURCE | |
| 635 | + #include <stdlib.h> | |
| 636 | + #include <unistd.h> | |
| 637 | + | |
| 638 | + int main () | |
| 639 | + { | |
| 640 | + #if defined(_SC_KERNEL_BITS) | |
| 641 | + long bits = sysconf(_SC_KERNEL_BITS); | |
| 642 | + #endif | |
| 643 | + long cpu = sysconf (_SC_CPU_VERSION); | |
| 644 | + | |
| 645 | + switch (cpu) | |
| 646 | + { | |
| 647 | + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; | |
| 648 | + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; | |
| 649 | + case CPU_PA_RISC2_0: | |
| 650 | + #if defined(_SC_KERNEL_BITS) | |
| 651 | + switch (bits) | |
| 652 | + { | |
| 653 | + case 64: puts ("hppa2.0w"); break; | |
| 654 | + case 32: puts ("hppa2.0n"); break; | |
| 655 | + default: puts ("hppa2.0"); break; | |
| 656 | + } break; | |
| 657 | + #else /* !defined(_SC_KERNEL_BITS) */ | |
| 658 | + puts ("hppa2.0"); break; | |
| 659 | + #endif | |
| 660 | + default: puts ("hppa1.0"); break; | |
| 661 | + } | |
| 662 | + exit (0); | |
| 663 | + } | |
| 644 | 664 | EOF |
| 645 | 665 | (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` |
| 646 | 666 | test -z "$HP_ARCH" && HP_ARCH=hppa |
| 647 | 667 | fi ;; |
| 648 | 668 | esac |
| @@ -729,26 +749,26 @@ | ||
| 729 | 749 | parisc*:Lites*:*:*) |
| 730 | 750 | echo hppa1.1-hp-lites |
| 731 | 751 | exit ;; |
| 732 | 752 | C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) |
| 733 | 753 | echo c1-convex-bsd |
| 734 | - exit ;; | |
| 754 | + exit ;; | |
| 735 | 755 | C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) |
| 736 | 756 | if getsysinfo -f scalar_acc |
| 737 | 757 | then echo c32-convex-bsd |
| 738 | 758 | else echo c2-convex-bsd |
| 739 | 759 | fi |
| 740 | - exit ;; | |
| 760 | + exit ;; | |
| 741 | 761 | C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) |
| 742 | 762 | echo c34-convex-bsd |
| 743 | - exit ;; | |
| 763 | + exit ;; | |
| 744 | 764 | C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) |
| 745 | 765 | echo c38-convex-bsd |
| 746 | - exit ;; | |
| 766 | + exit ;; | |
| 747 | 767 | C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) |
| 748 | 768 | echo c4-convex-bsd |
| 749 | - exit ;; | |
| 769 | + exit ;; | |
| 750 | 770 | CRAY*Y-MP:*:*:*) |
| 751 | 771 | echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' |
| 752 | 772 | exit ;; |
| 753 | 773 | CRAY*[A-Z]90:*:*:*) |
| 754 | 774 | echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ |
| @@ -768,18 +788,18 @@ | ||
| 768 | 788 | *:UNICOS/mp:*:*) |
| 769 | 789 | echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' |
| 770 | 790 | exit ;; |
| 771 | 791 | F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) |
| 772 | 792 | FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` |
| 773 | - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` | |
| 774 | - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` | |
| 775 | - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | |
| 776 | - exit ;; | |
| 793 | + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` | |
| 794 | + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` | |
| 795 | + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | |
| 796 | + exit ;; | |
| 777 | 797 | 5000:UNIX_System_V:4.*:*) |
| 778 | - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` | |
| 779 | - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` | |
| 780 | - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | |
| 798 | + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` | |
| 799 | + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` | |
| 800 | + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | |
| 781 | 801 | exit ;; |
| 782 | 802 | i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) |
| 783 | 803 | echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} |
| 784 | 804 | exit ;; |
| 785 | 805 | sparc*:BSD/OS:*:*) |
| @@ -787,37 +807,39 @@ | ||
| 787 | 807 | exit ;; |
| 788 | 808 | *:BSD/OS:*:*) |
| 789 | 809 | echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} |
| 790 | 810 | exit ;; |
| 791 | 811 | *:FreeBSD:*:*) |
| 792 | - case ${UNAME_MACHINE} in | |
| 793 | - pc98) | |
| 794 | - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; | |
| 812 | + UNAME_PROCESSOR=`/usr/bin/uname -p` | |
| 813 | + case ${UNAME_PROCESSOR} in | |
| 795 | 814 | amd64) |
| 796 | 815 | echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; |
| 797 | 816 | *) |
| 798 | - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; | |
| 817 | + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; | |
| 799 | 818 | esac |
| 800 | 819 | exit ;; |
| 801 | 820 | i*:CYGWIN*:*) |
| 802 | 821 | echo ${UNAME_MACHINE}-pc-cygwin |
| 803 | 822 | exit ;; |
| 823 | + *:MINGW64*:*) | |
| 824 | + echo ${UNAME_MACHINE}-pc-mingw64 | |
| 825 | + exit ;; | |
| 804 | 826 | *:MINGW*:*) |
| 805 | 827 | echo ${UNAME_MACHINE}-pc-mingw32 |
| 806 | 828 | exit ;; |
| 807 | - i*:MSYS*:*) | |
| 808 | - echo ${UNAME_MACHINE}-pc-msys | |
| 809 | - exit ;; | |
| 829 | + *:MSYS*:*) | |
| 830 | + echo ${UNAME_MACHINE}-pc-msys | |
| 831 | + exit ;; | |
| 810 | 832 | i*:windows32*:*) |
| 811 | - # uname -m includes "-pc" on this system. | |
| 812 | - echo ${UNAME_MACHINE}-mingw32 | |
| 833 | + # uname -m includes "-pc" on this system. | |
| 834 | + echo ${UNAME_MACHINE}-mingw32 | |
| 813 | 835 | exit ;; |
| 814 | 836 | i*:PW*:*) |
| 815 | 837 | echo ${UNAME_MACHINE}-pc-pw32 |
| 816 | 838 | exit ;; |
| 817 | 839 | *:Interix*:*) |
| 818 | - case ${UNAME_MACHINE} in | |
| 840 | + case ${UNAME_MACHINE} in | |
| 819 | 841 | x86) |
| 820 | 842 | echo i586-pc-interix${UNAME_RELEASE} |
| 821 | 843 | exit ;; |
| 822 | 844 | authenticamd | genuineintel | EM64T) |
| 823 | 845 | echo x86_64-unknown-interix${UNAME_RELEASE} |
| @@ -850,74 +872,85 @@ | ||
| 850 | 872 | prep*:SunOS:5.*:*) |
| 851 | 873 | echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` |
| 852 | 874 | exit ;; |
| 853 | 875 | *:GNU:*:*) |
| 854 | 876 | # the GNU system |
| 855 | - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` | |
| 877 | + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` | |
| 856 | 878 | exit ;; |
| 857 | 879 | *:GNU/*:*:*) |
| 858 | 880 | # other systems with GNU libc and userland |
| 859 | - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu | |
| 881 | + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} | |
| 860 | 882 | exit ;; |
| 861 | 883 | i*86:Minix:*:*) |
| 862 | 884 | echo ${UNAME_MACHINE}-pc-minix |
| 863 | 885 | exit ;; |
| 886 | + aarch64:Linux:*:*) | |
| 887 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 888 | + exit ;; | |
| 889 | + aarch64_be:Linux:*:*) | |
| 890 | + UNAME_MACHINE=aarch64_be | |
| 891 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 892 | + exit ;; | |
| 864 | 893 | alpha:Linux:*:*) |
| 865 | 894 | case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in |
| 866 | 895 | EV5) UNAME_MACHINE=alphaev5 ;; |
| 867 | 896 | EV56) UNAME_MACHINE=alphaev56 ;; |
| 868 | 897 | PCA56) UNAME_MACHINE=alphapca56 ;; |
| 869 | 898 | PCA57) UNAME_MACHINE=alphapca56 ;; |
| 870 | 899 | EV6) UNAME_MACHINE=alphaev6 ;; |
| 871 | 900 | EV67) UNAME_MACHINE=alphaev67 ;; |
| 872 | 901 | EV68*) UNAME_MACHINE=alphaev68 ;; |
| 873 | - esac | |
| 902 | + esac | |
| 874 | 903 | objdump --private-headers /bin/sh | grep -q ld.so.1 |
| 875 | - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi | |
| 876 | - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} | |
| 904 | + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi | |
| 905 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 906 | + exit ;; | |
| 907 | + arc:Linux:*:* | arceb:Linux:*:*) | |
| 908 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 877 | 909 | exit ;; |
| 878 | 910 | arm*:Linux:*:*) |
| 879 | 911 | eval $set_cc_for_build |
| 880 | 912 | if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ |
| 881 | 913 | | grep -q __ARM_EABI__ |
| 882 | 914 | then |
| 883 | - echo ${UNAME_MACHINE}-unknown-linux-gnu | |
| 915 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 884 | 916 | else |
| 885 | - echo ${UNAME_MACHINE}-unknown-linux-gnueabi | |
| 917 | + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | |
| 918 | + | grep -q __ARM_PCS_VFP | |
| 919 | + then | |
| 920 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi | |
| 921 | + else | |
| 922 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf | |
| 923 | + fi | |
| 886 | 924 | fi |
| 887 | 925 | exit ;; |
| 888 | 926 | avr32*:Linux:*:*) |
| 889 | - echo ${UNAME_MACHINE}-unknown-linux-gnu | |
| 927 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 890 | 928 | exit ;; |
| 891 | 929 | cris:Linux:*:*) |
| 892 | - echo cris-axis-linux-gnu | |
| 930 | + echo ${UNAME_MACHINE}-axis-linux-${LIBC} | |
| 893 | 931 | exit ;; |
| 894 | 932 | crisv32:Linux:*:*) |
| 895 | - echo crisv32-axis-linux-gnu | |
| 933 | + echo ${UNAME_MACHINE}-axis-linux-${LIBC} | |
| 896 | 934 | exit ;; |
| 897 | 935 | frv:Linux:*:*) |
| 898 | - echo frv-unknown-linux-gnu | |
| 936 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 937 | + exit ;; | |
| 938 | + hexagon:Linux:*:*) | |
| 939 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 899 | 940 | exit ;; |
| 900 | 941 | i*86:Linux:*:*) |
| 901 | - LIBC=gnu | |
| 902 | - eval $set_cc_for_build | |
| 903 | - sed 's/^ //' << EOF >$dummy.c | |
| 904 | - #ifdef __dietlibc__ | |
| 905 | - LIBC=dietlibc | |
| 906 | - #endif | |
| 907 | -EOF | |
| 908 | - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` | |
| 909 | - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" | |
| 942 | + echo ${UNAME_MACHINE}-pc-linux-${LIBC} | |
| 910 | 943 | exit ;; |
| 911 | 944 | ia64:Linux:*:*) |
| 912 | - echo ${UNAME_MACHINE}-unknown-linux-gnu | |
| 945 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 913 | 946 | exit ;; |
| 914 | 947 | m32r*:Linux:*:*) |
| 915 | - echo ${UNAME_MACHINE}-unknown-linux-gnu | |
| 948 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 916 | 949 | exit ;; |
| 917 | 950 | m68*:Linux:*:*) |
| 918 | - echo ${UNAME_MACHINE}-unknown-linux-gnu | |
| 951 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 919 | 952 | exit ;; |
| 920 | 953 | mips:Linux:*:* | mips64:Linux:*:*) |
| 921 | 954 | eval $set_cc_for_build |
| 922 | 955 | sed 's/^ //' << EOF >$dummy.c |
| 923 | 956 | #undef CPU |
| @@ -932,71 +965,80 @@ | ||
| 932 | 965 | CPU= |
| 933 | 966 | #endif |
| 934 | 967 | #endif |
| 935 | 968 | EOF |
| 936 | 969 | eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` |
| 937 | - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } | |
| 970 | + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } | |
| 938 | 971 | ;; |
| 939 | - or32:Linux:*:*) | |
| 940 | - echo or32-unknown-linux-gnu | |
| 972 | + openrisc*:Linux:*:*) | |
| 973 | + echo or1k-unknown-linux-${LIBC} | |
| 974 | + exit ;; | |
| 975 | + or32:Linux:*:* | or1k*:Linux:*:*) | |
| 976 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 941 | 977 | exit ;; |
| 942 | 978 | padre:Linux:*:*) |
| 943 | - echo sparc-unknown-linux-gnu | |
| 979 | + echo sparc-unknown-linux-${LIBC} | |
| 944 | 980 | exit ;; |
| 945 | 981 | parisc64:Linux:*:* | hppa64:Linux:*:*) |
| 946 | - echo hppa64-unknown-linux-gnu | |
| 982 | + echo hppa64-unknown-linux-${LIBC} | |
| 947 | 983 | exit ;; |
| 948 | 984 | parisc:Linux:*:* | hppa:Linux:*:*) |
| 949 | 985 | # Look for CPU level |
| 950 | 986 | case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in |
| 951 | - PA7*) echo hppa1.1-unknown-linux-gnu ;; | |
| 952 | - PA8*) echo hppa2.0-unknown-linux-gnu ;; | |
| 953 | - *) echo hppa-unknown-linux-gnu ;; | |
| 987 | + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; | |
| 988 | + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; | |
| 989 | + *) echo hppa-unknown-linux-${LIBC} ;; | |
| 954 | 990 | esac |
| 955 | 991 | exit ;; |
| 956 | 992 | ppc64:Linux:*:*) |
| 957 | - echo powerpc64-unknown-linux-gnu | |
| 993 | + echo powerpc64-unknown-linux-${LIBC} | |
| 958 | 994 | exit ;; |
| 959 | 995 | ppc:Linux:*:*) |
| 960 | - echo powerpc-unknown-linux-gnu | |
| 996 | + echo powerpc-unknown-linux-${LIBC} | |
| 997 | + exit ;; | |
| 998 | + ppc64le:Linux:*:*) | |
| 999 | + echo powerpc64le-unknown-linux-${LIBC} | |
| 1000 | + exit ;; | |
| 1001 | + ppcle:Linux:*:*) | |
| 1002 | + echo powerpcle-unknown-linux-${LIBC} | |
| 961 | 1003 | exit ;; |
| 962 | 1004 | s390:Linux:*:* | s390x:Linux:*:*) |
| 963 | - echo ${UNAME_MACHINE}-ibm-linux | |
| 1005 | + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} | |
| 964 | 1006 | exit ;; |
| 965 | 1007 | sh64*:Linux:*:*) |
| 966 | - echo ${UNAME_MACHINE}-unknown-linux-gnu | |
| 1008 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 967 | 1009 | exit ;; |
| 968 | 1010 | sh*:Linux:*:*) |
| 969 | - echo ${UNAME_MACHINE}-unknown-linux-gnu | |
| 1011 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 970 | 1012 | exit ;; |
| 971 | 1013 | sparc:Linux:*:* | sparc64:Linux:*:*) |
| 972 | - echo ${UNAME_MACHINE}-unknown-linux-gnu | |
| 1014 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 973 | 1015 | exit ;; |
| 974 | 1016 | tile*:Linux:*:*) |
| 975 | - echo ${UNAME_MACHINE}-tilera-linux-gnu | |
| 1017 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 976 | 1018 | exit ;; |
| 977 | 1019 | vax:Linux:*:*) |
| 978 | - echo ${UNAME_MACHINE}-dec-linux-gnu | |
| 1020 | + echo ${UNAME_MACHINE}-dec-linux-${LIBC} | |
| 979 | 1021 | exit ;; |
| 980 | 1022 | x86_64:Linux:*:*) |
| 981 | - echo x86_64-unknown-linux-gnu | |
| 1023 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 982 | 1024 | exit ;; |
| 983 | 1025 | xtensa*:Linux:*:*) |
| 984 | - echo ${UNAME_MACHINE}-unknown-linux-gnu | |
| 1026 | + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} | |
| 985 | 1027 | exit ;; |
| 986 | 1028 | i*86:DYNIX/ptx:4*:*) |
| 987 | 1029 | # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. |
| 988 | 1030 | # earlier versions are messed up and put the nodename in both |
| 989 | 1031 | # sysname and nodename. |
| 990 | 1032 | echo i386-sequent-sysv4 |
| 991 | 1033 | exit ;; |
| 992 | 1034 | i*86:UNIX_SV:4.2MP:2.*) |
| 993 | - # Unixware is an offshoot of SVR4, but it has its own version | |
| 994 | - # number series starting with 2... | |
| 995 | - # I am not positive that other SVR4 systems won't match this, | |
| 1035 | + # Unixware is an offshoot of SVR4, but it has its own version | |
| 1036 | + # number series starting with 2... | |
| 1037 | + # I am not positive that other SVR4 systems won't match this, | |
| 996 | 1038 | # I just have to hope. -- rms. |
| 997 | - # Use sysv4.2uw... so that sysv4* matches it. | |
| 1039 | + # Use sysv4.2uw... so that sysv4* matches it. | |
| 998 | 1040 | echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} |
| 999 | 1041 | exit ;; |
| 1000 | 1042 | i*86:OS/2:*:*) |
| 1001 | 1043 | # If we were able to find `uname', then EMX Unix compatibility |
| 1002 | 1044 | # is probably installed. |
| @@ -1024,11 +1066,11 @@ | ||
| 1024 | 1066 | else |
| 1025 | 1067 | echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} |
| 1026 | 1068 | fi |
| 1027 | 1069 | exit ;; |
| 1028 | 1070 | i*86:*:5:[678]*) |
| 1029 | - # UnixWare 7.x, OpenUNIX and OpenServer 6. | |
| 1071 | + # UnixWare 7.x, OpenUNIX and OpenServer 6. | |
| 1030 | 1072 | case `/bin/uname -X | grep "^Machine"` in |
| 1031 | 1073 | *486*) UNAME_MACHINE=i486 ;; |
| 1032 | 1074 | *Pentium) UNAME_MACHINE=i586 ;; |
| 1033 | 1075 | *Pent*|*Celeron) UNAME_MACHINE=i686 ;; |
| 1034 | 1076 | esac |
| @@ -1052,17 +1094,17 @@ | ||
| 1052 | 1094 | echo ${UNAME_MACHINE}-pc-sysv32 |
| 1053 | 1095 | fi |
| 1054 | 1096 | exit ;; |
| 1055 | 1097 | pc:*:*:*) |
| 1056 | 1098 | # Left here for compatibility: |
| 1057 | - # uname -m prints for DJGPP always 'pc', but it prints nothing about | |
| 1058 | - # the processor, so we play safe by assuming i586. | |
| 1099 | + # uname -m prints for DJGPP always 'pc', but it prints nothing about | |
| 1100 | + # the processor, so we play safe by assuming i586. | |
| 1059 | 1101 | # Note: whatever this is, it MUST be the same as what config.sub |
| 1060 | 1102 | # prints for the "djgpp" host, or else GDB configury will decide that |
| 1061 | 1103 | # this is a cross-build. |
| 1062 | 1104 | echo i586-pc-msdosdjgpp |
| 1063 | - exit ;; | |
| 1105 | + exit ;; | |
| 1064 | 1106 | Intel:Mach:3*:*) |
| 1065 | 1107 | echo i386-pc-mach3 |
| 1066 | 1108 | exit ;; |
| 1067 | 1109 | paragon:*:*:*) |
| 1068 | 1110 | echo i860-intel-osf1 |
| @@ -1093,12 +1135,12 @@ | ||
| 1093 | 1135 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ |
| 1094 | 1136 | && { echo i486-ncr-sysv4.3${OS_REL}; exit; } |
| 1095 | 1137 | /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ |
| 1096 | 1138 | && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; |
| 1097 | 1139 | 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) |
| 1098 | - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ | |
| 1099 | - && { echo i486-ncr-sysv4; exit; } ;; | |
| 1140 | + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ | |
| 1141 | + && { echo i486-ncr-sysv4; exit; } ;; | |
| 1100 | 1142 | NCR*:*:4.2:* | MPRAS*:*:4.2:*) |
| 1101 | 1143 | OS_REL='.3' |
| 1102 | 1144 | test -r /etc/.relid \ |
| 1103 | 1145 | && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` |
| 1104 | 1146 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ |
| @@ -1137,14 +1179,14 @@ | ||
| 1137 | 1179 | echo ${UNAME_MACHINE}-sni-sysv4 |
| 1138 | 1180 | else |
| 1139 | 1181 | echo ns32k-sni-sysv |
| 1140 | 1182 | fi |
| 1141 | 1183 | exit ;; |
| 1142 | - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort | |
| 1143 | - # says <[email protected]> | |
| 1144 | - echo i586-unisys-sysv4 | |
| 1145 | - exit ;; | |
| 1184 | + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort | |
| 1185 | + # says <[email protected]> | |
| 1186 | + echo i586-unisys-sysv4 | |
| 1187 | + exit ;; | |
| 1146 | 1188 | *:UNIX_System_V:4*:FTX*) |
| 1147 | 1189 | # From Gerald Hewes <[email protected]>. |
| 1148 | 1190 | # How about differentiating between stratus architectures? -djm |
| 1149 | 1191 | echo hppa1.1-stratus-sysv4 |
| 1150 | 1192 | exit ;; |
| @@ -1166,15 +1208,15 @@ | ||
| 1166 | 1208 | news*:NEWS-OS:6*:*) |
| 1167 | 1209 | echo mips-sony-newsos6 |
| 1168 | 1210 | exit ;; |
| 1169 | 1211 | R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) |
| 1170 | 1212 | if [ -d /usr/nec ]; then |
| 1171 | - echo mips-nec-sysv${UNAME_RELEASE} | |
| 1213 | + echo mips-nec-sysv${UNAME_RELEASE} | |
| 1172 | 1214 | else |
| 1173 | - echo mips-unknown-sysv${UNAME_RELEASE} | |
| 1215 | + echo mips-unknown-sysv${UNAME_RELEASE} | |
| 1174 | 1216 | fi |
| 1175 | - exit ;; | |
| 1217 | + exit ;; | |
| 1176 | 1218 | BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. |
| 1177 | 1219 | echo powerpc-be-beos |
| 1178 | 1220 | exit ;; |
| 1179 | 1221 | BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. |
| 1180 | 1222 | echo powerpc-apple-beos |
| @@ -1183,10 +1225,13 @@ | ||
| 1183 | 1225 | echo i586-pc-beos |
| 1184 | 1226 | exit ;; |
| 1185 | 1227 | BePC:Haiku:*:*) # Haiku running on Intel PC compatible. |
| 1186 | 1228 | echo i586-pc-haiku |
| 1187 | 1229 | exit ;; |
| 1230 | + x86_64:Haiku:*:*) | |
| 1231 | + echo x86_64-unknown-haiku | |
| 1232 | + exit ;; | |
| 1188 | 1233 | SX-4:SUPER-UX:*:*) |
| 1189 | 1234 | echo sx4-nec-superux${UNAME_RELEASE} |
| 1190 | 1235 | exit ;; |
| 1191 | 1236 | SX-5:SUPER-UX:*:*) |
| 1192 | 1237 | echo sx5-nec-superux${UNAME_RELEASE} |
| @@ -1209,23 +1254,35 @@ | ||
| 1209 | 1254 | *:Rhapsody:*:*) |
| 1210 | 1255 | echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} |
| 1211 | 1256 | exit ;; |
| 1212 | 1257 | *:Darwin:*:*) |
| 1213 | 1258 | UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown |
| 1214 | - case $UNAME_PROCESSOR in | |
| 1215 | - i386) | |
| 1216 | - eval $set_cc_for_build | |
| 1217 | - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then | |
| 1218 | - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ | |
| 1219 | - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ | |
| 1220 | - grep IS_64BIT_ARCH >/dev/null | |
| 1221 | - then | |
| 1222 | - UNAME_PROCESSOR="x86_64" | |
| 1223 | - fi | |
| 1224 | - fi ;; | |
| 1225 | - unknown) UNAME_PROCESSOR=powerpc ;; | |
| 1226 | - esac | |
| 1259 | + eval $set_cc_for_build | |
| 1260 | + if test "$UNAME_PROCESSOR" = unknown ; then | |
| 1261 | + UNAME_PROCESSOR=powerpc | |
| 1262 | + fi | |
| 1263 | + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then | |
| 1264 | + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then | |
| 1265 | + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ | |
| 1266 | + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ | |
| 1267 | + grep IS_64BIT_ARCH >/dev/null | |
| 1268 | + then | |
| 1269 | + case $UNAME_PROCESSOR in | |
| 1270 | + i386) UNAME_PROCESSOR=x86_64 ;; | |
| 1271 | + powerpc) UNAME_PROCESSOR=powerpc64 ;; | |
| 1272 | + esac | |
| 1273 | + fi | |
| 1274 | + fi | |
| 1275 | + elif test "$UNAME_PROCESSOR" = i386 ; then | |
| 1276 | + # Avoid executing cc on OS X 10.9, as it ships with a stub | |
| 1277 | + # that puts up a graphical alert prompting to install | |
| 1278 | + # developer tools. Any system running Mac OS X 10.7 or | |
| 1279 | + # later (Darwin 11 and later) is required to have a 64-bit | |
| 1280 | + # processor. This is not true of the ARM version of Darwin | |
| 1281 | + # that Apple uses in portable devices. | |
| 1282 | + UNAME_PROCESSOR=x86_64 | |
| 1283 | + fi | |
| 1227 | 1284 | echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} |
| 1228 | 1285 | exit ;; |
| 1229 | 1286 | *:procnto*:*:* | *:QNX:[0123456789]*:*) |
| 1230 | 1287 | UNAME_PROCESSOR=`uname -p` |
| 1231 | 1288 | if test "$UNAME_PROCESSOR" = "x86"; then |
| @@ -1238,11 +1295,11 @@ | ||
| 1238 | 1295 | echo i386-pc-qnx |
| 1239 | 1296 | exit ;; |
| 1240 | 1297 | NEO-?:NONSTOP_KERNEL:*:*) |
| 1241 | 1298 | echo neo-tandem-nsk${UNAME_RELEASE} |
| 1242 | 1299 | exit ;; |
| 1243 | - NSE-?:NONSTOP_KERNEL:*:*) | |
| 1300 | + NSE-*:NONSTOP_KERNEL:*:*) | |
| 1244 | 1301 | echo nse-tandem-nsk${UNAME_RELEASE} |
| 1245 | 1302 | exit ;; |
| 1246 | 1303 | NSR-?:NONSTOP_KERNEL:*:*) |
| 1247 | 1304 | echo nsr-tandem-nsk${UNAME_RELEASE} |
| 1248 | 1305 | exit ;; |
| @@ -1283,17 +1340,17 @@ | ||
| 1283 | 1340 | exit ;; |
| 1284 | 1341 | *:ITS:*:*) |
| 1285 | 1342 | echo pdp10-unknown-its |
| 1286 | 1343 | exit ;; |
| 1287 | 1344 | SEI:*:*:SEIUX) |
| 1288 | - echo mips-sei-seiux${UNAME_RELEASE} | |
| 1345 | + echo mips-sei-seiux${UNAME_RELEASE} | |
| 1289 | 1346 | exit ;; |
| 1290 | 1347 | *:DragonFly:*:*) |
| 1291 | 1348 | echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` |
| 1292 | 1349 | exit ;; |
| 1293 | 1350 | *:*VMS:*:*) |
| 1294 | - UNAME_MACHINE=`(uname -p) 2>/dev/null` | |
| 1351 | + UNAME_MACHINE=`(uname -p) 2>/dev/null` | |
| 1295 | 1352 | case "${UNAME_MACHINE}" in |
| 1296 | 1353 | A*) echo alpha-dec-vms ; exit ;; |
| 1297 | 1354 | I*) echo ia64-dec-vms ; exit ;; |
| 1298 | 1355 | V*) echo vax-dec-vms ; exit ;; |
| 1299 | 1356 | esac ;; |
| @@ -1307,162 +1364,14 @@ | ||
| 1307 | 1364 | echo ${UNAME_MACHINE}-pc-rdos |
| 1308 | 1365 | exit ;; |
| 1309 | 1366 | i*86:AROS:*:*) |
| 1310 | 1367 | echo ${UNAME_MACHINE}-pc-aros |
| 1311 | 1368 | exit ;; |
| 1312 | -esac | |
| 1313 | - | |
| 1314 | -#echo '(No uname command or uname output not recognized.)' 1>&2 | |
| 1315 | -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 | |
| 1316 | - | |
| 1317 | -eval $set_cc_for_build | |
| 1318 | -cat >$dummy.c <<EOF | |
| 1319 | -#ifdef _SEQUENT_ | |
| 1320 | -# include <sys/types.h> | |
| 1321 | -# include <sys/utsname.h> | |
| 1322 | -#endif | |
| 1323 | -main () | |
| 1324 | -{ | |
| 1325 | -#if defined (sony) | |
| 1326 | -#if defined (MIPSEB) | |
| 1327 | - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, | |
| 1328 | - I don't know.... */ | |
| 1329 | - printf ("mips-sony-bsd\n"); exit (0); | |
| 1330 | -#else | |
| 1331 | -#include <sys/param.h> | |
| 1332 | - printf ("m68k-sony-newsos%s\n", | |
| 1333 | -#ifdef NEWSOS4 | |
| 1334 | - "4" | |
| 1335 | -#else | |
| 1336 | - "" | |
| 1337 | -#endif | |
| 1338 | - ); exit (0); | |
| 1339 | -#endif | |
| 1340 | -#endif | |
| 1341 | - | |
| 1342 | -#if defined (__arm) && defined (__acorn) && defined (__unix) | |
| 1343 | - printf ("arm-acorn-riscix\n"); exit (0); | |
| 1344 | -#endif | |
| 1345 | - | |
| 1346 | -#if defined (hp300) && !defined (hpux) | |
| 1347 | - printf ("m68k-hp-bsd\n"); exit (0); | |
| 1348 | -#endif | |
| 1349 | - | |
| 1350 | -#if defined (NeXT) | |
| 1351 | -#if !defined (__ARCHITECTURE__) | |
| 1352 | -#define __ARCHITECTURE__ "m68k" | |
| 1353 | -#endif | |
| 1354 | - int version; | |
| 1355 | - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; | |
| 1356 | - if (version < 4) | |
| 1357 | - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); | |
| 1358 | - else | |
| 1359 | - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); | |
| 1360 | - exit (0); | |
| 1361 | -#endif | |
| 1362 | - | |
| 1363 | -#if defined (MULTIMAX) || defined (n16) | |
| 1364 | -#if defined (UMAXV) | |
| 1365 | - printf ("ns32k-encore-sysv\n"); exit (0); | |
| 1366 | -#else | |
| 1367 | -#if defined (CMU) | |
| 1368 | - printf ("ns32k-encore-mach\n"); exit (0); | |
| 1369 | -#else | |
| 1370 | - printf ("ns32k-encore-bsd\n"); exit (0); | |
| 1371 | -#endif | |
| 1372 | -#endif | |
| 1373 | -#endif | |
| 1374 | - | |
| 1375 | -#if defined (__386BSD__) | |
| 1376 | - printf ("i386-pc-bsd\n"); exit (0); | |
| 1377 | -#endif | |
| 1378 | - | |
| 1379 | -#if defined (sequent) | |
| 1380 | -#if defined (i386) | |
| 1381 | - printf ("i386-sequent-dynix\n"); exit (0); | |
| 1382 | -#endif | |
| 1383 | -#if defined (ns32000) | |
| 1384 | - printf ("ns32k-sequent-dynix\n"); exit (0); | |
| 1385 | -#endif | |
| 1386 | -#endif | |
| 1387 | - | |
| 1388 | -#if defined (_SEQUENT_) | |
| 1389 | - struct utsname un; | |
| 1390 | - | |
| 1391 | - uname(&un); | |
| 1392 | - | |
| 1393 | - if (strncmp(un.version, "V2", 2) == 0) { | |
| 1394 | - printf ("i386-sequent-ptx2\n"); exit (0); | |
| 1395 | - } | |
| 1396 | - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ | |
| 1397 | - printf ("i386-sequent-ptx1\n"); exit (0); | |
| 1398 | - } | |
| 1399 | - printf ("i386-sequent-ptx\n"); exit (0); | |
| 1400 | - | |
| 1401 | -#endif | |
| 1402 | - | |
| 1403 | -#if defined (vax) | |
| 1404 | -# if !defined (ultrix) | |
| 1405 | -# include <sys/param.h> | |
| 1406 | -# if defined (BSD) | |
| 1407 | -# if BSD == 43 | |
| 1408 | - printf ("vax-dec-bsd4.3\n"); exit (0); | |
| 1409 | -# else | |
| 1410 | -# if BSD == 199006 | |
| 1411 | - printf ("vax-dec-bsd4.3reno\n"); exit (0); | |
| 1412 | -# else | |
| 1413 | - printf ("vax-dec-bsd\n"); exit (0); | |
| 1414 | -# endif | |
| 1415 | -# endif | |
| 1416 | -# else | |
| 1417 | - printf ("vax-dec-bsd\n"); exit (0); | |
| 1418 | -# endif | |
| 1419 | -# else | |
| 1420 | - printf ("vax-dec-ultrix\n"); exit (0); | |
| 1421 | -# endif | |
| 1422 | -#endif | |
| 1423 | - | |
| 1424 | -#if defined (alliant) && defined (i860) | |
| 1425 | - printf ("i860-alliant-bsd\n"); exit (0); | |
| 1426 | -#endif | |
| 1427 | - | |
| 1428 | - exit (1); | |
| 1429 | -} | |
| 1430 | -EOF | |
| 1431 | - | |
| 1432 | -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && | |
| 1433 | - { echo "$SYSTEM_NAME"; exit; } | |
| 1434 | - | |
| 1435 | -# Apollos put the system type in the environment. | |
| 1436 | - | |
| 1437 | -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } | |
| 1438 | - | |
| 1439 | -# Convex versions that predate uname can use getsysinfo(1) | |
| 1440 | - | |
| 1441 | -if [ -x /usr/convex/getsysinfo ] | |
| 1442 | -then | |
| 1443 | - case `getsysinfo -f cpu_type` in | |
| 1444 | - c1*) | |
| 1445 | - echo c1-convex-bsd | |
| 1446 | - exit ;; | |
| 1447 | - c2*) | |
| 1448 | - if getsysinfo -f scalar_acc | |
| 1449 | - then echo c32-convex-bsd | |
| 1450 | - else echo c2-convex-bsd | |
| 1451 | - fi | |
| 1452 | - exit ;; | |
| 1453 | - c34*) | |
| 1454 | - echo c34-convex-bsd | |
| 1455 | - exit ;; | |
| 1456 | - c38*) | |
| 1457 | - echo c38-convex-bsd | |
| 1458 | - exit ;; | |
| 1459 | - c4*) | |
| 1460 | - echo c4-convex-bsd | |
| 1461 | - exit ;; | |
| 1462 | - esac | |
| 1463 | -fi | |
| 1369 | + x86_64:VMkernel:*:*) | |
| 1370 | + echo ${UNAME_MACHINE}-unknown-esx | |
| 1371 | + exit ;; | |
| 1372 | +esac | |
| 1464 | 1373 | |
| 1465 | 1374 | cat >&2 <<EOF |
| 1466 | 1375 | $0: unable to guess system type |
| 1467 | 1376 | |
| 1468 | 1377 | This script, last modified $timestamp, has failed to recognize |
| 1469 | 1378 |
| --- autosetup/config.guess | |
| +++ autosetup/config.guess | |
| @@ -1,44 +1,38 @@ | |
| 1 | #! /bin/sh |
| 2 | # Attempt to guess a canonical system name. |
| 3 | # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, |
| 4 | # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
| 5 | # Free Software Foundation, Inc. |
| 6 | |
| 7 | timestamp='2010-09-24' |
| 8 | |
| 9 | # This file is free software; you can redistribute it and/or modify it |
| 10 | # under the terms of the GNU General Public License as published by |
| 11 | # the Free Software Foundation; either version 2 of the License, or |
| 12 | # (at your option) any later version. |
| 13 | # |
| 14 | # This program is distributed in the hope that it will be useful, but |
| 15 | # WITHOUT ANY WARRANTY; without even the implied warranty of |
| 16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 17 | # General Public License for more details. |
| 18 | # |
| 19 | # You should have received a copy of the GNU General Public License |
| 20 | # along with this program; if not, write to the Free Software |
| 21 | # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA |
| 22 | # 02110-1301, USA. |
| 23 | # |
| 24 | # As a special exception to the GNU General Public License, if you |
| 25 | # distribute this file as part of a program that contains a |
| 26 | # configuration script generated by Autoconf, you may include it under |
| 27 | # the same distribution terms that you use for the rest of that program. |
| 28 | |
| 29 | |
| 30 | # Originally written by Per Bothner. Please send patches (context |
| 31 | # diff format) to <[email protected]> and include a ChangeLog |
| 32 | # entry. |
| 33 | # |
| 34 | # This script attempts to guess a canonical system name similar to |
| 35 | # config.sub. If it succeeds, it prints the system name on stdout, and |
| 36 | # exits with 0. Otherwise, it exits with 1. |
| 37 | # |
| 38 | # You can get the latest version of this script from: |
| 39 | # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD |
| 40 | |
| 41 | me=`echo "$0" | sed -e 's,.*/,,'` |
| 42 | |
| 43 | usage="\ |
| 44 | Usage: $0 [OPTION] |
| @@ -54,13 +48,11 @@ | |
| 54 | |
| 55 | version="\ |
| 56 | GNU config.guess ($timestamp) |
| 57 | |
| 58 | Originally written by Per Bothner. |
| 59 | Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, |
| 60 | 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free |
| 61 | Software Foundation, Inc. |
| 62 | |
| 63 | This is free software; see the source for copying conditions. There is NO |
| 64 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." |
| 65 | |
| 66 | help=" |
| @@ -90,11 +82,11 @@ | |
| 90 | if test $# != 0; then |
| 91 | echo "$me: too many arguments$help" >&2 |
| 92 | exit 1 |
| 93 | fi |
| 94 | |
| 95 | trap 'exit 1' HUP INT TERM |
| 96 | |
| 97 | # CC_FOR_BUILD -- compiler used by this script. Note that the use of a |
| 98 | # compiler to aid in system detection is discouraged as it requires |
| 99 | # temporary files to be created and, as you can see below, it is a |
| 100 | # headache to deal with in a portable fashion. |
| @@ -104,11 +96,11 @@ | |
| 104 | |
| 105 | # Portable tmp directory creation inspired by the Autoconf team. |
| 106 | |
| 107 | set_cc_for_build=' |
| 108 | trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; |
| 109 | trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ; |
| 110 | : ${TMPDIR=/tmp} ; |
| 111 | { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || |
| 112 | { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || |
| 113 | { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || |
| 114 | { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; |
| @@ -137,17 +129,38 @@ | |
| 137 | |
| 138 | UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown |
| 139 | UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown |
| 140 | UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown |
| 141 | UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown |
| 142 | |
| 143 | # Note: order is significant - the case branches are not exclusive. |
| 144 | |
| 145 | case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in |
| 146 | *:NetBSD:*:*) |
| 147 | # NetBSD (nbsd) targets should (where applicable) match one or |
| 148 | # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, |
| 149 | # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently |
| 150 | # switched to ELF, *-*-netbsd* would select the old |
| 151 | # object file format. This provides both forward |
| 152 | # compatibility and a consistent mechanism for selecting the |
| 153 | # object file format. |
| @@ -179,11 +192,11 @@ | |
| 179 | else |
| 180 | os=netbsdelf |
| 181 | fi |
| 182 | ;; |
| 183 | *) |
| 184 | os=netbsd |
| 185 | ;; |
| 186 | esac |
| 187 | # The OS release |
| 188 | # Debian GNU/NetBSD machines have a different userland, and |
| 189 | # thus, need a distinct triplet. However, they do not need |
| @@ -200,10 +213,14 @@ | |
| 200 | # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: |
| 201 | # contains redundant information, the shorter form: |
| 202 | # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. |
| 203 | echo "${machine}-${os}${release}" |
| 204 | exit ;; |
| 205 | *:OpenBSD:*:*) |
| 206 | UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` |
| 207 | echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} |
| 208 | exit ;; |
| 209 | *:ekkoBSD:*:*) |
| @@ -222,11 +239,11 @@ | |
| 222 | case $UNAME_RELEASE in |
| 223 | *4.0) |
| 224 | UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` |
| 225 | ;; |
| 226 | *5.*) |
| 227 | UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` |
| 228 | ;; |
| 229 | esac |
| 230 | # According to Compaq, /usr/sbin/psrinfo has been available on |
| 231 | # OSF/1 and Tru64 systems produced since 1995. I hope that |
| 232 | # covers most systems running today. This code pipes the CPU |
| @@ -268,11 +285,14 @@ | |
| 268 | # A Vn.n version is a released version. |
| 269 | # A Tn.n version is a released field test version. |
| 270 | # A Xn.n version is an unreleased experimental baselevel. |
| 271 | # 1.2 uses "1.2" for uname -r. |
| 272 | echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` |
| 273 | exit ;; |
| 274 | Alpha\ *:Windows_NT*:*) |
| 275 | # How do we know it's Interix rather than the generic POSIX subsystem? |
| 276 | # Should we change UNAME_MACHINE based on the output of uname instead |
| 277 | # of the specific Alpha model? |
| 278 | echo alpha-pc-interix |
| @@ -294,16 +314,16 @@ | |
| 294 | exit ;; |
| 295 | *:z/VM:*:*) |
| 296 | echo s390-ibm-zvmoe |
| 297 | exit ;; |
| 298 | *:OS400:*:*) |
| 299 | echo powerpc-ibm-os400 |
| 300 | exit ;; |
| 301 | arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) |
| 302 | echo arm-acorn-riscix${UNAME_RELEASE} |
| 303 | exit ;; |
| 304 | arm:riscos:*:*|arm:RISCOS:*:*) |
| 305 | echo arm-unknown-riscos |
| 306 | exit ;; |
| 307 | SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) |
| 308 | echo hppa1.1-hitachi-hiuxmpp |
| 309 | exit ;; |
| @@ -393,27 +413,27 @@ | |
| 393 | # to the lowercase version "mint" (or "freemint"). Finally |
| 394 | # the system name "TOS" denotes a system which is actually not |
| 395 | # MiNT. But MiNT is downward compatible to TOS, so this should |
| 396 | # be no problem. |
| 397 | atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) |
| 398 | echo m68k-atari-mint${UNAME_RELEASE} |
| 399 | exit ;; |
| 400 | atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) |
| 401 | echo m68k-atari-mint${UNAME_RELEASE} |
| 402 | exit ;; |
| 403 | *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) |
| 404 | echo m68k-atari-mint${UNAME_RELEASE} |
| 405 | exit ;; |
| 406 | milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) |
| 407 | echo m68k-milan-mint${UNAME_RELEASE} |
| 408 | exit ;; |
| 409 | hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) |
| 410 | echo m68k-hades-mint${UNAME_RELEASE} |
| 411 | exit ;; |
| 412 | *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) |
| 413 | echo m68k-unknown-mint${UNAME_RELEASE} |
| 414 | exit ;; |
| 415 | m68k:machten:*:*) |
| 416 | echo m68k-apple-machten${UNAME_RELEASE} |
| 417 | exit ;; |
| 418 | powerpc:machten:*:*) |
| 419 | echo powerpc-apple-machten${UNAME_RELEASE} |
| @@ -479,12 +499,12 @@ | |
| 479 | exit ;; |
| 480 | m88k:*:3*:R3*) |
| 481 | echo m88k-motorola-sysv3 |
| 482 | exit ;; |
| 483 | AViiON:dgux:*:*) |
| 484 | # DG/UX returns AViiON for all architectures |
| 485 | UNAME_PROCESSOR=`/usr/bin/uname -p` |
| 486 | if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] |
| 487 | then |
| 488 | if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ |
| 489 | [ ${TARGET_BINARY_INTERFACE}x = x ] |
| 490 | then |
| @@ -493,11 +513,11 @@ | |
| 493 | echo m88k-dg-dguxbcs${UNAME_RELEASE} |
| 494 | fi |
| 495 | else |
| 496 | echo i586-dg-dgux${UNAME_RELEASE} |
| 497 | fi |
| 498 | exit ;; |
| 499 | M88*:DolphinOS:*:*) # DolphinOS (SVR3) |
| 500 | echo m88k-dolphin-sysv3 |
| 501 | exit ;; |
| 502 | M88*:*:R3*:*) |
| 503 | # Delta 88k system running SVR3 |
| @@ -593,56 +613,56 @@ | |
| 593 | 9000/31? ) HP_ARCH=m68000 ;; |
| 594 | 9000/[34]?? ) HP_ARCH=m68k ;; |
| 595 | 9000/[678][0-9][0-9]) |
| 596 | if [ -x /usr/bin/getconf ]; then |
| 597 | sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` |
| 598 | sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` |
| 599 | case "${sc_cpu_version}" in |
| 600 | 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 |
| 601 | 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 |
| 602 | 532) # CPU_PA_RISC2_0 |
| 603 | case "${sc_kernel_bits}" in |
| 604 | 32) HP_ARCH="hppa2.0n" ;; |
| 605 | 64) HP_ARCH="hppa2.0w" ;; |
| 606 | '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 |
| 607 | esac ;; |
| 608 | esac |
| 609 | fi |
| 610 | if [ "${HP_ARCH}" = "" ]; then |
| 611 | eval $set_cc_for_build |
| 612 | sed 's/^ //' << EOF >$dummy.c |
| 613 | |
| 614 | #define _HPUX_SOURCE |
| 615 | #include <stdlib.h> |
| 616 | #include <unistd.h> |
| 617 | |
| 618 | int main () |
| 619 | { |
| 620 | #if defined(_SC_KERNEL_BITS) |
| 621 | long bits = sysconf(_SC_KERNEL_BITS); |
| 622 | #endif |
| 623 | long cpu = sysconf (_SC_CPU_VERSION); |
| 624 | |
| 625 | switch (cpu) |
| 626 | { |
| 627 | case CPU_PA_RISC1_0: puts ("hppa1.0"); break; |
| 628 | case CPU_PA_RISC1_1: puts ("hppa1.1"); break; |
| 629 | case CPU_PA_RISC2_0: |
| 630 | #if defined(_SC_KERNEL_BITS) |
| 631 | switch (bits) |
| 632 | { |
| 633 | case 64: puts ("hppa2.0w"); break; |
| 634 | case 32: puts ("hppa2.0n"); break; |
| 635 | default: puts ("hppa2.0"); break; |
| 636 | } break; |
| 637 | #else /* !defined(_SC_KERNEL_BITS) */ |
| 638 | puts ("hppa2.0"); break; |
| 639 | #endif |
| 640 | default: puts ("hppa1.0"); break; |
| 641 | } |
| 642 | exit (0); |
| 643 | } |
| 644 | EOF |
| 645 | (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` |
| 646 | test -z "$HP_ARCH" && HP_ARCH=hppa |
| 647 | fi ;; |
| 648 | esac |
| @@ -729,26 +749,26 @@ | |
| 729 | parisc*:Lites*:*:*) |
| 730 | echo hppa1.1-hp-lites |
| 731 | exit ;; |
| 732 | C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) |
| 733 | echo c1-convex-bsd |
| 734 | exit ;; |
| 735 | C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) |
| 736 | if getsysinfo -f scalar_acc |
| 737 | then echo c32-convex-bsd |
| 738 | else echo c2-convex-bsd |
| 739 | fi |
| 740 | exit ;; |
| 741 | C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) |
| 742 | echo c34-convex-bsd |
| 743 | exit ;; |
| 744 | C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) |
| 745 | echo c38-convex-bsd |
| 746 | exit ;; |
| 747 | C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) |
| 748 | echo c4-convex-bsd |
| 749 | exit ;; |
| 750 | CRAY*Y-MP:*:*:*) |
| 751 | echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' |
| 752 | exit ;; |
| 753 | CRAY*[A-Z]90:*:*:*) |
| 754 | echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ |
| @@ -768,18 +788,18 @@ | |
| 768 | *:UNICOS/mp:*:*) |
| 769 | echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' |
| 770 | exit ;; |
| 771 | F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) |
| 772 | FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` |
| 773 | FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` |
| 774 | FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` |
| 775 | echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" |
| 776 | exit ;; |
| 777 | 5000:UNIX_System_V:4.*:*) |
| 778 | FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` |
| 779 | FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` |
| 780 | echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" |
| 781 | exit ;; |
| 782 | i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) |
| 783 | echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} |
| 784 | exit ;; |
| 785 | sparc*:BSD/OS:*:*) |
| @@ -787,37 +807,39 @@ | |
| 787 | exit ;; |
| 788 | *:BSD/OS:*:*) |
| 789 | echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} |
| 790 | exit ;; |
| 791 | *:FreeBSD:*:*) |
| 792 | case ${UNAME_MACHINE} in |
| 793 | pc98) |
| 794 | echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; |
| 795 | amd64) |
| 796 | echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; |
| 797 | *) |
| 798 | echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; |
| 799 | esac |
| 800 | exit ;; |
| 801 | i*:CYGWIN*:*) |
| 802 | echo ${UNAME_MACHINE}-pc-cygwin |
| 803 | exit ;; |
| 804 | *:MINGW*:*) |
| 805 | echo ${UNAME_MACHINE}-pc-mingw32 |
| 806 | exit ;; |
| 807 | i*:MSYS*:*) |
| 808 | echo ${UNAME_MACHINE}-pc-msys |
| 809 | exit ;; |
| 810 | i*:windows32*:*) |
| 811 | # uname -m includes "-pc" on this system. |
| 812 | echo ${UNAME_MACHINE}-mingw32 |
| 813 | exit ;; |
| 814 | i*:PW*:*) |
| 815 | echo ${UNAME_MACHINE}-pc-pw32 |
| 816 | exit ;; |
| 817 | *:Interix*:*) |
| 818 | case ${UNAME_MACHINE} in |
| 819 | x86) |
| 820 | echo i586-pc-interix${UNAME_RELEASE} |
| 821 | exit ;; |
| 822 | authenticamd | genuineintel | EM64T) |
| 823 | echo x86_64-unknown-interix${UNAME_RELEASE} |
| @@ -850,74 +872,85 @@ | |
| 850 | prep*:SunOS:5.*:*) |
| 851 | echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` |
| 852 | exit ;; |
| 853 | *:GNU:*:*) |
| 854 | # the GNU system |
| 855 | echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` |
| 856 | exit ;; |
| 857 | *:GNU/*:*:*) |
| 858 | # other systems with GNU libc and userland |
| 859 | echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu |
| 860 | exit ;; |
| 861 | i*86:Minix:*:*) |
| 862 | echo ${UNAME_MACHINE}-pc-minix |
| 863 | exit ;; |
| 864 | alpha:Linux:*:*) |
| 865 | case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in |
| 866 | EV5) UNAME_MACHINE=alphaev5 ;; |
| 867 | EV56) UNAME_MACHINE=alphaev56 ;; |
| 868 | PCA56) UNAME_MACHINE=alphapca56 ;; |
| 869 | PCA57) UNAME_MACHINE=alphapca56 ;; |
| 870 | EV6) UNAME_MACHINE=alphaev6 ;; |
| 871 | EV67) UNAME_MACHINE=alphaev67 ;; |
| 872 | EV68*) UNAME_MACHINE=alphaev68 ;; |
| 873 | esac |
| 874 | objdump --private-headers /bin/sh | grep -q ld.so.1 |
| 875 | if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi |
| 876 | echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} |
| 877 | exit ;; |
| 878 | arm*:Linux:*:*) |
| 879 | eval $set_cc_for_build |
| 880 | if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ |
| 881 | | grep -q __ARM_EABI__ |
| 882 | then |
| 883 | echo ${UNAME_MACHINE}-unknown-linux-gnu |
| 884 | else |
| 885 | echo ${UNAME_MACHINE}-unknown-linux-gnueabi |
| 886 | fi |
| 887 | exit ;; |
| 888 | avr32*:Linux:*:*) |
| 889 | echo ${UNAME_MACHINE}-unknown-linux-gnu |
| 890 | exit ;; |
| 891 | cris:Linux:*:*) |
| 892 | echo cris-axis-linux-gnu |
| 893 | exit ;; |
| 894 | crisv32:Linux:*:*) |
| 895 | echo crisv32-axis-linux-gnu |
| 896 | exit ;; |
| 897 | frv:Linux:*:*) |
| 898 | echo frv-unknown-linux-gnu |
| 899 | exit ;; |
| 900 | i*86:Linux:*:*) |
| 901 | LIBC=gnu |
| 902 | eval $set_cc_for_build |
| 903 | sed 's/^ //' << EOF >$dummy.c |
| 904 | #ifdef __dietlibc__ |
| 905 | LIBC=dietlibc |
| 906 | #endif |
| 907 | EOF |
| 908 | eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` |
| 909 | echo "${UNAME_MACHINE}-pc-linux-${LIBC}" |
| 910 | exit ;; |
| 911 | ia64:Linux:*:*) |
| 912 | echo ${UNAME_MACHINE}-unknown-linux-gnu |
| 913 | exit ;; |
| 914 | m32r*:Linux:*:*) |
| 915 | echo ${UNAME_MACHINE}-unknown-linux-gnu |
| 916 | exit ;; |
| 917 | m68*:Linux:*:*) |
| 918 | echo ${UNAME_MACHINE}-unknown-linux-gnu |
| 919 | exit ;; |
| 920 | mips:Linux:*:* | mips64:Linux:*:*) |
| 921 | eval $set_cc_for_build |
| 922 | sed 's/^ //' << EOF >$dummy.c |
| 923 | #undef CPU |
| @@ -932,71 +965,80 @@ | |
| 932 | CPU= |
| 933 | #endif |
| 934 | #endif |
| 935 | EOF |
| 936 | eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` |
| 937 | test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } |
| 938 | ;; |
| 939 | or32:Linux:*:*) |
| 940 | echo or32-unknown-linux-gnu |
| 941 | exit ;; |
| 942 | padre:Linux:*:*) |
| 943 | echo sparc-unknown-linux-gnu |
| 944 | exit ;; |
| 945 | parisc64:Linux:*:* | hppa64:Linux:*:*) |
| 946 | echo hppa64-unknown-linux-gnu |
| 947 | exit ;; |
| 948 | parisc:Linux:*:* | hppa:Linux:*:*) |
| 949 | # Look for CPU level |
| 950 | case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in |
| 951 | PA7*) echo hppa1.1-unknown-linux-gnu ;; |
| 952 | PA8*) echo hppa2.0-unknown-linux-gnu ;; |
| 953 | *) echo hppa-unknown-linux-gnu ;; |
| 954 | esac |
| 955 | exit ;; |
| 956 | ppc64:Linux:*:*) |
| 957 | echo powerpc64-unknown-linux-gnu |
| 958 | exit ;; |
| 959 | ppc:Linux:*:*) |
| 960 | echo powerpc-unknown-linux-gnu |
| 961 | exit ;; |
| 962 | s390:Linux:*:* | s390x:Linux:*:*) |
| 963 | echo ${UNAME_MACHINE}-ibm-linux |
| 964 | exit ;; |
| 965 | sh64*:Linux:*:*) |
| 966 | echo ${UNAME_MACHINE}-unknown-linux-gnu |
| 967 | exit ;; |
| 968 | sh*:Linux:*:*) |
| 969 | echo ${UNAME_MACHINE}-unknown-linux-gnu |
| 970 | exit ;; |
| 971 | sparc:Linux:*:* | sparc64:Linux:*:*) |
| 972 | echo ${UNAME_MACHINE}-unknown-linux-gnu |
| 973 | exit ;; |
| 974 | tile*:Linux:*:*) |
| 975 | echo ${UNAME_MACHINE}-tilera-linux-gnu |
| 976 | exit ;; |
| 977 | vax:Linux:*:*) |
| 978 | echo ${UNAME_MACHINE}-dec-linux-gnu |
| 979 | exit ;; |
| 980 | x86_64:Linux:*:*) |
| 981 | echo x86_64-unknown-linux-gnu |
| 982 | exit ;; |
| 983 | xtensa*:Linux:*:*) |
| 984 | echo ${UNAME_MACHINE}-unknown-linux-gnu |
| 985 | exit ;; |
| 986 | i*86:DYNIX/ptx:4*:*) |
| 987 | # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. |
| 988 | # earlier versions are messed up and put the nodename in both |
| 989 | # sysname and nodename. |
| 990 | echo i386-sequent-sysv4 |
| 991 | exit ;; |
| 992 | i*86:UNIX_SV:4.2MP:2.*) |
| 993 | # Unixware is an offshoot of SVR4, but it has its own version |
| 994 | # number series starting with 2... |
| 995 | # I am not positive that other SVR4 systems won't match this, |
| 996 | # I just have to hope. -- rms. |
| 997 | # Use sysv4.2uw... so that sysv4* matches it. |
| 998 | echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} |
| 999 | exit ;; |
| 1000 | i*86:OS/2:*:*) |
| 1001 | # If we were able to find `uname', then EMX Unix compatibility |
| 1002 | # is probably installed. |
| @@ -1024,11 +1066,11 @@ | |
| 1024 | else |
| 1025 | echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} |
| 1026 | fi |
| 1027 | exit ;; |
| 1028 | i*86:*:5:[678]*) |
| 1029 | # UnixWare 7.x, OpenUNIX and OpenServer 6. |
| 1030 | case `/bin/uname -X | grep "^Machine"` in |
| 1031 | *486*) UNAME_MACHINE=i486 ;; |
| 1032 | *Pentium) UNAME_MACHINE=i586 ;; |
| 1033 | *Pent*|*Celeron) UNAME_MACHINE=i686 ;; |
| 1034 | esac |
| @@ -1052,17 +1094,17 @@ | |
| 1052 | echo ${UNAME_MACHINE}-pc-sysv32 |
| 1053 | fi |
| 1054 | exit ;; |
| 1055 | pc:*:*:*) |
| 1056 | # Left here for compatibility: |
| 1057 | # uname -m prints for DJGPP always 'pc', but it prints nothing about |
| 1058 | # the processor, so we play safe by assuming i586. |
| 1059 | # Note: whatever this is, it MUST be the same as what config.sub |
| 1060 | # prints for the "djgpp" host, or else GDB configury will decide that |
| 1061 | # this is a cross-build. |
| 1062 | echo i586-pc-msdosdjgpp |
| 1063 | exit ;; |
| 1064 | Intel:Mach:3*:*) |
| 1065 | echo i386-pc-mach3 |
| 1066 | exit ;; |
| 1067 | paragon:*:*:*) |
| 1068 | echo i860-intel-osf1 |
| @@ -1093,12 +1135,12 @@ | |
| 1093 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ |
| 1094 | && { echo i486-ncr-sysv4.3${OS_REL}; exit; } |
| 1095 | /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ |
| 1096 | && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; |
| 1097 | 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) |
| 1098 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ |
| 1099 | && { echo i486-ncr-sysv4; exit; } ;; |
| 1100 | NCR*:*:4.2:* | MPRAS*:*:4.2:*) |
| 1101 | OS_REL='.3' |
| 1102 | test -r /etc/.relid \ |
| 1103 | && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` |
| 1104 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ |
| @@ -1137,14 +1179,14 @@ | |
| 1137 | echo ${UNAME_MACHINE}-sni-sysv4 |
| 1138 | else |
| 1139 | echo ns32k-sni-sysv |
| 1140 | fi |
| 1141 | exit ;; |
| 1142 | PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort |
| 1143 | # says <[email protected]> |
| 1144 | echo i586-unisys-sysv4 |
| 1145 | exit ;; |
| 1146 | *:UNIX_System_V:4*:FTX*) |
| 1147 | # From Gerald Hewes <[email protected]>. |
| 1148 | # How about differentiating between stratus architectures? -djm |
| 1149 | echo hppa1.1-stratus-sysv4 |
| 1150 | exit ;; |
| @@ -1166,15 +1208,15 @@ | |
| 1166 | news*:NEWS-OS:6*:*) |
| 1167 | echo mips-sony-newsos6 |
| 1168 | exit ;; |
| 1169 | R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) |
| 1170 | if [ -d /usr/nec ]; then |
| 1171 | echo mips-nec-sysv${UNAME_RELEASE} |
| 1172 | else |
| 1173 | echo mips-unknown-sysv${UNAME_RELEASE} |
| 1174 | fi |
| 1175 | exit ;; |
| 1176 | BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. |
| 1177 | echo powerpc-be-beos |
| 1178 | exit ;; |
| 1179 | BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. |
| 1180 | echo powerpc-apple-beos |
| @@ -1183,10 +1225,13 @@ | |
| 1183 | echo i586-pc-beos |
| 1184 | exit ;; |
| 1185 | BePC:Haiku:*:*) # Haiku running on Intel PC compatible. |
| 1186 | echo i586-pc-haiku |
| 1187 | exit ;; |
| 1188 | SX-4:SUPER-UX:*:*) |
| 1189 | echo sx4-nec-superux${UNAME_RELEASE} |
| 1190 | exit ;; |
| 1191 | SX-5:SUPER-UX:*:*) |
| 1192 | echo sx5-nec-superux${UNAME_RELEASE} |
| @@ -1209,23 +1254,35 @@ | |
| 1209 | *:Rhapsody:*:*) |
| 1210 | echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} |
| 1211 | exit ;; |
| 1212 | *:Darwin:*:*) |
| 1213 | UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown |
| 1214 | case $UNAME_PROCESSOR in |
| 1215 | i386) |
| 1216 | eval $set_cc_for_build |
| 1217 | if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then |
| 1218 | if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ |
| 1219 | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ |
| 1220 | grep IS_64BIT_ARCH >/dev/null |
| 1221 | then |
| 1222 | UNAME_PROCESSOR="x86_64" |
| 1223 | fi |
| 1224 | fi ;; |
| 1225 | unknown) UNAME_PROCESSOR=powerpc ;; |
| 1226 | esac |
| 1227 | echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} |
| 1228 | exit ;; |
| 1229 | *:procnto*:*:* | *:QNX:[0123456789]*:*) |
| 1230 | UNAME_PROCESSOR=`uname -p` |
| 1231 | if test "$UNAME_PROCESSOR" = "x86"; then |
| @@ -1238,11 +1295,11 @@ | |
| 1238 | echo i386-pc-qnx |
| 1239 | exit ;; |
| 1240 | NEO-?:NONSTOP_KERNEL:*:*) |
| 1241 | echo neo-tandem-nsk${UNAME_RELEASE} |
| 1242 | exit ;; |
| 1243 | NSE-?:NONSTOP_KERNEL:*:*) |
| 1244 | echo nse-tandem-nsk${UNAME_RELEASE} |
| 1245 | exit ;; |
| 1246 | NSR-?:NONSTOP_KERNEL:*:*) |
| 1247 | echo nsr-tandem-nsk${UNAME_RELEASE} |
| 1248 | exit ;; |
| @@ -1283,17 +1340,17 @@ | |
| 1283 | exit ;; |
| 1284 | *:ITS:*:*) |
| 1285 | echo pdp10-unknown-its |
| 1286 | exit ;; |
| 1287 | SEI:*:*:SEIUX) |
| 1288 | echo mips-sei-seiux${UNAME_RELEASE} |
| 1289 | exit ;; |
| 1290 | *:DragonFly:*:*) |
| 1291 | echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` |
| 1292 | exit ;; |
| 1293 | *:*VMS:*:*) |
| 1294 | UNAME_MACHINE=`(uname -p) 2>/dev/null` |
| 1295 | case "${UNAME_MACHINE}" in |
| 1296 | A*) echo alpha-dec-vms ; exit ;; |
| 1297 | I*) echo ia64-dec-vms ; exit ;; |
| 1298 | V*) echo vax-dec-vms ; exit ;; |
| 1299 | esac ;; |
| @@ -1307,162 +1364,14 @@ | |
| 1307 | echo ${UNAME_MACHINE}-pc-rdos |
| 1308 | exit ;; |
| 1309 | i*86:AROS:*:*) |
| 1310 | echo ${UNAME_MACHINE}-pc-aros |
| 1311 | exit ;; |
| 1312 | esac |
| 1313 | |
| 1314 | #echo '(No uname command or uname output not recognized.)' 1>&2 |
| 1315 | #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 |
| 1316 | |
| 1317 | eval $set_cc_for_build |
| 1318 | cat >$dummy.c <<EOF |
| 1319 | #ifdef _SEQUENT_ |
| 1320 | # include <sys/types.h> |
| 1321 | # include <sys/utsname.h> |
| 1322 | #endif |
| 1323 | main () |
| 1324 | { |
| 1325 | #if defined (sony) |
| 1326 | #if defined (MIPSEB) |
| 1327 | /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, |
| 1328 | I don't know.... */ |
| 1329 | printf ("mips-sony-bsd\n"); exit (0); |
| 1330 | #else |
| 1331 | #include <sys/param.h> |
| 1332 | printf ("m68k-sony-newsos%s\n", |
| 1333 | #ifdef NEWSOS4 |
| 1334 | "4" |
| 1335 | #else |
| 1336 | "" |
| 1337 | #endif |
| 1338 | ); exit (0); |
| 1339 | #endif |
| 1340 | #endif |
| 1341 | |
| 1342 | #if defined (__arm) && defined (__acorn) && defined (__unix) |
| 1343 | printf ("arm-acorn-riscix\n"); exit (0); |
| 1344 | #endif |
| 1345 | |
| 1346 | #if defined (hp300) && !defined (hpux) |
| 1347 | printf ("m68k-hp-bsd\n"); exit (0); |
| 1348 | #endif |
| 1349 | |
| 1350 | #if defined (NeXT) |
| 1351 | #if !defined (__ARCHITECTURE__) |
| 1352 | #define __ARCHITECTURE__ "m68k" |
| 1353 | #endif |
| 1354 | int version; |
| 1355 | version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; |
| 1356 | if (version < 4) |
| 1357 | printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); |
| 1358 | else |
| 1359 | printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); |
| 1360 | exit (0); |
| 1361 | #endif |
| 1362 | |
| 1363 | #if defined (MULTIMAX) || defined (n16) |
| 1364 | #if defined (UMAXV) |
| 1365 | printf ("ns32k-encore-sysv\n"); exit (0); |
| 1366 | #else |
| 1367 | #if defined (CMU) |
| 1368 | printf ("ns32k-encore-mach\n"); exit (0); |
| 1369 | #else |
| 1370 | printf ("ns32k-encore-bsd\n"); exit (0); |
| 1371 | #endif |
| 1372 | #endif |
| 1373 | #endif |
| 1374 | |
| 1375 | #if defined (__386BSD__) |
| 1376 | printf ("i386-pc-bsd\n"); exit (0); |
| 1377 | #endif |
| 1378 | |
| 1379 | #if defined (sequent) |
| 1380 | #if defined (i386) |
| 1381 | printf ("i386-sequent-dynix\n"); exit (0); |
| 1382 | #endif |
| 1383 | #if defined (ns32000) |
| 1384 | printf ("ns32k-sequent-dynix\n"); exit (0); |
| 1385 | #endif |
| 1386 | #endif |
| 1387 | |
| 1388 | #if defined (_SEQUENT_) |
| 1389 | struct utsname un; |
| 1390 | |
| 1391 | uname(&un); |
| 1392 | |
| 1393 | if (strncmp(un.version, "V2", 2) == 0) { |
| 1394 | printf ("i386-sequent-ptx2\n"); exit (0); |
| 1395 | } |
| 1396 | if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ |
| 1397 | printf ("i386-sequent-ptx1\n"); exit (0); |
| 1398 | } |
| 1399 | printf ("i386-sequent-ptx\n"); exit (0); |
| 1400 | |
| 1401 | #endif |
| 1402 | |
| 1403 | #if defined (vax) |
| 1404 | # if !defined (ultrix) |
| 1405 | # include <sys/param.h> |
| 1406 | # if defined (BSD) |
| 1407 | # if BSD == 43 |
| 1408 | printf ("vax-dec-bsd4.3\n"); exit (0); |
| 1409 | # else |
| 1410 | # if BSD == 199006 |
| 1411 | printf ("vax-dec-bsd4.3reno\n"); exit (0); |
| 1412 | # else |
| 1413 | printf ("vax-dec-bsd\n"); exit (0); |
| 1414 | # endif |
| 1415 | # endif |
| 1416 | # else |
| 1417 | printf ("vax-dec-bsd\n"); exit (0); |
| 1418 | # endif |
| 1419 | # else |
| 1420 | printf ("vax-dec-ultrix\n"); exit (0); |
| 1421 | # endif |
| 1422 | #endif |
| 1423 | |
| 1424 | #if defined (alliant) && defined (i860) |
| 1425 | printf ("i860-alliant-bsd\n"); exit (0); |
| 1426 | #endif |
| 1427 | |
| 1428 | exit (1); |
| 1429 | } |
| 1430 | EOF |
| 1431 | |
| 1432 | $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && |
| 1433 | { echo "$SYSTEM_NAME"; exit; } |
| 1434 | |
| 1435 | # Apollos put the system type in the environment. |
| 1436 | |
| 1437 | test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } |
| 1438 | |
| 1439 | # Convex versions that predate uname can use getsysinfo(1) |
| 1440 | |
| 1441 | if [ -x /usr/convex/getsysinfo ] |
| 1442 | then |
| 1443 | case `getsysinfo -f cpu_type` in |
| 1444 | c1*) |
| 1445 | echo c1-convex-bsd |
| 1446 | exit ;; |
| 1447 | c2*) |
| 1448 | if getsysinfo -f scalar_acc |
| 1449 | then echo c32-convex-bsd |
| 1450 | else echo c2-convex-bsd |
| 1451 | fi |
| 1452 | exit ;; |
| 1453 | c34*) |
| 1454 | echo c34-convex-bsd |
| 1455 | exit ;; |
| 1456 | c38*) |
| 1457 | echo c38-convex-bsd |
| 1458 | exit ;; |
| 1459 | c4*) |
| 1460 | echo c4-convex-bsd |
| 1461 | exit ;; |
| 1462 | esac |
| 1463 | fi |
| 1464 | |
| 1465 | cat >&2 <<EOF |
| 1466 | $0: unable to guess system type |
| 1467 | |
| 1468 | This script, last modified $timestamp, has failed to recognize |
| 1469 |
| --- autosetup/config.guess | |
| +++ autosetup/config.guess | |
| @@ -1,44 +1,38 @@ | |
| 1 | #! /bin/sh |
| 2 | # Attempt to guess a canonical system name. |
| 3 | # Copyright 1992-2014 Free Software Foundation, Inc. |
| 4 | |
| 5 | timestamp='2014-03-23' |
| 6 | |
| 7 | # This file is free software; you can redistribute it and/or modify it |
| 8 | # under the terms of the GNU General Public License as published by |
| 9 | # the Free Software Foundation; either version 3 of the License, or |
| 10 | # (at your option) any later version. |
| 11 | # |
| 12 | # This program is distributed in the hope that it will be useful, but |
| 13 | # WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | # General Public License for more details. |
| 16 | # |
| 17 | # You should have received a copy of the GNU General Public License |
| 18 | # along with this program; if not, see <http://www.gnu.org/licenses/>. |
| 19 | # |
| 20 | # As a special exception to the GNU General Public License, if you |
| 21 | # distribute this file as part of a program that contains a |
| 22 | # configuration script generated by Autoconf, you may include it under |
| 23 | # the same distribution terms that you use for the rest of that |
| 24 | # program. This Exception is an additional permission under section 7 |
| 25 | # of the GNU General Public License, version 3 ("GPLv3"). |
| 26 | # |
| 27 | # Originally written by Per Bothner. |
| 28 | # |
| 29 | # You can get the latest version of this script from: |
| 30 | # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD |
| 31 | # |
| 32 | # Please send patches with a ChangeLog entry to [email protected]. |
| 33 | |
| 34 | |
| 35 | me=`echo "$0" | sed -e 's,.*/,,'` |
| 36 | |
| 37 | usage="\ |
| 38 | Usage: $0 [OPTION] |
| @@ -54,13 +48,11 @@ | |
| 48 | |
| 49 | version="\ |
| 50 | GNU config.guess ($timestamp) |
| 51 | |
| 52 | Originally written by Per Bothner. |
| 53 | Copyright 1992-2014 Free Software Foundation, Inc. |
| 54 | |
| 55 | This is free software; see the source for copying conditions. There is NO |
| 56 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." |
| 57 | |
| 58 | help=" |
| @@ -90,11 +82,11 @@ | |
| 82 | if test $# != 0; then |
| 83 | echo "$me: too many arguments$help" >&2 |
| 84 | exit 1 |
| 85 | fi |
| 86 | |
| 87 | trap 'exit 1' 1 2 15 |
| 88 | |
| 89 | # CC_FOR_BUILD -- compiler used by this script. Note that the use of a |
| 90 | # compiler to aid in system detection is discouraged as it requires |
| 91 | # temporary files to be created and, as you can see below, it is a |
| 92 | # headache to deal with in a portable fashion. |
| @@ -104,11 +96,11 @@ | |
| 96 | |
| 97 | # Portable tmp directory creation inspired by the Autoconf team. |
| 98 | |
| 99 | set_cc_for_build=' |
| 100 | trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; |
| 101 | trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; |
| 102 | : ${TMPDIR=/tmp} ; |
| 103 | { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || |
| 104 | { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || |
| 105 | { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || |
| 106 | { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; |
| @@ -137,17 +129,38 @@ | |
| 129 | |
| 130 | UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown |
| 131 | UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown |
| 132 | UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown |
| 133 | UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown |
| 134 | |
| 135 | case "${UNAME_SYSTEM}" in |
| 136 | Linux|GNU|GNU/*) |
| 137 | # If the system lacks a compiler, then just pick glibc. |
| 138 | # We could probably try harder. |
| 139 | LIBC=gnu |
| 140 | |
| 141 | eval $set_cc_for_build |
| 142 | cat <<-EOF > $dummy.c |
| 143 | #include <features.h> |
| 144 | #if defined(__UCLIBC__) |
| 145 | LIBC=uclibc |
| 146 | #elif defined(__dietlibc__) |
| 147 | LIBC=dietlibc |
| 148 | #else |
| 149 | LIBC=gnu |
| 150 | #endif |
| 151 | EOF |
| 152 | eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` |
| 153 | ;; |
| 154 | esac |
| 155 | |
| 156 | # Note: order is significant - the case branches are not exclusive. |
| 157 | |
| 158 | case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in |
| 159 | *:NetBSD:*:*) |
| 160 | # NetBSD (nbsd) targets should (where applicable) match one or |
| 161 | # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, |
| 162 | # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently |
| 163 | # switched to ELF, *-*-netbsd* would select the old |
| 164 | # object file format. This provides both forward |
| 165 | # compatibility and a consistent mechanism for selecting the |
| 166 | # object file format. |
| @@ -179,11 +192,11 @@ | |
| 192 | else |
| 193 | os=netbsdelf |
| 194 | fi |
| 195 | ;; |
| 196 | *) |
| 197 | os=netbsd |
| 198 | ;; |
| 199 | esac |
| 200 | # The OS release |
| 201 | # Debian GNU/NetBSD machines have a different userland, and |
| 202 | # thus, need a distinct triplet. However, they do not need |
| @@ -200,10 +213,14 @@ | |
| 213 | # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: |
| 214 | # contains redundant information, the shorter form: |
| 215 | # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. |
| 216 | echo "${machine}-${os}${release}" |
| 217 | exit ;; |
| 218 | *:Bitrig:*:*) |
| 219 | UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` |
| 220 | echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} |
| 221 | exit ;; |
| 222 | *:OpenBSD:*:*) |
| 223 | UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` |
| 224 | echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} |
| 225 | exit ;; |
| 226 | *:ekkoBSD:*:*) |
| @@ -222,11 +239,11 @@ | |
| 239 | case $UNAME_RELEASE in |
| 240 | *4.0) |
| 241 | UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` |
| 242 | ;; |
| 243 | *5.*) |
| 244 | UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` |
| 245 | ;; |
| 246 | esac |
| 247 | # According to Compaq, /usr/sbin/psrinfo has been available on |
| 248 | # OSF/1 and Tru64 systems produced since 1995. I hope that |
| 249 | # covers most systems running today. This code pipes the CPU |
| @@ -268,11 +285,14 @@ | |
| 285 | # A Vn.n version is a released version. |
| 286 | # A Tn.n version is a released field test version. |
| 287 | # A Xn.n version is an unreleased experimental baselevel. |
| 288 | # 1.2 uses "1.2" for uname -r. |
| 289 | echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` |
| 290 | # Reset EXIT trap before exiting to avoid spurious non-zero exit code. |
| 291 | exitcode=$? |
| 292 | trap '' 0 |
| 293 | exit $exitcode ;; |
| 294 | Alpha\ *:Windows_NT*:*) |
| 295 | # How do we know it's Interix rather than the generic POSIX subsystem? |
| 296 | # Should we change UNAME_MACHINE based on the output of uname instead |
| 297 | # of the specific Alpha model? |
| 298 | echo alpha-pc-interix |
| @@ -294,16 +314,16 @@ | |
| 314 | exit ;; |
| 315 | *:z/VM:*:*) |
| 316 | echo s390-ibm-zvmoe |
| 317 | exit ;; |
| 318 | *:OS400:*:*) |
| 319 | echo powerpc-ibm-os400 |
| 320 | exit ;; |
| 321 | arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) |
| 322 | echo arm-acorn-riscix${UNAME_RELEASE} |
| 323 | exit ;; |
| 324 | arm*:riscos:*:*|arm*:RISCOS:*:*) |
| 325 | echo arm-unknown-riscos |
| 326 | exit ;; |
| 327 | SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) |
| 328 | echo hppa1.1-hitachi-hiuxmpp |
| 329 | exit ;; |
| @@ -393,27 +413,27 @@ | |
| 413 | # to the lowercase version "mint" (or "freemint"). Finally |
| 414 | # the system name "TOS" denotes a system which is actually not |
| 415 | # MiNT. But MiNT is downward compatible to TOS, so this should |
| 416 | # be no problem. |
| 417 | atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) |
| 418 | echo m68k-atari-mint${UNAME_RELEASE} |
| 419 | exit ;; |
| 420 | atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) |
| 421 | echo m68k-atari-mint${UNAME_RELEASE} |
| 422 | exit ;; |
| 423 | *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) |
| 424 | echo m68k-atari-mint${UNAME_RELEASE} |
| 425 | exit ;; |
| 426 | milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) |
| 427 | echo m68k-milan-mint${UNAME_RELEASE} |
| 428 | exit ;; |
| 429 | hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) |
| 430 | echo m68k-hades-mint${UNAME_RELEASE} |
| 431 | exit ;; |
| 432 | *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) |
| 433 | echo m68k-unknown-mint${UNAME_RELEASE} |
| 434 | exit ;; |
| 435 | m68k:machten:*:*) |
| 436 | echo m68k-apple-machten${UNAME_RELEASE} |
| 437 | exit ;; |
| 438 | powerpc:machten:*:*) |
| 439 | echo powerpc-apple-machten${UNAME_RELEASE} |
| @@ -479,12 +499,12 @@ | |
| 499 | exit ;; |
| 500 | m88k:*:3*:R3*) |
| 501 | echo m88k-motorola-sysv3 |
| 502 | exit ;; |
| 503 | AViiON:dgux:*:*) |
| 504 | # DG/UX returns AViiON for all architectures |
| 505 | UNAME_PROCESSOR=`/usr/bin/uname -p` |
| 506 | if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] |
| 507 | then |
| 508 | if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ |
| 509 | [ ${TARGET_BINARY_INTERFACE}x = x ] |
| 510 | then |
| @@ -493,11 +513,11 @@ | |
| 513 | echo m88k-dg-dguxbcs${UNAME_RELEASE} |
| 514 | fi |
| 515 | else |
| 516 | echo i586-dg-dgux${UNAME_RELEASE} |
| 517 | fi |
| 518 | exit ;; |
| 519 | M88*:DolphinOS:*:*) # DolphinOS (SVR3) |
| 520 | echo m88k-dolphin-sysv3 |
| 521 | exit ;; |
| 522 | M88*:*:R3*:*) |
| 523 | # Delta 88k system running SVR3 |
| @@ -593,56 +613,56 @@ | |
| 613 | 9000/31? ) HP_ARCH=m68000 ;; |
| 614 | 9000/[34]?? ) HP_ARCH=m68k ;; |
| 615 | 9000/[678][0-9][0-9]) |
| 616 | if [ -x /usr/bin/getconf ]; then |
| 617 | sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` |
| 618 | sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` |
| 619 | case "${sc_cpu_version}" in |
| 620 | 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 |
| 621 | 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 |
| 622 | 532) # CPU_PA_RISC2_0 |
| 623 | case "${sc_kernel_bits}" in |
| 624 | 32) HP_ARCH="hppa2.0n" ;; |
| 625 | 64) HP_ARCH="hppa2.0w" ;; |
| 626 | '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 |
| 627 | esac ;; |
| 628 | esac |
| 629 | fi |
| 630 | if [ "${HP_ARCH}" = "" ]; then |
| 631 | eval $set_cc_for_build |
| 632 | sed 's/^ //' << EOF >$dummy.c |
| 633 | |
| 634 | #define _HPUX_SOURCE |
| 635 | #include <stdlib.h> |
| 636 | #include <unistd.h> |
| 637 | |
| 638 | int main () |
| 639 | { |
| 640 | #if defined(_SC_KERNEL_BITS) |
| 641 | long bits = sysconf(_SC_KERNEL_BITS); |
| 642 | #endif |
| 643 | long cpu = sysconf (_SC_CPU_VERSION); |
| 644 | |
| 645 | switch (cpu) |
| 646 | { |
| 647 | case CPU_PA_RISC1_0: puts ("hppa1.0"); break; |
| 648 | case CPU_PA_RISC1_1: puts ("hppa1.1"); break; |
| 649 | case CPU_PA_RISC2_0: |
| 650 | #if defined(_SC_KERNEL_BITS) |
| 651 | switch (bits) |
| 652 | { |
| 653 | case 64: puts ("hppa2.0w"); break; |
| 654 | case 32: puts ("hppa2.0n"); break; |
| 655 | default: puts ("hppa2.0"); break; |
| 656 | } break; |
| 657 | #else /* !defined(_SC_KERNEL_BITS) */ |
| 658 | puts ("hppa2.0"); break; |
| 659 | #endif |
| 660 | default: puts ("hppa1.0"); break; |
| 661 | } |
| 662 | exit (0); |
| 663 | } |
| 664 | EOF |
| 665 | (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` |
| 666 | test -z "$HP_ARCH" && HP_ARCH=hppa |
| 667 | fi ;; |
| 668 | esac |
| @@ -729,26 +749,26 @@ | |
| 749 | parisc*:Lites*:*:*) |
| 750 | echo hppa1.1-hp-lites |
| 751 | exit ;; |
| 752 | C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) |
| 753 | echo c1-convex-bsd |
| 754 | exit ;; |
| 755 | C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) |
| 756 | if getsysinfo -f scalar_acc |
| 757 | then echo c32-convex-bsd |
| 758 | else echo c2-convex-bsd |
| 759 | fi |
| 760 | exit ;; |
| 761 | C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) |
| 762 | echo c34-convex-bsd |
| 763 | exit ;; |
| 764 | C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) |
| 765 | echo c38-convex-bsd |
| 766 | exit ;; |
| 767 | C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) |
| 768 | echo c4-convex-bsd |
| 769 | exit ;; |
| 770 | CRAY*Y-MP:*:*:*) |
| 771 | echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' |
| 772 | exit ;; |
| 773 | CRAY*[A-Z]90:*:*:*) |
| 774 | echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ |
| @@ -768,18 +788,18 @@ | |
| 788 | *:UNICOS/mp:*:*) |
| 789 | echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' |
| 790 | exit ;; |
| 791 | F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) |
| 792 | FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` |
| 793 | FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` |
| 794 | FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` |
| 795 | echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" |
| 796 | exit ;; |
| 797 | 5000:UNIX_System_V:4.*:*) |
| 798 | FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` |
| 799 | FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` |
| 800 | echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" |
| 801 | exit ;; |
| 802 | i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) |
| 803 | echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} |
| 804 | exit ;; |
| 805 | sparc*:BSD/OS:*:*) |
| @@ -787,37 +807,39 @@ | |
| 807 | exit ;; |
| 808 | *:BSD/OS:*:*) |
| 809 | echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} |
| 810 | exit ;; |
| 811 | *:FreeBSD:*:*) |
| 812 | UNAME_PROCESSOR=`/usr/bin/uname -p` |
| 813 | case ${UNAME_PROCESSOR} in |
| 814 | amd64) |
| 815 | echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; |
| 816 | *) |
| 817 | echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; |
| 818 | esac |
| 819 | exit ;; |
| 820 | i*:CYGWIN*:*) |
| 821 | echo ${UNAME_MACHINE}-pc-cygwin |
| 822 | exit ;; |
| 823 | *:MINGW64*:*) |
| 824 | echo ${UNAME_MACHINE}-pc-mingw64 |
| 825 | exit ;; |
| 826 | *:MINGW*:*) |
| 827 | echo ${UNAME_MACHINE}-pc-mingw32 |
| 828 | exit ;; |
| 829 | *:MSYS*:*) |
| 830 | echo ${UNAME_MACHINE}-pc-msys |
| 831 | exit ;; |
| 832 | i*:windows32*:*) |
| 833 | # uname -m includes "-pc" on this system. |
| 834 | echo ${UNAME_MACHINE}-mingw32 |
| 835 | exit ;; |
| 836 | i*:PW*:*) |
| 837 | echo ${UNAME_MACHINE}-pc-pw32 |
| 838 | exit ;; |
| 839 | *:Interix*:*) |
| 840 | case ${UNAME_MACHINE} in |
| 841 | x86) |
| 842 | echo i586-pc-interix${UNAME_RELEASE} |
| 843 | exit ;; |
| 844 | authenticamd | genuineintel | EM64T) |
| 845 | echo x86_64-unknown-interix${UNAME_RELEASE} |
| @@ -850,74 +872,85 @@ | |
| 872 | prep*:SunOS:5.*:*) |
| 873 | echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` |
| 874 | exit ;; |
| 875 | *:GNU:*:*) |
| 876 | # the GNU system |
| 877 | echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` |
| 878 | exit ;; |
| 879 | *:GNU/*:*:*) |
| 880 | # other systems with GNU libc and userland |
| 881 | echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} |
| 882 | exit ;; |
| 883 | i*86:Minix:*:*) |
| 884 | echo ${UNAME_MACHINE}-pc-minix |
| 885 | exit ;; |
| 886 | aarch64:Linux:*:*) |
| 887 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 888 | exit ;; |
| 889 | aarch64_be:Linux:*:*) |
| 890 | UNAME_MACHINE=aarch64_be |
| 891 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 892 | exit ;; |
| 893 | alpha:Linux:*:*) |
| 894 | case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in |
| 895 | EV5) UNAME_MACHINE=alphaev5 ;; |
| 896 | EV56) UNAME_MACHINE=alphaev56 ;; |
| 897 | PCA56) UNAME_MACHINE=alphapca56 ;; |
| 898 | PCA57) UNAME_MACHINE=alphapca56 ;; |
| 899 | EV6) UNAME_MACHINE=alphaev6 ;; |
| 900 | EV67) UNAME_MACHINE=alphaev67 ;; |
| 901 | EV68*) UNAME_MACHINE=alphaev68 ;; |
| 902 | esac |
| 903 | objdump --private-headers /bin/sh | grep -q ld.so.1 |
| 904 | if test "$?" = 0 ; then LIBC="gnulibc1" ; fi |
| 905 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 906 | exit ;; |
| 907 | arc:Linux:*:* | arceb:Linux:*:*) |
| 908 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 909 | exit ;; |
| 910 | arm*:Linux:*:*) |
| 911 | eval $set_cc_for_build |
| 912 | if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ |
| 913 | | grep -q __ARM_EABI__ |
| 914 | then |
| 915 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 916 | else |
| 917 | if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ |
| 918 | | grep -q __ARM_PCS_VFP |
| 919 | then |
| 920 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi |
| 921 | else |
| 922 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf |
| 923 | fi |
| 924 | fi |
| 925 | exit ;; |
| 926 | avr32*:Linux:*:*) |
| 927 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 928 | exit ;; |
| 929 | cris:Linux:*:*) |
| 930 | echo ${UNAME_MACHINE}-axis-linux-${LIBC} |
| 931 | exit ;; |
| 932 | crisv32:Linux:*:*) |
| 933 | echo ${UNAME_MACHINE}-axis-linux-${LIBC} |
| 934 | exit ;; |
| 935 | frv:Linux:*:*) |
| 936 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 937 | exit ;; |
| 938 | hexagon:Linux:*:*) |
| 939 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 940 | exit ;; |
| 941 | i*86:Linux:*:*) |
| 942 | echo ${UNAME_MACHINE}-pc-linux-${LIBC} |
| 943 | exit ;; |
| 944 | ia64:Linux:*:*) |
| 945 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 946 | exit ;; |
| 947 | m32r*:Linux:*:*) |
| 948 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 949 | exit ;; |
| 950 | m68*:Linux:*:*) |
| 951 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 952 | exit ;; |
| 953 | mips:Linux:*:* | mips64:Linux:*:*) |
| 954 | eval $set_cc_for_build |
| 955 | sed 's/^ //' << EOF >$dummy.c |
| 956 | #undef CPU |
| @@ -932,71 +965,80 @@ | |
| 965 | CPU= |
| 966 | #endif |
| 967 | #endif |
| 968 | EOF |
| 969 | eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` |
| 970 | test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } |
| 971 | ;; |
| 972 | openrisc*:Linux:*:*) |
| 973 | echo or1k-unknown-linux-${LIBC} |
| 974 | exit ;; |
| 975 | or32:Linux:*:* | or1k*:Linux:*:*) |
| 976 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 977 | exit ;; |
| 978 | padre:Linux:*:*) |
| 979 | echo sparc-unknown-linux-${LIBC} |
| 980 | exit ;; |
| 981 | parisc64:Linux:*:* | hppa64:Linux:*:*) |
| 982 | echo hppa64-unknown-linux-${LIBC} |
| 983 | exit ;; |
| 984 | parisc:Linux:*:* | hppa:Linux:*:*) |
| 985 | # Look for CPU level |
| 986 | case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in |
| 987 | PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; |
| 988 | PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; |
| 989 | *) echo hppa-unknown-linux-${LIBC} ;; |
| 990 | esac |
| 991 | exit ;; |
| 992 | ppc64:Linux:*:*) |
| 993 | echo powerpc64-unknown-linux-${LIBC} |
| 994 | exit ;; |
| 995 | ppc:Linux:*:*) |
| 996 | echo powerpc-unknown-linux-${LIBC} |
| 997 | exit ;; |
| 998 | ppc64le:Linux:*:*) |
| 999 | echo powerpc64le-unknown-linux-${LIBC} |
| 1000 | exit ;; |
| 1001 | ppcle:Linux:*:*) |
| 1002 | echo powerpcle-unknown-linux-${LIBC} |
| 1003 | exit ;; |
| 1004 | s390:Linux:*:* | s390x:Linux:*:*) |
| 1005 | echo ${UNAME_MACHINE}-ibm-linux-${LIBC} |
| 1006 | exit ;; |
| 1007 | sh64*:Linux:*:*) |
| 1008 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 1009 | exit ;; |
| 1010 | sh*:Linux:*:*) |
| 1011 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 1012 | exit ;; |
| 1013 | sparc:Linux:*:* | sparc64:Linux:*:*) |
| 1014 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 1015 | exit ;; |
| 1016 | tile*:Linux:*:*) |
| 1017 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 1018 | exit ;; |
| 1019 | vax:Linux:*:*) |
| 1020 | echo ${UNAME_MACHINE}-dec-linux-${LIBC} |
| 1021 | exit ;; |
| 1022 | x86_64:Linux:*:*) |
| 1023 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 1024 | exit ;; |
| 1025 | xtensa*:Linux:*:*) |
| 1026 | echo ${UNAME_MACHINE}-unknown-linux-${LIBC} |
| 1027 | exit ;; |
| 1028 | i*86:DYNIX/ptx:4*:*) |
| 1029 | # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. |
| 1030 | # earlier versions are messed up and put the nodename in both |
| 1031 | # sysname and nodename. |
| 1032 | echo i386-sequent-sysv4 |
| 1033 | exit ;; |
| 1034 | i*86:UNIX_SV:4.2MP:2.*) |
| 1035 | # Unixware is an offshoot of SVR4, but it has its own version |
| 1036 | # number series starting with 2... |
| 1037 | # I am not positive that other SVR4 systems won't match this, |
| 1038 | # I just have to hope. -- rms. |
| 1039 | # Use sysv4.2uw... so that sysv4* matches it. |
| 1040 | echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} |
| 1041 | exit ;; |
| 1042 | i*86:OS/2:*:*) |
| 1043 | # If we were able to find `uname', then EMX Unix compatibility |
| 1044 | # is probably installed. |
| @@ -1024,11 +1066,11 @@ | |
| 1066 | else |
| 1067 | echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} |
| 1068 | fi |
| 1069 | exit ;; |
| 1070 | i*86:*:5:[678]*) |
| 1071 | # UnixWare 7.x, OpenUNIX and OpenServer 6. |
| 1072 | case `/bin/uname -X | grep "^Machine"` in |
| 1073 | *486*) UNAME_MACHINE=i486 ;; |
| 1074 | *Pentium) UNAME_MACHINE=i586 ;; |
| 1075 | *Pent*|*Celeron) UNAME_MACHINE=i686 ;; |
| 1076 | esac |
| @@ -1052,17 +1094,17 @@ | |
| 1094 | echo ${UNAME_MACHINE}-pc-sysv32 |
| 1095 | fi |
| 1096 | exit ;; |
| 1097 | pc:*:*:*) |
| 1098 | # Left here for compatibility: |
| 1099 | # uname -m prints for DJGPP always 'pc', but it prints nothing about |
| 1100 | # the processor, so we play safe by assuming i586. |
| 1101 | # Note: whatever this is, it MUST be the same as what config.sub |
| 1102 | # prints for the "djgpp" host, or else GDB configury will decide that |
| 1103 | # this is a cross-build. |
| 1104 | echo i586-pc-msdosdjgpp |
| 1105 | exit ;; |
| 1106 | Intel:Mach:3*:*) |
| 1107 | echo i386-pc-mach3 |
| 1108 | exit ;; |
| 1109 | paragon:*:*:*) |
| 1110 | echo i860-intel-osf1 |
| @@ -1093,12 +1135,12 @@ | |
| 1135 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ |
| 1136 | && { echo i486-ncr-sysv4.3${OS_REL}; exit; } |
| 1137 | /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ |
| 1138 | && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; |
| 1139 | 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) |
| 1140 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ |
| 1141 | && { echo i486-ncr-sysv4; exit; } ;; |
| 1142 | NCR*:*:4.2:* | MPRAS*:*:4.2:*) |
| 1143 | OS_REL='.3' |
| 1144 | test -r /etc/.relid \ |
| 1145 | && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` |
| 1146 | /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ |
| @@ -1137,14 +1179,14 @@ | |
| 1179 | echo ${UNAME_MACHINE}-sni-sysv4 |
| 1180 | else |
| 1181 | echo ns32k-sni-sysv |
| 1182 | fi |
| 1183 | exit ;; |
| 1184 | PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort |
| 1185 | # says <[email protected]> |
| 1186 | echo i586-unisys-sysv4 |
| 1187 | exit ;; |
| 1188 | *:UNIX_System_V:4*:FTX*) |
| 1189 | # From Gerald Hewes <[email protected]>. |
| 1190 | # How about differentiating between stratus architectures? -djm |
| 1191 | echo hppa1.1-stratus-sysv4 |
| 1192 | exit ;; |
| @@ -1166,15 +1208,15 @@ | |
| 1208 | news*:NEWS-OS:6*:*) |
| 1209 | echo mips-sony-newsos6 |
| 1210 | exit ;; |
| 1211 | R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) |
| 1212 | if [ -d /usr/nec ]; then |
| 1213 | echo mips-nec-sysv${UNAME_RELEASE} |
| 1214 | else |
| 1215 | echo mips-unknown-sysv${UNAME_RELEASE} |
| 1216 | fi |
| 1217 | exit ;; |
| 1218 | BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. |
| 1219 | echo powerpc-be-beos |
| 1220 | exit ;; |
| 1221 | BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. |
| 1222 | echo powerpc-apple-beos |
| @@ -1183,10 +1225,13 @@ | |
| 1225 | echo i586-pc-beos |
| 1226 | exit ;; |
| 1227 | BePC:Haiku:*:*) # Haiku running on Intel PC compatible. |
| 1228 | echo i586-pc-haiku |
| 1229 | exit ;; |
| 1230 | x86_64:Haiku:*:*) |
| 1231 | echo x86_64-unknown-haiku |
| 1232 | exit ;; |
| 1233 | SX-4:SUPER-UX:*:*) |
| 1234 | echo sx4-nec-superux${UNAME_RELEASE} |
| 1235 | exit ;; |
| 1236 | SX-5:SUPER-UX:*:*) |
| 1237 | echo sx5-nec-superux${UNAME_RELEASE} |
| @@ -1209,23 +1254,35 @@ | |
| 1254 | *:Rhapsody:*:*) |
| 1255 | echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} |
| 1256 | exit ;; |
| 1257 | *:Darwin:*:*) |
| 1258 | UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown |
| 1259 | eval $set_cc_for_build |
| 1260 | if test "$UNAME_PROCESSOR" = unknown ; then |
| 1261 | UNAME_PROCESSOR=powerpc |
| 1262 | fi |
| 1263 | if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then |
| 1264 | if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then |
| 1265 | if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ |
| 1266 | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ |
| 1267 | grep IS_64BIT_ARCH >/dev/null |
| 1268 | then |
| 1269 | case $UNAME_PROCESSOR in |
| 1270 | i386) UNAME_PROCESSOR=x86_64 ;; |
| 1271 | powerpc) UNAME_PROCESSOR=powerpc64 ;; |
| 1272 | esac |
| 1273 | fi |
| 1274 | fi |
| 1275 | elif test "$UNAME_PROCESSOR" = i386 ; then |
| 1276 | # Avoid executing cc on OS X 10.9, as it ships with a stub |
| 1277 | # that puts up a graphical alert prompting to install |
| 1278 | # developer tools. Any system running Mac OS X 10.7 or |
| 1279 | # later (Darwin 11 and later) is required to have a 64-bit |
| 1280 | # processor. This is not true of the ARM version of Darwin |
| 1281 | # that Apple uses in portable devices. |
| 1282 | UNAME_PROCESSOR=x86_64 |
| 1283 | fi |
| 1284 | echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} |
| 1285 | exit ;; |
| 1286 | *:procnto*:*:* | *:QNX:[0123456789]*:*) |
| 1287 | UNAME_PROCESSOR=`uname -p` |
| 1288 | if test "$UNAME_PROCESSOR" = "x86"; then |
| @@ -1238,11 +1295,11 @@ | |
| 1295 | echo i386-pc-qnx |
| 1296 | exit ;; |
| 1297 | NEO-?:NONSTOP_KERNEL:*:*) |
| 1298 | echo neo-tandem-nsk${UNAME_RELEASE} |
| 1299 | exit ;; |
| 1300 | NSE-*:NONSTOP_KERNEL:*:*) |
| 1301 | echo nse-tandem-nsk${UNAME_RELEASE} |
| 1302 | exit ;; |
| 1303 | NSR-?:NONSTOP_KERNEL:*:*) |
| 1304 | echo nsr-tandem-nsk${UNAME_RELEASE} |
| 1305 | exit ;; |
| @@ -1283,17 +1340,17 @@ | |
| 1340 | exit ;; |
| 1341 | *:ITS:*:*) |
| 1342 | echo pdp10-unknown-its |
| 1343 | exit ;; |
| 1344 | SEI:*:*:SEIUX) |
| 1345 | echo mips-sei-seiux${UNAME_RELEASE} |
| 1346 | exit ;; |
| 1347 | *:DragonFly:*:*) |
| 1348 | echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` |
| 1349 | exit ;; |
| 1350 | *:*VMS:*:*) |
| 1351 | UNAME_MACHINE=`(uname -p) 2>/dev/null` |
| 1352 | case "${UNAME_MACHINE}" in |
| 1353 | A*) echo alpha-dec-vms ; exit ;; |
| 1354 | I*) echo ia64-dec-vms ; exit ;; |
| 1355 | V*) echo vax-dec-vms ; exit ;; |
| 1356 | esac ;; |
| @@ -1307,162 +1364,14 @@ | |
| 1364 | echo ${UNAME_MACHINE}-pc-rdos |
| 1365 | exit ;; |
| 1366 | i*86:AROS:*:*) |
| 1367 | echo ${UNAME_MACHINE}-pc-aros |
| 1368 | exit ;; |
| 1369 | x86_64:VMkernel:*:*) |
| 1370 | echo ${UNAME_MACHINE}-unknown-esx |
| 1371 | exit ;; |
| 1372 | esac |
| 1373 | |
| 1374 | cat >&2 <<EOF |
| 1375 | $0: unable to guess system type |
| 1376 | |
| 1377 | This script, last modified $timestamp, has failed to recognize |
| 1378 |
+154
-103
| --- autosetup/config.sub | ||
| +++ autosetup/config.sub | ||
| @@ -1,40 +1,33 @@ | ||
| 1 | 1 | #! /bin/sh |
| 2 | 2 | # Configuration validation subroutine script. |
| 3 | -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, | |
| 4 | -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 | |
| 5 | -# Free Software Foundation, Inc. | |
| 6 | - | |
| 7 | -timestamp='2010-09-11' | |
| 8 | - | |
| 9 | -# This file is (in principle) common to ALL GNU software. | |
| 10 | -# The presence of a machine in this file suggests that SOME GNU software | |
| 11 | -# can handle that machine. It does not imply ALL GNU software can. | |
| 12 | -# | |
| 13 | -# This file is free software; you can redistribute it and/or modify | |
| 14 | -# it under the terms of the GNU General Public License as published by | |
| 15 | -# the Free Software Foundation; either version 2 of the License, or | |
| 3 | +# Copyright 1992-2014 Free Software Foundation, Inc. | |
| 4 | + | |
| 5 | +timestamp='2014-05-01' | |
| 6 | + | |
| 7 | +# This file is free software; you can redistribute it and/or modify it | |
| 8 | +# under the terms of the GNU General Public License as published by | |
| 9 | +# the Free Software Foundation; either version 3 of the License, or | |
| 16 | 10 | # (at your option) any later version. |
| 17 | 11 | # |
| 18 | -# This program is distributed in the hope that it will be useful, | |
| 19 | -# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 20 | -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 21 | -# GNU General Public License for more details. | |
| 12 | +# This program is distributed in the hope that it will be useful, but | |
| 13 | +# WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 15 | +# General Public License for more details. | |
| 22 | 16 | # |
| 23 | 17 | # You should have received a copy of the GNU General Public License |
| 24 | -# along with this program; if not, write to the Free Software | |
| 25 | -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA | |
| 26 | -# 02110-1301, USA. | |
| 18 | +# along with this program; if not, see <http://www.gnu.org/licenses/>. | |
| 27 | 19 | # |
| 28 | 20 | # As a special exception to the GNU General Public License, if you |
| 29 | 21 | # distribute this file as part of a program that contains a |
| 30 | 22 | # configuration script generated by Autoconf, you may include it under |
| 31 | -# the same distribution terms that you use for the rest of that program. | |
| 23 | +# the same distribution terms that you use for the rest of that | |
| 24 | +# program. This Exception is an additional permission under section 7 | |
| 25 | +# of the GNU General Public License, version 3 ("GPLv3"). | |
| 32 | 26 | |
| 33 | 27 | |
| 34 | -# Please send patches to <[email protected]>. Submit a context | |
| 35 | -# diff and a properly formatted GNU ChangeLog entry. | |
| 28 | +# Please send patches with a ChangeLog entry to [email protected]. | |
| 36 | 29 | # |
| 37 | 30 | # Configuration subroutine to validate and canonicalize a configuration type. |
| 38 | 31 | # Supply the specified configuration type as an argument. |
| 39 | 32 | # If it is invalid, we print an error message on stderr and exit with code 1. |
| 40 | 33 | # Otherwise, we print the canonical config type on stdout and succeed. |
| @@ -73,13 +66,11 @@ | ||
| 73 | 66 | Report bugs and patches to <[email protected]>." |
| 74 | 67 | |
| 75 | 68 | version="\ |
| 76 | 69 | GNU config.sub ($timestamp) |
| 77 | 70 | |
| 78 | -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, | |
| 79 | -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free | |
| 80 | -Software Foundation, Inc. | |
| 71 | +Copyright 1992-2014 Free Software Foundation, Inc. | |
| 81 | 72 | |
| 82 | 73 | This is free software; see the source for copying conditions. There is NO |
| 83 | 74 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." |
| 84 | 75 | |
| 85 | 76 | help=" |
| @@ -123,17 +114,21 @@ | ||
| 123 | 114 | # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). |
| 124 | 115 | # Here we must recognize all the valid KERNEL-OS combinations. |
| 125 | 116 | maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` |
| 126 | 117 | case $maybe_os in |
| 127 | 118 | nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ |
| 128 | - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ | |
| 119 | + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ | |
| 129 | 120 | knetbsd*-gnu* | netbsd*-gnu* | \ |
| 130 | 121 | kopensolaris*-gnu* | \ |
| 131 | 122 | storm-chaos* | os2-emx* | rtmk-nova*) |
| 132 | 123 | os=-$maybe_os |
| 133 | 124 | basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` |
| 134 | 125 | ;; |
| 126 | + android-linux) | |
| 127 | + os=-linux-android | |
| 128 | + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown | |
| 129 | + ;; | |
| 135 | 130 | *) |
| 136 | 131 | basic_machine=`echo $1 | sed 's/-[^-]*$//'` |
| 137 | 132 | if [ $basic_machine != $1 ] |
| 138 | 133 | then os=`echo $1 | sed 's/.*-/-/'` |
| 139 | 134 | else os=; fi |
| @@ -152,16 +147,16 @@ | ||
| 152 | 147 | -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ |
| 153 | 148 | -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ |
| 154 | 149 | -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ |
| 155 | 150 | -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ |
| 156 | 151 | -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ |
| 157 | - -apple | -axis | -knuth | -cray | -microblaze) | |
| 152 | + -apple | -axis | -knuth | -cray | -microblaze*) | |
| 158 | 153 | os= |
| 159 | 154 | basic_machine=$1 |
| 160 | 155 | ;; |
| 161 | - -bluegene*) | |
| 162 | - os=-cnk | |
| 156 | + -bluegene*) | |
| 157 | + os=-cnk | |
| 163 | 158 | ;; |
| 164 | 159 | -sim | -cisco | -oki | -wec | -winbond) |
| 165 | 160 | os= |
| 166 | 161 | basic_machine=$1 |
| 167 | 162 | ;; |
| @@ -173,14 +168,14 @@ | ||
| 173 | 168 | ;; |
| 174 | 169 | -chorusos*) |
| 175 | 170 | os=-chorusos |
| 176 | 171 | basic_machine=$1 |
| 177 | 172 | ;; |
| 178 | - -chorusrdb) | |
| 179 | - os=-chorusrdb | |
| 173 | + -chorusrdb) | |
| 174 | + os=-chorusrdb | |
| 180 | 175 | basic_machine=$1 |
| 181 | - ;; | |
| 176 | + ;; | |
| 182 | 177 | -hiux*) |
| 183 | 178 | os=-hiuxwe2 |
| 184 | 179 | ;; |
| 185 | 180 | -sco6) |
| 186 | 181 | os=-sco5v6 |
| @@ -221,10 +216,16 @@ | ||
| 221 | 216 | basic_machine=clipper-intergraph |
| 222 | 217 | ;; |
| 223 | 218 | -isc*) |
| 224 | 219 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` |
| 225 | 220 | ;; |
| 221 | + -lynx*178) | |
| 222 | + os=-lynxos178 | |
| 223 | + ;; | |
| 224 | + -lynx*5) | |
| 225 | + os=-lynxos5 | |
| 226 | + ;; | |
| 226 | 227 | -lynx*) |
| 227 | 228 | os=-lynxos |
| 228 | 229 | ;; |
| 229 | 230 | -ptx*) |
| 230 | 231 | basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` |
| @@ -245,24 +246,32 @@ | ||
| 245 | 246 | case $basic_machine in |
| 246 | 247 | # Recognize the basic CPU types without company name. |
| 247 | 248 | # Some are omitted here because they have special meanings below. |
| 248 | 249 | 1750a | 580 \ |
| 249 | 250 | | a29k \ |
| 251 | + | aarch64 | aarch64_be \ | |
| 250 | 252 | | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ |
| 251 | 253 | | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ |
| 252 | 254 | | am33_2.0 \ |
| 253 | - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | |
| 255 | + | arc | arceb \ | |
| 256 | + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | |
| 257 | + | avr | avr32 \ | |
| 258 | + | be32 | be64 \ | |
| 254 | 259 | | bfin \ |
| 255 | - | c4x | clipper \ | |
| 260 | + | c4x | c8051 | clipper \ | |
| 256 | 261 | | d10v | d30v | dlx | dsp16xx \ |
| 262 | + | epiphany \ | |
| 257 | 263 | | fido | fr30 | frv \ |
| 258 | 264 | | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ |
| 265 | + | hexagon \ | |
| 259 | 266 | | i370 | i860 | i960 | ia64 \ |
| 260 | 267 | | ip2k | iq2000 \ |
| 268 | + | k1om \ | |
| 269 | + | le32 | le64 \ | |
| 261 | 270 | | lm32 \ |
| 262 | 271 | | m32c | m32r | m32rle | m68000 | m68k | m88k \ |
| 263 | - | maxq | mb | microblaze | mcore | mep | metag \ | |
| 272 | + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | |
| 264 | 273 | | mips | mipsbe | mipseb | mipsel | mipsle \ |
| 265 | 274 | | mips16 \ |
| 266 | 275 | | mips64 | mips64el \ |
| 267 | 276 | | mips64octeon | mips64octeonel \ |
| 268 | 277 | | mips64orion | mips64orionel \ |
| @@ -272,38 +281,41 @@ | ||
| 272 | 281 | | mips64vr4300 | mips64vr4300el \ |
| 273 | 282 | | mips64vr5000 | mips64vr5000el \ |
| 274 | 283 | | mips64vr5900 | mips64vr5900el \ |
| 275 | 284 | | mipsisa32 | mipsisa32el \ |
| 276 | 285 | | mipsisa32r2 | mipsisa32r2el \ |
| 286 | + | mipsisa32r6 | mipsisa32r6el \ | |
| 277 | 287 | | mipsisa64 | mipsisa64el \ |
| 278 | 288 | | mipsisa64r2 | mipsisa64r2el \ |
| 289 | + | mipsisa64r6 | mipsisa64r6el \ | |
| 279 | 290 | | mipsisa64sb1 | mipsisa64sb1el \ |
| 280 | 291 | | mipsisa64sr71k | mipsisa64sr71kel \ |
| 292 | + | mipsr5900 | mipsr5900el \ | |
| 281 | 293 | | mipstx39 | mipstx39el \ |
| 282 | 294 | | mn10200 | mn10300 \ |
| 283 | 295 | | moxie \ |
| 284 | 296 | | mt \ |
| 285 | 297 | | msp430 \ |
| 286 | 298 | | nds32 | nds32le | nds32be \ |
| 287 | - | nios | nios2 \ | |
| 299 | + | nios | nios2 | nios2eb | nios2el \ | |
| 288 | 300 | | ns16k | ns32k \ |
| 289 | - | or32 \ | |
| 301 | + | open8 | or1k | or1knd | or32 \ | |
| 290 | 302 | | pdp10 | pdp11 | pj | pjl \ |
| 291 | - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | |
| 303 | + | powerpc | powerpc64 | powerpc64le | powerpcle \ | |
| 292 | 304 | | pyramid \ |
| 293 | - | rx \ | |
| 305 | + | rl78 | rx \ | |
| 294 | 306 | | score \ |
| 295 | 307 | | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ |
| 296 | 308 | | sh64 | sh64le \ |
| 297 | 309 | | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ |
| 298 | 310 | | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ |
| 299 | - | spu | strongarm \ | |
| 300 | - | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | |
| 311 | + | spu \ | |
| 312 | + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | |
| 301 | 313 | | ubicom32 \ |
| 302 | - | v850 | v850e \ | |
| 314 | + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | |
| 303 | 315 | | we32k \ |
| 304 | - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | |
| 316 | + | x86 | xc16x | xstormy16 | xtensa \ | |
| 305 | 317 | | z8k | z80) |
| 306 | 318 | basic_machine=$basic_machine-unknown |
| 307 | 319 | ;; |
| 308 | 320 | c54x) |
| 309 | 321 | basic_machine=tic54x-unknown |
| @@ -312,20 +324,34 @@ | ||
| 312 | 324 | basic_machine=tic55x-unknown |
| 313 | 325 | ;; |
| 314 | 326 | c6x) |
| 315 | 327 | basic_machine=tic6x-unknown |
| 316 | 328 | ;; |
| 317 | - m6811 | m68hc11 | m6812 | m68hc12 | picochip) | |
| 318 | - # Motorola 68HC11/12. | |
| 329 | + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) | |
| 319 | 330 | basic_machine=$basic_machine-unknown |
| 320 | 331 | os=-none |
| 321 | 332 | ;; |
| 322 | 333 | m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) |
| 323 | 334 | ;; |
| 324 | 335 | ms1) |
| 325 | 336 | basic_machine=mt-unknown |
| 326 | 337 | ;; |
| 338 | + | |
| 339 | + strongarm | thumb | xscale) | |
| 340 | + basic_machine=arm-unknown | |
| 341 | + ;; | |
| 342 | + xgate) | |
| 343 | + basic_machine=$basic_machine-unknown | |
| 344 | + os=-none | |
| 345 | + ;; | |
| 346 | + xscaleeb) | |
| 347 | + basic_machine=armeb-unknown | |
| 348 | + ;; | |
| 349 | + | |
| 350 | + xscaleel) | |
| 351 | + basic_machine=armel-unknown | |
| 352 | + ;; | |
| 327 | 353 | |
| 328 | 354 | # We use `pc' rather than `unknown' |
| 329 | 355 | # because (1) that's what they normally are, and |
| 330 | 356 | # (2) the word "unknown" tends to confuse beginning users. |
| 331 | 357 | i*86 | x86_64) |
| @@ -337,29 +363,35 @@ | ||
| 337 | 363 | exit 1 |
| 338 | 364 | ;; |
| 339 | 365 | # Recognize the basic CPU types with company name. |
| 340 | 366 | 580-* \ |
| 341 | 367 | | a29k-* \ |
| 368 | + | aarch64-* | aarch64_be-* \ | |
| 342 | 369 | | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ |
| 343 | 370 | | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ |
| 344 | - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | |
| 371 | + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | |
| 345 | 372 | | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ |
| 346 | 373 | | avr-* | avr32-* \ |
| 374 | + | be32-* | be64-* \ | |
| 347 | 375 | | bfin-* | bs2000-* \ |
| 348 | 376 | | c[123]* | c30-* | [cjt]90-* | c4x-* \ |
| 349 | - | clipper-* | craynv-* | cydra-* \ | |
| 377 | + | c8051-* | clipper-* | craynv-* | cydra-* \ | |
| 350 | 378 | | d10v-* | d30v-* | dlx-* \ |
| 351 | 379 | | elxsi-* \ |
| 352 | 380 | | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ |
| 353 | 381 | | h8300-* | h8500-* \ |
| 354 | 382 | | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ |
| 383 | + | hexagon-* \ | |
| 355 | 384 | | i*86-* | i860-* | i960-* | ia64-* \ |
| 356 | 385 | | ip2k-* | iq2000-* \ |
| 386 | + | k1om-* \ | |
| 387 | + | le32-* | le64-* \ | |
| 357 | 388 | | lm32-* \ |
| 358 | 389 | | m32c-* | m32r-* | m32rle-* \ |
| 359 | 390 | | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ |
| 360 | - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | |
| 391 | + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | |
| 392 | + | microblaze-* | microblazeel-* \ | |
| 361 | 393 | | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ |
| 362 | 394 | | mips16-* \ |
| 363 | 395 | | mips64-* | mips64el-* \ |
| 364 | 396 | | mips64octeon-* | mips64octeonel-* \ |
| 365 | 397 | | mips64orion-* | mips64orionel-* \ |
| @@ -369,39 +401,45 @@ | ||
| 369 | 401 | | mips64vr4300-* | mips64vr4300el-* \ |
| 370 | 402 | | mips64vr5000-* | mips64vr5000el-* \ |
| 371 | 403 | | mips64vr5900-* | mips64vr5900el-* \ |
| 372 | 404 | | mipsisa32-* | mipsisa32el-* \ |
| 373 | 405 | | mipsisa32r2-* | mipsisa32r2el-* \ |
| 406 | + | mipsisa32r6-* | mipsisa32r6el-* \ | |
| 374 | 407 | | mipsisa64-* | mipsisa64el-* \ |
| 375 | 408 | | mipsisa64r2-* | mipsisa64r2el-* \ |
| 409 | + | mipsisa64r6-* | mipsisa64r6el-* \ | |
| 376 | 410 | | mipsisa64sb1-* | mipsisa64sb1el-* \ |
| 377 | 411 | | mipsisa64sr71k-* | mipsisa64sr71kel-* \ |
| 412 | + | mipsr5900-* | mipsr5900el-* \ | |
| 378 | 413 | | mipstx39-* | mipstx39el-* \ |
| 379 | 414 | | mmix-* \ |
| 380 | 415 | | mt-* \ |
| 381 | 416 | | msp430-* \ |
| 382 | 417 | | nds32-* | nds32le-* | nds32be-* \ |
| 383 | - | nios-* | nios2-* \ | |
| 418 | + | nios-* | nios2-* | nios2eb-* | nios2el-* \ | |
| 384 | 419 | | none-* | np1-* | ns16k-* | ns32k-* \ |
| 420 | + | open8-* \ | |
| 421 | + | or1k*-* \ | |
| 385 | 422 | | orion-* \ |
| 386 | 423 | | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ |
| 387 | - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | |
| 424 | + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | |
| 388 | 425 | | pyramid-* \ |
| 389 | - | romp-* | rs6000-* | rx-* \ | |
| 426 | + | rl78-* | romp-* | rs6000-* | rx-* \ | |
| 390 | 427 | | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ |
| 391 | 428 | | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ |
| 392 | 429 | | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ |
| 393 | 430 | | sparclite-* \ |
| 394 | - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | |
| 395 | - | tahoe-* | thumb-* \ | |
| 431 | + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | |
| 432 | + | tahoe-* \ | |
| 396 | 433 | | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ |
| 397 | - | tile-* | tilegx-* \ | |
| 434 | + | tile*-* \ | |
| 398 | 435 | | tron-* \ |
| 399 | 436 | | ubicom32-* \ |
| 400 | - | v850-* | v850e-* | vax-* \ | |
| 437 | + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | |
| 438 | + | vax-* \ | |
| 401 | 439 | | we32k-* \ |
| 402 | - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | |
| 440 | + | x86-* | x86_64-* | xc16x-* | xps100-* \ | |
| 403 | 441 | | xstormy16-* | xtensa*-* \ |
| 404 | 442 | | ymp-* \ |
| 405 | 443 | | z8k-* | z80-*) |
| 406 | 444 | ;; |
| 407 | 445 | # Recognize the basic CPU types without company name, with glob match. |
| @@ -422,11 +460,11 @@ | ||
| 422 | 460 | ;; |
| 423 | 461 | a29khif) |
| 424 | 462 | basic_machine=a29k-amd |
| 425 | 463 | os=-udi |
| 426 | 464 | ;; |
| 427 | - abacus) | |
| 465 | + abacus) | |
| 428 | 466 | basic_machine=abacus-unknown |
| 429 | 467 | ;; |
| 430 | 468 | adobe68k) |
| 431 | 469 | basic_machine=m68010-adobe |
| 432 | 470 | os=-scout |
| @@ -505,11 +543,11 @@ | ||
| 505 | 543 | ;; |
| 506 | 544 | c90) |
| 507 | 545 | basic_machine=c90-cray |
| 508 | 546 | os=-unicos |
| 509 | 547 | ;; |
| 510 | - cegcc) | |
| 548 | + cegcc) | |
| 511 | 549 | basic_machine=arm-unknown |
| 512 | 550 | os=-cegcc |
| 513 | 551 | ;; |
| 514 | 552 | convex-c1) |
| 515 | 553 | basic_machine=c1-convex |
| @@ -537,11 +575,11 @@ | ||
| 537 | 575 | ;; |
| 538 | 576 | craynv) |
| 539 | 577 | basic_machine=craynv-cray |
| 540 | 578 | os=-unicosmp |
| 541 | 579 | ;; |
| 542 | - cr16) | |
| 580 | + cr16 | cr16-*) | |
| 543 | 581 | basic_machine=cr16-unknown |
| 544 | 582 | os=-elf |
| 545 | 583 | ;; |
| 546 | 584 | crds | unos) |
| 547 | 585 | basic_machine=m68k-crds |
| @@ -695,11 +733,10 @@ | ||
| 695 | 733 | os=-proelf |
| 696 | 734 | ;; |
| 697 | 735 | i370-ibm* | ibm*) |
| 698 | 736 | basic_machine=i370-ibm |
| 699 | 737 | ;; |
| 700 | -# I'm not sure what "Sysv32" means. Should this be sysv3.2? | |
| 701 | 738 | i*86v32) |
| 702 | 739 | basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` |
| 703 | 740 | os=-sysv32 |
| 704 | 741 | ;; |
| 705 | 742 | i*86v4*) |
| @@ -753,15 +790,19 @@ | ||
| 753 | 790 | ;; |
| 754 | 791 | merlin) |
| 755 | 792 | basic_machine=ns32k-utek |
| 756 | 793 | os=-sysv |
| 757 | 794 | ;; |
| 758 | - microblaze) | |
| 795 | + microblaze*) | |
| 759 | 796 | basic_machine=microblaze-xilinx |
| 760 | 797 | ;; |
| 798 | + mingw64) | |
| 799 | + basic_machine=x86_64-pc | |
| 800 | + os=-mingw64 | |
| 801 | + ;; | |
| 761 | 802 | mingw32) |
| 762 | - basic_machine=i386-pc | |
| 803 | + basic_machine=i686-pc | |
| 763 | 804 | os=-mingw32 |
| 764 | 805 | ;; |
| 765 | 806 | mingw32ce) |
| 766 | 807 | basic_machine=arm-unknown |
| 767 | 808 | os=-mingw32ce |
| @@ -792,18 +833,22 @@ | ||
| 792 | 833 | os=-msdos |
| 793 | 834 | ;; |
| 794 | 835 | ms1-*) |
| 795 | 836 | basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` |
| 796 | 837 | ;; |
| 838 | + msys) | |
| 839 | + basic_machine=i686-pc | |
| 840 | + os=-msys | |
| 841 | + ;; | |
| 797 | 842 | mvs) |
| 798 | 843 | basic_machine=i370-ibm |
| 799 | 844 | os=-mvs |
| 800 | 845 | ;; |
| 801 | - msys) | |
| 802 | - basic_machine=i386-pc | |
| 803 | - os=-msys | |
| 804 | - ;; | |
| 846 | + nacl) | |
| 847 | + basic_machine=le32-unknown | |
| 848 | + os=-nacl | |
| 849 | + ;; | |
| 805 | 850 | ncr3000) |
| 806 | 851 | basic_machine=i486-ncr |
| 807 | 852 | os=-sysv4 |
| 808 | 853 | ;; |
| 809 | 854 | netbsd386) |
| @@ -864,14 +909,14 @@ | ||
| 864 | 909 | os=-nonstopux |
| 865 | 910 | ;; |
| 866 | 911 | np1) |
| 867 | 912 | basic_machine=np1-gould |
| 868 | 913 | ;; |
| 869 | - neo-tandem) | |
| 914 | + neo-tandem) | |
| 870 | 915 | basic_machine=neo-tandem |
| 871 | 916 | ;; |
| 872 | - nse-tandem) | |
| 917 | + nse-tandem) | |
| 873 | 918 | basic_machine=nse-tandem |
| 874 | 919 | ;; |
| 875 | 920 | nsr-tandem) |
| 876 | 921 | basic_machine=nsr-tandem |
| 877 | 922 | ;; |
| @@ -952,13 +997,14 @@ | ||
| 952 | 997 | pn) |
| 953 | 998 | basic_machine=pn-gould |
| 954 | 999 | ;; |
| 955 | 1000 | power) basic_machine=power-ibm |
| 956 | 1001 | ;; |
| 957 | - ppc) basic_machine=powerpc-unknown | |
| 1002 | + ppc | ppcbe) basic_machine=powerpc-unknown | |
| 958 | 1003 | ;; |
| 959 | - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` | |
| 1004 | + ppc-* | ppcbe-*) | |
| 1005 | + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` | |
| 960 | 1006 | ;; |
| 961 | 1007 | ppcle | powerpclittle | ppc-le | powerpc-little) |
| 962 | 1008 | basic_machine=powerpcle-unknown |
| 963 | 1009 | ;; |
| 964 | 1010 | ppcle-* | powerpclittle-*) |
| @@ -979,11 +1025,15 @@ | ||
| 979 | 1025 | ;; |
| 980 | 1026 | pw32) |
| 981 | 1027 | basic_machine=i586-unknown |
| 982 | 1028 | os=-pw32 |
| 983 | 1029 | ;; |
| 984 | - rdos) | |
| 1030 | + rdos | rdos64) | |
| 1031 | + basic_machine=x86_64-pc | |
| 1032 | + os=-rdos | |
| 1033 | + ;; | |
| 1034 | + rdos32) | |
| 985 | 1035 | basic_machine=i386-pc |
| 986 | 1036 | os=-rdos |
| 987 | 1037 | ;; |
| 988 | 1038 | rom68k) |
| 989 | 1039 | basic_machine=m68k-rom68k |
| @@ -1048,10 +1098,13 @@ | ||
| 1048 | 1098 | ;; |
| 1049 | 1099 | stratus) |
| 1050 | 1100 | basic_machine=i860-stratus |
| 1051 | 1101 | os=-sysv4 |
| 1052 | 1102 | ;; |
| 1103 | + strongarm-* | thumb-*) | |
| 1104 | + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` | |
| 1105 | + ;; | |
| 1053 | 1106 | sun2) |
| 1054 | 1107 | basic_machine=m68000-sun |
| 1055 | 1108 | ;; |
| 1056 | 1109 | sun2os3) |
| 1057 | 1110 | basic_machine=m68000-sun |
| @@ -1104,17 +1157,12 @@ | ||
| 1104 | 1157 | ;; |
| 1105 | 1158 | t90) |
| 1106 | 1159 | basic_machine=t90-cray |
| 1107 | 1160 | os=-unicos |
| 1108 | 1161 | ;; |
| 1109 | - # This must be matched before tile*. | |
| 1110 | - tilegx*) | |
| 1111 | - basic_machine=tilegx-unknown | |
| 1112 | - os=-linux-gnu | |
| 1113 | - ;; | |
| 1114 | 1162 | tile*) |
| 1115 | - basic_machine=tile-unknown | |
| 1163 | + basic_machine=$basic_machine-unknown | |
| 1116 | 1164 | os=-linux-gnu |
| 1117 | 1165 | ;; |
| 1118 | 1166 | tx39) |
| 1119 | 1167 | basic_machine=mipstx39-unknown |
| 1120 | 1168 | ;; |
| @@ -1180,10 +1228,13 @@ | ||
| 1180 | 1228 | os=-mingw32 |
| 1181 | 1229 | ;; |
| 1182 | 1230 | xps | xps100) |
| 1183 | 1231 | basic_machine=xps100-honeywell |
| 1184 | 1232 | ;; |
| 1233 | + xscale-* | xscalee[bl]-*) | |
| 1234 | + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` | |
| 1235 | + ;; | |
| 1185 | 1236 | ymp) |
| 1186 | 1237 | basic_machine=ymp-cray |
| 1187 | 1238 | os=-unicos |
| 1188 | 1239 | ;; |
| 1189 | 1240 | z8k-*-coff) |
| @@ -1277,15 +1328,15 @@ | ||
| 1277 | 1328 | # Decode manufacturer-specific aliases for certain operating systems. |
| 1278 | 1329 | |
| 1279 | 1330 | if [ x"$os" != x"" ] |
| 1280 | 1331 | then |
| 1281 | 1332 | case $os in |
| 1282 | - # First match some system type aliases | |
| 1283 | - # that might get confused with valid system types. | |
| 1333 | + # First match some system type aliases | |
| 1334 | + # that might get confused with valid system types. | |
| 1284 | 1335 | # -solaris* is a basic system type, with this one exception. |
| 1285 | - -auroraux) | |
| 1286 | - os=-auroraux | |
| 1336 | + -auroraux) | |
| 1337 | + os=-auroraux | |
| 1287 | 1338 | ;; |
| 1288 | 1339 | -solaris1 | -solaris1.*) |
| 1289 | 1340 | os=`echo $os | sed -e 's|solaris1|sunos4|'` |
| 1290 | 1341 | ;; |
| 1291 | 1342 | -solaris) |
| @@ -1305,33 +1356,33 @@ | ||
| 1305 | 1356 | # Each alternative MUST END IN A *, to match a version number. |
| 1306 | 1357 | # -sysv* is not here because it comes later, after sysvr4. |
| 1307 | 1358 | -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ |
| 1308 | 1359 | | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ |
| 1309 | 1360 | | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ |
| 1310 | - | -sym* | -kopensolaris* \ | |
| 1361 | + | -sym* | -kopensolaris* | -plan9* \ | |
| 1311 | 1362 | | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ |
| 1312 | 1363 | | -aos* | -aros* \ |
| 1313 | 1364 | | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ |
| 1314 | 1365 | | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ |
| 1315 | 1366 | | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ |
| 1316 | - | -openbsd* | -solidbsd* \ | |
| 1367 | + | -bitrig* | -openbsd* | -solidbsd* \ | |
| 1317 | 1368 | | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ |
| 1318 | 1369 | | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ |
| 1319 | 1370 | | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ |
| 1320 | 1371 | | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ |
| 1321 | 1372 | | -chorusos* | -chorusrdb* | -cegcc* \ |
| 1322 | 1373 | | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ |
| 1323 | - | -mingw32* | -linux-gnu* | -linux-android* \ | |
| 1324 | - | -linux-newlib* | -linux-uclibc* \ | |
| 1374 | + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | |
| 1375 | + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | |
| 1325 | 1376 | | -uxpv* | -beos* | -mpeix* | -udk* \ |
| 1326 | 1377 | | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ |
| 1327 | 1378 | | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ |
| 1328 | 1379 | | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ |
| 1329 | 1380 | | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ |
| 1330 | 1381 | | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ |
| 1331 | 1382 | | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ |
| 1332 | - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) | |
| 1383 | + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) | |
| 1333 | 1384 | # Remember, each alternative MUST END IN *, to match a version number. |
| 1334 | 1385 | ;; |
| 1335 | 1386 | -qnx*) |
| 1336 | 1387 | case $basic_machine in |
| 1337 | 1388 | x86-* | i*86-*) |
| @@ -1366,11 +1417,11 @@ | ||
| 1366 | 1417 | os=`echo $os | sed -e 's|sunos6|solaris3|'` |
| 1367 | 1418 | ;; |
| 1368 | 1419 | -opened*) |
| 1369 | 1420 | os=-openedition |
| 1370 | 1421 | ;; |
| 1371 | - -os400*) | |
| 1422 | + -os400*) | |
| 1372 | 1423 | os=-os400 |
| 1373 | 1424 | ;; |
| 1374 | 1425 | -wince*) |
| 1375 | 1426 | os=-wince |
| 1376 | 1427 | ;; |
| @@ -1415,11 +1466,11 @@ | ||
| 1415 | 1466 | os=`echo $os | sed -e 's|sinix|sysv|'` |
| 1416 | 1467 | ;; |
| 1417 | 1468 | -sinix*) |
| 1418 | 1469 | os=-sysv4 |
| 1419 | 1470 | ;; |
| 1420 | - -tpf*) | |
| 1471 | + -tpf*) | |
| 1421 | 1472 | os=-tpf |
| 1422 | 1473 | ;; |
| 1423 | 1474 | -triton*) |
| 1424 | 1475 | os=-sysv3 |
| 1425 | 1476 | ;; |
| @@ -1451,21 +1502,18 @@ | ||
| 1451 | 1502 | os=-mint |
| 1452 | 1503 | ;; |
| 1453 | 1504 | -aros*) |
| 1454 | 1505 | os=-aros |
| 1455 | 1506 | ;; |
| 1456 | - -kaos*) | |
| 1457 | - os=-kaos | |
| 1458 | - ;; | |
| 1459 | 1507 | -zvmoe) |
| 1460 | 1508 | os=-zvmoe |
| 1461 | 1509 | ;; |
| 1462 | 1510 | -dicos*) |
| 1463 | 1511 | os=-dicos |
| 1464 | 1512 | ;; |
| 1465 | - -nacl*) | |
| 1466 | - ;; | |
| 1513 | + -nacl*) | |
| 1514 | + ;; | |
| 1467 | 1515 | -none) |
| 1468 | 1516 | ;; |
| 1469 | 1517 | *) |
| 1470 | 1518 | # Get rid of the `-' at the beginning of $os. |
| 1471 | 1519 | os=`echo $os | sed 's/[^-]*-//'` |
| @@ -1484,14 +1532,14 @@ | ||
| 1484 | 1532 | # that MANUFACTURER isn't an operating system. Otherwise, code above |
| 1485 | 1533 | # will signal an error saying that MANUFACTURER isn't an operating |
| 1486 | 1534 | # system, and we'll never get to this point. |
| 1487 | 1535 | |
| 1488 | 1536 | case $basic_machine in |
| 1489 | - score-*) | |
| 1537 | + score-*) | |
| 1490 | 1538 | os=-elf |
| 1491 | 1539 | ;; |
| 1492 | - spu-*) | |
| 1540 | + spu-*) | |
| 1493 | 1541 | os=-elf |
| 1494 | 1542 | ;; |
| 1495 | 1543 | *-acorn) |
| 1496 | 1544 | os=-riscix1.2 |
| 1497 | 1545 | ;; |
| @@ -1499,12 +1547,18 @@ | ||
| 1499 | 1547 | os=-linux |
| 1500 | 1548 | ;; |
| 1501 | 1549 | arm*-semi) |
| 1502 | 1550 | os=-aout |
| 1503 | 1551 | ;; |
| 1504 | - c4x-* | tic4x-*) | |
| 1505 | - os=-coff | |
| 1552 | + c4x-* | tic4x-*) | |
| 1553 | + os=-coff | |
| 1554 | + ;; | |
| 1555 | + c8051-*) | |
| 1556 | + os=-elf | |
| 1557 | + ;; | |
| 1558 | + hexagon-*) | |
| 1559 | + os=-elf | |
| 1506 | 1560 | ;; |
| 1507 | 1561 | tic54x-*) |
| 1508 | 1562 | os=-coff |
| 1509 | 1563 | ;; |
| 1510 | 1564 | tic55x-*) |
| @@ -1529,18 +1583,15 @@ | ||
| 1529 | 1583 | i386-sun) |
| 1530 | 1584 | os=-sunos4.0.2 |
| 1531 | 1585 | ;; |
| 1532 | 1586 | m68000-sun) |
| 1533 | 1587 | os=-sunos3 |
| 1534 | - # This also exists in the configure program, but was not the | |
| 1535 | - # default. | |
| 1536 | - # os=-sunos4 | |
| 1537 | 1588 | ;; |
| 1538 | 1589 | m68*-cisco) |
| 1539 | 1590 | os=-aout |
| 1540 | 1591 | ;; |
| 1541 | - mep-*) | |
| 1592 | + mep-*) | |
| 1542 | 1593 | os=-elf |
| 1543 | 1594 | ;; |
| 1544 | 1595 | mips*-cisco) |
| 1545 | 1596 | os=-elf |
| 1546 | 1597 | ;; |
| @@ -1563,11 +1614,11 @@ | ||
| 1563 | 1614 | os=-haiku |
| 1564 | 1615 | ;; |
| 1565 | 1616 | *-ibm) |
| 1566 | 1617 | os=-aix |
| 1567 | 1618 | ;; |
| 1568 | - *-knuth) | |
| 1619 | + *-knuth) | |
| 1569 | 1620 | os=-mmixware |
| 1570 | 1621 | ;; |
| 1571 | 1622 | *-wec) |
| 1572 | 1623 | os=-proelf |
| 1573 | 1624 | ;; |
| 1574 | 1625 |
| --- autosetup/config.sub | |
| +++ autosetup/config.sub | |
| @@ -1,40 +1,33 @@ | |
| 1 | #! /bin/sh |
| 2 | # Configuration validation subroutine script. |
| 3 | # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, |
| 4 | # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
| 5 | # Free Software Foundation, Inc. |
| 6 | |
| 7 | timestamp='2010-09-11' |
| 8 | |
| 9 | # This file is (in principle) common to ALL GNU software. |
| 10 | # The presence of a machine in this file suggests that SOME GNU software |
| 11 | # can handle that machine. It does not imply ALL GNU software can. |
| 12 | # |
| 13 | # This file is free software; you can redistribute it and/or modify |
| 14 | # it under the terms of the GNU General Public License as published by |
| 15 | # the Free Software Foundation; either version 2 of the License, or |
| 16 | # (at your option) any later version. |
| 17 | # |
| 18 | # This program is distributed in the hope that it will be useful, |
| 19 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 20 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 21 | # GNU General Public License for more details. |
| 22 | # |
| 23 | # You should have received a copy of the GNU General Public License |
| 24 | # along with this program; if not, write to the Free Software |
| 25 | # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA |
| 26 | # 02110-1301, USA. |
| 27 | # |
| 28 | # As a special exception to the GNU General Public License, if you |
| 29 | # distribute this file as part of a program that contains a |
| 30 | # configuration script generated by Autoconf, you may include it under |
| 31 | # the same distribution terms that you use for the rest of that program. |
| 32 | |
| 33 | |
| 34 | # Please send patches to <[email protected]>. Submit a context |
| 35 | # diff and a properly formatted GNU ChangeLog entry. |
| 36 | # |
| 37 | # Configuration subroutine to validate and canonicalize a configuration type. |
| 38 | # Supply the specified configuration type as an argument. |
| 39 | # If it is invalid, we print an error message on stderr and exit with code 1. |
| 40 | # Otherwise, we print the canonical config type on stdout and succeed. |
| @@ -73,13 +66,11 @@ | |
| 73 | Report bugs and patches to <[email protected]>." |
| 74 | |
| 75 | version="\ |
| 76 | GNU config.sub ($timestamp) |
| 77 | |
| 78 | Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, |
| 79 | 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free |
| 80 | Software Foundation, Inc. |
| 81 | |
| 82 | This is free software; see the source for copying conditions. There is NO |
| 83 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." |
| 84 | |
| 85 | help=" |
| @@ -123,17 +114,21 @@ | |
| 123 | # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). |
| 124 | # Here we must recognize all the valid KERNEL-OS combinations. |
| 125 | maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` |
| 126 | case $maybe_os in |
| 127 | nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ |
| 128 | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ |
| 129 | knetbsd*-gnu* | netbsd*-gnu* | \ |
| 130 | kopensolaris*-gnu* | \ |
| 131 | storm-chaos* | os2-emx* | rtmk-nova*) |
| 132 | os=-$maybe_os |
| 133 | basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` |
| 134 | ;; |
| 135 | *) |
| 136 | basic_machine=`echo $1 | sed 's/-[^-]*$//'` |
| 137 | if [ $basic_machine != $1 ] |
| 138 | then os=`echo $1 | sed 's/.*-/-/'` |
| 139 | else os=; fi |
| @@ -152,16 +147,16 @@ | |
| 152 | -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ |
| 153 | -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ |
| 154 | -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ |
| 155 | -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ |
| 156 | -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ |
| 157 | -apple | -axis | -knuth | -cray | -microblaze) |
| 158 | os= |
| 159 | basic_machine=$1 |
| 160 | ;; |
| 161 | -bluegene*) |
| 162 | os=-cnk |
| 163 | ;; |
| 164 | -sim | -cisco | -oki | -wec | -winbond) |
| 165 | os= |
| 166 | basic_machine=$1 |
| 167 | ;; |
| @@ -173,14 +168,14 @@ | |
| 173 | ;; |
| 174 | -chorusos*) |
| 175 | os=-chorusos |
| 176 | basic_machine=$1 |
| 177 | ;; |
| 178 | -chorusrdb) |
| 179 | os=-chorusrdb |
| 180 | basic_machine=$1 |
| 181 | ;; |
| 182 | -hiux*) |
| 183 | os=-hiuxwe2 |
| 184 | ;; |
| 185 | -sco6) |
| 186 | os=-sco5v6 |
| @@ -221,10 +216,16 @@ | |
| 221 | basic_machine=clipper-intergraph |
| 222 | ;; |
| 223 | -isc*) |
| 224 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` |
| 225 | ;; |
| 226 | -lynx*) |
| 227 | os=-lynxos |
| 228 | ;; |
| 229 | -ptx*) |
| 230 | basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` |
| @@ -245,24 +246,32 @@ | |
| 245 | case $basic_machine in |
| 246 | # Recognize the basic CPU types without company name. |
| 247 | # Some are omitted here because they have special meanings below. |
| 248 | 1750a | 580 \ |
| 249 | | a29k \ |
| 250 | | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ |
| 251 | | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ |
| 252 | | am33_2.0 \ |
| 253 | | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ |
| 254 | | bfin \ |
| 255 | | c4x | clipper \ |
| 256 | | d10v | d30v | dlx | dsp16xx \ |
| 257 | | fido | fr30 | frv \ |
| 258 | | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ |
| 259 | | i370 | i860 | i960 | ia64 \ |
| 260 | | ip2k | iq2000 \ |
| 261 | | lm32 \ |
| 262 | | m32c | m32r | m32rle | m68000 | m68k | m88k \ |
| 263 | | maxq | mb | microblaze | mcore | mep | metag \ |
| 264 | | mips | mipsbe | mipseb | mipsel | mipsle \ |
| 265 | | mips16 \ |
| 266 | | mips64 | mips64el \ |
| 267 | | mips64octeon | mips64octeonel \ |
| 268 | | mips64orion | mips64orionel \ |
| @@ -272,38 +281,41 @@ | |
| 272 | | mips64vr4300 | mips64vr4300el \ |
| 273 | | mips64vr5000 | mips64vr5000el \ |
| 274 | | mips64vr5900 | mips64vr5900el \ |
| 275 | | mipsisa32 | mipsisa32el \ |
| 276 | | mipsisa32r2 | mipsisa32r2el \ |
| 277 | | mipsisa64 | mipsisa64el \ |
| 278 | | mipsisa64r2 | mipsisa64r2el \ |
| 279 | | mipsisa64sb1 | mipsisa64sb1el \ |
| 280 | | mipsisa64sr71k | mipsisa64sr71kel \ |
| 281 | | mipstx39 | mipstx39el \ |
| 282 | | mn10200 | mn10300 \ |
| 283 | | moxie \ |
| 284 | | mt \ |
| 285 | | msp430 \ |
| 286 | | nds32 | nds32le | nds32be \ |
| 287 | | nios | nios2 \ |
| 288 | | ns16k | ns32k \ |
| 289 | | or32 \ |
| 290 | | pdp10 | pdp11 | pj | pjl \ |
| 291 | | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ |
| 292 | | pyramid \ |
| 293 | | rx \ |
| 294 | | score \ |
| 295 | | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ |
| 296 | | sh64 | sh64le \ |
| 297 | | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ |
| 298 | | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ |
| 299 | | spu | strongarm \ |
| 300 | | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ |
| 301 | | ubicom32 \ |
| 302 | | v850 | v850e \ |
| 303 | | we32k \ |
| 304 | | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ |
| 305 | | z8k | z80) |
| 306 | basic_machine=$basic_machine-unknown |
| 307 | ;; |
| 308 | c54x) |
| 309 | basic_machine=tic54x-unknown |
| @@ -312,20 +324,34 @@ | |
| 312 | basic_machine=tic55x-unknown |
| 313 | ;; |
| 314 | c6x) |
| 315 | basic_machine=tic6x-unknown |
| 316 | ;; |
| 317 | m6811 | m68hc11 | m6812 | m68hc12 | picochip) |
| 318 | # Motorola 68HC11/12. |
| 319 | basic_machine=$basic_machine-unknown |
| 320 | os=-none |
| 321 | ;; |
| 322 | m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) |
| 323 | ;; |
| 324 | ms1) |
| 325 | basic_machine=mt-unknown |
| 326 | ;; |
| 327 | |
| 328 | # We use `pc' rather than `unknown' |
| 329 | # because (1) that's what they normally are, and |
| 330 | # (2) the word "unknown" tends to confuse beginning users. |
| 331 | i*86 | x86_64) |
| @@ -337,29 +363,35 @@ | |
| 337 | exit 1 |
| 338 | ;; |
| 339 | # Recognize the basic CPU types with company name. |
| 340 | 580-* \ |
| 341 | | a29k-* \ |
| 342 | | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ |
| 343 | | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ |
| 344 | | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ |
| 345 | | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ |
| 346 | | avr-* | avr32-* \ |
| 347 | | bfin-* | bs2000-* \ |
| 348 | | c[123]* | c30-* | [cjt]90-* | c4x-* \ |
| 349 | | clipper-* | craynv-* | cydra-* \ |
| 350 | | d10v-* | d30v-* | dlx-* \ |
| 351 | | elxsi-* \ |
| 352 | | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ |
| 353 | | h8300-* | h8500-* \ |
| 354 | | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ |
| 355 | | i*86-* | i860-* | i960-* | ia64-* \ |
| 356 | | ip2k-* | iq2000-* \ |
| 357 | | lm32-* \ |
| 358 | | m32c-* | m32r-* | m32rle-* \ |
| 359 | | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ |
| 360 | | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ |
| 361 | | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ |
| 362 | | mips16-* \ |
| 363 | | mips64-* | mips64el-* \ |
| 364 | | mips64octeon-* | mips64octeonel-* \ |
| 365 | | mips64orion-* | mips64orionel-* \ |
| @@ -369,39 +401,45 @@ | |
| 369 | | mips64vr4300-* | mips64vr4300el-* \ |
| 370 | | mips64vr5000-* | mips64vr5000el-* \ |
| 371 | | mips64vr5900-* | mips64vr5900el-* \ |
| 372 | | mipsisa32-* | mipsisa32el-* \ |
| 373 | | mipsisa32r2-* | mipsisa32r2el-* \ |
| 374 | | mipsisa64-* | mipsisa64el-* \ |
| 375 | | mipsisa64r2-* | mipsisa64r2el-* \ |
| 376 | | mipsisa64sb1-* | mipsisa64sb1el-* \ |
| 377 | | mipsisa64sr71k-* | mipsisa64sr71kel-* \ |
| 378 | | mipstx39-* | mipstx39el-* \ |
| 379 | | mmix-* \ |
| 380 | | mt-* \ |
| 381 | | msp430-* \ |
| 382 | | nds32-* | nds32le-* | nds32be-* \ |
| 383 | | nios-* | nios2-* \ |
| 384 | | none-* | np1-* | ns16k-* | ns32k-* \ |
| 385 | | orion-* \ |
| 386 | | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ |
| 387 | | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ |
| 388 | | pyramid-* \ |
| 389 | | romp-* | rs6000-* | rx-* \ |
| 390 | | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ |
| 391 | | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ |
| 392 | | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ |
| 393 | | sparclite-* \ |
| 394 | | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ |
| 395 | | tahoe-* | thumb-* \ |
| 396 | | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ |
| 397 | | tile-* | tilegx-* \ |
| 398 | | tron-* \ |
| 399 | | ubicom32-* \ |
| 400 | | v850-* | v850e-* | vax-* \ |
| 401 | | we32k-* \ |
| 402 | | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ |
| 403 | | xstormy16-* | xtensa*-* \ |
| 404 | | ymp-* \ |
| 405 | | z8k-* | z80-*) |
| 406 | ;; |
| 407 | # Recognize the basic CPU types without company name, with glob match. |
| @@ -422,11 +460,11 @@ | |
| 422 | ;; |
| 423 | a29khif) |
| 424 | basic_machine=a29k-amd |
| 425 | os=-udi |
| 426 | ;; |
| 427 | abacus) |
| 428 | basic_machine=abacus-unknown |
| 429 | ;; |
| 430 | adobe68k) |
| 431 | basic_machine=m68010-adobe |
| 432 | os=-scout |
| @@ -505,11 +543,11 @@ | |
| 505 | ;; |
| 506 | c90) |
| 507 | basic_machine=c90-cray |
| 508 | os=-unicos |
| 509 | ;; |
| 510 | cegcc) |
| 511 | basic_machine=arm-unknown |
| 512 | os=-cegcc |
| 513 | ;; |
| 514 | convex-c1) |
| 515 | basic_machine=c1-convex |
| @@ -537,11 +575,11 @@ | |
| 537 | ;; |
| 538 | craynv) |
| 539 | basic_machine=craynv-cray |
| 540 | os=-unicosmp |
| 541 | ;; |
| 542 | cr16) |
| 543 | basic_machine=cr16-unknown |
| 544 | os=-elf |
| 545 | ;; |
| 546 | crds | unos) |
| 547 | basic_machine=m68k-crds |
| @@ -695,11 +733,10 @@ | |
| 695 | os=-proelf |
| 696 | ;; |
| 697 | i370-ibm* | ibm*) |
| 698 | basic_machine=i370-ibm |
| 699 | ;; |
| 700 | # I'm not sure what "Sysv32" means. Should this be sysv3.2? |
| 701 | i*86v32) |
| 702 | basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` |
| 703 | os=-sysv32 |
| 704 | ;; |
| 705 | i*86v4*) |
| @@ -753,15 +790,19 @@ | |
| 753 | ;; |
| 754 | merlin) |
| 755 | basic_machine=ns32k-utek |
| 756 | os=-sysv |
| 757 | ;; |
| 758 | microblaze) |
| 759 | basic_machine=microblaze-xilinx |
| 760 | ;; |
| 761 | mingw32) |
| 762 | basic_machine=i386-pc |
| 763 | os=-mingw32 |
| 764 | ;; |
| 765 | mingw32ce) |
| 766 | basic_machine=arm-unknown |
| 767 | os=-mingw32ce |
| @@ -792,18 +833,22 @@ | |
| 792 | os=-msdos |
| 793 | ;; |
| 794 | ms1-*) |
| 795 | basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` |
| 796 | ;; |
| 797 | mvs) |
| 798 | basic_machine=i370-ibm |
| 799 | os=-mvs |
| 800 | ;; |
| 801 | msys) |
| 802 | basic_machine=i386-pc |
| 803 | os=-msys |
| 804 | ;; |
| 805 | ncr3000) |
| 806 | basic_machine=i486-ncr |
| 807 | os=-sysv4 |
| 808 | ;; |
| 809 | netbsd386) |
| @@ -864,14 +909,14 @@ | |
| 864 | os=-nonstopux |
| 865 | ;; |
| 866 | np1) |
| 867 | basic_machine=np1-gould |
| 868 | ;; |
| 869 | neo-tandem) |
| 870 | basic_machine=neo-tandem |
| 871 | ;; |
| 872 | nse-tandem) |
| 873 | basic_machine=nse-tandem |
| 874 | ;; |
| 875 | nsr-tandem) |
| 876 | basic_machine=nsr-tandem |
| 877 | ;; |
| @@ -952,13 +997,14 @@ | |
| 952 | pn) |
| 953 | basic_machine=pn-gould |
| 954 | ;; |
| 955 | power) basic_machine=power-ibm |
| 956 | ;; |
| 957 | ppc) basic_machine=powerpc-unknown |
| 958 | ;; |
| 959 | ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` |
| 960 | ;; |
| 961 | ppcle | powerpclittle | ppc-le | powerpc-little) |
| 962 | basic_machine=powerpcle-unknown |
| 963 | ;; |
| 964 | ppcle-* | powerpclittle-*) |
| @@ -979,11 +1025,15 @@ | |
| 979 | ;; |
| 980 | pw32) |
| 981 | basic_machine=i586-unknown |
| 982 | os=-pw32 |
| 983 | ;; |
| 984 | rdos) |
| 985 | basic_machine=i386-pc |
| 986 | os=-rdos |
| 987 | ;; |
| 988 | rom68k) |
| 989 | basic_machine=m68k-rom68k |
| @@ -1048,10 +1098,13 @@ | |
| 1048 | ;; |
| 1049 | stratus) |
| 1050 | basic_machine=i860-stratus |
| 1051 | os=-sysv4 |
| 1052 | ;; |
| 1053 | sun2) |
| 1054 | basic_machine=m68000-sun |
| 1055 | ;; |
| 1056 | sun2os3) |
| 1057 | basic_machine=m68000-sun |
| @@ -1104,17 +1157,12 @@ | |
| 1104 | ;; |
| 1105 | t90) |
| 1106 | basic_machine=t90-cray |
| 1107 | os=-unicos |
| 1108 | ;; |
| 1109 | # This must be matched before tile*. |
| 1110 | tilegx*) |
| 1111 | basic_machine=tilegx-unknown |
| 1112 | os=-linux-gnu |
| 1113 | ;; |
| 1114 | tile*) |
| 1115 | basic_machine=tile-unknown |
| 1116 | os=-linux-gnu |
| 1117 | ;; |
| 1118 | tx39) |
| 1119 | basic_machine=mipstx39-unknown |
| 1120 | ;; |
| @@ -1180,10 +1228,13 @@ | |
| 1180 | os=-mingw32 |
| 1181 | ;; |
| 1182 | xps | xps100) |
| 1183 | basic_machine=xps100-honeywell |
| 1184 | ;; |
| 1185 | ymp) |
| 1186 | basic_machine=ymp-cray |
| 1187 | os=-unicos |
| 1188 | ;; |
| 1189 | z8k-*-coff) |
| @@ -1277,15 +1328,15 @@ | |
| 1277 | # Decode manufacturer-specific aliases for certain operating systems. |
| 1278 | |
| 1279 | if [ x"$os" != x"" ] |
| 1280 | then |
| 1281 | case $os in |
| 1282 | # First match some system type aliases |
| 1283 | # that might get confused with valid system types. |
| 1284 | # -solaris* is a basic system type, with this one exception. |
| 1285 | -auroraux) |
| 1286 | os=-auroraux |
| 1287 | ;; |
| 1288 | -solaris1 | -solaris1.*) |
| 1289 | os=`echo $os | sed -e 's|solaris1|sunos4|'` |
| 1290 | ;; |
| 1291 | -solaris) |
| @@ -1305,33 +1356,33 @@ | |
| 1305 | # Each alternative MUST END IN A *, to match a version number. |
| 1306 | # -sysv* is not here because it comes later, after sysvr4. |
| 1307 | -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ |
| 1308 | | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ |
| 1309 | | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ |
| 1310 | | -sym* | -kopensolaris* \ |
| 1311 | | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ |
| 1312 | | -aos* | -aros* \ |
| 1313 | | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ |
| 1314 | | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ |
| 1315 | | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ |
| 1316 | | -openbsd* | -solidbsd* \ |
| 1317 | | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ |
| 1318 | | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ |
| 1319 | | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ |
| 1320 | | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ |
| 1321 | | -chorusos* | -chorusrdb* | -cegcc* \ |
| 1322 | | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ |
| 1323 | | -mingw32* | -linux-gnu* | -linux-android* \ |
| 1324 | | -linux-newlib* | -linux-uclibc* \ |
| 1325 | | -uxpv* | -beos* | -mpeix* | -udk* \ |
| 1326 | | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ |
| 1327 | | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ |
| 1328 | | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ |
| 1329 | | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ |
| 1330 | | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ |
| 1331 | | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ |
| 1332 | | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) |
| 1333 | # Remember, each alternative MUST END IN *, to match a version number. |
| 1334 | ;; |
| 1335 | -qnx*) |
| 1336 | case $basic_machine in |
| 1337 | x86-* | i*86-*) |
| @@ -1366,11 +1417,11 @@ | |
| 1366 | os=`echo $os | sed -e 's|sunos6|solaris3|'` |
| 1367 | ;; |
| 1368 | -opened*) |
| 1369 | os=-openedition |
| 1370 | ;; |
| 1371 | -os400*) |
| 1372 | os=-os400 |
| 1373 | ;; |
| 1374 | -wince*) |
| 1375 | os=-wince |
| 1376 | ;; |
| @@ -1415,11 +1466,11 @@ | |
| 1415 | os=`echo $os | sed -e 's|sinix|sysv|'` |
| 1416 | ;; |
| 1417 | -sinix*) |
| 1418 | os=-sysv4 |
| 1419 | ;; |
| 1420 | -tpf*) |
| 1421 | os=-tpf |
| 1422 | ;; |
| 1423 | -triton*) |
| 1424 | os=-sysv3 |
| 1425 | ;; |
| @@ -1451,21 +1502,18 @@ | |
| 1451 | os=-mint |
| 1452 | ;; |
| 1453 | -aros*) |
| 1454 | os=-aros |
| 1455 | ;; |
| 1456 | -kaos*) |
| 1457 | os=-kaos |
| 1458 | ;; |
| 1459 | -zvmoe) |
| 1460 | os=-zvmoe |
| 1461 | ;; |
| 1462 | -dicos*) |
| 1463 | os=-dicos |
| 1464 | ;; |
| 1465 | -nacl*) |
| 1466 | ;; |
| 1467 | -none) |
| 1468 | ;; |
| 1469 | *) |
| 1470 | # Get rid of the `-' at the beginning of $os. |
| 1471 | os=`echo $os | sed 's/[^-]*-//'` |
| @@ -1484,14 +1532,14 @@ | |
| 1484 | # that MANUFACTURER isn't an operating system. Otherwise, code above |
| 1485 | # will signal an error saying that MANUFACTURER isn't an operating |
| 1486 | # system, and we'll never get to this point. |
| 1487 | |
| 1488 | case $basic_machine in |
| 1489 | score-*) |
| 1490 | os=-elf |
| 1491 | ;; |
| 1492 | spu-*) |
| 1493 | os=-elf |
| 1494 | ;; |
| 1495 | *-acorn) |
| 1496 | os=-riscix1.2 |
| 1497 | ;; |
| @@ -1499,12 +1547,18 @@ | |
| 1499 | os=-linux |
| 1500 | ;; |
| 1501 | arm*-semi) |
| 1502 | os=-aout |
| 1503 | ;; |
| 1504 | c4x-* | tic4x-*) |
| 1505 | os=-coff |
| 1506 | ;; |
| 1507 | tic54x-*) |
| 1508 | os=-coff |
| 1509 | ;; |
| 1510 | tic55x-*) |
| @@ -1529,18 +1583,15 @@ | |
| 1529 | i386-sun) |
| 1530 | os=-sunos4.0.2 |
| 1531 | ;; |
| 1532 | m68000-sun) |
| 1533 | os=-sunos3 |
| 1534 | # This also exists in the configure program, but was not the |
| 1535 | # default. |
| 1536 | # os=-sunos4 |
| 1537 | ;; |
| 1538 | m68*-cisco) |
| 1539 | os=-aout |
| 1540 | ;; |
| 1541 | mep-*) |
| 1542 | os=-elf |
| 1543 | ;; |
| 1544 | mips*-cisco) |
| 1545 | os=-elf |
| 1546 | ;; |
| @@ -1563,11 +1614,11 @@ | |
| 1563 | os=-haiku |
| 1564 | ;; |
| 1565 | *-ibm) |
| 1566 | os=-aix |
| 1567 | ;; |
| 1568 | *-knuth) |
| 1569 | os=-mmixware |
| 1570 | ;; |
| 1571 | *-wec) |
| 1572 | os=-proelf |
| 1573 | ;; |
| 1574 |
| --- autosetup/config.sub | |
| +++ autosetup/config.sub | |
| @@ -1,40 +1,33 @@ | |
| 1 | #! /bin/sh |
| 2 | # Configuration validation subroutine script. |
| 3 | # Copyright 1992-2014 Free Software Foundation, Inc. |
| 4 | |
| 5 | timestamp='2014-05-01' |
| 6 | |
| 7 | # This file is free software; you can redistribute it and/or modify it |
| 8 | # under the terms of the GNU General Public License as published by |
| 9 | # the Free Software Foundation; either version 3 of the License, or |
| 10 | # (at your option) any later version. |
| 11 | # |
| 12 | # This program is distributed in the hope that it will be useful, but |
| 13 | # WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | # General Public License for more details. |
| 16 | # |
| 17 | # You should have received a copy of the GNU General Public License |
| 18 | # along with this program; if not, see <http://www.gnu.org/licenses/>. |
| 19 | # |
| 20 | # As a special exception to the GNU General Public License, if you |
| 21 | # distribute this file as part of a program that contains a |
| 22 | # configuration script generated by Autoconf, you may include it under |
| 23 | # the same distribution terms that you use for the rest of that |
| 24 | # program. This Exception is an additional permission under section 7 |
| 25 | # of the GNU General Public License, version 3 ("GPLv3"). |
| 26 | |
| 27 | |
| 28 | # Please send patches with a ChangeLog entry to [email protected]. |
| 29 | # |
| 30 | # Configuration subroutine to validate and canonicalize a configuration type. |
| 31 | # Supply the specified configuration type as an argument. |
| 32 | # If it is invalid, we print an error message on stderr and exit with code 1. |
| 33 | # Otherwise, we print the canonical config type on stdout and succeed. |
| @@ -73,13 +66,11 @@ | |
| 66 | Report bugs and patches to <[email protected]>." |
| 67 | |
| 68 | version="\ |
| 69 | GNU config.sub ($timestamp) |
| 70 | |
| 71 | Copyright 1992-2014 Free Software Foundation, Inc. |
| 72 | |
| 73 | This is free software; see the source for copying conditions. There is NO |
| 74 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." |
| 75 | |
| 76 | help=" |
| @@ -123,17 +114,21 @@ | |
| 114 | # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). |
| 115 | # Here we must recognize all the valid KERNEL-OS combinations. |
| 116 | maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` |
| 117 | case $maybe_os in |
| 118 | nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ |
| 119 | linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ |
| 120 | knetbsd*-gnu* | netbsd*-gnu* | \ |
| 121 | kopensolaris*-gnu* | \ |
| 122 | storm-chaos* | os2-emx* | rtmk-nova*) |
| 123 | os=-$maybe_os |
| 124 | basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` |
| 125 | ;; |
| 126 | android-linux) |
| 127 | os=-linux-android |
| 128 | basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown |
| 129 | ;; |
| 130 | *) |
| 131 | basic_machine=`echo $1 | sed 's/-[^-]*$//'` |
| 132 | if [ $basic_machine != $1 ] |
| 133 | then os=`echo $1 | sed 's/.*-/-/'` |
| 134 | else os=; fi |
| @@ -152,16 +147,16 @@ | |
| 147 | -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ |
| 148 | -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ |
| 149 | -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ |
| 150 | -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ |
| 151 | -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ |
| 152 | -apple | -axis | -knuth | -cray | -microblaze*) |
| 153 | os= |
| 154 | basic_machine=$1 |
| 155 | ;; |
| 156 | -bluegene*) |
| 157 | os=-cnk |
| 158 | ;; |
| 159 | -sim | -cisco | -oki | -wec | -winbond) |
| 160 | os= |
| 161 | basic_machine=$1 |
| 162 | ;; |
| @@ -173,14 +168,14 @@ | |
| 168 | ;; |
| 169 | -chorusos*) |
| 170 | os=-chorusos |
| 171 | basic_machine=$1 |
| 172 | ;; |
| 173 | -chorusrdb) |
| 174 | os=-chorusrdb |
| 175 | basic_machine=$1 |
| 176 | ;; |
| 177 | -hiux*) |
| 178 | os=-hiuxwe2 |
| 179 | ;; |
| 180 | -sco6) |
| 181 | os=-sco5v6 |
| @@ -221,10 +216,16 @@ | |
| 216 | basic_machine=clipper-intergraph |
| 217 | ;; |
| 218 | -isc*) |
| 219 | basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` |
| 220 | ;; |
| 221 | -lynx*178) |
| 222 | os=-lynxos178 |
| 223 | ;; |
| 224 | -lynx*5) |
| 225 | os=-lynxos5 |
| 226 | ;; |
| 227 | -lynx*) |
| 228 | os=-lynxos |
| 229 | ;; |
| 230 | -ptx*) |
| 231 | basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` |
| @@ -245,24 +246,32 @@ | |
| 246 | case $basic_machine in |
| 247 | # Recognize the basic CPU types without company name. |
| 248 | # Some are omitted here because they have special meanings below. |
| 249 | 1750a | 580 \ |
| 250 | | a29k \ |
| 251 | | aarch64 | aarch64_be \ |
| 252 | | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ |
| 253 | | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ |
| 254 | | am33_2.0 \ |
| 255 | | arc | arceb \ |
| 256 | | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ |
| 257 | | avr | avr32 \ |
| 258 | | be32 | be64 \ |
| 259 | | bfin \ |
| 260 | | c4x | c8051 | clipper \ |
| 261 | | d10v | d30v | dlx | dsp16xx \ |
| 262 | | epiphany \ |
| 263 | | fido | fr30 | frv \ |
| 264 | | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ |
| 265 | | hexagon \ |
| 266 | | i370 | i860 | i960 | ia64 \ |
| 267 | | ip2k | iq2000 \ |
| 268 | | k1om \ |
| 269 | | le32 | le64 \ |
| 270 | | lm32 \ |
| 271 | | m32c | m32r | m32rle | m68000 | m68k | m88k \ |
| 272 | | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ |
| 273 | | mips | mipsbe | mipseb | mipsel | mipsle \ |
| 274 | | mips16 \ |
| 275 | | mips64 | mips64el \ |
| 276 | | mips64octeon | mips64octeonel \ |
| 277 | | mips64orion | mips64orionel \ |
| @@ -272,38 +281,41 @@ | |
| 281 | | mips64vr4300 | mips64vr4300el \ |
| 282 | | mips64vr5000 | mips64vr5000el \ |
| 283 | | mips64vr5900 | mips64vr5900el \ |
| 284 | | mipsisa32 | mipsisa32el \ |
| 285 | | mipsisa32r2 | mipsisa32r2el \ |
| 286 | | mipsisa32r6 | mipsisa32r6el \ |
| 287 | | mipsisa64 | mipsisa64el \ |
| 288 | | mipsisa64r2 | mipsisa64r2el \ |
| 289 | | mipsisa64r6 | mipsisa64r6el \ |
| 290 | | mipsisa64sb1 | mipsisa64sb1el \ |
| 291 | | mipsisa64sr71k | mipsisa64sr71kel \ |
| 292 | | mipsr5900 | mipsr5900el \ |
| 293 | | mipstx39 | mipstx39el \ |
| 294 | | mn10200 | mn10300 \ |
| 295 | | moxie \ |
| 296 | | mt \ |
| 297 | | msp430 \ |
| 298 | | nds32 | nds32le | nds32be \ |
| 299 | | nios | nios2 | nios2eb | nios2el \ |
| 300 | | ns16k | ns32k \ |
| 301 | | open8 | or1k | or1knd | or32 \ |
| 302 | | pdp10 | pdp11 | pj | pjl \ |
| 303 | | powerpc | powerpc64 | powerpc64le | powerpcle \ |
| 304 | | pyramid \ |
| 305 | | rl78 | rx \ |
| 306 | | score \ |
| 307 | | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ |
| 308 | | sh64 | sh64le \ |
| 309 | | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ |
| 310 | | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ |
| 311 | | spu \ |
| 312 | | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ |
| 313 | | ubicom32 \ |
| 314 | | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ |
| 315 | | we32k \ |
| 316 | | x86 | xc16x | xstormy16 | xtensa \ |
| 317 | | z8k | z80) |
| 318 | basic_machine=$basic_machine-unknown |
| 319 | ;; |
| 320 | c54x) |
| 321 | basic_machine=tic54x-unknown |
| @@ -312,20 +324,34 @@ | |
| 324 | basic_machine=tic55x-unknown |
| 325 | ;; |
| 326 | c6x) |
| 327 | basic_machine=tic6x-unknown |
| 328 | ;; |
| 329 | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) |
| 330 | basic_machine=$basic_machine-unknown |
| 331 | os=-none |
| 332 | ;; |
| 333 | m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) |
| 334 | ;; |
| 335 | ms1) |
| 336 | basic_machine=mt-unknown |
| 337 | ;; |
| 338 | |
| 339 | strongarm | thumb | xscale) |
| 340 | basic_machine=arm-unknown |
| 341 | ;; |
| 342 | xgate) |
| 343 | basic_machine=$basic_machine-unknown |
| 344 | os=-none |
| 345 | ;; |
| 346 | xscaleeb) |
| 347 | basic_machine=armeb-unknown |
| 348 | ;; |
| 349 | |
| 350 | xscaleel) |
| 351 | basic_machine=armel-unknown |
| 352 | ;; |
| 353 | |
| 354 | # We use `pc' rather than `unknown' |
| 355 | # because (1) that's what they normally are, and |
| 356 | # (2) the word "unknown" tends to confuse beginning users. |
| 357 | i*86 | x86_64) |
| @@ -337,29 +363,35 @@ | |
| 363 | exit 1 |
| 364 | ;; |
| 365 | # Recognize the basic CPU types with company name. |
| 366 | 580-* \ |
| 367 | | a29k-* \ |
| 368 | | aarch64-* | aarch64_be-* \ |
| 369 | | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ |
| 370 | | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ |
| 371 | | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ |
| 372 | | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ |
| 373 | | avr-* | avr32-* \ |
| 374 | | be32-* | be64-* \ |
| 375 | | bfin-* | bs2000-* \ |
| 376 | | c[123]* | c30-* | [cjt]90-* | c4x-* \ |
| 377 | | c8051-* | clipper-* | craynv-* | cydra-* \ |
| 378 | | d10v-* | d30v-* | dlx-* \ |
| 379 | | elxsi-* \ |
| 380 | | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ |
| 381 | | h8300-* | h8500-* \ |
| 382 | | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ |
| 383 | | hexagon-* \ |
| 384 | | i*86-* | i860-* | i960-* | ia64-* \ |
| 385 | | ip2k-* | iq2000-* \ |
| 386 | | k1om-* \ |
| 387 | | le32-* | le64-* \ |
| 388 | | lm32-* \ |
| 389 | | m32c-* | m32r-* | m32rle-* \ |
| 390 | | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ |
| 391 | | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ |
| 392 | | microblaze-* | microblazeel-* \ |
| 393 | | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ |
| 394 | | mips16-* \ |
| 395 | | mips64-* | mips64el-* \ |
| 396 | | mips64octeon-* | mips64octeonel-* \ |
| 397 | | mips64orion-* | mips64orionel-* \ |
| @@ -369,39 +401,45 @@ | |
| 401 | | mips64vr4300-* | mips64vr4300el-* \ |
| 402 | | mips64vr5000-* | mips64vr5000el-* \ |
| 403 | | mips64vr5900-* | mips64vr5900el-* \ |
| 404 | | mipsisa32-* | mipsisa32el-* \ |
| 405 | | mipsisa32r2-* | mipsisa32r2el-* \ |
| 406 | | mipsisa32r6-* | mipsisa32r6el-* \ |
| 407 | | mipsisa64-* | mipsisa64el-* \ |
| 408 | | mipsisa64r2-* | mipsisa64r2el-* \ |
| 409 | | mipsisa64r6-* | mipsisa64r6el-* \ |
| 410 | | mipsisa64sb1-* | mipsisa64sb1el-* \ |
| 411 | | mipsisa64sr71k-* | mipsisa64sr71kel-* \ |
| 412 | | mipsr5900-* | mipsr5900el-* \ |
| 413 | | mipstx39-* | mipstx39el-* \ |
| 414 | | mmix-* \ |
| 415 | | mt-* \ |
| 416 | | msp430-* \ |
| 417 | | nds32-* | nds32le-* | nds32be-* \ |
| 418 | | nios-* | nios2-* | nios2eb-* | nios2el-* \ |
| 419 | | none-* | np1-* | ns16k-* | ns32k-* \ |
| 420 | | open8-* \ |
| 421 | | or1k*-* \ |
| 422 | | orion-* \ |
| 423 | | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ |
| 424 | | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ |
| 425 | | pyramid-* \ |
| 426 | | rl78-* | romp-* | rs6000-* | rx-* \ |
| 427 | | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ |
| 428 | | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ |
| 429 | | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ |
| 430 | | sparclite-* \ |
| 431 | | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ |
| 432 | | tahoe-* \ |
| 433 | | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ |
| 434 | | tile*-* \ |
| 435 | | tron-* \ |
| 436 | | ubicom32-* \ |
| 437 | | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ |
| 438 | | vax-* \ |
| 439 | | we32k-* \ |
| 440 | | x86-* | x86_64-* | xc16x-* | xps100-* \ |
| 441 | | xstormy16-* | xtensa*-* \ |
| 442 | | ymp-* \ |
| 443 | | z8k-* | z80-*) |
| 444 | ;; |
| 445 | # Recognize the basic CPU types without company name, with glob match. |
| @@ -422,11 +460,11 @@ | |
| 460 | ;; |
| 461 | a29khif) |
| 462 | basic_machine=a29k-amd |
| 463 | os=-udi |
| 464 | ;; |
| 465 | abacus) |
| 466 | basic_machine=abacus-unknown |
| 467 | ;; |
| 468 | adobe68k) |
| 469 | basic_machine=m68010-adobe |
| 470 | os=-scout |
| @@ -505,11 +543,11 @@ | |
| 543 | ;; |
| 544 | c90) |
| 545 | basic_machine=c90-cray |
| 546 | os=-unicos |
| 547 | ;; |
| 548 | cegcc) |
| 549 | basic_machine=arm-unknown |
| 550 | os=-cegcc |
| 551 | ;; |
| 552 | convex-c1) |
| 553 | basic_machine=c1-convex |
| @@ -537,11 +575,11 @@ | |
| 575 | ;; |
| 576 | craynv) |
| 577 | basic_machine=craynv-cray |
| 578 | os=-unicosmp |
| 579 | ;; |
| 580 | cr16 | cr16-*) |
| 581 | basic_machine=cr16-unknown |
| 582 | os=-elf |
| 583 | ;; |
| 584 | crds | unos) |
| 585 | basic_machine=m68k-crds |
| @@ -695,11 +733,10 @@ | |
| 733 | os=-proelf |
| 734 | ;; |
| 735 | i370-ibm* | ibm*) |
| 736 | basic_machine=i370-ibm |
| 737 | ;; |
| 738 | i*86v32) |
| 739 | basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` |
| 740 | os=-sysv32 |
| 741 | ;; |
| 742 | i*86v4*) |
| @@ -753,15 +790,19 @@ | |
| 790 | ;; |
| 791 | merlin) |
| 792 | basic_machine=ns32k-utek |
| 793 | os=-sysv |
| 794 | ;; |
| 795 | microblaze*) |
| 796 | basic_machine=microblaze-xilinx |
| 797 | ;; |
| 798 | mingw64) |
| 799 | basic_machine=x86_64-pc |
| 800 | os=-mingw64 |
| 801 | ;; |
| 802 | mingw32) |
| 803 | basic_machine=i686-pc |
| 804 | os=-mingw32 |
| 805 | ;; |
| 806 | mingw32ce) |
| 807 | basic_machine=arm-unknown |
| 808 | os=-mingw32ce |
| @@ -792,18 +833,22 @@ | |
| 833 | os=-msdos |
| 834 | ;; |
| 835 | ms1-*) |
| 836 | basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` |
| 837 | ;; |
| 838 | msys) |
| 839 | basic_machine=i686-pc |
| 840 | os=-msys |
| 841 | ;; |
| 842 | mvs) |
| 843 | basic_machine=i370-ibm |
| 844 | os=-mvs |
| 845 | ;; |
| 846 | nacl) |
| 847 | basic_machine=le32-unknown |
| 848 | os=-nacl |
| 849 | ;; |
| 850 | ncr3000) |
| 851 | basic_machine=i486-ncr |
| 852 | os=-sysv4 |
| 853 | ;; |
| 854 | netbsd386) |
| @@ -864,14 +909,14 @@ | |
| 909 | os=-nonstopux |
| 910 | ;; |
| 911 | np1) |
| 912 | basic_machine=np1-gould |
| 913 | ;; |
| 914 | neo-tandem) |
| 915 | basic_machine=neo-tandem |
| 916 | ;; |
| 917 | nse-tandem) |
| 918 | basic_machine=nse-tandem |
| 919 | ;; |
| 920 | nsr-tandem) |
| 921 | basic_machine=nsr-tandem |
| 922 | ;; |
| @@ -952,13 +997,14 @@ | |
| 997 | pn) |
| 998 | basic_machine=pn-gould |
| 999 | ;; |
| 1000 | power) basic_machine=power-ibm |
| 1001 | ;; |
| 1002 | ppc | ppcbe) basic_machine=powerpc-unknown |
| 1003 | ;; |
| 1004 | ppc-* | ppcbe-*) |
| 1005 | basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` |
| 1006 | ;; |
| 1007 | ppcle | powerpclittle | ppc-le | powerpc-little) |
| 1008 | basic_machine=powerpcle-unknown |
| 1009 | ;; |
| 1010 | ppcle-* | powerpclittle-*) |
| @@ -979,11 +1025,15 @@ | |
| 1025 | ;; |
| 1026 | pw32) |
| 1027 | basic_machine=i586-unknown |
| 1028 | os=-pw32 |
| 1029 | ;; |
| 1030 | rdos | rdos64) |
| 1031 | basic_machine=x86_64-pc |
| 1032 | os=-rdos |
| 1033 | ;; |
| 1034 | rdos32) |
| 1035 | basic_machine=i386-pc |
| 1036 | os=-rdos |
| 1037 | ;; |
| 1038 | rom68k) |
| 1039 | basic_machine=m68k-rom68k |
| @@ -1048,10 +1098,13 @@ | |
| 1098 | ;; |
| 1099 | stratus) |
| 1100 | basic_machine=i860-stratus |
| 1101 | os=-sysv4 |
| 1102 | ;; |
| 1103 | strongarm-* | thumb-*) |
| 1104 | basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` |
| 1105 | ;; |
| 1106 | sun2) |
| 1107 | basic_machine=m68000-sun |
| 1108 | ;; |
| 1109 | sun2os3) |
| 1110 | basic_machine=m68000-sun |
| @@ -1104,17 +1157,12 @@ | |
| 1157 | ;; |
| 1158 | t90) |
| 1159 | basic_machine=t90-cray |
| 1160 | os=-unicos |
| 1161 | ;; |
| 1162 | tile*) |
| 1163 | basic_machine=$basic_machine-unknown |
| 1164 | os=-linux-gnu |
| 1165 | ;; |
| 1166 | tx39) |
| 1167 | basic_machine=mipstx39-unknown |
| 1168 | ;; |
| @@ -1180,10 +1228,13 @@ | |
| 1228 | os=-mingw32 |
| 1229 | ;; |
| 1230 | xps | xps100) |
| 1231 | basic_machine=xps100-honeywell |
| 1232 | ;; |
| 1233 | xscale-* | xscalee[bl]-*) |
| 1234 | basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` |
| 1235 | ;; |
| 1236 | ymp) |
| 1237 | basic_machine=ymp-cray |
| 1238 | os=-unicos |
| 1239 | ;; |
| 1240 | z8k-*-coff) |
| @@ -1277,15 +1328,15 @@ | |
| 1328 | # Decode manufacturer-specific aliases for certain operating systems. |
| 1329 | |
| 1330 | if [ x"$os" != x"" ] |
| 1331 | then |
| 1332 | case $os in |
| 1333 | # First match some system type aliases |
| 1334 | # that might get confused with valid system types. |
| 1335 | # -solaris* is a basic system type, with this one exception. |
| 1336 | -auroraux) |
| 1337 | os=-auroraux |
| 1338 | ;; |
| 1339 | -solaris1 | -solaris1.*) |
| 1340 | os=`echo $os | sed -e 's|solaris1|sunos4|'` |
| 1341 | ;; |
| 1342 | -solaris) |
| @@ -1305,33 +1356,33 @@ | |
| 1356 | # Each alternative MUST END IN A *, to match a version number. |
| 1357 | # -sysv* is not here because it comes later, after sysvr4. |
| 1358 | -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ |
| 1359 | | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ |
| 1360 | | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ |
| 1361 | | -sym* | -kopensolaris* | -plan9* \ |
| 1362 | | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ |
| 1363 | | -aos* | -aros* \ |
| 1364 | | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ |
| 1365 | | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ |
| 1366 | | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ |
| 1367 | | -bitrig* | -openbsd* | -solidbsd* \ |
| 1368 | | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ |
| 1369 | | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ |
| 1370 | | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ |
| 1371 | | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ |
| 1372 | | -chorusos* | -chorusrdb* | -cegcc* \ |
| 1373 | | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ |
| 1374 | | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ |
| 1375 | | -linux-newlib* | -linux-musl* | -linux-uclibc* \ |
| 1376 | | -uxpv* | -beos* | -mpeix* | -udk* \ |
| 1377 | | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ |
| 1378 | | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ |
| 1379 | | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ |
| 1380 | | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ |
| 1381 | | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ |
| 1382 | | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ |
| 1383 | | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) |
| 1384 | # Remember, each alternative MUST END IN *, to match a version number. |
| 1385 | ;; |
| 1386 | -qnx*) |
| 1387 | case $basic_machine in |
| 1388 | x86-* | i*86-*) |
| @@ -1366,11 +1417,11 @@ | |
| 1417 | os=`echo $os | sed -e 's|sunos6|solaris3|'` |
| 1418 | ;; |
| 1419 | -opened*) |
| 1420 | os=-openedition |
| 1421 | ;; |
| 1422 | -os400*) |
| 1423 | os=-os400 |
| 1424 | ;; |
| 1425 | -wince*) |
| 1426 | os=-wince |
| 1427 | ;; |
| @@ -1415,11 +1466,11 @@ | |
| 1466 | os=`echo $os | sed -e 's|sinix|sysv|'` |
| 1467 | ;; |
| 1468 | -sinix*) |
| 1469 | os=-sysv4 |
| 1470 | ;; |
| 1471 | -tpf*) |
| 1472 | os=-tpf |
| 1473 | ;; |
| 1474 | -triton*) |
| 1475 | os=-sysv3 |
| 1476 | ;; |
| @@ -1451,21 +1502,18 @@ | |
| 1502 | os=-mint |
| 1503 | ;; |
| 1504 | -aros*) |
| 1505 | os=-aros |
| 1506 | ;; |
| 1507 | -zvmoe) |
| 1508 | os=-zvmoe |
| 1509 | ;; |
| 1510 | -dicos*) |
| 1511 | os=-dicos |
| 1512 | ;; |
| 1513 | -nacl*) |
| 1514 | ;; |
| 1515 | -none) |
| 1516 | ;; |
| 1517 | *) |
| 1518 | # Get rid of the `-' at the beginning of $os. |
| 1519 | os=`echo $os | sed 's/[^-]*-//'` |
| @@ -1484,14 +1532,14 @@ | |
| 1532 | # that MANUFACTURER isn't an operating system. Otherwise, code above |
| 1533 | # will signal an error saying that MANUFACTURER isn't an operating |
| 1534 | # system, and we'll never get to this point. |
| 1535 | |
| 1536 | case $basic_machine in |
| 1537 | score-*) |
| 1538 | os=-elf |
| 1539 | ;; |
| 1540 | spu-*) |
| 1541 | os=-elf |
| 1542 | ;; |
| 1543 | *-acorn) |
| 1544 | os=-riscix1.2 |
| 1545 | ;; |
| @@ -1499,12 +1547,18 @@ | |
| 1547 | os=-linux |
| 1548 | ;; |
| 1549 | arm*-semi) |
| 1550 | os=-aout |
| 1551 | ;; |
| 1552 | c4x-* | tic4x-*) |
| 1553 | os=-coff |
| 1554 | ;; |
| 1555 | c8051-*) |
| 1556 | os=-elf |
| 1557 | ;; |
| 1558 | hexagon-*) |
| 1559 | os=-elf |
| 1560 | ;; |
| 1561 | tic54x-*) |
| 1562 | os=-coff |
| 1563 | ;; |
| 1564 | tic55x-*) |
| @@ -1529,18 +1583,15 @@ | |
| 1583 | i386-sun) |
| 1584 | os=-sunos4.0.2 |
| 1585 | ;; |
| 1586 | m68000-sun) |
| 1587 | os=-sunos3 |
| 1588 | ;; |
| 1589 | m68*-cisco) |
| 1590 | os=-aout |
| 1591 | ;; |
| 1592 | mep-*) |
| 1593 | os=-elf |
| 1594 | ;; |
| 1595 | mips*-cisco) |
| 1596 | os=-elf |
| 1597 | ;; |
| @@ -1563,11 +1614,11 @@ | |
| 1614 | os=-haiku |
| 1615 | ;; |
| 1616 | *-ibm) |
| 1617 | os=-aix |
| 1618 | ;; |
| 1619 | *-knuth) |
| 1620 | os=-mmixware |
| 1621 | ;; |
| 1622 | *-wec) |
| 1623 | os=-proelf |
| 1624 | ;; |
| 1625 |
+19
-2
| --- src/allrepo.c | ||
| +++ src/allrepo.c | ||
| @@ -107,10 +107,12 @@ | ||
| 107 | 107 | ** |
| 108 | 108 | ** ignore Arguments are repositories that should be ignored by |
| 109 | 109 | ** subsequent clean, extras, list, pull, push, rebuild, and |
| 110 | 110 | ** sync operations. The -c|--ckout option causes the listed |
| 111 | 111 | ** local checkouts to be ignored instead. |
| 112 | +** | |
| 113 | +** info Run the "info" command on all repositories. | |
| 112 | 114 | ** |
| 113 | 115 | ** list | ls Display the location of all repositories. The -c|--ckout |
| 114 | 116 | ** option causes all local checkouts to be listed instead. |
| 115 | 117 | ** |
| 116 | 118 | ** pull Run a "pull" operation on all repositories. Only the |
| @@ -155,10 +157,11 @@ | ||
| 155 | 157 | int dryRunFlag = 0; |
| 156 | 158 | int showFile = find_option("showfile",0,0)!=0; |
| 157 | 159 | int stopOnError = find_option("dontstop",0,0)==0; |
| 158 | 160 | int rc; |
| 159 | 161 | int nToDel = 0; |
| 162 | + int showLabel = 0; | |
| 160 | 163 | |
| 161 | 164 | dryRunFlag = find_option("dry-run","n",0)!=0; |
| 162 | 165 | if( !dryRunFlag ){ |
| 163 | 166 | dryRunFlag = find_option("test",0,0)!=0; /* deprecated */ |
| 164 | 167 | } |
| @@ -258,32 +261,40 @@ | ||
| 258 | 261 | } |
| 259 | 262 | fossil_free(zSql); |
| 260 | 263 | } |
| 261 | 264 | db_end_transaction(0); |
| 262 | 265 | return; |
| 266 | + }else if( strncmp(zCmd, "info", n)==0 ){ | |
| 267 | + zCmd = "info"; | |
| 268 | + showLabel = 1; | |
| 269 | + quiet = 1; | |
| 263 | 270 | }else{ |
| 264 | 271 | fossil_fatal("\"all\" subcommand should be one of: " |
| 265 | 272 | "changes clean extras ignore list ls push pull rebuild sync"); |
| 266 | 273 | } |
| 267 | 274 | verify_all_options(); |
| 268 | 275 | zFossil = quoteFilename(g.nameOfExe); |
| 276 | + db_multi_exec("CREATE TEMP TABLE repolist(name,tag);"); | |
| 269 | 277 | if( useCheckouts ){ |
| 270 | - db_prepare(&q, | |
| 278 | + db_multi_exec( | |
| 279 | + "INSERT INTO repolist " | |
| 271 | 280 | "SELECT DISTINCT substr(name, 7), name COLLATE nocase" |
| 272 | 281 | " FROM global_config" |
| 273 | 282 | " WHERE substr(name, 1, 6)=='ckout:'" |
| 274 | 283 | " ORDER BY 1" |
| 275 | 284 | ); |
| 276 | 285 | }else{ |
| 277 | - db_prepare(&q, | |
| 286 | + db_multi_exec( | |
| 287 | + "INSERT INTO repolist " | |
| 278 | 288 | "SELECT DISTINCT substr(name, 6), name COLLATE nocase" |
| 279 | 289 | " FROM global_config" |
| 280 | 290 | " WHERE substr(name, 1, 5)=='repo:'" |
| 281 | 291 | " ORDER BY 1" |
| 282 | 292 | ); |
| 283 | 293 | } |
| 284 | 294 | db_multi_exec("CREATE TEMP TABLE todel(x TEXT)"); |
| 295 | + db_prepare(&q, "SELECT name, tag FROM repolist ORDER BY 1"); | |
| 285 | 296 | while( db_step(&q)==SQLITE_ROW ){ |
| 286 | 297 | const char *zFilename = db_column_text(&q, 0); |
| 287 | 298 | if( file_access(zFilename, F_OK) |
| 288 | 299 | || !file_is_canonical(zFilename) |
| 289 | 300 | || (useCheckouts && file_isdir(zFilename)!=1) |
| @@ -300,10 +311,16 @@ | ||
| 300 | 311 | zFilename); |
| 301 | 312 | } |
| 302 | 313 | zQFilename = quoteFilename(zFilename); |
| 303 | 314 | zSyscmd = mprintf("%s %s %s%s", |
| 304 | 315 | zFossil, zCmd, zQFilename, blob_str(&extra)); |
| 316 | + if( showLabel ){ | |
| 317 | + int len = (int)strlen(zFilename); | |
| 318 | + int nStar = 80 - (len + 15); | |
| 319 | + if( nStar<2 ) nStar = 1; | |
| 320 | + fossil_print("%.13c %s %.*c\n", '*', zFilename, nStar, '*'); | |
| 321 | + } | |
| 305 | 322 | if( !quiet || dryRunFlag ){ |
| 306 | 323 | fossil_print("%s\n", zSyscmd); |
| 307 | 324 | fflush(stdout); |
| 308 | 325 | } |
| 309 | 326 | rc = dryRunFlag ? 0 : fossil_system(zSyscmd); |
| 310 | 327 |
| --- src/allrepo.c | |
| +++ src/allrepo.c | |
| @@ -107,10 +107,12 @@ | |
| 107 | ** |
| 108 | ** ignore Arguments are repositories that should be ignored by |
| 109 | ** subsequent clean, extras, list, pull, push, rebuild, and |
| 110 | ** sync operations. The -c|--ckout option causes the listed |
| 111 | ** local checkouts to be ignored instead. |
| 112 | ** |
| 113 | ** list | ls Display the location of all repositories. The -c|--ckout |
| 114 | ** option causes all local checkouts to be listed instead. |
| 115 | ** |
| 116 | ** pull Run a "pull" operation on all repositories. Only the |
| @@ -155,10 +157,11 @@ | |
| 155 | int dryRunFlag = 0; |
| 156 | int showFile = find_option("showfile",0,0)!=0; |
| 157 | int stopOnError = find_option("dontstop",0,0)==0; |
| 158 | int rc; |
| 159 | int nToDel = 0; |
| 160 | |
| 161 | dryRunFlag = find_option("dry-run","n",0)!=0; |
| 162 | if( !dryRunFlag ){ |
| 163 | dryRunFlag = find_option("test",0,0)!=0; /* deprecated */ |
| 164 | } |
| @@ -258,32 +261,40 @@ | |
| 258 | } |
| 259 | fossil_free(zSql); |
| 260 | } |
| 261 | db_end_transaction(0); |
| 262 | return; |
| 263 | }else{ |
| 264 | fossil_fatal("\"all\" subcommand should be one of: " |
| 265 | "changes clean extras ignore list ls push pull rebuild sync"); |
| 266 | } |
| 267 | verify_all_options(); |
| 268 | zFossil = quoteFilename(g.nameOfExe); |
| 269 | if( useCheckouts ){ |
| 270 | db_prepare(&q, |
| 271 | "SELECT DISTINCT substr(name, 7), name COLLATE nocase" |
| 272 | " FROM global_config" |
| 273 | " WHERE substr(name, 1, 6)=='ckout:'" |
| 274 | " ORDER BY 1" |
| 275 | ); |
| 276 | }else{ |
| 277 | db_prepare(&q, |
| 278 | "SELECT DISTINCT substr(name, 6), name COLLATE nocase" |
| 279 | " FROM global_config" |
| 280 | " WHERE substr(name, 1, 5)=='repo:'" |
| 281 | " ORDER BY 1" |
| 282 | ); |
| 283 | } |
| 284 | db_multi_exec("CREATE TEMP TABLE todel(x TEXT)"); |
| 285 | while( db_step(&q)==SQLITE_ROW ){ |
| 286 | const char *zFilename = db_column_text(&q, 0); |
| 287 | if( file_access(zFilename, F_OK) |
| 288 | || !file_is_canonical(zFilename) |
| 289 | || (useCheckouts && file_isdir(zFilename)!=1) |
| @@ -300,10 +311,16 @@ | |
| 300 | zFilename); |
| 301 | } |
| 302 | zQFilename = quoteFilename(zFilename); |
| 303 | zSyscmd = mprintf("%s %s %s%s", |
| 304 | zFossil, zCmd, zQFilename, blob_str(&extra)); |
| 305 | if( !quiet || dryRunFlag ){ |
| 306 | fossil_print("%s\n", zSyscmd); |
| 307 | fflush(stdout); |
| 308 | } |
| 309 | rc = dryRunFlag ? 0 : fossil_system(zSyscmd); |
| 310 |
| --- src/allrepo.c | |
| +++ src/allrepo.c | |
| @@ -107,10 +107,12 @@ | |
| 107 | ** |
| 108 | ** ignore Arguments are repositories that should be ignored by |
| 109 | ** subsequent clean, extras, list, pull, push, rebuild, and |
| 110 | ** sync operations. The -c|--ckout option causes the listed |
| 111 | ** local checkouts to be ignored instead. |
| 112 | ** |
| 113 | ** info Run the "info" command on all repositories. |
| 114 | ** |
| 115 | ** list | ls Display the location of all repositories. The -c|--ckout |
| 116 | ** option causes all local checkouts to be listed instead. |
| 117 | ** |
| 118 | ** pull Run a "pull" operation on all repositories. Only the |
| @@ -155,10 +157,11 @@ | |
| 157 | int dryRunFlag = 0; |
| 158 | int showFile = find_option("showfile",0,0)!=0; |
| 159 | int stopOnError = find_option("dontstop",0,0)==0; |
| 160 | int rc; |
| 161 | int nToDel = 0; |
| 162 | int showLabel = 0; |
| 163 | |
| 164 | dryRunFlag = find_option("dry-run","n",0)!=0; |
| 165 | if( !dryRunFlag ){ |
| 166 | dryRunFlag = find_option("test",0,0)!=0; /* deprecated */ |
| 167 | } |
| @@ -258,32 +261,40 @@ | |
| 261 | } |
| 262 | fossil_free(zSql); |
| 263 | } |
| 264 | db_end_transaction(0); |
| 265 | return; |
| 266 | }else if( strncmp(zCmd, "info", n)==0 ){ |
| 267 | zCmd = "info"; |
| 268 | showLabel = 1; |
| 269 | quiet = 1; |
| 270 | }else{ |
| 271 | fossil_fatal("\"all\" subcommand should be one of: " |
| 272 | "changes clean extras ignore list ls push pull rebuild sync"); |
| 273 | } |
| 274 | verify_all_options(); |
| 275 | zFossil = quoteFilename(g.nameOfExe); |
| 276 | db_multi_exec("CREATE TEMP TABLE repolist(name,tag);"); |
| 277 | if( useCheckouts ){ |
| 278 | db_multi_exec( |
| 279 | "INSERT INTO repolist " |
| 280 | "SELECT DISTINCT substr(name, 7), name COLLATE nocase" |
| 281 | " FROM global_config" |
| 282 | " WHERE substr(name, 1, 6)=='ckout:'" |
| 283 | " ORDER BY 1" |
| 284 | ); |
| 285 | }else{ |
| 286 | db_multi_exec( |
| 287 | "INSERT INTO repolist " |
| 288 | "SELECT DISTINCT substr(name, 6), name COLLATE nocase" |
| 289 | " FROM global_config" |
| 290 | " WHERE substr(name, 1, 5)=='repo:'" |
| 291 | " ORDER BY 1" |
| 292 | ); |
| 293 | } |
| 294 | db_multi_exec("CREATE TEMP TABLE todel(x TEXT)"); |
| 295 | db_prepare(&q, "SELECT name, tag FROM repolist ORDER BY 1"); |
| 296 | while( db_step(&q)==SQLITE_ROW ){ |
| 297 | const char *zFilename = db_column_text(&q, 0); |
| 298 | if( file_access(zFilename, F_OK) |
| 299 | || !file_is_canonical(zFilename) |
| 300 | || (useCheckouts && file_isdir(zFilename)!=1) |
| @@ -300,10 +311,16 @@ | |
| 311 | zFilename); |
| 312 | } |
| 313 | zQFilename = quoteFilename(zFilename); |
| 314 | zSyscmd = mprintf("%s %s %s%s", |
| 315 | zFossil, zCmd, zQFilename, blob_str(&extra)); |
| 316 | if( showLabel ){ |
| 317 | int len = (int)strlen(zFilename); |
| 318 | int nStar = 80 - (len + 15); |
| 319 | if( nStar<2 ) nStar = 1; |
| 320 | fossil_print("%.13c %s %.*c\n", '*', zFilename, nStar, '*'); |
| 321 | } |
| 322 | if( !quiet || dryRunFlag ){ |
| 323 | fossil_print("%s\n", zSyscmd); |
| 324 | fflush(stdout); |
| 325 | } |
| 326 | rc = dryRunFlag ? 0 : fossil_system(zSyscmd); |
| 327 |
+8
-8
| --- src/attach.c | ||
| +++ src/attach.c | ||
| @@ -29,11 +29,11 @@ | ||
| 29 | 29 | ** |
| 30 | 30 | ** List attachments. |
| 31 | 31 | ** Either one of tkt= or page= are supplied or neither. If neither |
| 32 | 32 | ** are given, all attachments are listed. If one is given, only |
| 33 | 33 | ** attachments for the designated ticket or wiki page are shown. |
| 34 | -** TICKETUUID must be complete | |
| 34 | +** TICKETUUID must be complete | |
| 35 | 35 | */ |
| 36 | 36 | void attachlist_page(void){ |
| 37 | 37 | const char *zPage = P("page"); |
| 38 | 38 | const char *zTkt = P("tkt"); |
| 39 | 39 | Blob sql; |
| @@ -53,11 +53,11 @@ | ||
| 53 | 53 | if( g.perm.RdWiki==0 ) login_needed(); |
| 54 | 54 | style_header("Attachments To %h", zPage); |
| 55 | 55 | blob_appendf(&sql, " WHERE target=%Q", zPage); |
| 56 | 56 | }else if( zTkt ){ |
| 57 | 57 | if( g.perm.RdTkt==0 ) login_needed(); |
| 58 | - style_header("Attachments To Ticket %.10s", zTkt); | |
| 58 | + style_header("Attachments To Ticket %S", zTkt); | |
| 59 | 59 | blob_appendf(&sql, " WHERE target GLOB '%q*'", zTkt); |
| 60 | 60 | }else{ |
| 61 | 61 | if( g.perm.RdTkt==0 && g.perm.RdWiki==0 ) login_needed(); |
| 62 | 62 | style_header("All Attachments"); |
| 63 | 63 | } |
| @@ -75,11 +75,11 @@ | ||
| 75 | 75 | int attachid = db_column_int(&q, 7); |
| 76 | 76 | const char *zDispUser = zUser && zUser[0] ? zUser : "anonymous"; |
| 77 | 77 | int i; |
| 78 | 78 | char *zUrlTail; |
| 79 | 79 | for(i=0; zFilename[i]; i++){ |
| 80 | - if( zFilename[i]=='/' && zFilename[i+1]!=0 ){ | |
| 80 | + if( zFilename[i]=='/' && zFilename[i+1]!=0 ){ | |
| 81 | 81 | zFilename = &zFilename[i+1]; |
| 82 | 82 | i = -1; |
| 83 | 83 | } |
| 84 | 84 | } |
| 85 | 85 | if( strlen(zTarget)==UUID_SIZE && validate16(zTarget,UUID_SIZE) ){ |
| @@ -253,11 +253,11 @@ | ||
| 253 | 253 | zTargetType = mprintf("Wiki Page <a href=\"%s/wiki?name=%h\">%h</a>", |
| 254 | 254 | g.zTop, zPage, zPage); |
| 255 | 255 | }else{ |
| 256 | 256 | if( g.perm.ApndTkt==0 || g.perm.Attach==0 ) login_needed(); |
| 257 | 257 | if( !db_exists("SELECT 1 FROM tag WHERE tagname='tkt-%q'", zTkt) ){ |
| 258 | - zTkt = db_text(0, "SELECT substr(tagname,5) FROM tag" | |
| 258 | + zTkt = db_text(0, "SELECT substr(tagname,5) FROM tag" | |
| 259 | 259 | " WHERE tagname GLOB 'tkt-%q*'", zTkt); |
| 260 | 260 | if( zTkt==0 ) fossil_redirect_home(); |
| 261 | 261 | } |
| 262 | 262 | zTarget = zTkt; |
| 263 | 263 | zTargetType = mprintf("Ticket <a href=\"%s/tktview/%s\">%S</a>", |
| @@ -445,11 +445,11 @@ | ||
| 445 | 445 | @ <p>Confirm you want to delete the attachment shown below. |
| 446 | 446 | @ <input type="submit" name="confirm" value="Confirm"> |
| 447 | 447 | @ </form> |
| 448 | 448 | } |
| 449 | 449 | |
| 450 | - isModerator = g.perm.Admin || | |
| 450 | + isModerator = g.perm.Admin || | |
| 451 | 451 | (zTktUuid && g.perm.ModTkt) || |
| 452 | 452 | (zWikiName && g.perm.ModWiki); |
| 453 | 453 | if( isModerator && (zModAction = P("modaction"))!=0 ){ |
| 454 | 454 | if( strcmp(zModAction,"delete")==0 ){ |
| 455 | 455 | moderation_disapprove(rid); |
| @@ -500,11 +500,11 @@ | ||
| 500 | 500 | if( g.perm.Setup ){ |
| 501 | 501 | @ <tr><th>MIME-Type:</th><td>%h(zMime)</td></tr> |
| 502 | 502 | } |
| 503 | 503 | @ <tr><th valign="top">Description:</th><td valign="top">%h(zDesc)</td></tr> |
| 504 | 504 | @ </table> |
| 505 | - | |
| 505 | + | |
| 506 | 506 | if( isModerator && modPending ){ |
| 507 | 507 | @ <div class="section">Moderation</div> |
| 508 | 508 | @ <blockquote> |
| 509 | 509 | form_begin(0, "%R/ainfo/%s", zUuid); |
| 510 | 510 | @ <label><input type="radio" name="modaction" value="delete"> |
| @@ -557,11 +557,11 @@ | ||
| 557 | 557 | db_prepare(&q, |
| 558 | 558 | "SELECT datetime(mtime%s), filename, user," |
| 559 | 559 | " (SELECT uuid FROM blob WHERE rid=attachid), src" |
| 560 | 560 | " FROM attachment" |
| 561 | 561 | " WHERE isLatest AND src!='' AND target=%Q" |
| 562 | - " ORDER BY mtime DESC", | |
| 562 | + " ORDER BY mtime DESC", | |
| 563 | 563 | timeline_utc(), zTarget |
| 564 | 564 | ); |
| 565 | 565 | while( db_step(&q)==SQLITE_ROW ){ |
| 566 | 566 | const char *zDate = db_column_text(&q, 0); |
| 567 | 567 | const char *zFile = db_column_text(&q, 1); |
| @@ -582,7 +582,7 @@ | ||
| 582 | 582 | } |
| 583 | 583 | if( cnt ){ |
| 584 | 584 | @ </ul> |
| 585 | 585 | } |
| 586 | 586 | db_finalize(&q); |
| 587 | - | |
| 587 | + | |
| 588 | 588 | } |
| 589 | 589 |
| --- src/attach.c | |
| +++ src/attach.c | |
| @@ -29,11 +29,11 @@ | |
| 29 | ** |
| 30 | ** List attachments. |
| 31 | ** Either one of tkt= or page= are supplied or neither. If neither |
| 32 | ** are given, all attachments are listed. If one is given, only |
| 33 | ** attachments for the designated ticket or wiki page are shown. |
| 34 | ** TICKETUUID must be complete |
| 35 | */ |
| 36 | void attachlist_page(void){ |
| 37 | const char *zPage = P("page"); |
| 38 | const char *zTkt = P("tkt"); |
| 39 | Blob sql; |
| @@ -53,11 +53,11 @@ | |
| 53 | if( g.perm.RdWiki==0 ) login_needed(); |
| 54 | style_header("Attachments To %h", zPage); |
| 55 | blob_appendf(&sql, " WHERE target=%Q", zPage); |
| 56 | }else if( zTkt ){ |
| 57 | if( g.perm.RdTkt==0 ) login_needed(); |
| 58 | style_header("Attachments To Ticket %.10s", zTkt); |
| 59 | blob_appendf(&sql, " WHERE target GLOB '%q*'", zTkt); |
| 60 | }else{ |
| 61 | if( g.perm.RdTkt==0 && g.perm.RdWiki==0 ) login_needed(); |
| 62 | style_header("All Attachments"); |
| 63 | } |
| @@ -75,11 +75,11 @@ | |
| 75 | int attachid = db_column_int(&q, 7); |
| 76 | const char *zDispUser = zUser && zUser[0] ? zUser : "anonymous"; |
| 77 | int i; |
| 78 | char *zUrlTail; |
| 79 | for(i=0; zFilename[i]; i++){ |
| 80 | if( zFilename[i]=='/' && zFilename[i+1]!=0 ){ |
| 81 | zFilename = &zFilename[i+1]; |
| 82 | i = -1; |
| 83 | } |
| 84 | } |
| 85 | if( strlen(zTarget)==UUID_SIZE && validate16(zTarget,UUID_SIZE) ){ |
| @@ -253,11 +253,11 @@ | |
| 253 | zTargetType = mprintf("Wiki Page <a href=\"%s/wiki?name=%h\">%h</a>", |
| 254 | g.zTop, zPage, zPage); |
| 255 | }else{ |
| 256 | if( g.perm.ApndTkt==0 || g.perm.Attach==0 ) login_needed(); |
| 257 | if( !db_exists("SELECT 1 FROM tag WHERE tagname='tkt-%q'", zTkt) ){ |
| 258 | zTkt = db_text(0, "SELECT substr(tagname,5) FROM tag" |
| 259 | " WHERE tagname GLOB 'tkt-%q*'", zTkt); |
| 260 | if( zTkt==0 ) fossil_redirect_home(); |
| 261 | } |
| 262 | zTarget = zTkt; |
| 263 | zTargetType = mprintf("Ticket <a href=\"%s/tktview/%s\">%S</a>", |
| @@ -445,11 +445,11 @@ | |
| 445 | @ <p>Confirm you want to delete the attachment shown below. |
| 446 | @ <input type="submit" name="confirm" value="Confirm"> |
| 447 | @ </form> |
| 448 | } |
| 449 | |
| 450 | isModerator = g.perm.Admin || |
| 451 | (zTktUuid && g.perm.ModTkt) || |
| 452 | (zWikiName && g.perm.ModWiki); |
| 453 | if( isModerator && (zModAction = P("modaction"))!=0 ){ |
| 454 | if( strcmp(zModAction,"delete")==0 ){ |
| 455 | moderation_disapprove(rid); |
| @@ -500,11 +500,11 @@ | |
| 500 | if( g.perm.Setup ){ |
| 501 | @ <tr><th>MIME-Type:</th><td>%h(zMime)</td></tr> |
| 502 | } |
| 503 | @ <tr><th valign="top">Description:</th><td valign="top">%h(zDesc)</td></tr> |
| 504 | @ </table> |
| 505 | |
| 506 | if( isModerator && modPending ){ |
| 507 | @ <div class="section">Moderation</div> |
| 508 | @ <blockquote> |
| 509 | form_begin(0, "%R/ainfo/%s", zUuid); |
| 510 | @ <label><input type="radio" name="modaction" value="delete"> |
| @@ -557,11 +557,11 @@ | |
| 557 | db_prepare(&q, |
| 558 | "SELECT datetime(mtime%s), filename, user," |
| 559 | " (SELECT uuid FROM blob WHERE rid=attachid), src" |
| 560 | " FROM attachment" |
| 561 | " WHERE isLatest AND src!='' AND target=%Q" |
| 562 | " ORDER BY mtime DESC", |
| 563 | timeline_utc(), zTarget |
| 564 | ); |
| 565 | while( db_step(&q)==SQLITE_ROW ){ |
| 566 | const char *zDate = db_column_text(&q, 0); |
| 567 | const char *zFile = db_column_text(&q, 1); |
| @@ -582,7 +582,7 @@ | |
| 582 | } |
| 583 | if( cnt ){ |
| 584 | @ </ul> |
| 585 | } |
| 586 | db_finalize(&q); |
| 587 | |
| 588 | } |
| 589 |
| --- src/attach.c | |
| +++ src/attach.c | |
| @@ -29,11 +29,11 @@ | |
| 29 | ** |
| 30 | ** List attachments. |
| 31 | ** Either one of tkt= or page= are supplied or neither. If neither |
| 32 | ** are given, all attachments are listed. If one is given, only |
| 33 | ** attachments for the designated ticket or wiki page are shown. |
| 34 | ** TICKETUUID must be complete |
| 35 | */ |
| 36 | void attachlist_page(void){ |
| 37 | const char *zPage = P("page"); |
| 38 | const char *zTkt = P("tkt"); |
| 39 | Blob sql; |
| @@ -53,11 +53,11 @@ | |
| 53 | if( g.perm.RdWiki==0 ) login_needed(); |
| 54 | style_header("Attachments To %h", zPage); |
| 55 | blob_appendf(&sql, " WHERE target=%Q", zPage); |
| 56 | }else if( zTkt ){ |
| 57 | if( g.perm.RdTkt==0 ) login_needed(); |
| 58 | style_header("Attachments To Ticket %S", zTkt); |
| 59 | blob_appendf(&sql, " WHERE target GLOB '%q*'", zTkt); |
| 60 | }else{ |
| 61 | if( g.perm.RdTkt==0 && g.perm.RdWiki==0 ) login_needed(); |
| 62 | style_header("All Attachments"); |
| 63 | } |
| @@ -75,11 +75,11 @@ | |
| 75 | int attachid = db_column_int(&q, 7); |
| 76 | const char *zDispUser = zUser && zUser[0] ? zUser : "anonymous"; |
| 77 | int i; |
| 78 | char *zUrlTail; |
| 79 | for(i=0; zFilename[i]; i++){ |
| 80 | if( zFilename[i]=='/' && zFilename[i+1]!=0 ){ |
| 81 | zFilename = &zFilename[i+1]; |
| 82 | i = -1; |
| 83 | } |
| 84 | } |
| 85 | if( strlen(zTarget)==UUID_SIZE && validate16(zTarget,UUID_SIZE) ){ |
| @@ -253,11 +253,11 @@ | |
| 253 | zTargetType = mprintf("Wiki Page <a href=\"%s/wiki?name=%h\">%h</a>", |
| 254 | g.zTop, zPage, zPage); |
| 255 | }else{ |
| 256 | if( g.perm.ApndTkt==0 || g.perm.Attach==0 ) login_needed(); |
| 257 | if( !db_exists("SELECT 1 FROM tag WHERE tagname='tkt-%q'", zTkt) ){ |
| 258 | zTkt = db_text(0, "SELECT substr(tagname,5) FROM tag" |
| 259 | " WHERE tagname GLOB 'tkt-%q*'", zTkt); |
| 260 | if( zTkt==0 ) fossil_redirect_home(); |
| 261 | } |
| 262 | zTarget = zTkt; |
| 263 | zTargetType = mprintf("Ticket <a href=\"%s/tktview/%s\">%S</a>", |
| @@ -445,11 +445,11 @@ | |
| 445 | @ <p>Confirm you want to delete the attachment shown below. |
| 446 | @ <input type="submit" name="confirm" value="Confirm"> |
| 447 | @ </form> |
| 448 | } |
| 449 | |
| 450 | isModerator = g.perm.Admin || |
| 451 | (zTktUuid && g.perm.ModTkt) || |
| 452 | (zWikiName && g.perm.ModWiki); |
| 453 | if( isModerator && (zModAction = P("modaction"))!=0 ){ |
| 454 | if( strcmp(zModAction,"delete")==0 ){ |
| 455 | moderation_disapprove(rid); |
| @@ -500,11 +500,11 @@ | |
| 500 | if( g.perm.Setup ){ |
| 501 | @ <tr><th>MIME-Type:</th><td>%h(zMime)</td></tr> |
| 502 | } |
| 503 | @ <tr><th valign="top">Description:</th><td valign="top">%h(zDesc)</td></tr> |
| 504 | @ </table> |
| 505 | |
| 506 | if( isModerator && modPending ){ |
| 507 | @ <div class="section">Moderation</div> |
| 508 | @ <blockquote> |
| 509 | form_begin(0, "%R/ainfo/%s", zUuid); |
| 510 | @ <label><input type="radio" name="modaction" value="delete"> |
| @@ -557,11 +557,11 @@ | |
| 557 | db_prepare(&q, |
| 558 | "SELECT datetime(mtime%s), filename, user," |
| 559 | " (SELECT uuid FROM blob WHERE rid=attachid), src" |
| 560 | " FROM attachment" |
| 561 | " WHERE isLatest AND src!='' AND target=%Q" |
| 562 | " ORDER BY mtime DESC", |
| 563 | timeline_utc(), zTarget |
| 564 | ); |
| 565 | while( db_step(&q)==SQLITE_ROW ){ |
| 566 | const char *zDate = db_column_text(&q, 0); |
| 567 | const char *zFile = db_column_text(&q, 1); |
| @@ -582,7 +582,7 @@ | |
| 582 | } |
| 583 | if( cnt ){ |
| 584 | @ </ul> |
| 585 | } |
| 586 | db_finalize(&q); |
| 587 | |
| 588 | } |
| 589 |
+55
| --- src/blob.c | ||
| +++ src/blob.c | ||
| @@ -1004,10 +1004,65 @@ | ||
| 1004 | 1004 | else if( z[i+1]!='\n' ) z[j++] = '\n'; |
| 1005 | 1005 | } |
| 1006 | 1006 | z[j] = 0; |
| 1007 | 1007 | p->nUsed = j; |
| 1008 | 1008 | } |
| 1009 | + | |
| 1010 | +/* | |
| 1011 | +** Convert blob from cp1252 to UTF-8. As cp1252 is a superset | |
| 1012 | +** of iso8859-1, this is useful on UNIX as well. | |
| 1013 | +** | |
| 1014 | +** This table contains the character translations for 0x80..0xA0. | |
| 1015 | +*/ | |
| 1016 | + | |
| 1017 | +static const unsigned short cp1252[32] = { | |
| 1018 | + 0x20ac, 0x81, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, | |
| 1019 | + 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x8D, 0x017D, 0x8F, | |
| 1020 | + 0x90, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, | |
| 1021 | + 0x2DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x9D, 0x017E, 0x0178 | |
| 1022 | +}; | |
| 1023 | + | |
| 1024 | +void blob_cp1252_to_utf8(Blob *p){ | |
| 1025 | + unsigned char *z = (unsigned char *)p->aData; | |
| 1026 | + int j = p->nUsed; | |
| 1027 | + int i, n; | |
| 1028 | + for(i=n=0; i<j; i++){ | |
| 1029 | + if( z[i]>=0x80 ){ | |
| 1030 | + if( (z[i]<0xa0) && (cp1252[z[i]&0x1f]>=0x800) ){ | |
| 1031 | + n++; | |
| 1032 | + } | |
| 1033 | + n++; | |
| 1034 | + } | |
| 1035 | + } | |
| 1036 | + j += n; | |
| 1037 | + if( j>=p->nAlloc ){ | |
| 1038 | + blob_resize(p, j); | |
| 1039 | + z = (unsigned char *)p->aData; | |
| 1040 | + } | |
| 1041 | + p->nUsed = j; | |
| 1042 | + z[j] = 0; | |
| 1043 | + while( j>i ){ | |
| 1044 | + if( z[--i]>=0x80 ){ | |
| 1045 | + if( z[i]<0xa0 ){ | |
| 1046 | + unsigned short sym = cp1252[z[i]&0x1f]; | |
| 1047 | + if( sym>=0x800 ){ | |
| 1048 | + z[--j] = 0x80 | (sym&0x3f); | |
| 1049 | + z[--j] = 0x80 | ((sym>>6)&0x3f); | |
| 1050 | + z[--j] = 0xe0 | (sym>>12); | |
| 1051 | + }else{ | |
| 1052 | + z[--j] = 0x80 | (sym&0x3f); | |
| 1053 | + z[--j] = 0xc0 | (sym>>6); | |
| 1054 | + } | |
| 1055 | + }else{ | |
| 1056 | + z[--j] = 0x80 | (z[i]&0x3f); | |
| 1057 | + z[--j] = 0xC0 | (z[i]>>6); | |
| 1058 | + } | |
| 1059 | + }else{ | |
| 1060 | + z[--j] = z[i]; | |
| 1061 | + } | |
| 1062 | + } | |
| 1063 | +} | |
| 1009 | 1064 | |
| 1010 | 1065 | /* |
| 1011 | 1066 | ** Shell-escape the given string. Append the result to a blob. |
| 1012 | 1067 | */ |
| 1013 | 1068 | void shell_escape(Blob *pBlob, const char *zIn){ |
| 1014 | 1069 |
| --- src/blob.c | |
| +++ src/blob.c | |
| @@ -1004,10 +1004,65 @@ | |
| 1004 | else if( z[i+1]!='\n' ) z[j++] = '\n'; |
| 1005 | } |
| 1006 | z[j] = 0; |
| 1007 | p->nUsed = j; |
| 1008 | } |
| 1009 | |
| 1010 | /* |
| 1011 | ** Shell-escape the given string. Append the result to a blob. |
| 1012 | */ |
| 1013 | void shell_escape(Blob *pBlob, const char *zIn){ |
| 1014 |
| --- src/blob.c | |
| +++ src/blob.c | |
| @@ -1004,10 +1004,65 @@ | |
| 1004 | else if( z[i+1]!='\n' ) z[j++] = '\n'; |
| 1005 | } |
| 1006 | z[j] = 0; |
| 1007 | p->nUsed = j; |
| 1008 | } |
| 1009 | |
| 1010 | /* |
| 1011 | ** Convert blob from cp1252 to UTF-8. As cp1252 is a superset |
| 1012 | ** of iso8859-1, this is useful on UNIX as well. |
| 1013 | ** |
| 1014 | ** This table contains the character translations for 0x80..0xA0. |
| 1015 | */ |
| 1016 | |
| 1017 | static const unsigned short cp1252[32] = { |
| 1018 | 0x20ac, 0x81, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, |
| 1019 | 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x8D, 0x017D, 0x8F, |
| 1020 | 0x90, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, |
| 1021 | 0x2DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x9D, 0x017E, 0x0178 |
| 1022 | }; |
| 1023 | |
| 1024 | void blob_cp1252_to_utf8(Blob *p){ |
| 1025 | unsigned char *z = (unsigned char *)p->aData; |
| 1026 | int j = p->nUsed; |
| 1027 | int i, n; |
| 1028 | for(i=n=0; i<j; i++){ |
| 1029 | if( z[i]>=0x80 ){ |
| 1030 | if( (z[i]<0xa0) && (cp1252[z[i]&0x1f]>=0x800) ){ |
| 1031 | n++; |
| 1032 | } |
| 1033 | n++; |
| 1034 | } |
| 1035 | } |
| 1036 | j += n; |
| 1037 | if( j>=p->nAlloc ){ |
| 1038 | blob_resize(p, j); |
| 1039 | z = (unsigned char *)p->aData; |
| 1040 | } |
| 1041 | p->nUsed = j; |
| 1042 | z[j] = 0; |
| 1043 | while( j>i ){ |
| 1044 | if( z[--i]>=0x80 ){ |
| 1045 | if( z[i]<0xa0 ){ |
| 1046 | unsigned short sym = cp1252[z[i]&0x1f]; |
| 1047 | if( sym>=0x800 ){ |
| 1048 | z[--j] = 0x80 | (sym&0x3f); |
| 1049 | z[--j] = 0x80 | ((sym>>6)&0x3f); |
| 1050 | z[--j] = 0xe0 | (sym>>12); |
| 1051 | }else{ |
| 1052 | z[--j] = 0x80 | (sym&0x3f); |
| 1053 | z[--j] = 0xc0 | (sym>>6); |
| 1054 | } |
| 1055 | }else{ |
| 1056 | z[--j] = 0x80 | (z[i]&0x3f); |
| 1057 | z[--j] = 0xC0 | (z[i]>>6); |
| 1058 | } |
| 1059 | }else{ |
| 1060 | z[--j] = z[i]; |
| 1061 | } |
| 1062 | } |
| 1063 | } |
| 1064 | |
| 1065 | /* |
| 1066 | ** Shell-escape the given string. Append the result to a blob. |
| 1067 | */ |
| 1068 | void shell_escape(Blob *pBlob, const char *zIn){ |
| 1069 |
+1
-1
| --- src/branch.c | ||
| +++ src/branch.c | ||
| @@ -334,11 +334,11 @@ | ||
| 334 | 334 | @ <li> A <div class="sideboxDescribed">%z(href("brlist?closed")) |
| 335 | 335 | @ closed branch</a></div> is a branch with only |
| 336 | 336 | @ <div class="sideboxDescribed">%z(href("leaves?closed")) |
| 337 | 337 | @ closed leaves</a></div>. |
| 338 | 338 | @ Closed branches are fixed and do not change (unless they are first |
| 339 | - @ reopened)</li> | |
| 339 | + @ reopened).</li> | |
| 340 | 340 | @ </ol> |
| 341 | 341 | style_sidebox_end(); |
| 342 | 342 | |
| 343 | 343 | branch_prepare_list_query(&q, showAll?1:(showClosed?-1:0)); |
| 344 | 344 | cnt = 0; |
| 345 | 345 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -334,11 +334,11 @@ | |
| 334 | @ <li> A <div class="sideboxDescribed">%z(href("brlist?closed")) |
| 335 | @ closed branch</a></div> is a branch with only |
| 336 | @ <div class="sideboxDescribed">%z(href("leaves?closed")) |
| 337 | @ closed leaves</a></div>. |
| 338 | @ Closed branches are fixed and do not change (unless they are first |
| 339 | @ reopened)</li> |
| 340 | @ </ol> |
| 341 | style_sidebox_end(); |
| 342 | |
| 343 | branch_prepare_list_query(&q, showAll?1:(showClosed?-1:0)); |
| 344 | cnt = 0; |
| 345 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -334,11 +334,11 @@ | |
| 334 | @ <li> A <div class="sideboxDescribed">%z(href("brlist?closed")) |
| 335 | @ closed branch</a></div> is a branch with only |
| 336 | @ <div class="sideboxDescribed">%z(href("leaves?closed")) |
| 337 | @ closed leaves</a></div>. |
| 338 | @ Closed branches are fixed and do not change (unless they are first |
| 339 | @ reopened).</li> |
| 340 | @ </ol> |
| 341 | style_sidebox_end(); |
| 342 | |
| 343 | branch_prepare_list_query(&q, showAll?1:(showClosed?-1:0)); |
| 344 | cnt = 0; |
| 345 |
+1
-1
| --- src/browse.c | ||
| +++ src/browse.c | ||
| @@ -179,11 +179,11 @@ | ||
| 179 | 179 | if( linkTip ){ |
| 180 | 180 | style_submenu_element("Tip", "Tip", "%s", |
| 181 | 181 | url_render(&sURI, "ci", "tip", 0, 0)); |
| 182 | 182 | } |
| 183 | 183 | if( zCI ){ |
| 184 | - @ <h2>Files of check-in [%z(href("vinfo?name=%s",zUuid))%.10s(zUuid)</a>] | |
| 184 | + @ <h2>Files of check-in [%z(href("vinfo?name=%s",zUuid))%S(zUuid)</a>] | |
| 185 | 185 | @ %s(blob_str(&dirname))</h2> |
| 186 | 186 | zSubdirLink = mprintf("%R/dir?ci=%s&name=%T", zUuid, zPrefix); |
| 187 | 187 | if( nD==0 ){ |
| 188 | 188 | style_submenu_element("File Ages", "File Ages", "%R/fileage?name=%s", |
| 189 | 189 | zUuid); |
| 190 | 190 |
| --- src/browse.c | |
| +++ src/browse.c | |
| @@ -179,11 +179,11 @@ | |
| 179 | if( linkTip ){ |
| 180 | style_submenu_element("Tip", "Tip", "%s", |
| 181 | url_render(&sURI, "ci", "tip", 0, 0)); |
| 182 | } |
| 183 | if( zCI ){ |
| 184 | @ <h2>Files of check-in [%z(href("vinfo?name=%s",zUuid))%.10s(zUuid)</a>] |
| 185 | @ %s(blob_str(&dirname))</h2> |
| 186 | zSubdirLink = mprintf("%R/dir?ci=%s&name=%T", zUuid, zPrefix); |
| 187 | if( nD==0 ){ |
| 188 | style_submenu_element("File Ages", "File Ages", "%R/fileage?name=%s", |
| 189 | zUuid); |
| 190 |
| --- src/browse.c | |
| +++ src/browse.c | |
| @@ -179,11 +179,11 @@ | |
| 179 | if( linkTip ){ |
| 180 | style_submenu_element("Tip", "Tip", "%s", |
| 181 | url_render(&sURI, "ci", "tip", 0, 0)); |
| 182 | } |
| 183 | if( zCI ){ |
| 184 | @ <h2>Files of check-in [%z(href("vinfo?name=%s",zUuid))%S(zUuid)</a>] |
| 185 | @ %s(blob_str(&dirname))</h2> |
| 186 | zSubdirLink = mprintf("%R/dir?ci=%s&name=%T", zUuid, zPrefix); |
| 187 | if( nD==0 ){ |
| 188 | style_submenu_element("File Ages", "File Ages", "%R/fileage?name=%s", |
| 189 | zUuid); |
| 190 |
+16
-5
| --- src/checkin.c | ||
| +++ src/checkin.c | ||
| @@ -928,11 +928,11 @@ | ||
| 928 | 928 | " WHERE datetime(mtime)>=%Q" |
| 929 | 929 | " AND type='ci' AND objid=%d", |
| 930 | 930 | zDate, rid |
| 931 | 931 | ); |
| 932 | 932 | if( b ){ |
| 933 | - fossil_fatal("ancestor check-in [%.10s] (%s) is not older (clock skew?)" | |
| 933 | + fossil_fatal("ancestor check-in [%S] (%s) is not older (clock skew?)" | |
| 934 | 934 | " Use --allow-older to override.", zUuid, zDate); |
| 935 | 935 | } |
| 936 | 936 | #endif |
| 937 | 937 | } |
| 938 | 938 | |
| @@ -1296,11 +1296,10 @@ | ||
| 1296 | 1296 | }else if( fHasInvalidUtf8 ){ |
| 1297 | 1297 | if( encodingOk ){ |
| 1298 | 1298 | return 0; /* We don't want encoding warnings for this file. */ |
| 1299 | 1299 | } |
| 1300 | 1300 | zWarning = "invalid UTF-8"; |
| 1301 | - zConvert = ""; /* Possible conversion to UTF-8 not yet implemented. */ | |
| 1302 | 1301 | zDisable = "\"encoding-glob\" setting"; |
| 1303 | 1302 | }else if( fHasAnyCr ){ |
| 1304 | 1303 | if( crnlOk ){ |
| 1305 | 1304 | return 0; /* We don't want CR/NL warnings for this file. */ |
| 1306 | 1305 | } |
| @@ -1341,10 +1340,12 @@ | ||
| 1341 | 1340 | if( fUnicode ) { |
| 1342 | 1341 | int bomSize; |
| 1343 | 1342 | const unsigned char *bom = get_utf8_bom(&bomSize); |
| 1344 | 1343 | fwrite(bom, 1, bomSize, f); |
| 1345 | 1344 | blob_to_utf8_no_bom(p, 0); |
| 1345 | + }else if( fHasInvalidUtf8 ){ | |
| 1346 | + blob_cp1252_to_utf8(p); | |
| 1346 | 1347 | } |
| 1347 | 1348 | if( fHasAnyCr ){ |
| 1348 | 1349 | blob_to_lf_only(p); |
| 1349 | 1350 | } |
| 1350 | 1351 | fwrite(blob_buffer(p), 1, blob_size(p), f); |
| @@ -1676,15 +1677,25 @@ | ||
| 1676 | 1677 | ){ |
| 1677 | 1678 | fossil_fatal("would fork. \"update\" first or use --allow-fork."); |
| 1678 | 1679 | } |
| 1679 | 1680 | |
| 1680 | 1681 | /* |
| 1681 | - ** Do not allow a commit against a closed leaf | |
| 1682 | + ** Do not allow a commit against a closed leaf unless the commit | |
| 1683 | + ** ends up on a different branch. | |
| 1682 | 1684 | */ |
| 1683 | - if( db_exists("SELECT 1 FROM tagxref" | |
| 1685 | + if( | |
| 1686 | + /* parent checkin has the "closed" tag... */ | |
| 1687 | + db_exists("SELECT 1 FROM tagxref" | |
| 1684 | 1688 | " WHERE tagid=%d AND rid=%d AND tagtype>0", |
| 1685 | - TAG_CLOSED, vid) ){ | |
| 1689 | + TAG_CLOSED, vid) | |
| 1690 | + /* ... and the new checkin has no --branch option or the --branch | |
| 1691 | + ** option does not actually change the branch */ | |
| 1692 | + && (sCiInfo.zBranch==0 | |
| 1693 | + || db_exists("SELECT 1 FROM tagxref" | |
| 1694 | + " WHERE tagid=%d AND rid=%d AND tagtype>0" | |
| 1695 | + " AND value=%Q", TAG_BRANCH, vid, sCiInfo.zBranch)) | |
| 1696 | + ){ | |
| 1686 | 1697 | fossil_fatal("cannot commit against a closed leaf"); |
| 1687 | 1698 | } |
| 1688 | 1699 | |
| 1689 | 1700 | if( useCksum ) vfile_aggregate_checksum_disk(vid, &cksum1); |
| 1690 | 1701 | if( zComment ){ |
| 1691 | 1702 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -928,11 +928,11 @@ | |
| 928 | " WHERE datetime(mtime)>=%Q" |
| 929 | " AND type='ci' AND objid=%d", |
| 930 | zDate, rid |
| 931 | ); |
| 932 | if( b ){ |
| 933 | fossil_fatal("ancestor check-in [%.10s] (%s) is not older (clock skew?)" |
| 934 | " Use --allow-older to override.", zUuid, zDate); |
| 935 | } |
| 936 | #endif |
| 937 | } |
| 938 | |
| @@ -1296,11 +1296,10 @@ | |
| 1296 | }else if( fHasInvalidUtf8 ){ |
| 1297 | if( encodingOk ){ |
| 1298 | return 0; /* We don't want encoding warnings for this file. */ |
| 1299 | } |
| 1300 | zWarning = "invalid UTF-8"; |
| 1301 | zConvert = ""; /* Possible conversion to UTF-8 not yet implemented. */ |
| 1302 | zDisable = "\"encoding-glob\" setting"; |
| 1303 | }else if( fHasAnyCr ){ |
| 1304 | if( crnlOk ){ |
| 1305 | return 0; /* We don't want CR/NL warnings for this file. */ |
| 1306 | } |
| @@ -1341,10 +1340,12 @@ | |
| 1341 | if( fUnicode ) { |
| 1342 | int bomSize; |
| 1343 | const unsigned char *bom = get_utf8_bom(&bomSize); |
| 1344 | fwrite(bom, 1, bomSize, f); |
| 1345 | blob_to_utf8_no_bom(p, 0); |
| 1346 | } |
| 1347 | if( fHasAnyCr ){ |
| 1348 | blob_to_lf_only(p); |
| 1349 | } |
| 1350 | fwrite(blob_buffer(p), 1, blob_size(p), f); |
| @@ -1676,15 +1677,25 @@ | |
| 1676 | ){ |
| 1677 | fossil_fatal("would fork. \"update\" first or use --allow-fork."); |
| 1678 | } |
| 1679 | |
| 1680 | /* |
| 1681 | ** Do not allow a commit against a closed leaf |
| 1682 | */ |
| 1683 | if( db_exists("SELECT 1 FROM tagxref" |
| 1684 | " WHERE tagid=%d AND rid=%d AND tagtype>0", |
| 1685 | TAG_CLOSED, vid) ){ |
| 1686 | fossil_fatal("cannot commit against a closed leaf"); |
| 1687 | } |
| 1688 | |
| 1689 | if( useCksum ) vfile_aggregate_checksum_disk(vid, &cksum1); |
| 1690 | if( zComment ){ |
| 1691 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -928,11 +928,11 @@ | |
| 928 | " WHERE datetime(mtime)>=%Q" |
| 929 | " AND type='ci' AND objid=%d", |
| 930 | zDate, rid |
| 931 | ); |
| 932 | if( b ){ |
| 933 | fossil_fatal("ancestor check-in [%S] (%s) is not older (clock skew?)" |
| 934 | " Use --allow-older to override.", zUuid, zDate); |
| 935 | } |
| 936 | #endif |
| 937 | } |
| 938 | |
| @@ -1296,11 +1296,10 @@ | |
| 1296 | }else if( fHasInvalidUtf8 ){ |
| 1297 | if( encodingOk ){ |
| 1298 | return 0; /* We don't want encoding warnings for this file. */ |
| 1299 | } |
| 1300 | zWarning = "invalid UTF-8"; |
| 1301 | zDisable = "\"encoding-glob\" setting"; |
| 1302 | }else if( fHasAnyCr ){ |
| 1303 | if( crnlOk ){ |
| 1304 | return 0; /* We don't want CR/NL warnings for this file. */ |
| 1305 | } |
| @@ -1341,10 +1340,12 @@ | |
| 1340 | if( fUnicode ) { |
| 1341 | int bomSize; |
| 1342 | const unsigned char *bom = get_utf8_bom(&bomSize); |
| 1343 | fwrite(bom, 1, bomSize, f); |
| 1344 | blob_to_utf8_no_bom(p, 0); |
| 1345 | }else if( fHasInvalidUtf8 ){ |
| 1346 | blob_cp1252_to_utf8(p); |
| 1347 | } |
| 1348 | if( fHasAnyCr ){ |
| 1349 | blob_to_lf_only(p); |
| 1350 | } |
| 1351 | fwrite(blob_buffer(p), 1, blob_size(p), f); |
| @@ -1676,15 +1677,25 @@ | |
| 1677 | ){ |
| 1678 | fossil_fatal("would fork. \"update\" first or use --allow-fork."); |
| 1679 | } |
| 1680 | |
| 1681 | /* |
| 1682 | ** Do not allow a commit against a closed leaf unless the commit |
| 1683 | ** ends up on a different branch. |
| 1684 | */ |
| 1685 | if( |
| 1686 | /* parent checkin has the "closed" tag... */ |
| 1687 | db_exists("SELECT 1 FROM tagxref" |
| 1688 | " WHERE tagid=%d AND rid=%d AND tagtype>0", |
| 1689 | TAG_CLOSED, vid) |
| 1690 | /* ... and the new checkin has no --branch option or the --branch |
| 1691 | ** option does not actually change the branch */ |
| 1692 | && (sCiInfo.zBranch==0 |
| 1693 | || db_exists("SELECT 1 FROM tagxref" |
| 1694 | " WHERE tagid=%d AND rid=%d AND tagtype>0" |
| 1695 | " AND value=%Q", TAG_BRANCH, vid, sCiInfo.zBranch)) |
| 1696 | ){ |
| 1697 | fossil_fatal("cannot commit against a closed leaf"); |
| 1698 | } |
| 1699 | |
| 1700 | if( useCksum ) vfile_aggregate_checksum_disk(vid, &cksum1); |
| 1701 | if( zComment ){ |
| 1702 |
+1
-1
| --- src/checkout.c | ||
| +++ src/checkout.c | ||
| @@ -67,11 +67,11 @@ | ||
| 67 | 67 | vid = db_int(0, "SELECT rid FROM blob WHERE uuid=%B", &uuid); |
| 68 | 68 | if( vid==0 ){ |
| 69 | 69 | fossil_fatal("no such check-in: %s", g.argv[2]); |
| 70 | 70 | } |
| 71 | 71 | if( !is_a_version(vid) ){ |
| 72 | - fossil_fatal("object [%.10s] is not a check-in", blob_str(&uuid)); | |
| 72 | + fossil_fatal("object [%S] is not a check-in", blob_str(&uuid)); | |
| 73 | 73 | } |
| 74 | 74 | if( load_vfile_from_rid(vid) && !forceMissingFlag ){ |
| 75 | 75 | fossil_fatal("missing content, unable to checkout"); |
| 76 | 76 | }; |
| 77 | 77 | return vid; |
| 78 | 78 |
| --- src/checkout.c | |
| +++ src/checkout.c | |
| @@ -67,11 +67,11 @@ | |
| 67 | vid = db_int(0, "SELECT rid FROM blob WHERE uuid=%B", &uuid); |
| 68 | if( vid==0 ){ |
| 69 | fossil_fatal("no such check-in: %s", g.argv[2]); |
| 70 | } |
| 71 | if( !is_a_version(vid) ){ |
| 72 | fossil_fatal("object [%.10s] is not a check-in", blob_str(&uuid)); |
| 73 | } |
| 74 | if( load_vfile_from_rid(vid) && !forceMissingFlag ){ |
| 75 | fossil_fatal("missing content, unable to checkout"); |
| 76 | }; |
| 77 | return vid; |
| 78 |
| --- src/checkout.c | |
| +++ src/checkout.c | |
| @@ -67,11 +67,11 @@ | |
| 67 | vid = db_int(0, "SELECT rid FROM blob WHERE uuid=%B", &uuid); |
| 68 | if( vid==0 ){ |
| 69 | fossil_fatal("no such check-in: %s", g.argv[2]); |
| 70 | } |
| 71 | if( !is_a_version(vid) ){ |
| 72 | fossil_fatal("object [%S] is not a check-in", blob_str(&uuid)); |
| 73 | } |
| 74 | if( load_vfile_from_rid(vid) && !forceMissingFlag ){ |
| 75 | fossil_fatal("missing content, unable to checkout"); |
| 76 | }; |
| 77 | return vid; |
| 78 |
+3
| --- src/comformat.c | ||
| +++ src/comformat.c | ||
| @@ -23,10 +23,13 @@ | ||
| 23 | 23 | #include <assert.h> |
| 24 | 24 | #ifdef _WIN32 |
| 25 | 25 | # include <windows.h> |
| 26 | 26 | #else |
| 27 | 27 | # include <termios.h> |
| 28 | +# if defined(TIOCGWINSZ) | |
| 29 | +# include <sys/ioctl.h> | |
| 30 | +# endif | |
| 28 | 31 | #endif |
| 29 | 32 | |
| 30 | 33 | /* |
| 31 | 34 | ** This is the previous value used by most external callers when they |
| 32 | 35 | ** needed to specify a default maximum line length to be used with the |
| 33 | 36 |
| --- src/comformat.c | |
| +++ src/comformat.c | |
| @@ -23,10 +23,13 @@ | |
| 23 | #include <assert.h> |
| 24 | #ifdef _WIN32 |
| 25 | # include <windows.h> |
| 26 | #else |
| 27 | # include <termios.h> |
| 28 | #endif |
| 29 | |
| 30 | /* |
| 31 | ** This is the previous value used by most external callers when they |
| 32 | ** needed to specify a default maximum line length to be used with the |
| 33 |
| --- src/comformat.c | |
| +++ src/comformat.c | |
| @@ -23,10 +23,13 @@ | |
| 23 | #include <assert.h> |
| 24 | #ifdef _WIN32 |
| 25 | # include <windows.h> |
| 26 | #else |
| 27 | # include <termios.h> |
| 28 | # if defined(TIOCGWINSZ) |
| 29 | # include <sys/ioctl.h> |
| 30 | # endif |
| 31 | #endif |
| 32 | |
| 33 | /* |
| 34 | ** This is the previous value used by most external callers when they |
| 35 | ** needed to specify a default maximum line length to be used with the |
| 36 |
+5
| --- src/config.h | ||
| +++ src/config.h | ||
| @@ -24,10 +24,15 @@ | ||
| 24 | 24 | #define _LARGE_FILE 1 |
| 25 | 25 | #ifndef _FILE_OFFSET_BITS |
| 26 | 26 | # define _FILE_OFFSET_BITS 64 |
| 27 | 27 | #endif |
| 28 | 28 | #define _LARGEFILE_SOURCE 1 |
| 29 | + | |
| 30 | +/* Needed for various definitions... */ | |
| 31 | +#ifndef _GNU_SOURCE | |
| 32 | +# define _GNU_SOURCE | |
| 33 | +#endif | |
| 29 | 34 | |
| 30 | 35 | /* Make sure that in Win32 MinGW builds, _USE_32BIT_TIME_T is always defined. */ |
| 31 | 36 | #if defined(_WIN32) && !defined(_WIN64) && !defined(_MSC_VER) && !defined(_USE_32BIT_TIME_T) |
| 32 | 37 | # define _USE_32BIT_TIME_T |
| 33 | 38 | #endif |
| 34 | 39 |
| --- src/config.h | |
| +++ src/config.h | |
| @@ -24,10 +24,15 @@ | |
| 24 | #define _LARGE_FILE 1 |
| 25 | #ifndef _FILE_OFFSET_BITS |
| 26 | # define _FILE_OFFSET_BITS 64 |
| 27 | #endif |
| 28 | #define _LARGEFILE_SOURCE 1 |
| 29 | |
| 30 | /* Make sure that in Win32 MinGW builds, _USE_32BIT_TIME_T is always defined. */ |
| 31 | #if defined(_WIN32) && !defined(_WIN64) && !defined(_MSC_VER) && !defined(_USE_32BIT_TIME_T) |
| 32 | # define _USE_32BIT_TIME_T |
| 33 | #endif |
| 34 |
| --- src/config.h | |
| +++ src/config.h | |
| @@ -24,10 +24,15 @@ | |
| 24 | #define _LARGE_FILE 1 |
| 25 | #ifndef _FILE_OFFSET_BITS |
| 26 | # define _FILE_OFFSET_BITS 64 |
| 27 | #endif |
| 28 | #define _LARGEFILE_SOURCE 1 |
| 29 | |
| 30 | /* Needed for various definitions... */ |
| 31 | #ifndef _GNU_SOURCE |
| 32 | # define _GNU_SOURCE |
| 33 | #endif |
| 34 | |
| 35 | /* Make sure that in Win32 MinGW builds, _USE_32BIT_TIME_T is always defined. */ |
| 36 | #if defined(_WIN32) && !defined(_WIN64) && !defined(_MSC_VER) && !defined(_USE_32BIT_TIME_T) |
| 37 | # define _USE_32BIT_TIME_T |
| 38 | #endif |
| 39 |
M
src/db.c
+3
-8
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1465,29 +1465,24 @@ | ||
| 1465 | 1465 | ** |
| 1466 | 1466 | ** Options: |
| 1467 | 1467 | ** --template FILE copy settings from repository file |
| 1468 | 1468 | ** --admin-user|-A USERNAME select given USERNAME as admin user |
| 1469 | 1469 | ** --date-override DATETIME use DATETIME as time of the initial checkin |
| 1470 | -** (overrides --empty as well) | |
| 1471 | -** --empty Do not create an initial empty checkin. | |
| 1470 | +** (default: do not create an initial checkin) | |
| 1472 | 1471 | ** |
| 1473 | 1472 | ** See also: clone |
| 1474 | 1473 | */ |
| 1475 | 1474 | void create_repository_cmd(void){ |
| 1476 | 1475 | char *zPassword; |
| 1477 | 1476 | const char *zTemplate; /* Repository from which to copy settings */ |
| 1478 | 1477 | const char *zDate; /* Date of the initial check-in */ |
| 1479 | 1478 | const char *zDefaultUser; /* Optional name of the default user */ |
| 1480 | - char const *zCreateEmpty; /* --empty flag set? */ | |
| 1481 | 1479 | |
| 1482 | 1480 | zTemplate = find_option("template",0,1); |
| 1483 | 1481 | zDate = find_option("date-override",0,1); |
| 1484 | 1482 | zDefaultUser = find_option("admin-user","A",1); |
| 1485 | - zCreateEmpty = find_option("empty", 0, 0); | |
| 1486 | - if( !zDate && !zCreateEmpty ){ | |
| 1487 | - zDate = "now"; | |
| 1488 | - } | |
| 1483 | + find_option("empty", 0, 0); /* deprecated */ | |
| 1489 | 1484 | if( g.argc!=3 ){ |
| 1490 | 1485 | usage("REPOSITORY-NAME"); |
| 1491 | 1486 | } |
| 1492 | 1487 | db_create_repository(g.argv[2]); |
| 1493 | 1488 | db_open_repository(g.argv[2]); |
| @@ -2153,11 +2148,11 @@ | ||
| 2153 | 2148 | { "allow-symlinks", 0, 0, 1, 0, "off" }, |
| 2154 | 2149 | { "auto-captcha", "autocaptcha", 0, 0, 0, "on" }, |
| 2155 | 2150 | { "auto-hyperlink", 0, 0, 0, 0, "on", }, |
| 2156 | 2151 | { "auto-shun", 0, 0, 0, 0, "on" }, |
| 2157 | 2152 | { "autosync", 0, 0, 0, 0, "on" }, |
| 2158 | - { "autosync-tries", 0, 0, 0, 0, "" }, | |
| 2153 | + { "autosync-tries", 0, 16, 0, 0, "1" }, | |
| 2159 | 2154 | { "binary-glob", 0, 40, 1, 0, "" }, |
| 2160 | 2155 | { "clearsign", 0, 0, 0, 0, "off" }, |
| 2161 | 2156 | #if defined(_WIN32) || defined(__CYGWIN__) || defined(__DARWIN__) || \ |
| 2162 | 2157 | defined(__APPLE__) |
| 2163 | 2158 | { "case-sensitive", 0, 0, 0, 0, "off" }, |
| 2164 | 2159 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1465,29 +1465,24 @@ | |
| 1465 | ** |
| 1466 | ** Options: |
| 1467 | ** --template FILE copy settings from repository file |
| 1468 | ** --admin-user|-A USERNAME select given USERNAME as admin user |
| 1469 | ** --date-override DATETIME use DATETIME as time of the initial checkin |
| 1470 | ** (overrides --empty as well) |
| 1471 | ** --empty Do not create an initial empty checkin. |
| 1472 | ** |
| 1473 | ** See also: clone |
| 1474 | */ |
| 1475 | void create_repository_cmd(void){ |
| 1476 | char *zPassword; |
| 1477 | const char *zTemplate; /* Repository from which to copy settings */ |
| 1478 | const char *zDate; /* Date of the initial check-in */ |
| 1479 | const char *zDefaultUser; /* Optional name of the default user */ |
| 1480 | char const *zCreateEmpty; /* --empty flag set? */ |
| 1481 | |
| 1482 | zTemplate = find_option("template",0,1); |
| 1483 | zDate = find_option("date-override",0,1); |
| 1484 | zDefaultUser = find_option("admin-user","A",1); |
| 1485 | zCreateEmpty = find_option("empty", 0, 0); |
| 1486 | if( !zDate && !zCreateEmpty ){ |
| 1487 | zDate = "now"; |
| 1488 | } |
| 1489 | if( g.argc!=3 ){ |
| 1490 | usage("REPOSITORY-NAME"); |
| 1491 | } |
| 1492 | db_create_repository(g.argv[2]); |
| 1493 | db_open_repository(g.argv[2]); |
| @@ -2153,11 +2148,11 @@ | |
| 2153 | { "allow-symlinks", 0, 0, 1, 0, "off" }, |
| 2154 | { "auto-captcha", "autocaptcha", 0, 0, 0, "on" }, |
| 2155 | { "auto-hyperlink", 0, 0, 0, 0, "on", }, |
| 2156 | { "auto-shun", 0, 0, 0, 0, "on" }, |
| 2157 | { "autosync", 0, 0, 0, 0, "on" }, |
| 2158 | { "autosync-tries", 0, 0, 0, 0, "" }, |
| 2159 | { "binary-glob", 0, 40, 1, 0, "" }, |
| 2160 | { "clearsign", 0, 0, 0, 0, "off" }, |
| 2161 | #if defined(_WIN32) || defined(__CYGWIN__) || defined(__DARWIN__) || \ |
| 2162 | defined(__APPLE__) |
| 2163 | { "case-sensitive", 0, 0, 0, 0, "off" }, |
| 2164 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1465,29 +1465,24 @@ | |
| 1465 | ** |
| 1466 | ** Options: |
| 1467 | ** --template FILE copy settings from repository file |
| 1468 | ** --admin-user|-A USERNAME select given USERNAME as admin user |
| 1469 | ** --date-override DATETIME use DATETIME as time of the initial checkin |
| 1470 | ** (default: do not create an initial checkin) |
| 1471 | ** |
| 1472 | ** See also: clone |
| 1473 | */ |
| 1474 | void create_repository_cmd(void){ |
| 1475 | char *zPassword; |
| 1476 | const char *zTemplate; /* Repository from which to copy settings */ |
| 1477 | const char *zDate; /* Date of the initial check-in */ |
| 1478 | const char *zDefaultUser; /* Optional name of the default user */ |
| 1479 | |
| 1480 | zTemplate = find_option("template",0,1); |
| 1481 | zDate = find_option("date-override",0,1); |
| 1482 | zDefaultUser = find_option("admin-user","A",1); |
| 1483 | find_option("empty", 0, 0); /* deprecated */ |
| 1484 | if( g.argc!=3 ){ |
| 1485 | usage("REPOSITORY-NAME"); |
| 1486 | } |
| 1487 | db_create_repository(g.argv[2]); |
| 1488 | db_open_repository(g.argv[2]); |
| @@ -2153,11 +2148,11 @@ | |
| 2148 | { "allow-symlinks", 0, 0, 1, 0, "off" }, |
| 2149 | { "auto-captcha", "autocaptcha", 0, 0, 0, "on" }, |
| 2150 | { "auto-hyperlink", 0, 0, 0, 0, "on", }, |
| 2151 | { "auto-shun", 0, 0, 0, 0, "on" }, |
| 2152 | { "autosync", 0, 0, 0, 0, "on" }, |
| 2153 | { "autosync-tries", 0, 16, 0, 0, "1" }, |
| 2154 | { "binary-glob", 0, 40, 1, 0, "" }, |
| 2155 | { "clearsign", 0, 0, 0, 0, "off" }, |
| 2156 | #if defined(_WIN32) || defined(__CYGWIN__) || defined(__DARWIN__) || \ |
| 2157 | defined(__APPLE__) |
| 2158 | { "case-sensitive", 0, 0, 0, 0, "off" }, |
| 2159 |
+1
-1
| --- src/descendants.c | ||
| +++ src/descendants.c | ||
| @@ -406,11 +406,11 @@ | ||
| 406 | 406 | zLastBr = fossil_strdup(zBr); |
| 407 | 407 | } |
| 408 | 408 | n++; |
| 409 | 409 | sqlite3_snprintf(sizeof(zLineNo), zLineNo, "(%d)", n); |
| 410 | 410 | fossil_print("%6s ", zLineNo); |
| 411 | - z = mprintf("%s [%.10s] %s", zDate, zId, zCom); | |
| 411 | + z = mprintf("%s [%S] %s", zDate, zId, zCom); | |
| 412 | 412 | comment_print(z, 7, width); |
| 413 | 413 | fossil_free(z); |
| 414 | 414 | } |
| 415 | 415 | fossil_free(zLastBr); |
| 416 | 416 | db_finalize(&q); |
| 417 | 417 |
| --- src/descendants.c | |
| +++ src/descendants.c | |
| @@ -406,11 +406,11 @@ | |
| 406 | zLastBr = fossil_strdup(zBr); |
| 407 | } |
| 408 | n++; |
| 409 | sqlite3_snprintf(sizeof(zLineNo), zLineNo, "(%d)", n); |
| 410 | fossil_print("%6s ", zLineNo); |
| 411 | z = mprintf("%s [%.10s] %s", zDate, zId, zCom); |
| 412 | comment_print(z, 7, width); |
| 413 | fossil_free(z); |
| 414 | } |
| 415 | fossil_free(zLastBr); |
| 416 | db_finalize(&q); |
| 417 |
| --- src/descendants.c | |
| +++ src/descendants.c | |
| @@ -406,11 +406,11 @@ | |
| 406 | zLastBr = fossil_strdup(zBr); |
| 407 | } |
| 408 | n++; |
| 409 | sqlite3_snprintf(sizeof(zLineNo), zLineNo, "(%d)", n); |
| 410 | fossil_print("%6s ", zLineNo); |
| 411 | z = mprintf("%s [%S] %s", zDate, zId, zCom); |
| 412 | comment_print(z, 7, width); |
| 413 | fossil_free(z); |
| 414 | } |
| 415 | fossil_free(zLastBr); |
| 416 | db_finalize(&q); |
| 417 |
+5
-5
| --- src/diff.c | ||
| +++ src/diff.c | ||
| @@ -2312,12 +2312,12 @@ | ||
| 2312 | 2312 | char *zLink = href("%R/finfo?name=%t&ci=%s",zFilename,zCI); |
| 2313 | 2313 | @ <h2>Ancestors of %z(zLink)%h(zFilename)</a> analyzed:</h2> |
| 2314 | 2314 | @ <ol> |
| 2315 | 2315 | for(p=ann.aVers, i=0; i<ann.nVers; i++, p++){ |
| 2316 | 2316 | @ <li><span style='background-color:%s(p->zBgColor);'>%s(p->zDate) |
| 2317 | - @ check-in %z(href("%R/info/%s",p->zMUuid))%.10s(p->zMUuid)</a> | |
| 2318 | - @ artifact %z(href("%R/artifact/%s",p->zFUuid))%.10s(p->zFUuid)</a> | |
| 2317 | + @ check-in %z(href("%R/info/%s",p->zMUuid))%S(p->zMUuid)</a> | |
| 2318 | + @ artifact %z(href("%R/artifact/%s",p->zFUuid))%S(p->zFUuid)</a> | |
| 2319 | 2319 | @ </span> |
| 2320 | 2320 | #if 0 |
| 2321 | 2321 | if( i>0 ){ |
| 2322 | 2322 | char *zLink = xhref("target='infowindow'", |
| 2323 | 2323 | "%R/fdiff?v1=%S&v2=%S&sbs=1", |
| @@ -2465,11 +2465,11 @@ | ||
| 2465 | 2465 | annFlags |= (ANN_FILE_ANCEST|DIFF_STRIP_EOLCR); |
| 2466 | 2466 | annotate_file(&ann, fnid, mid, iLimit, annFlags); |
| 2467 | 2467 | if( showLog ){ |
| 2468 | 2468 | struct AnnVers *p; |
| 2469 | 2469 | for(p=ann.aVers, i=0; i<ann.nVers; i++, p++){ |
| 2470 | - fossil_print("version %3d: %s %.10s file %.10s\n", | |
| 2470 | + fossil_print("version %3d: %s %S file %S\n", | |
| 2471 | 2471 | i+1, p->zDate, p->zMUuid, p->zFUuid); |
| 2472 | 2472 | } |
| 2473 | 2473 | fossil_print("---------------------------------------------------\n"); |
| 2474 | 2474 | } |
| 2475 | 2475 | for(i=0; i<ann.nOrig; i++){ |
| @@ -2479,21 +2479,21 @@ | ||
| 2479 | 2479 | struct AnnVers *p; |
| 2480 | 2480 | if( iLimit>ann.nVers && iVers<0 ) iVers = ann.nVers-1; |
| 2481 | 2481 | p = ann.aVers + iVers; |
| 2482 | 2482 | if( bBlame ){ |
| 2483 | 2483 | if( iVers>=0 ){ |
| 2484 | - fossil_print("%.10s %s %13.13s: %.*s\n", | |
| 2484 | + fossil_print("%S %s %13.13s: %.*s\n", | |
| 2485 | 2485 | fileVers ? p->zFUuid : p->zMUuid, p->zDate, p->zUser, n, z); |
| 2486 | 2486 | }else{ |
| 2487 | 2487 | fossil_print("%35s %.*s\n", "", n, z); |
| 2488 | 2488 | } |
| 2489 | 2489 | }else{ |
| 2490 | 2490 | if( iVers>=0 ){ |
| 2491 | - fossil_print("%.10s %s %5d: %.*s\n", | |
| 2491 | + fossil_print("%S %s %5d: %.*s\n", | |
| 2492 | 2492 | fileVers ? p->zFUuid : p->zMUuid, p->zDate, i+1, n, z); |
| 2493 | 2493 | }else{ |
| 2494 | 2494 | fossil_print("%21s %5d: %.*s\n", |
| 2495 | 2495 | "", i+1, n, z); |
| 2496 | 2496 | } |
| 2497 | 2497 | } |
| 2498 | 2498 | } |
| 2499 | 2499 | } |
| 2500 | 2500 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -2312,12 +2312,12 @@ | |
| 2312 | char *zLink = href("%R/finfo?name=%t&ci=%s",zFilename,zCI); |
| 2313 | @ <h2>Ancestors of %z(zLink)%h(zFilename)</a> analyzed:</h2> |
| 2314 | @ <ol> |
| 2315 | for(p=ann.aVers, i=0; i<ann.nVers; i++, p++){ |
| 2316 | @ <li><span style='background-color:%s(p->zBgColor);'>%s(p->zDate) |
| 2317 | @ check-in %z(href("%R/info/%s",p->zMUuid))%.10s(p->zMUuid)</a> |
| 2318 | @ artifact %z(href("%R/artifact/%s",p->zFUuid))%.10s(p->zFUuid)</a> |
| 2319 | @ </span> |
| 2320 | #if 0 |
| 2321 | if( i>0 ){ |
| 2322 | char *zLink = xhref("target='infowindow'", |
| 2323 | "%R/fdiff?v1=%S&v2=%S&sbs=1", |
| @@ -2465,11 +2465,11 @@ | |
| 2465 | annFlags |= (ANN_FILE_ANCEST|DIFF_STRIP_EOLCR); |
| 2466 | annotate_file(&ann, fnid, mid, iLimit, annFlags); |
| 2467 | if( showLog ){ |
| 2468 | struct AnnVers *p; |
| 2469 | for(p=ann.aVers, i=0; i<ann.nVers; i++, p++){ |
| 2470 | fossil_print("version %3d: %s %.10s file %.10s\n", |
| 2471 | i+1, p->zDate, p->zMUuid, p->zFUuid); |
| 2472 | } |
| 2473 | fossil_print("---------------------------------------------------\n"); |
| 2474 | } |
| 2475 | for(i=0; i<ann.nOrig; i++){ |
| @@ -2479,21 +2479,21 @@ | |
| 2479 | struct AnnVers *p; |
| 2480 | if( iLimit>ann.nVers && iVers<0 ) iVers = ann.nVers-1; |
| 2481 | p = ann.aVers + iVers; |
| 2482 | if( bBlame ){ |
| 2483 | if( iVers>=0 ){ |
| 2484 | fossil_print("%.10s %s %13.13s: %.*s\n", |
| 2485 | fileVers ? p->zFUuid : p->zMUuid, p->zDate, p->zUser, n, z); |
| 2486 | }else{ |
| 2487 | fossil_print("%35s %.*s\n", "", n, z); |
| 2488 | } |
| 2489 | }else{ |
| 2490 | if( iVers>=0 ){ |
| 2491 | fossil_print("%.10s %s %5d: %.*s\n", |
| 2492 | fileVers ? p->zFUuid : p->zMUuid, p->zDate, i+1, n, z); |
| 2493 | }else{ |
| 2494 | fossil_print("%21s %5d: %.*s\n", |
| 2495 | "", i+1, n, z); |
| 2496 | } |
| 2497 | } |
| 2498 | } |
| 2499 | } |
| 2500 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -2312,12 +2312,12 @@ | |
| 2312 | char *zLink = href("%R/finfo?name=%t&ci=%s",zFilename,zCI); |
| 2313 | @ <h2>Ancestors of %z(zLink)%h(zFilename)</a> analyzed:</h2> |
| 2314 | @ <ol> |
| 2315 | for(p=ann.aVers, i=0; i<ann.nVers; i++, p++){ |
| 2316 | @ <li><span style='background-color:%s(p->zBgColor);'>%s(p->zDate) |
| 2317 | @ check-in %z(href("%R/info/%s",p->zMUuid))%S(p->zMUuid)</a> |
| 2318 | @ artifact %z(href("%R/artifact/%s",p->zFUuid))%S(p->zFUuid)</a> |
| 2319 | @ </span> |
| 2320 | #if 0 |
| 2321 | if( i>0 ){ |
| 2322 | char *zLink = xhref("target='infowindow'", |
| 2323 | "%R/fdiff?v1=%S&v2=%S&sbs=1", |
| @@ -2465,11 +2465,11 @@ | |
| 2465 | annFlags |= (ANN_FILE_ANCEST|DIFF_STRIP_EOLCR); |
| 2466 | annotate_file(&ann, fnid, mid, iLimit, annFlags); |
| 2467 | if( showLog ){ |
| 2468 | struct AnnVers *p; |
| 2469 | for(p=ann.aVers, i=0; i<ann.nVers; i++, p++){ |
| 2470 | fossil_print("version %3d: %s %S file %S\n", |
| 2471 | i+1, p->zDate, p->zMUuid, p->zFUuid); |
| 2472 | } |
| 2473 | fossil_print("---------------------------------------------------\n"); |
| 2474 | } |
| 2475 | for(i=0; i<ann.nOrig; i++){ |
| @@ -2479,21 +2479,21 @@ | |
| 2479 | struct AnnVers *p; |
| 2480 | if( iLimit>ann.nVers && iVers<0 ) iVers = ann.nVers-1; |
| 2481 | p = ann.aVers + iVers; |
| 2482 | if( bBlame ){ |
| 2483 | if( iVers>=0 ){ |
| 2484 | fossil_print("%S %s %13.13s: %.*s\n", |
| 2485 | fileVers ? p->zFUuid : p->zMUuid, p->zDate, p->zUser, n, z); |
| 2486 | }else{ |
| 2487 | fossil_print("%35s %.*s\n", "", n, z); |
| 2488 | } |
| 2489 | }else{ |
| 2490 | if( iVers>=0 ){ |
| 2491 | fossil_print("%S %s %5d: %.*s\n", |
| 2492 | fileVers ? p->zFUuid : p->zMUuid, p->zDate, i+1, n, z); |
| 2493 | }else{ |
| 2494 | fossil_print("%21s %5d: %.*s\n", |
| 2495 | "", i+1, n, z); |
| 2496 | } |
| 2497 | } |
| 2498 | } |
| 2499 | } |
| 2500 |
+2
-2
| --- src/finfo.c | ||
| +++ src/finfo.c | ||
| @@ -200,11 +200,11 @@ | ||
| 200 | 200 | char *zOut; |
| 201 | 201 | if( zBr==0 ) zBr = "trunk"; |
| 202 | 202 | if( iBrief ){ |
| 203 | 203 | fossil_print("%s ", zDate); |
| 204 | 204 | zOut = sqlite3_mprintf( |
| 205 | - "[%.10s] %s (user: %s, artifact: [%.10s], branch: %s)", | |
| 205 | + "[%S] %s (user: %s, artifact: [%S], branch: %s)", | |
| 206 | 206 | zCiUuid, zCom, zUser, zFileUuid, zBr); |
| 207 | 207 | comment_print(zOut, 11, iWidth); |
| 208 | 208 | sqlite3_free(zOut); |
| 209 | 209 | }else{ |
| 210 | 210 | blob_reset(&line); |
| @@ -382,11 +382,11 @@ | ||
| 382 | 382 | if( baseCheckin ){ |
| 383 | 383 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin); |
| 384 | 384 | char *zLink = href("%R/info/%s", zUuid); |
| 385 | 385 | blob_appendf(&title, "Ancestors of file "); |
| 386 | 386 | hyperlinked_path(zFilename, &title, zUuid, "tree", ""); |
| 387 | - blob_appendf(&title, " from check-in %z%.10s</a>", zLink, zUuid); | |
| 387 | + blob_appendf(&title, " from check-in %z%S</a>", zLink, zUuid); | |
| 388 | 388 | fossil_free(zUuid); |
| 389 | 389 | }else{ |
| 390 | 390 | blob_appendf(&title, "History of files named "); |
| 391 | 391 | hyperlinked_path(zFilename, &title, 0, "tree", ""); |
| 392 | 392 | } |
| 393 | 393 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -200,11 +200,11 @@ | |
| 200 | char *zOut; |
| 201 | if( zBr==0 ) zBr = "trunk"; |
| 202 | if( iBrief ){ |
| 203 | fossil_print("%s ", zDate); |
| 204 | zOut = sqlite3_mprintf( |
| 205 | "[%.10s] %s (user: %s, artifact: [%.10s], branch: %s)", |
| 206 | zCiUuid, zCom, zUser, zFileUuid, zBr); |
| 207 | comment_print(zOut, 11, iWidth); |
| 208 | sqlite3_free(zOut); |
| 209 | }else{ |
| 210 | blob_reset(&line); |
| @@ -382,11 +382,11 @@ | |
| 382 | if( baseCheckin ){ |
| 383 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin); |
| 384 | char *zLink = href("%R/info/%s", zUuid); |
| 385 | blob_appendf(&title, "Ancestors of file "); |
| 386 | hyperlinked_path(zFilename, &title, zUuid, "tree", ""); |
| 387 | blob_appendf(&title, " from check-in %z%.10s</a>", zLink, zUuid); |
| 388 | fossil_free(zUuid); |
| 389 | }else{ |
| 390 | blob_appendf(&title, "History of files named "); |
| 391 | hyperlinked_path(zFilename, &title, 0, "tree", ""); |
| 392 | } |
| 393 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -200,11 +200,11 @@ | |
| 200 | char *zOut; |
| 201 | if( zBr==0 ) zBr = "trunk"; |
| 202 | if( iBrief ){ |
| 203 | fossil_print("%s ", zDate); |
| 204 | zOut = sqlite3_mprintf( |
| 205 | "[%S] %s (user: %s, artifact: [%S], branch: %s)", |
| 206 | zCiUuid, zCom, zUser, zFileUuid, zBr); |
| 207 | comment_print(zOut, 11, iWidth); |
| 208 | sqlite3_free(zOut); |
| 209 | }else{ |
| 210 | blob_reset(&line); |
| @@ -382,11 +382,11 @@ | |
| 382 | if( baseCheckin ){ |
| 383 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin); |
| 384 | char *zLink = href("%R/info/%s", zUuid); |
| 385 | blob_appendf(&title, "Ancestors of file "); |
| 386 | hyperlinked_path(zFilename, &title, zUuid, "tree", ""); |
| 387 | blob_appendf(&title, " from check-in %z%S</a>", zLink, zUuid); |
| 388 | fossil_free(zUuid); |
| 389 | }else{ |
| 390 | blob_appendf(&title, "History of files named "); |
| 391 | hyperlinked_path(zFilename, &title, 0, "tree", ""); |
| 392 | } |
| 393 |
+1
-1
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -531,11 +531,11 @@ | ||
| 531 | 531 | timeline_utc(), timeline_utc(), rid, rid |
| 532 | 532 | ); |
| 533 | 533 | sideBySide = !is_false(PD("sbs","1")); |
| 534 | 534 | if( db_step(&q1)==SQLITE_ROW ){ |
| 535 | 535 | const char *zUuid = db_column_text(&q1, 0); |
| 536 | - char *zTitle = mprintf("Check-in [%.10s]", zUuid); | |
| 536 | + char *zTitle = mprintf("Check-in [%S]", zUuid); | |
| 537 | 537 | char *zEUser, *zEComment; |
| 538 | 538 | const char *zUser; |
| 539 | 539 | const char *zComment; |
| 540 | 540 | const char *zDate; |
| 541 | 541 | const char *zOrigDate; |
| 542 | 542 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -531,11 +531,11 @@ | |
| 531 | timeline_utc(), timeline_utc(), rid, rid |
| 532 | ); |
| 533 | sideBySide = !is_false(PD("sbs","1")); |
| 534 | if( db_step(&q1)==SQLITE_ROW ){ |
| 535 | const char *zUuid = db_column_text(&q1, 0); |
| 536 | char *zTitle = mprintf("Check-in [%.10s]", zUuid); |
| 537 | char *zEUser, *zEComment; |
| 538 | const char *zUser; |
| 539 | const char *zComment; |
| 540 | const char *zDate; |
| 541 | const char *zOrigDate; |
| 542 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -531,11 +531,11 @@ | |
| 531 | timeline_utc(), timeline_utc(), rid, rid |
| 532 | ); |
| 533 | sideBySide = !is_false(PD("sbs","1")); |
| 534 | if( db_step(&q1)==SQLITE_ROW ){ |
| 535 | const char *zUuid = db_column_text(&q1, 0); |
| 536 | char *zTitle = mprintf("Check-in [%S]", zUuid); |
| 537 | char *zEUser, *zEComment; |
| 538 | const char *zUser; |
| 539 | const char *zComment; |
| 540 | const char *zDate; |
| 541 | const char *zOrigDate; |
| 542 |
+7
-6
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -298,15 +298,16 @@ | ||
| 298 | 298 | */ |
| 299 | 299 | static int name_search( |
| 300 | 300 | const char *zName, /* The name we are looking for */ |
| 301 | 301 | const NameMap *aMap, /* Search in this array */ |
| 302 | 302 | int nMap, /* Number of slots in aMap[] */ |
| 303 | + int iBegin, /* Lower bound on the array search */ | |
| 303 | 304 | int *pIndex /* OUT: The index in aMap[] of the match */ |
| 304 | 305 | ){ |
| 305 | 306 | int upr, lwr, cnt, m, i; |
| 306 | 307 | int n = strlen(zName); |
| 307 | - lwr = 0; | |
| 308 | + lwr = iBegin; | |
| 308 | 309 | upr = nMap-1; |
| 309 | 310 | while( lwr<=upr ){ |
| 310 | 311 | int mid, c; |
| 311 | 312 | mid = (upr+lwr)/2; |
| 312 | 313 | c = fossil_strcmp(zName, aMap[mid].zName); |
| @@ -318,11 +319,11 @@ | ||
| 318 | 319 | }else{ |
| 319 | 320 | lwr = mid + 1; |
| 320 | 321 | } |
| 321 | 322 | } |
| 322 | 323 | for(m=cnt=0, i=upr-2; cnt<2 && i<=upr+3 && i<nMap; i++){ |
| 323 | - if( i<0 ) continue; | |
| 324 | + if( i<iBegin ) continue; | |
| 324 | 325 | if( strncmp(zName, aMap[i].zName, n)==0 ){ |
| 325 | 326 | m = i; |
| 326 | 327 | cnt++; |
| 327 | 328 | } |
| 328 | 329 | } |
| @@ -655,11 +656,11 @@ | ||
| 655 | 656 | } |
| 656 | 657 | #ifndef _WIN32 |
| 657 | 658 | if( !is_valid_fd(2) ) fossil_panic("file descriptor 2 not open"); |
| 658 | 659 | /* if( is_valid_fd(3) ) fossil_warning("file descriptor 3 is open"); */ |
| 659 | 660 | #endif |
| 660 | - rc = name_search(zCmdName, aCommand, count(aCommand), &idx); | |
| 661 | + rc = name_search(zCmdName, aCommand, count(aCommand), FOSSIL_FIRST_CMD, &idx); | |
| 661 | 662 | if( rc==1 ){ |
| 662 | 663 | #ifdef FOSSIL_ENABLE_TH1_HOOKS |
| 663 | 664 | if( !g.isHTTP && !g.fNoThHook ){ |
| 664 | 665 | rc = Th_CommandHook(zCmdName, 0); |
| 665 | 666 | }else{ |
| @@ -1015,11 +1016,11 @@ | ||
| 1015 | 1016 | zCmdOrPagePlural = "pages"; |
| 1016 | 1017 | }else{ |
| 1017 | 1018 | zCmdOrPage = "command"; |
| 1018 | 1019 | zCmdOrPagePlural = "commands"; |
| 1019 | 1020 | } |
| 1020 | - rc = name_search(g.argv[2], aCommand, count(aCommand), &idx); | |
| 1021 | + rc = name_search(g.argv[2], aCommand, count(aCommand), 0, &idx); | |
| 1021 | 1022 | if( rc==1 ){ |
| 1022 | 1023 | fossil_print("unknown %s: %s\nAvailable %s:\n", |
| 1023 | 1024 | zCmdOrPage, g.argv[2], zCmdOrPagePlural); |
| 1024 | 1025 | command_list(0, isPage ? CMDFLAG_WEBPAGE : (0xff & ~CMDFLAG_WEBPAGE)); |
| 1025 | 1026 | fossil_exit(1); |
| @@ -1059,11 +1060,11 @@ | ||
| 1059 | 1060 | int rc, idx; |
| 1060 | 1061 | char *z, *s, *d; |
| 1061 | 1062 | char const * zCmdOrPage = ('/'==*zCmd) ? "page" : "command"; |
| 1062 | 1063 | style_submenu_element("Command-List", "Command-List", "%s/help", g.zTop); |
| 1063 | 1064 | @ <h1>The "%s(zCmd)" %s(zCmdOrPage):</h1> |
| 1064 | - rc = name_search(zCmd, aCommand, count(aCommand), &idx); | |
| 1065 | + rc = name_search(zCmd, aCommand, count(aCommand), 0, &idx); | |
| 1065 | 1066 | if( rc==1 ){ |
| 1066 | 1067 | @ unknown command: %s(zCmd) |
| 1067 | 1068 | }else if( rc==2 ){ |
| 1068 | 1069 | @ ambiguous command prefix: %s(zCmd) |
| 1069 | 1070 | }else{ |
| @@ -1561,11 +1562,11 @@ | ||
| 1561 | 1562 | } |
| 1562 | 1563 | |
| 1563 | 1564 | /* Locate the method specified by the path and execute the function |
| 1564 | 1565 | ** that implements that method. |
| 1565 | 1566 | */ |
| 1566 | - if( name_search(g.zPath, aWebpage, count(aWebpage), &idx) ){ | |
| 1567 | + if( name_search(g.zPath, aWebpage, count(aWebpage), 0, &idx) ){ | |
| 1567 | 1568 | #ifdef FOSSIL_ENABLE_JSON |
| 1568 | 1569 | if(g.json.isJsonMode){ |
| 1569 | 1570 | json_err(FSL_JSON_E_RESOURCE_NOT_FOUND,NULL,0); |
| 1570 | 1571 | }else |
| 1571 | 1572 | #endif |
| 1572 | 1573 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -298,15 +298,16 @@ | |
| 298 | */ |
| 299 | static int name_search( |
| 300 | const char *zName, /* The name we are looking for */ |
| 301 | const NameMap *aMap, /* Search in this array */ |
| 302 | int nMap, /* Number of slots in aMap[] */ |
| 303 | int *pIndex /* OUT: The index in aMap[] of the match */ |
| 304 | ){ |
| 305 | int upr, lwr, cnt, m, i; |
| 306 | int n = strlen(zName); |
| 307 | lwr = 0; |
| 308 | upr = nMap-1; |
| 309 | while( lwr<=upr ){ |
| 310 | int mid, c; |
| 311 | mid = (upr+lwr)/2; |
| 312 | c = fossil_strcmp(zName, aMap[mid].zName); |
| @@ -318,11 +319,11 @@ | |
| 318 | }else{ |
| 319 | lwr = mid + 1; |
| 320 | } |
| 321 | } |
| 322 | for(m=cnt=0, i=upr-2; cnt<2 && i<=upr+3 && i<nMap; i++){ |
| 323 | if( i<0 ) continue; |
| 324 | if( strncmp(zName, aMap[i].zName, n)==0 ){ |
| 325 | m = i; |
| 326 | cnt++; |
| 327 | } |
| 328 | } |
| @@ -655,11 +656,11 @@ | |
| 655 | } |
| 656 | #ifndef _WIN32 |
| 657 | if( !is_valid_fd(2) ) fossil_panic("file descriptor 2 not open"); |
| 658 | /* if( is_valid_fd(3) ) fossil_warning("file descriptor 3 is open"); */ |
| 659 | #endif |
| 660 | rc = name_search(zCmdName, aCommand, count(aCommand), &idx); |
| 661 | if( rc==1 ){ |
| 662 | #ifdef FOSSIL_ENABLE_TH1_HOOKS |
| 663 | if( !g.isHTTP && !g.fNoThHook ){ |
| 664 | rc = Th_CommandHook(zCmdName, 0); |
| 665 | }else{ |
| @@ -1015,11 +1016,11 @@ | |
| 1015 | zCmdOrPagePlural = "pages"; |
| 1016 | }else{ |
| 1017 | zCmdOrPage = "command"; |
| 1018 | zCmdOrPagePlural = "commands"; |
| 1019 | } |
| 1020 | rc = name_search(g.argv[2], aCommand, count(aCommand), &idx); |
| 1021 | if( rc==1 ){ |
| 1022 | fossil_print("unknown %s: %s\nAvailable %s:\n", |
| 1023 | zCmdOrPage, g.argv[2], zCmdOrPagePlural); |
| 1024 | command_list(0, isPage ? CMDFLAG_WEBPAGE : (0xff & ~CMDFLAG_WEBPAGE)); |
| 1025 | fossil_exit(1); |
| @@ -1059,11 +1060,11 @@ | |
| 1059 | int rc, idx; |
| 1060 | char *z, *s, *d; |
| 1061 | char const * zCmdOrPage = ('/'==*zCmd) ? "page" : "command"; |
| 1062 | style_submenu_element("Command-List", "Command-List", "%s/help", g.zTop); |
| 1063 | @ <h1>The "%s(zCmd)" %s(zCmdOrPage):</h1> |
| 1064 | rc = name_search(zCmd, aCommand, count(aCommand), &idx); |
| 1065 | if( rc==1 ){ |
| 1066 | @ unknown command: %s(zCmd) |
| 1067 | }else if( rc==2 ){ |
| 1068 | @ ambiguous command prefix: %s(zCmd) |
| 1069 | }else{ |
| @@ -1561,11 +1562,11 @@ | |
| 1561 | } |
| 1562 | |
| 1563 | /* Locate the method specified by the path and execute the function |
| 1564 | ** that implements that method. |
| 1565 | */ |
| 1566 | if( name_search(g.zPath, aWebpage, count(aWebpage), &idx) ){ |
| 1567 | #ifdef FOSSIL_ENABLE_JSON |
| 1568 | if(g.json.isJsonMode){ |
| 1569 | json_err(FSL_JSON_E_RESOURCE_NOT_FOUND,NULL,0); |
| 1570 | }else |
| 1571 | #endif |
| 1572 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -298,15 +298,16 @@ | |
| 298 | */ |
| 299 | static int name_search( |
| 300 | const char *zName, /* The name we are looking for */ |
| 301 | const NameMap *aMap, /* Search in this array */ |
| 302 | int nMap, /* Number of slots in aMap[] */ |
| 303 | int iBegin, /* Lower bound on the array search */ |
| 304 | int *pIndex /* OUT: The index in aMap[] of the match */ |
| 305 | ){ |
| 306 | int upr, lwr, cnt, m, i; |
| 307 | int n = strlen(zName); |
| 308 | lwr = iBegin; |
| 309 | upr = nMap-1; |
| 310 | while( lwr<=upr ){ |
| 311 | int mid, c; |
| 312 | mid = (upr+lwr)/2; |
| 313 | c = fossil_strcmp(zName, aMap[mid].zName); |
| @@ -318,11 +319,11 @@ | |
| 319 | }else{ |
| 320 | lwr = mid + 1; |
| 321 | } |
| 322 | } |
| 323 | for(m=cnt=0, i=upr-2; cnt<2 && i<=upr+3 && i<nMap; i++){ |
| 324 | if( i<iBegin ) continue; |
| 325 | if( strncmp(zName, aMap[i].zName, n)==0 ){ |
| 326 | m = i; |
| 327 | cnt++; |
| 328 | } |
| 329 | } |
| @@ -655,11 +656,11 @@ | |
| 656 | } |
| 657 | #ifndef _WIN32 |
| 658 | if( !is_valid_fd(2) ) fossil_panic("file descriptor 2 not open"); |
| 659 | /* if( is_valid_fd(3) ) fossil_warning("file descriptor 3 is open"); */ |
| 660 | #endif |
| 661 | rc = name_search(zCmdName, aCommand, count(aCommand), FOSSIL_FIRST_CMD, &idx); |
| 662 | if( rc==1 ){ |
| 663 | #ifdef FOSSIL_ENABLE_TH1_HOOKS |
| 664 | if( !g.isHTTP && !g.fNoThHook ){ |
| 665 | rc = Th_CommandHook(zCmdName, 0); |
| 666 | }else{ |
| @@ -1015,11 +1016,11 @@ | |
| 1016 | zCmdOrPagePlural = "pages"; |
| 1017 | }else{ |
| 1018 | zCmdOrPage = "command"; |
| 1019 | zCmdOrPagePlural = "commands"; |
| 1020 | } |
| 1021 | rc = name_search(g.argv[2], aCommand, count(aCommand), 0, &idx); |
| 1022 | if( rc==1 ){ |
| 1023 | fossil_print("unknown %s: %s\nAvailable %s:\n", |
| 1024 | zCmdOrPage, g.argv[2], zCmdOrPagePlural); |
| 1025 | command_list(0, isPage ? CMDFLAG_WEBPAGE : (0xff & ~CMDFLAG_WEBPAGE)); |
| 1026 | fossil_exit(1); |
| @@ -1059,11 +1060,11 @@ | |
| 1060 | int rc, idx; |
| 1061 | char *z, *s, *d; |
| 1062 | char const * zCmdOrPage = ('/'==*zCmd) ? "page" : "command"; |
| 1063 | style_submenu_element("Command-List", "Command-List", "%s/help", g.zTop); |
| 1064 | @ <h1>The "%s(zCmd)" %s(zCmdOrPage):</h1> |
| 1065 | rc = name_search(zCmd, aCommand, count(aCommand), 0, &idx); |
| 1066 | if( rc==1 ){ |
| 1067 | @ unknown command: %s(zCmd) |
| 1068 | }else if( rc==2 ){ |
| 1069 | @ ambiguous command prefix: %s(zCmd) |
| 1070 | }else{ |
| @@ -1561,11 +1562,11 @@ | |
| 1562 | } |
| 1563 | |
| 1564 | /* Locate the method specified by the path and execute the function |
| 1565 | ** that implements that method. |
| 1566 | */ |
| 1567 | if( name_search(g.zPath, aWebpage, count(aWebpage), 0, &idx) ){ |
| 1568 | #ifdef FOSSIL_ENABLE_JSON |
| 1569 | if(g.json.isJsonMode){ |
| 1570 | json_err(FSL_JSON_E_RESOURCE_NOT_FOUND,NULL,0); |
| 1571 | }else |
| 1572 | #endif |
| 1573 |
+1
| --- src/makemake.tcl | ||
| +++ src/makemake.tcl | ||
| @@ -157,10 +157,11 @@ | ||
| 157 | 157 | |
| 158 | 158 | # Options used to compile the included SQLite shell on Windows. |
| 159 | 159 | # |
| 160 | 160 | set SHELL_WIN32_OPTIONS $SHELL_OPTIONS |
| 161 | 161 | lappend SHELL_WIN32_OPTIONS -Daccess=file_access |
| 162 | +lappend SHELL_WIN32_OPTIONS -Dsystem=fossil_system | |
| 162 | 163 | lappend SHELL_WIN32_OPTIONS -Dgetenv=fossil_getenv |
| 163 | 164 | lappend SHELL_WIN32_OPTIONS -Dfopen=fossil_fopen |
| 164 | 165 | |
| 165 | 166 | # Name of the final application |
| 166 | 167 | # |
| 167 | 168 |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -157,10 +157,11 @@ | |
| 157 | |
| 158 | # Options used to compile the included SQLite shell on Windows. |
| 159 | # |
| 160 | set SHELL_WIN32_OPTIONS $SHELL_OPTIONS |
| 161 | lappend SHELL_WIN32_OPTIONS -Daccess=file_access |
| 162 | lappend SHELL_WIN32_OPTIONS -Dgetenv=fossil_getenv |
| 163 | lappend SHELL_WIN32_OPTIONS -Dfopen=fossil_fopen |
| 164 | |
| 165 | # Name of the final application |
| 166 | # |
| 167 |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -157,10 +157,11 @@ | |
| 157 | |
| 158 | # Options used to compile the included SQLite shell on Windows. |
| 159 | # |
| 160 | set SHELL_WIN32_OPTIONS $SHELL_OPTIONS |
| 161 | lappend SHELL_WIN32_OPTIONS -Daccess=file_access |
| 162 | lappend SHELL_WIN32_OPTIONS -Dsystem=fossil_system |
| 163 | lappend SHELL_WIN32_OPTIONS -Dgetenv=fossil_getenv |
| 164 | lappend SHELL_WIN32_OPTIONS -Dfopen=fossil_fopen |
| 165 | |
| 166 | # Name of the final application |
| 167 | # |
| 168 |
+31
-31
| --- src/manifest.c | ||
| +++ src/manifest.c | ||
| @@ -890,58 +890,58 @@ | ||
| 890 | 890 | SYNTAX("cluster contains a card other than M- or Z-"); |
| 891 | 891 | } |
| 892 | 892 | if( !seenZ ) SYNTAX("missing Z-card on cluster"); |
| 893 | 893 | p->type = CFTYPE_CLUSTER; |
| 894 | 894 | }else if( p->zEventId ){ |
| 895 | + if( p->zAttachName ) SYNTAX("A-card in event"); | |
| 896 | + if( p->zBaseline ) SYNTAX("B-card in event"); | |
| 895 | 897 | if( p->rDate<=0.0 ) SYNTAX("missing date on event"); |
| 896 | 898 | if( p->nFile>0 ) SYNTAX("F-card in event"); |
| 897 | - if( p->zRepoCksum ) SYNTAX("R-card in event"); | |
| 898 | - if( p->zBaseline ) SYNTAX("B-card in event"); | |
| 899 | 899 | if( p->nField>0 ) SYNTAX("J-card in event"); |
| 900 | 900 | if( p->zTicketUuid ) SYNTAX("K-card in event"); |
| 901 | 901 | if( p->zWikiTitle!=0 ) SYNTAX("L-card in event"); |
| 902 | + if( p->zRepoCksum ) SYNTAX("R-card in event"); | |
| 902 | 903 | if( p->zWiki==0 ) SYNTAX("missing W-card on event"); |
| 903 | - if( p->zAttachName ) SYNTAX("A-card in event"); | |
| 904 | 904 | if( !seenZ ) SYNTAX("missing Z-card on event"); |
| 905 | 905 | p->type = CFTYPE_EVENT; |
| 906 | - }else if( hasSelfRefTag || p->nFile>0 || p->zRepoCksum!=0 || p->zBaseline ){ | |
| 906 | + }else if( p->zWiki!=0 || p->zWikiTitle!=0 ){ | |
| 907 | + if( p->zAttachName ) SYNTAX("A-card in wiki"); | |
| 908 | + if( p->zBaseline ) SYNTAX("B-card in wiki"); | |
| 909 | + if( p->rDate<=0.0 ) SYNTAX("missing date on wiki"); | |
| 910 | + if( p->nFile>0 ) SYNTAX("F-card in wiki"); | |
| 911 | + if( p->nField>0 ) SYNTAX("J-card in wiki"); | |
| 912 | + if( p->zTicketUuid ) SYNTAX("K-card in wiki"); | |
| 913 | + if( p->zWikiTitle==0 ) SYNTAX("missing L-card on wiki"); | |
| 914 | + if( p->zRepoCksum ) SYNTAX("R-card in wiki"); | |
| 915 | + if( p->nTag>0 ) SYNTAX("T-card in wiki"); | |
| 916 | + if( p->zWiki==0 ) SYNTAX("missing W-card on wiki"); | |
| 917 | + if( !seenZ ) SYNTAX("missing Z-card on wiki"); | |
| 918 | + p->type = CFTYPE_WIKI; | |
| 919 | + }else if( hasSelfRefTag || p->nFile>0 || p->zRepoCksum!=0 || p->zBaseline | |
| 920 | + || p->nParent>0 ){ | |
| 921 | + if( p->zAttachName ) SYNTAX("A-card in manifest"); | |
| 907 | 922 | if( p->rDate<=0.0 ) SYNTAX("missing date on manifest"); |
| 908 | 923 | if( p->nField>0 ) SYNTAX("J-card in manifest"); |
| 909 | 924 | if( p->zTicketUuid ) SYNTAX("K-card in manifest"); |
| 910 | - if( p->zWiki ) SYNTAX("W-card in manifest"); | |
| 911 | - if( p->zWikiTitle ) SYNTAX("L-card in manifest"); | |
| 912 | - if( p->zTicketUuid ) SYNTAX("K-card in manifest"); | |
| 913 | - if( p->zAttachName ) SYNTAX("A-card in manifest"); | |
| 914 | 925 | p->type = CFTYPE_MANIFEST; |
| 915 | 926 | }else if( p->nField>0 || p->zTicketUuid!=0 ){ |
| 927 | + if( p->zAttachName ) SYNTAX("A-card in ticket"); | |
| 916 | 928 | if( p->rDate<=0.0 ) SYNTAX("missing date on ticket"); |
| 917 | - if( p->zWiki ) SYNTAX("W-card in ticket"); | |
| 918 | - if( p->zWikiTitle ) SYNTAX("L-card in ticket"); | |
| 919 | 929 | if( p->nField==0 ) SYNTAX("missing J-card on ticket"); |
| 930 | + if( p->zTicketUuid==0 ) SYNTAX("missing K-card on ticket"); | |
| 931 | + if( p->zMimetype) SYNTAX("N-card in ticket"); | |
| 920 | 932 | if( p->nTag>0 ) SYNTAX("T-card in ticket"); |
| 921 | - if( p->zTicketUuid==0 ) SYNTAX("missing K-card on ticket"); | |
| 922 | 933 | if( p->zUser==0 ) SYNTAX("missing U-card on ticket"); |
| 923 | - if( p->zAttachName ) SYNTAX("A-card in ticket"); | |
| 924 | - if( p->zMimetype) SYNTAX("N-card in ticket"); | |
| 925 | 934 | if( !seenZ ) SYNTAX("missing Z-card on ticket"); |
| 926 | 935 | p->type = CFTYPE_TICKET; |
| 927 | - }else if( p->zWiki!=0 || p->zWikiTitle!=0 ){ | |
| 928 | - if( p->rDate<=0.0 ) SYNTAX("missing date on wiki"); | |
| 929 | - if( p->nTag>0 ) SYNTAX("T-card in wiki"); | |
| 930 | - if( p->zWiki==0 ) SYNTAX("missing W-card on wiki"); | |
| 931 | - if( p->zWikiTitle==0 ) SYNTAX("missing L-card on wiki"); | |
| 932 | - if( p->zAttachName ) SYNTAX("A-card in wiki"); | |
| 933 | - if( !seenZ ) SYNTAX("missing Z-card on wiki"); | |
| 934 | - p->type = CFTYPE_WIKI; | |
| 935 | 936 | }else if( p->zAttachName ){ |
| 936 | 937 | if( p->rDate<=0.0 ) SYNTAX("missing date on attachment"); |
| 937 | 938 | if( p->nTag>0 ) SYNTAX("T-card in attachment"); |
| 938 | 939 | if( !seenZ ) SYNTAX("missing Z-card on attachment"); |
| 939 | 940 | p->type = CFTYPE_ATTACHMENT; |
| 940 | 941 | }else{ |
| 941 | 942 | if( p->rDate<=0.0 ) SYNTAX("missing date on control"); |
| 942 | - if( p->nParent>0 ) SYNTAX("P-card in control"); | |
| 943 | 943 | if( p->zMimetype ) SYNTAX("N-card in control"); |
| 944 | 944 | if( !seenZ ) SYNTAX("missing Z-card on control"); |
| 945 | 945 | p->type = CFTYPE_CONTROL; |
| 946 | 946 | } |
| 947 | 947 | md5sum_init(); |
| @@ -1599,40 +1599,40 @@ | ||
| 1599 | 1599 | if( fossil_strcmp(pManifest->aField[i].zName, zStatusColumn)==0 ){ |
| 1600 | 1600 | zNewStatus = pManifest->aField[i].zValue; |
| 1601 | 1601 | } |
| 1602 | 1602 | } |
| 1603 | 1603 | if( zNewStatus ){ |
| 1604 | - blob_appendf(&comment, "%h ticket [%s|%.10s]: <i>%h</i>", | |
| 1604 | + blob_appendf(&comment, "%h ticket [%s|%S]: <i>%h</i>", | |
| 1605 | 1605 | zNewStatus, pManifest->zTicketUuid, pManifest->zTicketUuid, zTitle |
| 1606 | 1606 | ); |
| 1607 | 1607 | if( pManifest->nField>1 ){ |
| 1608 | 1608 | blob_appendf(&comment, " plus %d other change%s", |
| 1609 | 1609 | pManifest->nField-1, pManifest->nField==2 ? "" : "s"); |
| 1610 | 1610 | } |
| 1611 | - blob_appendf(&brief, "%h ticket [%s|%.10s].", | |
| 1611 | + blob_appendf(&brief, "%h ticket [%s|%S].", | |
| 1612 | 1612 | zNewStatus, pManifest->zTicketUuid, pManifest->zTicketUuid); |
| 1613 | 1613 | }else{ |
| 1614 | 1614 | zNewStatus = db_text("unknown", |
| 1615 | 1615 | "SELECT %s FROM ticket WHERE tkt_uuid='%s'", |
| 1616 | 1616 | zStatusColumn, pManifest->zTicketUuid |
| 1617 | 1617 | ); |
| 1618 | - blob_appendf(&comment, "Ticket [%s|%.10s] <i>%h</i> status still %h with " | |
| 1618 | + blob_appendf(&comment, "Ticket [%s|%S] <i>%h</i> status still %h with " | |
| 1619 | 1619 | "%d other change%s", |
| 1620 | 1620 | pManifest->zTicketUuid, pManifest->zTicketUuid, zTitle, zNewStatus, |
| 1621 | 1621 | pManifest->nField, pManifest->nField==1 ? "" : "s" |
| 1622 | 1622 | ); |
| 1623 | 1623 | fossil_free(zNewStatus); |
| 1624 | - blob_appendf(&brief, "Ticket [%s|%.10s]: %d change%s", | |
| 1624 | + blob_appendf(&brief, "Ticket [%s|%S]: %d change%s", | |
| 1625 | 1625 | pManifest->zTicketUuid, pManifest->zTicketUuid, pManifest->nField, |
| 1626 | 1626 | pManifest->nField==1 ? "" : "s" |
| 1627 | 1627 | ); |
| 1628 | 1628 | } |
| 1629 | 1629 | }else{ |
| 1630 | - blob_appendf(&comment, "New ticket [%s|%.10s] <i>%h</i>.", | |
| 1630 | + blob_appendf(&comment, "New ticket [%s|%S] <i>%h</i>.", | |
| 1631 | 1631 | pManifest->zTicketUuid, pManifest->zTicketUuid, zTitle |
| 1632 | 1632 | ); |
| 1633 | - blob_appendf(&brief, "New ticket [%s|%.10s].", pManifest->zTicketUuid, | |
| 1633 | + blob_appendf(&brief, "New ticket [%s|%S].", pManifest->zTicketUuid, | |
| 1634 | 1634 | pManifest->zTicketUuid); |
| 1635 | 1635 | } |
| 1636 | 1636 | fossil_free(zTitle); |
| 1637 | 1637 | db_multi_exec( |
| 1638 | 1638 | "REPLACE INTO event(type,tagid,mtime,objid,user,comment,brief)" |
| @@ -1951,14 +1951,14 @@ | ||
| 1951 | 1951 | p->zAttachName, p->zAttachTarget); |
| 1952 | 1952 | } |
| 1953 | 1953 | }else{ |
| 1954 | 1954 | if( isAdd ){ |
| 1955 | 1955 | zComment = mprintf( |
| 1956 | - "Add attachment [/artifact/%s|%h] to ticket [%s|%.10s]", | |
| 1956 | + "Add attachment [/artifact/%s|%h] to ticket [%s|%S]", | |
| 1957 | 1957 | p->zAttachSrc, p->zAttachName, p->zAttachTarget, p->zAttachTarget); |
| 1958 | 1958 | }else{ |
| 1959 | - zComment = mprintf("Delete attachment \"%h\" from ticket [%s|%.10s]", | |
| 1959 | + zComment = mprintf("Delete attachment \"%h\" from ticket [%s|%S]", | |
| 1960 | 1960 | p->zAttachName, p->zAttachTarget, p->zAttachTarget); |
| 1961 | 1961 | } |
| 1962 | 1962 | } |
| 1963 | 1963 | db_multi_exec( |
| 1964 | 1964 | "REPLACE INTO event(type,mtime,objid,user,comment)" |
| @@ -1983,11 +1983,11 @@ | ||
| 1983 | 1983 | for(i=0; i<p->nTag; i++){ |
| 1984 | 1984 | zTagUuid = p->aTag[i].zUuid; |
| 1985 | 1985 | if( !zTagUuid ) continue; |
| 1986 | 1986 | if( i==0 || fossil_strcmp(zTagUuid, p->aTag[i-1].zUuid)!=0 ){ |
| 1987 | 1987 | blob_appendf(&comment, |
| 1988 | - " Edit [%s|%.10s]:", | |
| 1988 | + " Edit [%s|%S]:", | |
| 1989 | 1989 | zTagUuid, zTagUuid); |
| 1990 | 1990 | branchMove = 0; |
| 1991 | 1991 | if( permitHooks && db_exists("SELECT 1 FROM event, blob" |
| 1992 | 1992 | " WHERE event.type='ci' AND event.objid=blob.rid" |
| 1993 | 1993 | " AND blob.uuid='%s'", zTagUuid) ){ |
| 1994 | 1994 |
| --- src/manifest.c | |
| +++ src/manifest.c | |
| @@ -890,58 +890,58 @@ | |
| 890 | SYNTAX("cluster contains a card other than M- or Z-"); |
| 891 | } |
| 892 | if( !seenZ ) SYNTAX("missing Z-card on cluster"); |
| 893 | p->type = CFTYPE_CLUSTER; |
| 894 | }else if( p->zEventId ){ |
| 895 | if( p->rDate<=0.0 ) SYNTAX("missing date on event"); |
| 896 | if( p->nFile>0 ) SYNTAX("F-card in event"); |
| 897 | if( p->zRepoCksum ) SYNTAX("R-card in event"); |
| 898 | if( p->zBaseline ) SYNTAX("B-card in event"); |
| 899 | if( p->nField>0 ) SYNTAX("J-card in event"); |
| 900 | if( p->zTicketUuid ) SYNTAX("K-card in event"); |
| 901 | if( p->zWikiTitle!=0 ) SYNTAX("L-card in event"); |
| 902 | if( p->zWiki==0 ) SYNTAX("missing W-card on event"); |
| 903 | if( p->zAttachName ) SYNTAX("A-card in event"); |
| 904 | if( !seenZ ) SYNTAX("missing Z-card on event"); |
| 905 | p->type = CFTYPE_EVENT; |
| 906 | }else if( hasSelfRefTag || p->nFile>0 || p->zRepoCksum!=0 || p->zBaseline ){ |
| 907 | if( p->rDate<=0.0 ) SYNTAX("missing date on manifest"); |
| 908 | if( p->nField>0 ) SYNTAX("J-card in manifest"); |
| 909 | if( p->zTicketUuid ) SYNTAX("K-card in manifest"); |
| 910 | if( p->zWiki ) SYNTAX("W-card in manifest"); |
| 911 | if( p->zWikiTitle ) SYNTAX("L-card in manifest"); |
| 912 | if( p->zTicketUuid ) SYNTAX("K-card in manifest"); |
| 913 | if( p->zAttachName ) SYNTAX("A-card in manifest"); |
| 914 | p->type = CFTYPE_MANIFEST; |
| 915 | }else if( p->nField>0 || p->zTicketUuid!=0 ){ |
| 916 | if( p->rDate<=0.0 ) SYNTAX("missing date on ticket"); |
| 917 | if( p->zWiki ) SYNTAX("W-card in ticket"); |
| 918 | if( p->zWikiTitle ) SYNTAX("L-card in ticket"); |
| 919 | if( p->nField==0 ) SYNTAX("missing J-card on ticket"); |
| 920 | if( p->nTag>0 ) SYNTAX("T-card in ticket"); |
| 921 | if( p->zTicketUuid==0 ) SYNTAX("missing K-card on ticket"); |
| 922 | if( p->zUser==0 ) SYNTAX("missing U-card on ticket"); |
| 923 | if( p->zAttachName ) SYNTAX("A-card in ticket"); |
| 924 | if( p->zMimetype) SYNTAX("N-card in ticket"); |
| 925 | if( !seenZ ) SYNTAX("missing Z-card on ticket"); |
| 926 | p->type = CFTYPE_TICKET; |
| 927 | }else if( p->zWiki!=0 || p->zWikiTitle!=0 ){ |
| 928 | if( p->rDate<=0.0 ) SYNTAX("missing date on wiki"); |
| 929 | if( p->nTag>0 ) SYNTAX("T-card in wiki"); |
| 930 | if( p->zWiki==0 ) SYNTAX("missing W-card on wiki"); |
| 931 | if( p->zWikiTitle==0 ) SYNTAX("missing L-card on wiki"); |
| 932 | if( p->zAttachName ) SYNTAX("A-card in wiki"); |
| 933 | if( !seenZ ) SYNTAX("missing Z-card on wiki"); |
| 934 | p->type = CFTYPE_WIKI; |
| 935 | }else if( p->zAttachName ){ |
| 936 | if( p->rDate<=0.0 ) SYNTAX("missing date on attachment"); |
| 937 | if( p->nTag>0 ) SYNTAX("T-card in attachment"); |
| 938 | if( !seenZ ) SYNTAX("missing Z-card on attachment"); |
| 939 | p->type = CFTYPE_ATTACHMENT; |
| 940 | }else{ |
| 941 | if( p->rDate<=0.0 ) SYNTAX("missing date on control"); |
| 942 | if( p->nParent>0 ) SYNTAX("P-card in control"); |
| 943 | if( p->zMimetype ) SYNTAX("N-card in control"); |
| 944 | if( !seenZ ) SYNTAX("missing Z-card on control"); |
| 945 | p->type = CFTYPE_CONTROL; |
| 946 | } |
| 947 | md5sum_init(); |
| @@ -1599,40 +1599,40 @@ | |
| 1599 | if( fossil_strcmp(pManifest->aField[i].zName, zStatusColumn)==0 ){ |
| 1600 | zNewStatus = pManifest->aField[i].zValue; |
| 1601 | } |
| 1602 | } |
| 1603 | if( zNewStatus ){ |
| 1604 | blob_appendf(&comment, "%h ticket [%s|%.10s]: <i>%h</i>", |
| 1605 | zNewStatus, pManifest->zTicketUuid, pManifest->zTicketUuid, zTitle |
| 1606 | ); |
| 1607 | if( pManifest->nField>1 ){ |
| 1608 | blob_appendf(&comment, " plus %d other change%s", |
| 1609 | pManifest->nField-1, pManifest->nField==2 ? "" : "s"); |
| 1610 | } |
| 1611 | blob_appendf(&brief, "%h ticket [%s|%.10s].", |
| 1612 | zNewStatus, pManifest->zTicketUuid, pManifest->zTicketUuid); |
| 1613 | }else{ |
| 1614 | zNewStatus = db_text("unknown", |
| 1615 | "SELECT %s FROM ticket WHERE tkt_uuid='%s'", |
| 1616 | zStatusColumn, pManifest->zTicketUuid |
| 1617 | ); |
| 1618 | blob_appendf(&comment, "Ticket [%s|%.10s] <i>%h</i> status still %h with " |
| 1619 | "%d other change%s", |
| 1620 | pManifest->zTicketUuid, pManifest->zTicketUuid, zTitle, zNewStatus, |
| 1621 | pManifest->nField, pManifest->nField==1 ? "" : "s" |
| 1622 | ); |
| 1623 | fossil_free(zNewStatus); |
| 1624 | blob_appendf(&brief, "Ticket [%s|%.10s]: %d change%s", |
| 1625 | pManifest->zTicketUuid, pManifest->zTicketUuid, pManifest->nField, |
| 1626 | pManifest->nField==1 ? "" : "s" |
| 1627 | ); |
| 1628 | } |
| 1629 | }else{ |
| 1630 | blob_appendf(&comment, "New ticket [%s|%.10s] <i>%h</i>.", |
| 1631 | pManifest->zTicketUuid, pManifest->zTicketUuid, zTitle |
| 1632 | ); |
| 1633 | blob_appendf(&brief, "New ticket [%s|%.10s].", pManifest->zTicketUuid, |
| 1634 | pManifest->zTicketUuid); |
| 1635 | } |
| 1636 | fossil_free(zTitle); |
| 1637 | db_multi_exec( |
| 1638 | "REPLACE INTO event(type,tagid,mtime,objid,user,comment,brief)" |
| @@ -1951,14 +1951,14 @@ | |
| 1951 | p->zAttachName, p->zAttachTarget); |
| 1952 | } |
| 1953 | }else{ |
| 1954 | if( isAdd ){ |
| 1955 | zComment = mprintf( |
| 1956 | "Add attachment [/artifact/%s|%h] to ticket [%s|%.10s]", |
| 1957 | p->zAttachSrc, p->zAttachName, p->zAttachTarget, p->zAttachTarget); |
| 1958 | }else{ |
| 1959 | zComment = mprintf("Delete attachment \"%h\" from ticket [%s|%.10s]", |
| 1960 | p->zAttachName, p->zAttachTarget, p->zAttachTarget); |
| 1961 | } |
| 1962 | } |
| 1963 | db_multi_exec( |
| 1964 | "REPLACE INTO event(type,mtime,objid,user,comment)" |
| @@ -1983,11 +1983,11 @@ | |
| 1983 | for(i=0; i<p->nTag; i++){ |
| 1984 | zTagUuid = p->aTag[i].zUuid; |
| 1985 | if( !zTagUuid ) continue; |
| 1986 | if( i==0 || fossil_strcmp(zTagUuid, p->aTag[i-1].zUuid)!=0 ){ |
| 1987 | blob_appendf(&comment, |
| 1988 | " Edit [%s|%.10s]:", |
| 1989 | zTagUuid, zTagUuid); |
| 1990 | branchMove = 0; |
| 1991 | if( permitHooks && db_exists("SELECT 1 FROM event, blob" |
| 1992 | " WHERE event.type='ci' AND event.objid=blob.rid" |
| 1993 | " AND blob.uuid='%s'", zTagUuid) ){ |
| 1994 |
| --- src/manifest.c | |
| +++ src/manifest.c | |
| @@ -890,58 +890,58 @@ | |
| 890 | SYNTAX("cluster contains a card other than M- or Z-"); |
| 891 | } |
| 892 | if( !seenZ ) SYNTAX("missing Z-card on cluster"); |
| 893 | p->type = CFTYPE_CLUSTER; |
| 894 | }else if( p->zEventId ){ |
| 895 | if( p->zAttachName ) SYNTAX("A-card in event"); |
| 896 | if( p->zBaseline ) SYNTAX("B-card in event"); |
| 897 | if( p->rDate<=0.0 ) SYNTAX("missing date on event"); |
| 898 | if( p->nFile>0 ) SYNTAX("F-card in event"); |
| 899 | if( p->nField>0 ) SYNTAX("J-card in event"); |
| 900 | if( p->zTicketUuid ) SYNTAX("K-card in event"); |
| 901 | if( p->zWikiTitle!=0 ) SYNTAX("L-card in event"); |
| 902 | if( p->zRepoCksum ) SYNTAX("R-card in event"); |
| 903 | if( p->zWiki==0 ) SYNTAX("missing W-card on event"); |
| 904 | if( !seenZ ) SYNTAX("missing Z-card on event"); |
| 905 | p->type = CFTYPE_EVENT; |
| 906 | }else if( p->zWiki!=0 || p->zWikiTitle!=0 ){ |
| 907 | if( p->zAttachName ) SYNTAX("A-card in wiki"); |
| 908 | if( p->zBaseline ) SYNTAX("B-card in wiki"); |
| 909 | if( p->rDate<=0.0 ) SYNTAX("missing date on wiki"); |
| 910 | if( p->nFile>0 ) SYNTAX("F-card in wiki"); |
| 911 | if( p->nField>0 ) SYNTAX("J-card in wiki"); |
| 912 | if( p->zTicketUuid ) SYNTAX("K-card in wiki"); |
| 913 | if( p->zWikiTitle==0 ) SYNTAX("missing L-card on wiki"); |
| 914 | if( p->zRepoCksum ) SYNTAX("R-card in wiki"); |
| 915 | if( p->nTag>0 ) SYNTAX("T-card in wiki"); |
| 916 | if( p->zWiki==0 ) SYNTAX("missing W-card on wiki"); |
| 917 | if( !seenZ ) SYNTAX("missing Z-card on wiki"); |
| 918 | p->type = CFTYPE_WIKI; |
| 919 | }else if( hasSelfRefTag || p->nFile>0 || p->zRepoCksum!=0 || p->zBaseline |
| 920 | || p->nParent>0 ){ |
| 921 | if( p->zAttachName ) SYNTAX("A-card in manifest"); |
| 922 | if( p->rDate<=0.0 ) SYNTAX("missing date on manifest"); |
| 923 | if( p->nField>0 ) SYNTAX("J-card in manifest"); |
| 924 | if( p->zTicketUuid ) SYNTAX("K-card in manifest"); |
| 925 | p->type = CFTYPE_MANIFEST; |
| 926 | }else if( p->nField>0 || p->zTicketUuid!=0 ){ |
| 927 | if( p->zAttachName ) SYNTAX("A-card in ticket"); |
| 928 | if( p->rDate<=0.0 ) SYNTAX("missing date on ticket"); |
| 929 | if( p->nField==0 ) SYNTAX("missing J-card on ticket"); |
| 930 | if( p->zTicketUuid==0 ) SYNTAX("missing K-card on ticket"); |
| 931 | if( p->zMimetype) SYNTAX("N-card in ticket"); |
| 932 | if( p->nTag>0 ) SYNTAX("T-card in ticket"); |
| 933 | if( p->zUser==0 ) SYNTAX("missing U-card on ticket"); |
| 934 | if( !seenZ ) SYNTAX("missing Z-card on ticket"); |
| 935 | p->type = CFTYPE_TICKET; |
| 936 | }else if( p->zAttachName ){ |
| 937 | if( p->rDate<=0.0 ) SYNTAX("missing date on attachment"); |
| 938 | if( p->nTag>0 ) SYNTAX("T-card in attachment"); |
| 939 | if( !seenZ ) SYNTAX("missing Z-card on attachment"); |
| 940 | p->type = CFTYPE_ATTACHMENT; |
| 941 | }else{ |
| 942 | if( p->rDate<=0.0 ) SYNTAX("missing date on control"); |
| 943 | if( p->zMimetype ) SYNTAX("N-card in control"); |
| 944 | if( !seenZ ) SYNTAX("missing Z-card on control"); |
| 945 | p->type = CFTYPE_CONTROL; |
| 946 | } |
| 947 | md5sum_init(); |
| @@ -1599,40 +1599,40 @@ | |
| 1599 | if( fossil_strcmp(pManifest->aField[i].zName, zStatusColumn)==0 ){ |
| 1600 | zNewStatus = pManifest->aField[i].zValue; |
| 1601 | } |
| 1602 | } |
| 1603 | if( zNewStatus ){ |
| 1604 | blob_appendf(&comment, "%h ticket [%s|%S]: <i>%h</i>", |
| 1605 | zNewStatus, pManifest->zTicketUuid, pManifest->zTicketUuid, zTitle |
| 1606 | ); |
| 1607 | if( pManifest->nField>1 ){ |
| 1608 | blob_appendf(&comment, " plus %d other change%s", |
| 1609 | pManifest->nField-1, pManifest->nField==2 ? "" : "s"); |
| 1610 | } |
| 1611 | blob_appendf(&brief, "%h ticket [%s|%S].", |
| 1612 | zNewStatus, pManifest->zTicketUuid, pManifest->zTicketUuid); |
| 1613 | }else{ |
| 1614 | zNewStatus = db_text("unknown", |
| 1615 | "SELECT %s FROM ticket WHERE tkt_uuid='%s'", |
| 1616 | zStatusColumn, pManifest->zTicketUuid |
| 1617 | ); |
| 1618 | blob_appendf(&comment, "Ticket [%s|%S] <i>%h</i> status still %h with " |
| 1619 | "%d other change%s", |
| 1620 | pManifest->zTicketUuid, pManifest->zTicketUuid, zTitle, zNewStatus, |
| 1621 | pManifest->nField, pManifest->nField==1 ? "" : "s" |
| 1622 | ); |
| 1623 | fossil_free(zNewStatus); |
| 1624 | blob_appendf(&brief, "Ticket [%s|%S]: %d change%s", |
| 1625 | pManifest->zTicketUuid, pManifest->zTicketUuid, pManifest->nField, |
| 1626 | pManifest->nField==1 ? "" : "s" |
| 1627 | ); |
| 1628 | } |
| 1629 | }else{ |
| 1630 | blob_appendf(&comment, "New ticket [%s|%S] <i>%h</i>.", |
| 1631 | pManifest->zTicketUuid, pManifest->zTicketUuid, zTitle |
| 1632 | ); |
| 1633 | blob_appendf(&brief, "New ticket [%s|%S].", pManifest->zTicketUuid, |
| 1634 | pManifest->zTicketUuid); |
| 1635 | } |
| 1636 | fossil_free(zTitle); |
| 1637 | db_multi_exec( |
| 1638 | "REPLACE INTO event(type,tagid,mtime,objid,user,comment,brief)" |
| @@ -1951,14 +1951,14 @@ | |
| 1951 | p->zAttachName, p->zAttachTarget); |
| 1952 | } |
| 1953 | }else{ |
| 1954 | if( isAdd ){ |
| 1955 | zComment = mprintf( |
| 1956 | "Add attachment [/artifact/%s|%h] to ticket [%s|%S]", |
| 1957 | p->zAttachSrc, p->zAttachName, p->zAttachTarget, p->zAttachTarget); |
| 1958 | }else{ |
| 1959 | zComment = mprintf("Delete attachment \"%h\" from ticket [%s|%S]", |
| 1960 | p->zAttachName, p->zAttachTarget, p->zAttachTarget); |
| 1961 | } |
| 1962 | } |
| 1963 | db_multi_exec( |
| 1964 | "REPLACE INTO event(type,mtime,objid,user,comment)" |
| @@ -1983,11 +1983,11 @@ | |
| 1983 | for(i=0; i<p->nTag; i++){ |
| 1984 | zTagUuid = p->aTag[i].zUuid; |
| 1985 | if( !zTagUuid ) continue; |
| 1986 | if( i==0 || fossil_strcmp(zTagUuid, p->aTag[i-1].zUuid)!=0 ){ |
| 1987 | blob_appendf(&comment, |
| 1988 | " Edit [%s|%S]:", |
| 1989 | zTagUuid, zTagUuid); |
| 1990 | branchMove = 0; |
| 1991 | if( permitHooks && db_exists("SELECT 1 FROM event, blob" |
| 1992 | " WHERE event.type='ci' AND event.objid=blob.rid" |
| 1993 | " AND blob.uuid='%s'", zTagUuid) ){ |
| 1994 |
+2
-1
| --- src/mkindex.c | ||
| +++ src/mkindex.c | ||
| @@ -283,11 +283,11 @@ | ||
| 283 | 283 | ); |
| 284 | 284 | for(i=0; i<nFixed /*&& aEntry[i].eType==1*/; i++){ |
| 285 | 285 | const char *z = aEntry[i].zPath; |
| 286 | 286 | int n = strlen(z); |
| 287 | 287 | int cmdFlags = (1==aEntry[i].eType) ? 0x01 : 0x08; |
| 288 | - if(0x01==cmdFlags){ | |
| 288 | + if( 0x01==cmdFlags ){ | |
| 289 | 289 | if( z[n-1]=='*' ){ |
| 290 | 290 | n--; |
| 291 | 291 | cmdFlags = 0x02; |
| 292 | 292 | }else if( memcmp(z, "test-", 5)==0 ){ |
| 293 | 293 | cmdFlags = 0x04; |
| @@ -303,10 +303,11 @@ | ||
| 303 | 303 | cmdFlags |
| 304 | 304 | ); |
| 305 | 305 | if( aEntry[i].zIf ) printf("#endif\n"); |
| 306 | 306 | } |
| 307 | 307 | printf("};\n"); |
| 308 | + printf("#define FOSSIL_FIRST_CMD (sizeof(aWebpage)/sizeof(aWebpage[0]))\n"); | |
| 308 | 309 | for(i=0; i<nFixed; i++){ |
| 309 | 310 | char *z = aEntry[i].zHelp; |
| 310 | 311 | if( z && z[0] ){ |
| 311 | 312 | if( aEntry[i].zIf ) printf("%s", aEntry[i].zIf); |
| 312 | 313 | printf("static const char zHelp_%s[] = \n", aEntry[i].zFunc); |
| 313 | 314 |
| --- src/mkindex.c | |
| +++ src/mkindex.c | |
| @@ -283,11 +283,11 @@ | |
| 283 | ); |
| 284 | for(i=0; i<nFixed /*&& aEntry[i].eType==1*/; i++){ |
| 285 | const char *z = aEntry[i].zPath; |
| 286 | int n = strlen(z); |
| 287 | int cmdFlags = (1==aEntry[i].eType) ? 0x01 : 0x08; |
| 288 | if(0x01==cmdFlags){ |
| 289 | if( z[n-1]=='*' ){ |
| 290 | n--; |
| 291 | cmdFlags = 0x02; |
| 292 | }else if( memcmp(z, "test-", 5)==0 ){ |
| 293 | cmdFlags = 0x04; |
| @@ -303,10 +303,11 @@ | |
| 303 | cmdFlags |
| 304 | ); |
| 305 | if( aEntry[i].zIf ) printf("#endif\n"); |
| 306 | } |
| 307 | printf("};\n"); |
| 308 | for(i=0; i<nFixed; i++){ |
| 309 | char *z = aEntry[i].zHelp; |
| 310 | if( z && z[0] ){ |
| 311 | if( aEntry[i].zIf ) printf("%s", aEntry[i].zIf); |
| 312 | printf("static const char zHelp_%s[] = \n", aEntry[i].zFunc); |
| 313 |
| --- src/mkindex.c | |
| +++ src/mkindex.c | |
| @@ -283,11 +283,11 @@ | |
| 283 | ); |
| 284 | for(i=0; i<nFixed /*&& aEntry[i].eType==1*/; i++){ |
| 285 | const char *z = aEntry[i].zPath; |
| 286 | int n = strlen(z); |
| 287 | int cmdFlags = (1==aEntry[i].eType) ? 0x01 : 0x08; |
| 288 | if( 0x01==cmdFlags ){ |
| 289 | if( z[n-1]=='*' ){ |
| 290 | n--; |
| 291 | cmdFlags = 0x02; |
| 292 | }else if( memcmp(z, "test-", 5)==0 ){ |
| 293 | cmdFlags = 0x04; |
| @@ -303,10 +303,11 @@ | |
| 303 | cmdFlags |
| 304 | ); |
| 305 | if( aEntry[i].zIf ) printf("#endif\n"); |
| 306 | } |
| 307 | printf("};\n"); |
| 308 | printf("#define FOSSIL_FIRST_CMD (sizeof(aWebpage)/sizeof(aWebpage[0]))\n"); |
| 309 | for(i=0; i<nFixed; i++){ |
| 310 | char *z = aEntry[i].zHelp; |
| 311 | if( z && z[0] ){ |
| 312 | if( aEntry[i].zIf ) printf("%s", aEntry[i].zIf); |
| 313 | printf("static const char zHelp_%s[] = \n", aEntry[i].zFunc); |
| 314 |
+3
-3
| --- src/name.c | ||
| +++ src/name.c | ||
| @@ -444,11 +444,11 @@ | ||
| 444 | 444 | " WHERE ticket.tkt_id = ticketchng.tkt_id" |
| 445 | 445 | " AND tkt_uuid GLOB '%q*'" |
| 446 | 446 | " GROUP BY tkt_uuid" |
| 447 | 447 | " ORDER BY tkt_ctime DESC", z); |
| 448 | 448 | while( db_step(&q)==SQLITE_ROW ){ |
| 449 | - int rid = db_column_int(&q, 0); | |
| 449 | + int rid = db_column_int(&q, 0); | |
| 450 | 450 | const char *zUuid = db_column_text(&q, 1); |
| 451 | 451 | const char *zTitle = db_column_text(&q, 2); |
| 452 | 452 | @ <li><p><a href="%s(g.zTop)/%T(zSrc)/%s(zUuid)"> |
| 453 | 453 | @ %s(zUuid)</a> - |
| 454 | 454 | @ <ul></ul> |
| @@ -465,11 +465,11 @@ | ||
| 465 | 465 | "SELECT rid, uuid FROM" |
| 466 | 466 | " (SELECT tagxref.rid AS rid, substr(tagname, 7) AS uuid" |
| 467 | 467 | " FROM tagxref, tag WHERE tagxref.tagid = tag.tagid" |
| 468 | 468 | " AND tagname GLOB 'event-%q*') GROUP BY uuid", z); |
| 469 | 469 | while( db_step(&q)==SQLITE_ROW ){ |
| 470 | - int rid = db_column_int(&q, 0); | |
| 470 | + int rid = db_column_int(&q, 0); | |
| 471 | 471 | const char* zUuid = db_column_text(&q, 1); |
| 472 | 472 | @ <li><p><a href="%s(g.zTop)/%T(zSrc)/%s(zUuid)"> |
| 473 | 473 | @ %s(zUuid)</a> - |
| 474 | 474 | @ <ul><li> |
| 475 | 475 | object_description(rid, 0, 0); |
| @@ -599,11 +599,11 @@ | ||
| 599 | 599 | " AND blob.rid=mlink.mid" |
| 600 | 600 | " ORDER BY event.mtime DESC /*sort*/", |
| 601 | 601 | timeline_utc(), rid); |
| 602 | 602 | while( db_step(&q)==SQLITE_ROW ){ |
| 603 | 603 | fossil_print("file: %s\n", db_column_text(&q,0)); |
| 604 | - fossil_print(" part of [%.10s] by %s on %s\n", | |
| 604 | + fossil_print(" part of [%S] by %s on %s\n", | |
| 605 | 605 | db_column_text(&q, 1), |
| 606 | 606 | db_column_text(&q, 3), |
| 607 | 607 | db_column_text(&q, 2)); |
| 608 | 608 | fossil_print(" "); |
| 609 | 609 | comment_print(db_column_text(&q,4), 12, -1); |
| 610 | 610 |
| --- src/name.c | |
| +++ src/name.c | |
| @@ -444,11 +444,11 @@ | |
| 444 | " WHERE ticket.tkt_id = ticketchng.tkt_id" |
| 445 | " AND tkt_uuid GLOB '%q*'" |
| 446 | " GROUP BY tkt_uuid" |
| 447 | " ORDER BY tkt_ctime DESC", z); |
| 448 | while( db_step(&q)==SQLITE_ROW ){ |
| 449 | int rid = db_column_int(&q, 0); |
| 450 | const char *zUuid = db_column_text(&q, 1); |
| 451 | const char *zTitle = db_column_text(&q, 2); |
| 452 | @ <li><p><a href="%s(g.zTop)/%T(zSrc)/%s(zUuid)"> |
| 453 | @ %s(zUuid)</a> - |
| 454 | @ <ul></ul> |
| @@ -465,11 +465,11 @@ | |
| 465 | "SELECT rid, uuid FROM" |
| 466 | " (SELECT tagxref.rid AS rid, substr(tagname, 7) AS uuid" |
| 467 | " FROM tagxref, tag WHERE tagxref.tagid = tag.tagid" |
| 468 | " AND tagname GLOB 'event-%q*') GROUP BY uuid", z); |
| 469 | while( db_step(&q)==SQLITE_ROW ){ |
| 470 | int rid = db_column_int(&q, 0); |
| 471 | const char* zUuid = db_column_text(&q, 1); |
| 472 | @ <li><p><a href="%s(g.zTop)/%T(zSrc)/%s(zUuid)"> |
| 473 | @ %s(zUuid)</a> - |
| 474 | @ <ul><li> |
| 475 | object_description(rid, 0, 0); |
| @@ -599,11 +599,11 @@ | |
| 599 | " AND blob.rid=mlink.mid" |
| 600 | " ORDER BY event.mtime DESC /*sort*/", |
| 601 | timeline_utc(), rid); |
| 602 | while( db_step(&q)==SQLITE_ROW ){ |
| 603 | fossil_print("file: %s\n", db_column_text(&q,0)); |
| 604 | fossil_print(" part of [%.10s] by %s on %s\n", |
| 605 | db_column_text(&q, 1), |
| 606 | db_column_text(&q, 3), |
| 607 | db_column_text(&q, 2)); |
| 608 | fossil_print(" "); |
| 609 | comment_print(db_column_text(&q,4), 12, -1); |
| 610 |
| --- src/name.c | |
| +++ src/name.c | |
| @@ -444,11 +444,11 @@ | |
| 444 | " WHERE ticket.tkt_id = ticketchng.tkt_id" |
| 445 | " AND tkt_uuid GLOB '%q*'" |
| 446 | " GROUP BY tkt_uuid" |
| 447 | " ORDER BY tkt_ctime DESC", z); |
| 448 | while( db_step(&q)==SQLITE_ROW ){ |
| 449 | int rid = db_column_int(&q, 0); |
| 450 | const char *zUuid = db_column_text(&q, 1); |
| 451 | const char *zTitle = db_column_text(&q, 2); |
| 452 | @ <li><p><a href="%s(g.zTop)/%T(zSrc)/%s(zUuid)"> |
| 453 | @ %s(zUuid)</a> - |
| 454 | @ <ul></ul> |
| @@ -465,11 +465,11 @@ | |
| 465 | "SELECT rid, uuid FROM" |
| 466 | " (SELECT tagxref.rid AS rid, substr(tagname, 7) AS uuid" |
| 467 | " FROM tagxref, tag WHERE tagxref.tagid = tag.tagid" |
| 468 | " AND tagname GLOB 'event-%q*') GROUP BY uuid", z); |
| 469 | while( db_step(&q)==SQLITE_ROW ){ |
| 470 | int rid = db_column_int(&q, 0); |
| 471 | const char* zUuid = db_column_text(&q, 1); |
| 472 | @ <li><p><a href="%s(g.zTop)/%T(zSrc)/%s(zUuid)"> |
| 473 | @ %s(zUuid)</a> - |
| 474 | @ <ul><li> |
| 475 | object_description(rid, 0, 0); |
| @@ -599,11 +599,11 @@ | |
| 599 | " AND blob.rid=mlink.mid" |
| 600 | " ORDER BY event.mtime DESC /*sort*/", |
| 601 | timeline_utc(), rid); |
| 602 | while( db_step(&q)==SQLITE_ROW ){ |
| 603 | fossil_print("file: %s\n", db_column_text(&q,0)); |
| 604 | fossil_print(" part of [%S] by %s on %s\n", |
| 605 | db_column_text(&q, 1), |
| 606 | db_column_text(&q, 3), |
| 607 | db_column_text(&q, 2)); |
| 608 | fossil_print(" "); |
| 609 | comment_print(db_column_text(&q,4), 12, -1); |
| 610 |
+8
-4
| --- src/printf.c | ||
| +++ src/printf.c | ||
| @@ -608,22 +608,26 @@ | ||
| 608 | 608 | case etROOT: { |
| 609 | 609 | bufpt = g.zTop ? g.zTop : ""; |
| 610 | 610 | length = (int)strlen(bufpt); |
| 611 | 611 | break; |
| 612 | 612 | } |
| 613 | - case etSTRINGID: { | |
| 614 | - precision = 16; | |
| 615 | - /* Fall through */ | |
| 616 | - } | |
| 613 | + case etSTRINGID: | |
| 617 | 614 | case etSTRING: |
| 618 | 615 | case etDYNSTRING: { |
| 619 | 616 | int limit = flag_alternateform ? va_arg(ap,int) : -1; |
| 620 | 617 | bufpt = va_arg(ap,char*); |
| 621 | 618 | if( bufpt==0 ){ |
| 622 | 619 | bufpt = ""; |
| 623 | 620 | }else if( xtype==etDYNSTRING ){ |
| 624 | 621 | zExtra = bufpt; |
| 622 | + }else if( xtype==etSTRINGID ){ | |
| 623 | + precision = 0; | |
| 624 | + while( bufpt[precision]>='0' && bufpt[precision]<='9' ){ | |
| 625 | + precision++; | |
| 626 | + } | |
| 627 | + if( bufpt[precision]!=0 ) precision++; | |
| 628 | + if( precision<10 ) precision=10; | |
| 625 | 629 | } |
| 626 | 630 | length = StrNLen32(bufpt, limit); |
| 627 | 631 | if( precision>=0 && precision<length ) length = precision; |
| 628 | 632 | break; |
| 629 | 633 | } |
| 630 | 634 |
| --- src/printf.c | |
| +++ src/printf.c | |
| @@ -608,22 +608,26 @@ | |
| 608 | case etROOT: { |
| 609 | bufpt = g.zTop ? g.zTop : ""; |
| 610 | length = (int)strlen(bufpt); |
| 611 | break; |
| 612 | } |
| 613 | case etSTRINGID: { |
| 614 | precision = 16; |
| 615 | /* Fall through */ |
| 616 | } |
| 617 | case etSTRING: |
| 618 | case etDYNSTRING: { |
| 619 | int limit = flag_alternateform ? va_arg(ap,int) : -1; |
| 620 | bufpt = va_arg(ap,char*); |
| 621 | if( bufpt==0 ){ |
| 622 | bufpt = ""; |
| 623 | }else if( xtype==etDYNSTRING ){ |
| 624 | zExtra = bufpt; |
| 625 | } |
| 626 | length = StrNLen32(bufpt, limit); |
| 627 | if( precision>=0 && precision<length ) length = precision; |
| 628 | break; |
| 629 | } |
| 630 |
| --- src/printf.c | |
| +++ src/printf.c | |
| @@ -608,22 +608,26 @@ | |
| 608 | case etROOT: { |
| 609 | bufpt = g.zTop ? g.zTop : ""; |
| 610 | length = (int)strlen(bufpt); |
| 611 | break; |
| 612 | } |
| 613 | case etSTRINGID: |
| 614 | case etSTRING: |
| 615 | case etDYNSTRING: { |
| 616 | int limit = flag_alternateform ? va_arg(ap,int) : -1; |
| 617 | bufpt = va_arg(ap,char*); |
| 618 | if( bufpt==0 ){ |
| 619 | bufpt = ""; |
| 620 | }else if( xtype==etDYNSTRING ){ |
| 621 | zExtra = bufpt; |
| 622 | }else if( xtype==etSTRINGID ){ |
| 623 | precision = 0; |
| 624 | while( bufpt[precision]>='0' && bufpt[precision]<='9' ){ |
| 625 | precision++; |
| 626 | } |
| 627 | if( bufpt[precision]!=0 ) precision++; |
| 628 | if( precision<10 ) precision=10; |
| 629 | } |
| 630 | length = StrNLen32(bufpt, limit); |
| 631 | if( precision>=0 && precision<length ) length = precision; |
| 632 | break; |
| 633 | } |
| 634 |
+28
-15
| --- src/shell.c | ||
| +++ src/shell.c | ||
| @@ -2414,10 +2414,11 @@ | ||
| 2414 | 2414 | }else |
| 2415 | 2415 | |
| 2416 | 2416 | if( c=='f' && strncmp(azArg[0], "fullschema", n)==0 ){ |
| 2417 | 2417 | struct callback_data data; |
| 2418 | 2418 | char *zErrMsg = 0; |
| 2419 | + int doStats = 0; | |
| 2419 | 2420 | if( nArg!=1 ){ |
| 2420 | 2421 | fprintf(stderr, "Usage: .fullschema\n"); |
| 2421 | 2422 | rc = 1; |
| 2422 | 2423 | goto meta_command_exit; |
| 2423 | 2424 | } |
| @@ -2432,25 +2433,37 @@ | ||
| 2432 | 2433 | " SELECT sql, type, tbl_name, name, rowid FROM sqlite_temp_master) " |
| 2433 | 2434 | "WHERE type!='meta' AND sql NOTNULL AND name NOT LIKE 'sqlite_%'" |
| 2434 | 2435 | "ORDER BY rowid", |
| 2435 | 2436 | callback, &data, &zErrMsg |
| 2436 | 2437 | ); |
| 2437 | - sqlite3_exec(p->db, "SELECT 'ANALYZE sqlite_master;'", | |
| 2438 | - callback, &data, &zErrMsg); | |
| 2439 | - data.mode = MODE_Insert; | |
| 2440 | - data.zDestTable = "sqlite_stat1"; | |
| 2441 | - shell_exec(p->db, "SELECT * FROM sqlite_stat1", | |
| 2442 | - shell_callback, &data,&zErrMsg); | |
| 2443 | - data.zDestTable = "sqlite_stat3"; | |
| 2444 | - shell_exec(p->db, "SELECT * FROM sqlite_stat3", | |
| 2445 | - shell_callback, &data,&zErrMsg); | |
| 2446 | - data.zDestTable = "sqlite_stat4"; | |
| 2447 | - shell_exec(p->db, "SELECT * FROM sqlite_stat4", | |
| 2448 | - shell_callback, &data, &zErrMsg); | |
| 2449 | - data.mode = MODE_Semi; | |
| 2450 | - shell_exec(p->db, "SELECT 'ANALYZE sqlite_master;'", | |
| 2451 | - shell_callback, &data, &zErrMsg); | |
| 2438 | + if( rc==SQLITE_OK ){ | |
| 2439 | + sqlite3_stmt *pStmt; | |
| 2440 | + rc = sqlite3_prepare_v2(p->db, | |
| 2441 | + "SELECT rowid FROM sqlite_master" | |
| 2442 | + " WHERE name GLOB 'sqlite_stat[134]'", | |
| 2443 | + -1, &pStmt, 0); | |
| 2444 | + doStats = sqlite3_step(pStmt)==SQLITE_ROW; | |
| 2445 | + sqlite3_finalize(pStmt); | |
| 2446 | + } | |
| 2447 | + if( doStats==0 ){ | |
| 2448 | + fprintf(p->out, "/* No STAT tables available */\n"); | |
| 2449 | + }else{ | |
| 2450 | + fprintf(p->out, "ANALYZE sqlite_master;\n"); | |
| 2451 | + sqlite3_exec(p->db, "SELECT 'ANALYZE sqlite_master'", | |
| 2452 | + callback, &data, &zErrMsg); | |
| 2453 | + data.mode = MODE_Insert; | |
| 2454 | + data.zDestTable = "sqlite_stat1"; | |
| 2455 | + shell_exec(p->db, "SELECT * FROM sqlite_stat1", | |
| 2456 | + shell_callback, &data,&zErrMsg); | |
| 2457 | + data.zDestTable = "sqlite_stat3"; | |
| 2458 | + shell_exec(p->db, "SELECT * FROM sqlite_stat3", | |
| 2459 | + shell_callback, &data,&zErrMsg); | |
| 2460 | + data.zDestTable = "sqlite_stat4"; | |
| 2461 | + shell_exec(p->db, "SELECT * FROM sqlite_stat4", | |
| 2462 | + shell_callback, &data, &zErrMsg); | |
| 2463 | + fprintf(p->out, "ANALYZE sqlite_master;\n"); | |
| 2464 | + } | |
| 2452 | 2465 | }else |
| 2453 | 2466 | |
| 2454 | 2467 | if( c=='h' && strncmp(azArg[0], "headers", n)==0 ){ |
| 2455 | 2468 | if( nArg==2 ){ |
| 2456 | 2469 | p->showHeader = booleanValue(azArg[1]); |
| 2457 | 2470 |
| --- src/shell.c | |
| +++ src/shell.c | |
| @@ -2414,10 +2414,11 @@ | |
| 2414 | }else |
| 2415 | |
| 2416 | if( c=='f' && strncmp(azArg[0], "fullschema", n)==0 ){ |
| 2417 | struct callback_data data; |
| 2418 | char *zErrMsg = 0; |
| 2419 | if( nArg!=1 ){ |
| 2420 | fprintf(stderr, "Usage: .fullschema\n"); |
| 2421 | rc = 1; |
| 2422 | goto meta_command_exit; |
| 2423 | } |
| @@ -2432,25 +2433,37 @@ | |
| 2432 | " SELECT sql, type, tbl_name, name, rowid FROM sqlite_temp_master) " |
| 2433 | "WHERE type!='meta' AND sql NOTNULL AND name NOT LIKE 'sqlite_%'" |
| 2434 | "ORDER BY rowid", |
| 2435 | callback, &data, &zErrMsg |
| 2436 | ); |
| 2437 | sqlite3_exec(p->db, "SELECT 'ANALYZE sqlite_master;'", |
| 2438 | callback, &data, &zErrMsg); |
| 2439 | data.mode = MODE_Insert; |
| 2440 | data.zDestTable = "sqlite_stat1"; |
| 2441 | shell_exec(p->db, "SELECT * FROM sqlite_stat1", |
| 2442 | shell_callback, &data,&zErrMsg); |
| 2443 | data.zDestTable = "sqlite_stat3"; |
| 2444 | shell_exec(p->db, "SELECT * FROM sqlite_stat3", |
| 2445 | shell_callback, &data,&zErrMsg); |
| 2446 | data.zDestTable = "sqlite_stat4"; |
| 2447 | shell_exec(p->db, "SELECT * FROM sqlite_stat4", |
| 2448 | shell_callback, &data, &zErrMsg); |
| 2449 | data.mode = MODE_Semi; |
| 2450 | shell_exec(p->db, "SELECT 'ANALYZE sqlite_master;'", |
| 2451 | shell_callback, &data, &zErrMsg); |
| 2452 | }else |
| 2453 | |
| 2454 | if( c=='h' && strncmp(azArg[0], "headers", n)==0 ){ |
| 2455 | if( nArg==2 ){ |
| 2456 | p->showHeader = booleanValue(azArg[1]); |
| 2457 |
| --- src/shell.c | |
| +++ src/shell.c | |
| @@ -2414,10 +2414,11 @@ | |
| 2414 | }else |
| 2415 | |
| 2416 | if( c=='f' && strncmp(azArg[0], "fullschema", n)==0 ){ |
| 2417 | struct callback_data data; |
| 2418 | char *zErrMsg = 0; |
| 2419 | int doStats = 0; |
| 2420 | if( nArg!=1 ){ |
| 2421 | fprintf(stderr, "Usage: .fullschema\n"); |
| 2422 | rc = 1; |
| 2423 | goto meta_command_exit; |
| 2424 | } |
| @@ -2432,25 +2433,37 @@ | |
| 2433 | " SELECT sql, type, tbl_name, name, rowid FROM sqlite_temp_master) " |
| 2434 | "WHERE type!='meta' AND sql NOTNULL AND name NOT LIKE 'sqlite_%'" |
| 2435 | "ORDER BY rowid", |
| 2436 | callback, &data, &zErrMsg |
| 2437 | ); |
| 2438 | if( rc==SQLITE_OK ){ |
| 2439 | sqlite3_stmt *pStmt; |
| 2440 | rc = sqlite3_prepare_v2(p->db, |
| 2441 | "SELECT rowid FROM sqlite_master" |
| 2442 | " WHERE name GLOB 'sqlite_stat[134]'", |
| 2443 | -1, &pStmt, 0); |
| 2444 | doStats = sqlite3_step(pStmt)==SQLITE_ROW; |
| 2445 | sqlite3_finalize(pStmt); |
| 2446 | } |
| 2447 | if( doStats==0 ){ |
| 2448 | fprintf(p->out, "/* No STAT tables available */\n"); |
| 2449 | }else{ |
| 2450 | fprintf(p->out, "ANALYZE sqlite_master;\n"); |
| 2451 | sqlite3_exec(p->db, "SELECT 'ANALYZE sqlite_master'", |
| 2452 | callback, &data, &zErrMsg); |
| 2453 | data.mode = MODE_Insert; |
| 2454 | data.zDestTable = "sqlite_stat1"; |
| 2455 | shell_exec(p->db, "SELECT * FROM sqlite_stat1", |
| 2456 | shell_callback, &data,&zErrMsg); |
| 2457 | data.zDestTable = "sqlite_stat3"; |
| 2458 | shell_exec(p->db, "SELECT * FROM sqlite_stat3", |
| 2459 | shell_callback, &data,&zErrMsg); |
| 2460 | data.zDestTable = "sqlite_stat4"; |
| 2461 | shell_exec(p->db, "SELECT * FROM sqlite_stat4", |
| 2462 | shell_callback, &data, &zErrMsg); |
| 2463 | fprintf(p->out, "ANALYZE sqlite_master;\n"); |
| 2464 | } |
| 2465 | }else |
| 2466 | |
| 2467 | if( c=='h' && strncmp(azArg[0], "headers", n)==0 ){ |
| 2468 | if( nArg==2 ){ |
| 2469 | p->showHeader = booleanValue(azArg[1]); |
| 2470 |
+42
-43
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -20,41 +20,19 @@ | ||
| 20 | 20 | */ |
| 21 | 21 | #include "config.h" |
| 22 | 22 | #include <string.h> |
| 23 | 23 | #include <time.h> |
| 24 | 24 | #include "timeline.h" |
| 25 | - | |
| 26 | -/* | |
| 27 | -** Shorten a UUID so that is the minimum length needed to contain | |
| 28 | -** at least one digit in the range 'a'..'f'. The minimum length is 10. | |
| 29 | -*/ | |
| 30 | -static void shorten_uuid(char *zDest, const char *zSrc){ | |
| 31 | - int i; | |
| 32 | - for(i=0; i<10 && zSrc[i]<='9'; i++){} | |
| 33 | - memcpy(zDest, zSrc, 10); | |
| 34 | - if( i==10 && zSrc[i] ){ | |
| 35 | - do{ | |
| 36 | - zDest[i] = zSrc[i]; | |
| 37 | - i++; | |
| 38 | - }while( zSrc[i-1]<='9' ); | |
| 39 | - }else{ | |
| 40 | - i = 10; | |
| 41 | - } | |
| 42 | - zDest[i] = 0; | |
| 43 | -} | |
| 44 | - | |
| 45 | 25 | |
| 46 | 26 | /* |
| 47 | 27 | ** Generate a hyperlink to a version. |
| 48 | 28 | */ |
| 49 | 29 | void hyperlink_to_uuid(const char *zUuid){ |
| 50 | - char z[UUID_SIZE+1]; | |
| 51 | - shorten_uuid(z, zUuid); | |
| 52 | 30 | if( g.perm.Hyperlink ){ |
| 53 | - @ %z(xhref("class='timelineHistLink'","%R/info/%s",zUuid))[%s(z)]</a> | |
| 31 | + @ %z(xhref("class='timelineHistLink'","%R/info/%s",zUuid))[%S(zUuid)]</a> | |
| 54 | 32 | }else{ |
| 55 | - @ <span class="timelineHistDsp">[%s(z)]</span> | |
| 33 | + @ <span class="timelineHistDsp">[%S(zUuid)]</span> | |
| 56 | 34 | } |
| 57 | 35 | } |
| 58 | 36 | |
| 59 | 37 | /* |
| 60 | 38 | ** Generate a hyperlink to a date & time. |
| @@ -1220,23 +1198,34 @@ | ||
| 1220 | 1198 | blob_appendf(&desc, "%d ancestors", np); |
| 1221 | 1199 | db_multi_exec("%s", blob_str(&sql)); |
| 1222 | 1200 | } |
| 1223 | 1201 | if( d_rid==0 && useDividers ) timeline_add_dividers(0, p_rid); |
| 1224 | 1202 | } |
| 1225 | - blob_appendf(&desc, " of %z[%.10s]</a>", | |
| 1203 | + blob_appendf(&desc, " of %z[%S]</a>", | |
| 1226 | 1204 | href("%R/info/%s", zUuid), zUuid); |
| 1227 | - if( (tmFlags & TIMELINE_UNHIDE)==0 ){ | |
| 1228 | - if( p_rid ){ | |
| 1229 | - url_add_parameter(&url, "p", zUuid); | |
| 1230 | - } | |
| 1231 | - if( d_rid ){ | |
| 1232 | - if( p_rid ){ | |
| 1233 | - /* If both p= and d= are set, we don't have the uuid of d yet. */ | |
| 1234 | - zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", d_rid); | |
| 1235 | - } | |
| 1236 | - url_add_parameter(&url, "d", zUuid); | |
| 1237 | - } | |
| 1205 | + if( p_rid ){ | |
| 1206 | + url_add_parameter(&url, "p", zUuid); | |
| 1207 | + } | |
| 1208 | + if( d_rid ){ | |
| 1209 | + if( p_rid ){ | |
| 1210 | + /* If both p= and d= are set, we don't have the uuid of d yet. */ | |
| 1211 | + zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", d_rid); | |
| 1212 | + } | |
| 1213 | + url_add_parameter(&url, "d", zUuid); | |
| 1214 | + } | |
| 1215 | + if( nEntry>20 ){ | |
| 1216 | + timeline_submenu(&url, "20 Entries", "n", "20", 0); | |
| 1217 | + } | |
| 1218 | + if( nEntry<200 ){ | |
| 1219 | + timeline_submenu(&url, "200 Entries", "n", "200", 0); | |
| 1220 | + } | |
| 1221 | + if( tmFlags & TIMELINE_FCHANGES ){ | |
| 1222 | + timeline_submenu(&url, "Hide Files", "v", 0, 0); | |
| 1223 | + }else{ | |
| 1224 | + timeline_submenu(&url, "Show Files", "v", "", 0); | |
| 1225 | + } | |
| 1226 | + if( (tmFlags & TIMELINE_UNHIDE)==0 ){ | |
| 1238 | 1227 | timeline_submenu(&url, "Unhide", "unhide", "", 0); |
| 1239 | 1228 | } |
| 1240 | 1229 | }else if( f_rid && g.perm.Read ){ |
| 1241 | 1230 | /* If f= is present, ignore all other parameters other than n= */ |
| 1242 | 1231 | char *zUuid; |
| @@ -1250,14 +1239,19 @@ | ||
| 1250 | 1239 | blob_appendf(&sql, " AND event.objid IN ok"); |
| 1251 | 1240 | db_multi_exec("%s", blob_str(&sql)); |
| 1252 | 1241 | if( useDividers ) timeline_add_dividers(0, f_rid); |
| 1253 | 1242 | blob_appendf(&desc, "Parents and children of check-in "); |
| 1254 | 1243 | zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", f_rid); |
| 1255 | - blob_appendf(&desc, "%z[%.10s]</a>", href("%R/info/%s", zUuid), zUuid); | |
| 1244 | + blob_appendf(&desc, "%z[%S]</a>", href("%R/info/%s", zUuid), zUuid); | |
| 1256 | 1245 | tmFlags |= TIMELINE_DISJOINT; |
| 1246 | + url_add_parameter(&url, "f", zUuid); | |
| 1247 | + if( tmFlags & TIMELINE_FCHANGES ){ | |
| 1248 | + timeline_submenu(&url, "Hide Files", "v", 0, 0); | |
| 1249 | + }else{ | |
| 1250 | + timeline_submenu(&url, "Show Files", "v", "", 0); | |
| 1251 | + } | |
| 1257 | 1252 | if( (tmFlags & TIMELINE_UNHIDE)==0 ){ |
| 1258 | - url_add_parameter(&url, "f", zUuid); | |
| 1259 | 1253 | timeline_submenu(&url, "Unhide", "unhide", "", 0); |
| 1260 | 1254 | } |
| 1261 | 1255 | }else{ |
| 1262 | 1256 | /* Otherwise, a timeline based on a span of time */ |
| 1263 | 1257 | int n; |
| @@ -1571,11 +1565,10 @@ | ||
| 1571 | 1565 | int nChild = db_column_int(q, 4); |
| 1572 | 1566 | int nParent = db_column_int(q, 5); |
| 1573 | 1567 | char *zFree = 0; |
| 1574 | 1568 | int n = 0; |
| 1575 | 1569 | char zPrefix[80]; |
| 1576 | - char zUuid[UUID_SIZE+1]; | |
| 1577 | 1570 | |
| 1578 | 1571 | if( nAbsLimit!=0 ){ |
| 1579 | 1572 | if( nLimit<0 && nLine>=nAbsLimit ){ |
| 1580 | 1573 | fossil_print("--- line limit (%d) reached ---\n", nAbsLimit); |
| 1581 | 1574 | break; /* line count limit hit, stop. */ |
| @@ -1582,11 +1575,10 @@ | ||
| 1582 | 1575 | }else if( nEntry>=nAbsLimit ){ |
| 1583 | 1576 | fossil_print("--- entry limit (%d) reached ---\n", nAbsLimit); |
| 1584 | 1577 | break; /* entry count limit hit, stop. */ |
| 1585 | 1578 | } |
| 1586 | 1579 | } |
| 1587 | - sqlite3_snprintf(sizeof(zUuid), zUuid, "%.10s", zId); | |
| 1588 | 1580 | if( fossil_strnicmp(zDate, zPrevDate, 10) ){ |
| 1589 | 1581 | fossil_print("=== %.10s ===\n", zDate); |
| 1590 | 1582 | memcpy(zPrevDate, zDate, 10); |
| 1591 | 1583 | nLine++; /* record another line */ |
| 1592 | 1584 | } |
| @@ -1609,13 +1601,13 @@ | ||
| 1609 | 1601 | } |
| 1610 | 1602 | if( fossil_strcmp(zCurrentUuid,zId)==0 ){ |
| 1611 | 1603 | sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], "*CURRENT* "); |
| 1612 | 1604 | n += strlen(zPrefix); |
| 1613 | 1605 | } |
| 1614 | - zFree = sqlite3_mprintf("[%.10s] %s%s", zUuid, zPrefix, zCom); | |
| 1606 | + zFree = mprintf("[%S] %s%s", zId, zPrefix, zCom); | |
| 1615 | 1607 | nLine += comment_print(zFree, 9, width); /* record another X lines */ |
| 1616 | - sqlite3_free(zFree); | |
| 1608 | + fossil_free(zFree); | |
| 1617 | 1609 | |
| 1618 | 1610 | if(verboseFlag){ |
| 1619 | 1611 | if( !fchngQueryInit ){ |
| 1620 | 1612 | db_prepare(&fchngQuery, |
| 1621 | 1613 | "SELECT (pid==0) AS isnew," |
| @@ -2051,10 +2043,12 @@ | ||
| 2051 | 2043 | static const char * stats_report_label_for_type(){ |
| 2052 | 2044 | assert( statsReportType && "Must call stats_report_init_view() first." ); |
| 2053 | 2045 | switch( statsReportType ){ |
| 2054 | 2046 | case 'c': |
| 2055 | 2047 | return "checkins"; |
| 2048 | + case 'e': | |
| 2049 | + return "events"; | |
| 2056 | 2050 | case 'w': |
| 2057 | 2051 | return "wiki changes"; |
| 2058 | 2052 | case 't': |
| 2059 | 2053 | return "ticket changes"; |
| 2060 | 2054 | case 'g': |
| @@ -2080,11 +2074,11 @@ | ||
| 2080 | 2074 | zParam = NULL; |
| 2081 | 2075 | } |
| 2082 | 2076 | zTop = mprintf("%s/reports?view=%s%s%s", g.zTop, zCurrentViewName, |
| 2083 | 2077 | zParam ? "&" : "", zParam); |
| 2084 | 2078 | cgi_printf("<div>"); |
| 2085 | - cgi_printf("<span>Event types:</span> "); | |
| 2079 | + cgi_printf("<span>Types:</span> "); | |
| 2086 | 2080 | if('*' == statsReportType){ |
| 2087 | 2081 | cgi_printf(" <strong>all</strong>", zTop); |
| 2088 | 2082 | }else{ |
| 2089 | 2083 | cgi_printf(" <a href='%s'>all</a>", zTop); |
| 2090 | 2084 | } |
| @@ -2091,10 +2085,15 @@ | ||
| 2091 | 2085 | if('c' == statsReportType){ |
| 2092 | 2086 | cgi_printf(" <strong>checkins</strong>", zTop); |
| 2093 | 2087 | }else{ |
| 2094 | 2088 | cgi_printf(" <a href='%s&type=ci'>checkins</a>", zTop); |
| 2095 | 2089 | } |
| 2090 | + if('e' == statsReportType){ | |
| 2091 | + cgi_printf(" <strong>events</strong>", zTop); | |
| 2092 | + }else{ | |
| 2093 | + cgi_printf(" <a href='%s&type=e'>events</a>", zTop); | |
| 2094 | + } | |
| 2096 | 2095 | if( 't' == statsReportType ){ |
| 2097 | 2096 | cgi_printf(" <strong>tickets</strong>", zTop); |
| 2098 | 2097 | }else{ |
| 2099 | 2098 | cgi_printf(" <a href='%s&type=t'>tickets</a>", zTop); |
| 2100 | 2099 | } |
| 2101 | 2100 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -20,41 +20,19 @@ | |
| 20 | */ |
| 21 | #include "config.h" |
| 22 | #include <string.h> |
| 23 | #include <time.h> |
| 24 | #include "timeline.h" |
| 25 | |
| 26 | /* |
| 27 | ** Shorten a UUID so that is the minimum length needed to contain |
| 28 | ** at least one digit in the range 'a'..'f'. The minimum length is 10. |
| 29 | */ |
| 30 | static void shorten_uuid(char *zDest, const char *zSrc){ |
| 31 | int i; |
| 32 | for(i=0; i<10 && zSrc[i]<='9'; i++){} |
| 33 | memcpy(zDest, zSrc, 10); |
| 34 | if( i==10 && zSrc[i] ){ |
| 35 | do{ |
| 36 | zDest[i] = zSrc[i]; |
| 37 | i++; |
| 38 | }while( zSrc[i-1]<='9' ); |
| 39 | }else{ |
| 40 | i = 10; |
| 41 | } |
| 42 | zDest[i] = 0; |
| 43 | } |
| 44 | |
| 45 | |
| 46 | /* |
| 47 | ** Generate a hyperlink to a version. |
| 48 | */ |
| 49 | void hyperlink_to_uuid(const char *zUuid){ |
| 50 | char z[UUID_SIZE+1]; |
| 51 | shorten_uuid(z, zUuid); |
| 52 | if( g.perm.Hyperlink ){ |
| 53 | @ %z(xhref("class='timelineHistLink'","%R/info/%s",zUuid))[%s(z)]</a> |
| 54 | }else{ |
| 55 | @ <span class="timelineHistDsp">[%s(z)]</span> |
| 56 | } |
| 57 | } |
| 58 | |
| 59 | /* |
| 60 | ** Generate a hyperlink to a date & time. |
| @@ -1220,23 +1198,34 @@ | |
| 1220 | blob_appendf(&desc, "%d ancestors", np); |
| 1221 | db_multi_exec("%s", blob_str(&sql)); |
| 1222 | } |
| 1223 | if( d_rid==0 && useDividers ) timeline_add_dividers(0, p_rid); |
| 1224 | } |
| 1225 | blob_appendf(&desc, " of %z[%.10s]</a>", |
| 1226 | href("%R/info/%s", zUuid), zUuid); |
| 1227 | if( (tmFlags & TIMELINE_UNHIDE)==0 ){ |
| 1228 | if( p_rid ){ |
| 1229 | url_add_parameter(&url, "p", zUuid); |
| 1230 | } |
| 1231 | if( d_rid ){ |
| 1232 | if( p_rid ){ |
| 1233 | /* If both p= and d= are set, we don't have the uuid of d yet. */ |
| 1234 | zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", d_rid); |
| 1235 | } |
| 1236 | url_add_parameter(&url, "d", zUuid); |
| 1237 | } |
| 1238 | timeline_submenu(&url, "Unhide", "unhide", "", 0); |
| 1239 | } |
| 1240 | }else if( f_rid && g.perm.Read ){ |
| 1241 | /* If f= is present, ignore all other parameters other than n= */ |
| 1242 | char *zUuid; |
| @@ -1250,14 +1239,19 @@ | |
| 1250 | blob_appendf(&sql, " AND event.objid IN ok"); |
| 1251 | db_multi_exec("%s", blob_str(&sql)); |
| 1252 | if( useDividers ) timeline_add_dividers(0, f_rid); |
| 1253 | blob_appendf(&desc, "Parents and children of check-in "); |
| 1254 | zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", f_rid); |
| 1255 | blob_appendf(&desc, "%z[%.10s]</a>", href("%R/info/%s", zUuid), zUuid); |
| 1256 | tmFlags |= TIMELINE_DISJOINT; |
| 1257 | if( (tmFlags & TIMELINE_UNHIDE)==0 ){ |
| 1258 | url_add_parameter(&url, "f", zUuid); |
| 1259 | timeline_submenu(&url, "Unhide", "unhide", "", 0); |
| 1260 | } |
| 1261 | }else{ |
| 1262 | /* Otherwise, a timeline based on a span of time */ |
| 1263 | int n; |
| @@ -1571,11 +1565,10 @@ | |
| 1571 | int nChild = db_column_int(q, 4); |
| 1572 | int nParent = db_column_int(q, 5); |
| 1573 | char *zFree = 0; |
| 1574 | int n = 0; |
| 1575 | char zPrefix[80]; |
| 1576 | char zUuid[UUID_SIZE+1]; |
| 1577 | |
| 1578 | if( nAbsLimit!=0 ){ |
| 1579 | if( nLimit<0 && nLine>=nAbsLimit ){ |
| 1580 | fossil_print("--- line limit (%d) reached ---\n", nAbsLimit); |
| 1581 | break; /* line count limit hit, stop. */ |
| @@ -1582,11 +1575,10 @@ | |
| 1582 | }else if( nEntry>=nAbsLimit ){ |
| 1583 | fossil_print("--- entry limit (%d) reached ---\n", nAbsLimit); |
| 1584 | break; /* entry count limit hit, stop. */ |
| 1585 | } |
| 1586 | } |
| 1587 | sqlite3_snprintf(sizeof(zUuid), zUuid, "%.10s", zId); |
| 1588 | if( fossil_strnicmp(zDate, zPrevDate, 10) ){ |
| 1589 | fossil_print("=== %.10s ===\n", zDate); |
| 1590 | memcpy(zPrevDate, zDate, 10); |
| 1591 | nLine++; /* record another line */ |
| 1592 | } |
| @@ -1609,13 +1601,13 @@ | |
| 1609 | } |
| 1610 | if( fossil_strcmp(zCurrentUuid,zId)==0 ){ |
| 1611 | sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], "*CURRENT* "); |
| 1612 | n += strlen(zPrefix); |
| 1613 | } |
| 1614 | zFree = sqlite3_mprintf("[%.10s] %s%s", zUuid, zPrefix, zCom); |
| 1615 | nLine += comment_print(zFree, 9, width); /* record another X lines */ |
| 1616 | sqlite3_free(zFree); |
| 1617 | |
| 1618 | if(verboseFlag){ |
| 1619 | if( !fchngQueryInit ){ |
| 1620 | db_prepare(&fchngQuery, |
| 1621 | "SELECT (pid==0) AS isnew," |
| @@ -2051,10 +2043,12 @@ | |
| 2051 | static const char * stats_report_label_for_type(){ |
| 2052 | assert( statsReportType && "Must call stats_report_init_view() first." ); |
| 2053 | switch( statsReportType ){ |
| 2054 | case 'c': |
| 2055 | return "checkins"; |
| 2056 | case 'w': |
| 2057 | return "wiki changes"; |
| 2058 | case 't': |
| 2059 | return "ticket changes"; |
| 2060 | case 'g': |
| @@ -2080,11 +2074,11 @@ | |
| 2080 | zParam = NULL; |
| 2081 | } |
| 2082 | zTop = mprintf("%s/reports?view=%s%s%s", g.zTop, zCurrentViewName, |
| 2083 | zParam ? "&" : "", zParam); |
| 2084 | cgi_printf("<div>"); |
| 2085 | cgi_printf("<span>Event types:</span> "); |
| 2086 | if('*' == statsReportType){ |
| 2087 | cgi_printf(" <strong>all</strong>", zTop); |
| 2088 | }else{ |
| 2089 | cgi_printf(" <a href='%s'>all</a>", zTop); |
| 2090 | } |
| @@ -2091,10 +2085,15 @@ | |
| 2091 | if('c' == statsReportType){ |
| 2092 | cgi_printf(" <strong>checkins</strong>", zTop); |
| 2093 | }else{ |
| 2094 | cgi_printf(" <a href='%s&type=ci'>checkins</a>", zTop); |
| 2095 | } |
| 2096 | if( 't' == statsReportType ){ |
| 2097 | cgi_printf(" <strong>tickets</strong>", zTop); |
| 2098 | }else{ |
| 2099 | cgi_printf(" <a href='%s&type=t'>tickets</a>", zTop); |
| 2100 | } |
| 2101 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -20,41 +20,19 @@ | |
| 20 | */ |
| 21 | #include "config.h" |
| 22 | #include <string.h> |
| 23 | #include <time.h> |
| 24 | #include "timeline.h" |
| 25 | |
| 26 | /* |
| 27 | ** Generate a hyperlink to a version. |
| 28 | */ |
| 29 | void hyperlink_to_uuid(const char *zUuid){ |
| 30 | if( g.perm.Hyperlink ){ |
| 31 | @ %z(xhref("class='timelineHistLink'","%R/info/%s",zUuid))[%S(zUuid)]</a> |
| 32 | }else{ |
| 33 | @ <span class="timelineHistDsp">[%S(zUuid)]</span> |
| 34 | } |
| 35 | } |
| 36 | |
| 37 | /* |
| 38 | ** Generate a hyperlink to a date & time. |
| @@ -1220,23 +1198,34 @@ | |
| 1198 | blob_appendf(&desc, "%d ancestors", np); |
| 1199 | db_multi_exec("%s", blob_str(&sql)); |
| 1200 | } |
| 1201 | if( d_rid==0 && useDividers ) timeline_add_dividers(0, p_rid); |
| 1202 | } |
| 1203 | blob_appendf(&desc, " of %z[%S]</a>", |
| 1204 | href("%R/info/%s", zUuid), zUuid); |
| 1205 | if( p_rid ){ |
| 1206 | url_add_parameter(&url, "p", zUuid); |
| 1207 | } |
| 1208 | if( d_rid ){ |
| 1209 | if( p_rid ){ |
| 1210 | /* If both p= and d= are set, we don't have the uuid of d yet. */ |
| 1211 | zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", d_rid); |
| 1212 | } |
| 1213 | url_add_parameter(&url, "d", zUuid); |
| 1214 | } |
| 1215 | if( nEntry>20 ){ |
| 1216 | timeline_submenu(&url, "20 Entries", "n", "20", 0); |
| 1217 | } |
| 1218 | if( nEntry<200 ){ |
| 1219 | timeline_submenu(&url, "200 Entries", "n", "200", 0); |
| 1220 | } |
| 1221 | if( tmFlags & TIMELINE_FCHANGES ){ |
| 1222 | timeline_submenu(&url, "Hide Files", "v", 0, 0); |
| 1223 | }else{ |
| 1224 | timeline_submenu(&url, "Show Files", "v", "", 0); |
| 1225 | } |
| 1226 | if( (tmFlags & TIMELINE_UNHIDE)==0 ){ |
| 1227 | timeline_submenu(&url, "Unhide", "unhide", "", 0); |
| 1228 | } |
| 1229 | }else if( f_rid && g.perm.Read ){ |
| 1230 | /* If f= is present, ignore all other parameters other than n= */ |
| 1231 | char *zUuid; |
| @@ -1250,14 +1239,19 @@ | |
| 1239 | blob_appendf(&sql, " AND event.objid IN ok"); |
| 1240 | db_multi_exec("%s", blob_str(&sql)); |
| 1241 | if( useDividers ) timeline_add_dividers(0, f_rid); |
| 1242 | blob_appendf(&desc, "Parents and children of check-in "); |
| 1243 | zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", f_rid); |
| 1244 | blob_appendf(&desc, "%z[%S]</a>", href("%R/info/%s", zUuid), zUuid); |
| 1245 | tmFlags |= TIMELINE_DISJOINT; |
| 1246 | url_add_parameter(&url, "f", zUuid); |
| 1247 | if( tmFlags & TIMELINE_FCHANGES ){ |
| 1248 | timeline_submenu(&url, "Hide Files", "v", 0, 0); |
| 1249 | }else{ |
| 1250 | timeline_submenu(&url, "Show Files", "v", "", 0); |
| 1251 | } |
| 1252 | if( (tmFlags & TIMELINE_UNHIDE)==0 ){ |
| 1253 | timeline_submenu(&url, "Unhide", "unhide", "", 0); |
| 1254 | } |
| 1255 | }else{ |
| 1256 | /* Otherwise, a timeline based on a span of time */ |
| 1257 | int n; |
| @@ -1571,11 +1565,10 @@ | |
| 1565 | int nChild = db_column_int(q, 4); |
| 1566 | int nParent = db_column_int(q, 5); |
| 1567 | char *zFree = 0; |
| 1568 | int n = 0; |
| 1569 | char zPrefix[80]; |
| 1570 | |
| 1571 | if( nAbsLimit!=0 ){ |
| 1572 | if( nLimit<0 && nLine>=nAbsLimit ){ |
| 1573 | fossil_print("--- line limit (%d) reached ---\n", nAbsLimit); |
| 1574 | break; /* line count limit hit, stop. */ |
| @@ -1582,11 +1575,10 @@ | |
| 1575 | }else if( nEntry>=nAbsLimit ){ |
| 1576 | fossil_print("--- entry limit (%d) reached ---\n", nAbsLimit); |
| 1577 | break; /* entry count limit hit, stop. */ |
| 1578 | } |
| 1579 | } |
| 1580 | if( fossil_strnicmp(zDate, zPrevDate, 10) ){ |
| 1581 | fossil_print("=== %.10s ===\n", zDate); |
| 1582 | memcpy(zPrevDate, zDate, 10); |
| 1583 | nLine++; /* record another line */ |
| 1584 | } |
| @@ -1609,13 +1601,13 @@ | |
| 1601 | } |
| 1602 | if( fossil_strcmp(zCurrentUuid,zId)==0 ){ |
| 1603 | sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], "*CURRENT* "); |
| 1604 | n += strlen(zPrefix); |
| 1605 | } |
| 1606 | zFree = mprintf("[%S] %s%s", zId, zPrefix, zCom); |
| 1607 | nLine += comment_print(zFree, 9, width); /* record another X lines */ |
| 1608 | fossil_free(zFree); |
| 1609 | |
| 1610 | if(verboseFlag){ |
| 1611 | if( !fchngQueryInit ){ |
| 1612 | db_prepare(&fchngQuery, |
| 1613 | "SELECT (pid==0) AS isnew," |
| @@ -2051,10 +2043,12 @@ | |
| 2043 | static const char * stats_report_label_for_type(){ |
| 2044 | assert( statsReportType && "Must call stats_report_init_view() first." ); |
| 2045 | switch( statsReportType ){ |
| 2046 | case 'c': |
| 2047 | return "checkins"; |
| 2048 | case 'e': |
| 2049 | return "events"; |
| 2050 | case 'w': |
| 2051 | return "wiki changes"; |
| 2052 | case 't': |
| 2053 | return "ticket changes"; |
| 2054 | case 'g': |
| @@ -2080,11 +2074,11 @@ | |
| 2074 | zParam = NULL; |
| 2075 | } |
| 2076 | zTop = mprintf("%s/reports?view=%s%s%s", g.zTop, zCurrentViewName, |
| 2077 | zParam ? "&" : "", zParam); |
| 2078 | cgi_printf("<div>"); |
| 2079 | cgi_printf("<span>Types:</span> "); |
| 2080 | if('*' == statsReportType){ |
| 2081 | cgi_printf(" <strong>all</strong>", zTop); |
| 2082 | }else{ |
| 2083 | cgi_printf(" <a href='%s'>all</a>", zTop); |
| 2084 | } |
| @@ -2091,10 +2085,15 @@ | |
| 2085 | if('c' == statsReportType){ |
| 2086 | cgi_printf(" <strong>checkins</strong>", zTop); |
| 2087 | }else{ |
| 2088 | cgi_printf(" <a href='%s&type=ci'>checkins</a>", zTop); |
| 2089 | } |
| 2090 | if('e' == statsReportType){ |
| 2091 | cgi_printf(" <strong>events</strong>", zTop); |
| 2092 | }else{ |
| 2093 | cgi_printf(" <a href='%s&type=e'>events</a>", zTop); |
| 2094 | } |
| 2095 | if( 't' == statsReportType ){ |
| 2096 | cgi_printf(" <strong>tickets</strong>", zTop); |
| 2097 | }else{ |
| 2098 | cgi_printf(" <a href='%s&type=t'>tickets</a>", zTop); |
| 2099 | } |
| 2100 |
+2
-2
| --- src/tkt.c | ||
| +++ src/tkt.c | ||
| @@ -943,20 +943,20 @@ | ||
| 943 | 943 | }else{ |
| 944 | 944 | @ |
| 945 | 945 | @ <li><p>Add attachment |
| 946 | 946 | @ "%z(href("%R/artifact/%s",zSrc))%s(zFile)</a>" |
| 947 | 947 | } |
| 948 | - @ [%z(href("%R/artifact/%s",zChngUuid))%.10s(zChngUuid)</a>] | |
| 948 | + @ [%z(href("%R/artifact/%s",zChngUuid))%S(zChngUuid)</a>] | |
| 949 | 949 | @ (rid %d(rid)) by |
| 950 | 950 | hyperlink_to_user(zUser,zDate," on"); |
| 951 | 951 | hyperlink_to_date(zDate, ".</p>"); |
| 952 | 952 | }else{ |
| 953 | 953 | pTicket = manifest_get(rid, CFTYPE_TICKET, 0); |
| 954 | 954 | if( pTicket ){ |
| 955 | 955 | @ |
| 956 | 956 | @ <li><p>Ticket change |
| 957 | - @ [%z(href("%R/artifact/%s",zChngUuid))%.10s(zChngUuid)</a>] | |
| 957 | + @ [%z(href("%R/artifact/%s",zChngUuid))%S(zChngUuid)</a>] | |
| 958 | 958 | @ (rid %d(rid)) by |
| 959 | 959 | hyperlink_to_user(pTicket->zUser,zDate," on"); |
| 960 | 960 | hyperlink_to_date(zDate, ":"); |
| 961 | 961 | @ </p> |
| 962 | 962 | ticket_output_change_artifact(pTicket, "a"); |
| 963 | 963 |
| --- src/tkt.c | |
| +++ src/tkt.c | |
| @@ -943,20 +943,20 @@ | |
| 943 | }else{ |
| 944 | @ |
| 945 | @ <li><p>Add attachment |
| 946 | @ "%z(href("%R/artifact/%s",zSrc))%s(zFile)</a>" |
| 947 | } |
| 948 | @ [%z(href("%R/artifact/%s",zChngUuid))%.10s(zChngUuid)</a>] |
| 949 | @ (rid %d(rid)) by |
| 950 | hyperlink_to_user(zUser,zDate," on"); |
| 951 | hyperlink_to_date(zDate, ".</p>"); |
| 952 | }else{ |
| 953 | pTicket = manifest_get(rid, CFTYPE_TICKET, 0); |
| 954 | if( pTicket ){ |
| 955 | @ |
| 956 | @ <li><p>Ticket change |
| 957 | @ [%z(href("%R/artifact/%s",zChngUuid))%.10s(zChngUuid)</a>] |
| 958 | @ (rid %d(rid)) by |
| 959 | hyperlink_to_user(pTicket->zUser,zDate," on"); |
| 960 | hyperlink_to_date(zDate, ":"); |
| 961 | @ </p> |
| 962 | ticket_output_change_artifact(pTicket, "a"); |
| 963 |
| --- src/tkt.c | |
| +++ src/tkt.c | |
| @@ -943,20 +943,20 @@ | |
| 943 | }else{ |
| 944 | @ |
| 945 | @ <li><p>Add attachment |
| 946 | @ "%z(href("%R/artifact/%s",zSrc))%s(zFile)</a>" |
| 947 | } |
| 948 | @ [%z(href("%R/artifact/%s",zChngUuid))%S(zChngUuid)</a>] |
| 949 | @ (rid %d(rid)) by |
| 950 | hyperlink_to_user(zUser,zDate," on"); |
| 951 | hyperlink_to_date(zDate, ".</p>"); |
| 952 | }else{ |
| 953 | pTicket = manifest_get(rid, CFTYPE_TICKET, 0); |
| 954 | if( pTicket ){ |
| 955 | @ |
| 956 | @ <li><p>Ticket change |
| 957 | @ [%z(href("%R/artifact/%s",zChngUuid))%S(zChngUuid)</a>] |
| 958 | @ (rid %d(rid)) by |
| 959 | hyperlink_to_user(pTicket->zUser,zDate," on"); |
| 960 | hyperlink_to_date(zDate, ":"); |
| 961 | @ </p> |
| 962 | ticket_output_change_artifact(pTicket, "a"); |
| 963 |
+166
-154
| --- src/unicode.c | ||
| +++ src/unicode.c | ||
| @@ -31,101 +31,107 @@ | ||
| 31 | 31 | int unicode_isalnum(int c){ |
| 32 | 32 | /* Each unsigned integer in the following array corresponds to a contiguous |
| 33 | 33 | ** range of unicode codepoints that are not either letters or numbers (i.e. |
| 34 | 34 | ** codepoints for which this function should return 0). |
| 35 | 35 | ** |
| 36 | - ** The most significant 22 bits in each 32-bit value contain the first | |
| 36 | + ** The most significant 22 bits in each 32-bit value contain the first | |
| 37 | 37 | ** codepoint in the range. The least significant 10 bits are used to store |
| 38 | - ** the size of the range (always at least 1). In other words, the value | |
| 39 | - ** ((C<<22) + N) represents a range of N codepoints starting with codepoint | |
| 40 | - ** C. It is not possible to represent a range larger than 1023 codepoints | |
| 38 | + ** the size of the range (always at least 1). In other words, the value | |
| 39 | + ** ((C<<22) + N) represents a range of N codepoints starting with codepoint | |
| 40 | + ** C. It is not possible to represent a range larger than 1023 codepoints | |
| 41 | 41 | ** using this format. |
| 42 | 42 | */ |
| 43 | 43 | static const unsigned int aEntry[] = { |
| 44 | 44 | 0x00000030, 0x0000E807, 0x00016C06, 0x0001EC2F, 0x0002AC07, |
| 45 | 45 | 0x0002D001, 0x0002D803, 0x0002EC01, 0x0002FC01, 0x00035C01, |
| 46 | 46 | 0x0003DC01, 0x000B0804, 0x000B480E, 0x000B9407, 0x000BB401, |
| 47 | 47 | 0x000BBC81, 0x000DD401, 0x000DF801, 0x000E1002, 0x000E1C01, |
| 48 | - 0x000FD801, 0x00120808, 0x00156806, 0x00162402, 0x00163C01, | |
| 49 | - 0x00164437, 0x0017CC02, 0x00180005, 0x00181816, 0x00187802, | |
| 50 | - 0x00192C15, 0x0019A804, 0x0019C001, 0x001B5001, 0x001B580F, | |
| 51 | - 0x001B9C07, 0x001BF402, 0x001C000E, 0x001C3C01, 0x001C4401, | |
| 52 | - 0x001CC01B, 0x001E980B, 0x001FAC09, 0x001FD804, 0x00205804, | |
| 53 | - 0x00206C09, 0x00209403, 0x0020A405, 0x0020C00F, 0x00216403, | |
| 54 | - 0x00217801, 0x0023901B, 0x00240004, 0x0024E803, 0x0024F812, | |
| 55 | - 0x00254407, 0x00258804, 0x0025C001, 0x00260403, 0x0026F001, | |
| 56 | - 0x0026F807, 0x00271C02, 0x00272C03, 0x00275C01, 0x00278802, | |
| 57 | - 0x0027C802, 0x0027E802, 0x00280403, 0x0028F001, 0x0028F805, | |
| 58 | - 0x00291C02, 0x00292C03, 0x00294401, 0x0029C002, 0x0029D401, | |
| 59 | - 0x002A0403, 0x002AF001, 0x002AF808, 0x002B1C03, 0x002B2C03, | |
| 60 | - 0x002B8802, 0x002BC002, 0x002C0403, 0x002CF001, 0x002CF807, | |
| 61 | - 0x002D1C02, 0x002D2C03, 0x002D5802, 0x002D8802, 0x002DC001, | |
| 62 | - 0x002E0801, 0x002EF805, 0x002F1803, 0x002F2804, 0x002F5C01, | |
| 63 | - 0x002FCC08, 0x00300403, 0x0030F807, 0x00311803, 0x00312804, | |
| 64 | - 0x00315402, 0x00318802, 0x0031FC01, 0x00320802, 0x0032F001, | |
| 65 | - 0x0032F807, 0x00331803, 0x00332804, 0x00335402, 0x00338802, | |
| 66 | - 0x00340802, 0x0034F807, 0x00351803, 0x00352804, 0x00355C01, | |
| 67 | - 0x00358802, 0x0035E401, 0x00360802, 0x00372801, 0x00373C06, | |
| 68 | - 0x00375801, 0x00376008, 0x0037C803, 0x0038C401, 0x0038D007, | |
| 69 | - 0x0038FC01, 0x00391C09, 0x00396802, 0x003AC401, 0x003AD006, | |
| 70 | - 0x003AEC02, 0x003B2006, 0x003C041F, 0x003CD00C, 0x003DC417, | |
| 71 | - 0x003E340B, 0x003E6424, 0x003EF80F, 0x003F380D, 0x0040AC14, | |
| 72 | - 0x00412806, 0x00415804, 0x00417803, 0x00418803, 0x00419C07, | |
| 73 | - 0x0041C404, 0x0042080C, 0x00423C01, 0x00426806, 0x0043EC01, | |
| 74 | - 0x004D740C, 0x004E400A, 0x00500001, 0x0059B402, 0x005A0001, | |
| 75 | - 0x005A6C02, 0x005BAC03, 0x005C4803, 0x005CC805, 0x005D4802, | |
| 76 | - 0x005DC802, 0x005ED023, 0x005F6004, 0x005F7401, 0x0060000F, | |
| 77 | - 0x0062A401, 0x0064800C, 0x0064C00C, 0x00650001, 0x00651002, | |
| 78 | - 0x0066C011, 0x00672002, 0x00677822, 0x00685C05, 0x00687802, | |
| 79 | - 0x0069540A, 0x0069801D, 0x0069FC01, 0x006A8007, 0x006AA006, | |
| 80 | - 0x006C0005, 0x006CD011, 0x006D6823, 0x006E0003, 0x006E840D, | |
| 81 | - 0x006F980E, 0x006FF004, 0x00709014, 0x0070EC05, 0x0071F802, | |
| 82 | - 0x00730008, 0x00734019, 0x0073B401, 0x0073C803, 0x00770027, | |
| 48 | + 0x000FD801, 0x00120808, 0x00156806, 0x00162402, 0x00163403, | |
| 49 | + 0x00164437, 0x0017CC02, 0x0018001D, 0x00187802, 0x00192C15, | |
| 50 | + 0x0019A804, 0x0019C001, 0x001B5001, 0x001B580F, 0x001B9C07, | |
| 51 | + 0x001BF402, 0x001C000E, 0x001C3C01, 0x001C4401, 0x001CC01B, | |
| 52 | + 0x001E980B, 0x001FAC09, 0x001FD804, 0x00205804, 0x00206C09, | |
| 53 | + 0x00209403, 0x0020A405, 0x0020C00F, 0x00216403, 0x00217801, | |
| 54 | + 0x00239020, 0x0024E803, 0x0024F812, 0x00254407, 0x00258804, | |
| 55 | + 0x0025C001, 0x00260403, 0x0026F001, 0x0026F807, 0x00271C02, | |
| 56 | + 0x00272C03, 0x00275C01, 0x00278802, 0x0027C802, 0x0027E802, | |
| 57 | + 0x00280403, 0x0028F001, 0x0028F805, 0x00291C02, 0x00292C03, | |
| 58 | + 0x00294401, 0x0029C002, 0x0029D401, 0x002A0403, 0x002AF001, | |
| 59 | + 0x002AF808, 0x002B1C03, 0x002B2C03, 0x002B8802, 0x002BC002, | |
| 60 | + 0x002C0403, 0x002CF001, 0x002CF807, 0x002D1C02, 0x002D2C03, | |
| 61 | + 0x002D5802, 0x002D8802, 0x002DC001, 0x002E0801, 0x002EF805, | |
| 62 | + 0x002F1803, 0x002F2804, 0x002F5C01, 0x002FCC08, 0x00300004, | |
| 63 | + 0x0030F807, 0x00311803, 0x00312804, 0x00315402, 0x00318802, | |
| 64 | + 0x0031FC01, 0x00320403, 0x0032F001, 0x0032F807, 0x00331803, | |
| 65 | + 0x00332804, 0x00335402, 0x00338802, 0x00340403, 0x0034F807, | |
| 66 | + 0x00351803, 0x00352804, 0x00355C01, 0x00358802, 0x0035E401, | |
| 67 | + 0x00360802, 0x00372801, 0x00373C06, 0x00375801, 0x00376008, | |
| 68 | + 0x0037C803, 0x0038C401, 0x0038D007, 0x0038FC01, 0x00391C09, | |
| 69 | + 0x00396802, 0x003AC401, 0x003AD006, 0x003AEC02, 0x003B2006, | |
| 70 | + 0x003C041F, 0x003CD00C, 0x003DC417, 0x003E340B, 0x003E6424, | |
| 71 | + 0x003EF80F, 0x003F380D, 0x0040AC14, 0x00412806, 0x00415804, | |
| 72 | + 0x00417803, 0x00418803, 0x00419C07, 0x0041C404, 0x0042080C, | |
| 73 | + 0x00423C01, 0x00426806, 0x0043EC01, 0x004D740C, 0x004E400A, | |
| 74 | + 0x00500001, 0x0059B402, 0x005A0001, 0x005A6C02, 0x005BAC03, | |
| 75 | + 0x005C4803, 0x005CC805, 0x005D4802, 0x005DC802, 0x005ED023, | |
| 76 | + 0x005F6004, 0x005F7401, 0x0060000F, 0x0062A401, 0x0064800C, | |
| 77 | + 0x0064C00C, 0x00650001, 0x00651002, 0x0066C011, 0x00672002, | |
| 78 | + 0x00677822, 0x00685C05, 0x00687802, 0x0069540A, 0x0069801D, | |
| 79 | + 0x0069FC01, 0x006A8007, 0x006AA006, 0x006AC00F, 0x006C0005, | |
| 80 | + 0x006CD011, 0x006D6823, 0x006E0003, 0x006E840D, 0x006F980E, | |
| 81 | + 0x006FF004, 0x00709014, 0x0070EC05, 0x0071F802, 0x00730008, | |
| 82 | + 0x00734019, 0x0073B401, 0x0073C803, 0x0073E002, 0x00770036, | |
| 83 | 83 | 0x0077F004, 0x007EF401, 0x007EFC03, 0x007F3403, 0x007F7403, |
| 84 | - 0x007FB403, 0x007FF402, 0x00800065, 0x0081A806, 0x0081E805, | |
| 85 | - 0x00822805, 0x0082801A, 0x00834021, 0x00840002, 0x00840C04, | |
| 84 | + 0x007FB403, 0x007FF402, 0x00800065, 0x0081980A, 0x0081E805, | |
| 85 | + 0x00822805, 0x0082801E, 0x00834021, 0x00840002, 0x00840C04, | |
| 86 | 86 | 0x00842002, 0x00845001, 0x00845803, 0x00847806, 0x00849401, |
| 87 | 87 | 0x00849C01, 0x0084A401, 0x0084B801, 0x0084E802, 0x00850005, |
| 88 | - 0x00852804, 0x00853C01, 0x00864264, 0x00900027, 0x0091000B, | |
| 89 | - 0x0092704E, 0x00940200, 0x009C0475, 0x009E53B9, 0x00AD400A, | |
| 90 | - 0x00B39406, 0x00B3BC03, 0x00B3E404, 0x00B3F802, 0x00B5C001, | |
| 91 | - 0x00B5FC01, 0x00B7804F, 0x00B8C00C, 0x00BA001A, 0x00BA6C59, | |
| 92 | - 0x00BC00D6, 0x00BFC00C, 0x00C00005, 0x00C02019, 0x00C0A807, | |
| 93 | - 0x00C0D802, 0x00C0F403, 0x00C26404, 0x00C28001, 0x00C3EC01, | |
| 94 | - 0x00C64002, 0x00C6580A, 0x00C70024, 0x00C8001F, 0x00C8A81E, | |
| 95 | - 0x00C94001, 0x00C98020, 0x00CA2827, 0x00CB003F, 0x00CC0100, | |
| 96 | - 0x01370040, 0x02924037, 0x0293F802, 0x02983403, 0x0299BC10, | |
| 97 | - 0x029A7C01, 0x029BC008, 0x029C0017, 0x029C8002, 0x029E2402, | |
| 98 | - 0x02A00801, 0x02A01801, 0x02A02C01, 0x02A08C09, 0x02A0D804, | |
| 99 | - 0x02A1D004, 0x02A20002, 0x02A2D011, 0x02A33802, 0x02A38012, | |
| 100 | - 0x02A3E003, 0x02A4980A, 0x02A51C0D, 0x02A57C01, 0x02A60004, | |
| 101 | - 0x02A6CC1B, 0x02A77802, 0x02A8A40E, 0x02A90C01, 0x02A93002, | |
| 102 | - 0x02A97004, 0x02A9DC03, 0x02A9EC01, 0x02AAC001, 0x02AAC803, | |
| 103 | - 0x02AADC02, 0x02AAF802, 0x02AB0401, 0x02AB7802, 0x02ABAC07, | |
| 104 | - 0x02ABD402, 0x02AF8C0B, 0x03600001, 0x036DFC02, 0x036FFC02, | |
| 105 | - 0x037FFC02, 0x03E3FC01, 0x03EC7801, 0x03ECA401, 0x03EEC810, | |
| 106 | - 0x03F4F802, 0x03F7F002, 0x03F8001A, 0x03F88007, 0x03F8C023, | |
| 107 | - 0x03F95013, 0x03F9A004, 0x03FBFC01, 0x03FC040F, 0x03FC6807, | |
| 108 | - 0x03FCEC06, 0x03FD6C0B, 0x03FF8007, 0x03FFA007, 0x03FFE405, | |
| 109 | - 0x04040003, 0x0404DC09, 0x0405E411, 0x0406400C, 0x0407402E, | |
| 110 | - 0x040E7C01, 0x040F4001, 0x04215C01, 0x04247C01, 0x0424FC01, | |
| 111 | - 0x04280403, 0x04281402, 0x04283004, 0x0428E003, 0x0428FC01, | |
| 112 | - 0x04294009, 0x0429FC01, 0x042CE407, 0x04400003, 0x0440E016, | |
| 113 | - 0x04420003, 0x0442C012, 0x04440003, 0x04449C0E, 0x04450004, | |
| 114 | - 0x04460003, 0x0446CC0E, 0x04471404, 0x045AAC0D, 0x0491C004, | |
| 115 | - 0x05BD442E, 0x05BE3C04, 0x074000F6, 0x07440027, 0x0744A4B5, | |
| 116 | - 0x07480046, 0x074C0057, 0x075B0401, 0x075B6C01, 0x075BEC01, | |
| 117 | - 0x075C5401, 0x075CD401, 0x075D3C01, 0x075DBC01, 0x075E2401, | |
| 118 | - 0x075EA401, 0x075F0C01, 0x07BBC002, 0x07C0002C, 0x07C0C064, | |
| 119 | - 0x07C2800F, 0x07C2C40E, 0x07C3040F, 0x07C3440F, 0x07C4401F, | |
| 120 | - 0x07C4C03C, 0x07C5C02B, 0x07C7981D, 0x07C8402B, 0x07C90009, | |
| 121 | - 0x07C94002, 0x07CC0021, 0x07CCC006, 0x07CCDC46, 0x07CE0014, | |
| 122 | - 0x07CE8025, 0x07CF1805, 0x07CF8011, 0x07D0003F, 0x07D10001, | |
| 123 | - 0x07D108B6, 0x07D3E404, 0x07D4003E, 0x07D50004, 0x07D54018, | |
| 124 | - 0x07D7EC46, 0x07D9140B, 0x07DA0046, 0x07DC0074, 0x38000401, | |
| 125 | - 0x38008060, 0x380400F0, 0x3C000001, 0x3FFFF401, 0x40000001, | |
| 126 | - 0x43FFF401, | |
| 88 | + 0x00852804, 0x00853C01, 0x0086426B, 0x00900027, 0x0091000B, | |
| 89 | + 0x0092704E, 0x00940276, 0x009E53E0, 0x00ADD820, 0x00AE6022, | |
| 90 | + 0x00AEF40C, 0x00AF2808, 0x00B39406, 0x00B3BC03, 0x00B3E404, | |
| 91 | + 0x00B3F802, 0x00B5C001, 0x00B5FC01, 0x00B7804F, 0x00B8C013, | |
| 92 | + 0x00BA001A, 0x00BA6C59, 0x00BC00D6, 0x00BFC00C, 0x00C00005, | |
| 93 | + 0x00C02019, 0x00C0A807, 0x00C0D802, 0x00C0F403, 0x00C26404, | |
| 94 | + 0x00C28001, 0x00C3EC01, 0x00C64002, 0x00C6580A, 0x00C70024, | |
| 95 | + 0x00C8001F, 0x00C8A81E, 0x00C94001, 0x00C98020, 0x00CA2827, | |
| 96 | + 0x00CB003F, 0x00CC0100, 0x01370040, 0x02924037, 0x0293F802, | |
| 97 | + 0x02983403, 0x0299BC10, 0x029A7C01, 0x029BC008, 0x029C0017, | |
| 98 | + 0x029C8002, 0x029E2402, 0x02A00801, 0x02A01801, 0x02A02C01, | |
| 99 | + 0x02A08C09, 0x02A0D804, 0x02A1D004, 0x02A20002, 0x02A2D011, | |
| 100 | + 0x02A33802, 0x02A38012, 0x02A3E003, 0x02A4980A, 0x02A51C0D, | |
| 101 | + 0x02A57C01, 0x02A60004, 0x02A6CC1B, 0x02A77802, 0x02A79401, | |
| 102 | + 0x02A8A40E, 0x02A90C01, 0x02A93002, 0x02A97004, 0x02A9DC03, | |
| 103 | + 0x02A9EC03, 0x02AAC001, 0x02AAC803, 0x02AADC02, 0x02AAF802, | |
| 104 | + 0x02AB0401, 0x02AB7802, 0x02ABAC07, 0x02ABD402, 0x02AD6C01, | |
| 105 | + 0x02AF8C0B, 0x03600001, 0x036DFC02, 0x036FFC02, 0x037FFC01, | |
| 106 | + 0x03EC7801, 0x03ECA401, 0x03EEC810, 0x03F4F802, 0x03F7F002, | |
| 107 | + 0x03F8001A, 0x03F8800E, 0x03F8C023, 0x03F95013, 0x03F9A004, | |
| 108 | + 0x03FBFC01, 0x03FC040F, 0x03FC6807, 0x03FCEC06, 0x03FD6C0B, | |
| 109 | + 0x03FF8007, 0x03FFA007, 0x03FFE405, 0x04040003, 0x0404DC09, | |
| 110 | + 0x0405E411, 0x04063001, 0x0406400C, 0x04068001, 0x0407402E, | |
| 111 | + 0x040B8001, 0x040DD805, 0x040E7C01, 0x040F4001, 0x0415BC01, | |
| 112 | + 0x04215C01, 0x0421DC02, 0x04247C01, 0x0424FC01, 0x04280403, | |
| 113 | + 0x04281402, 0x04283004, 0x0428E003, 0x0428FC01, 0x04294009, | |
| 114 | + 0x0429FC01, 0x042B2001, 0x042B9402, 0x042BC007, 0x042CE407, | |
| 115 | + 0x042E6404, 0x04400003, 0x0440E016, 0x0441FC04, 0x0442C012, | |
| 116 | + 0x04440003, 0x04449C0E, 0x04450004, 0x0445CC03, 0x04460003, | |
| 117 | + 0x0446CC0E, 0x04471404, 0x04473401, 0x0448B012, 0x044B7C0C, | |
| 118 | + 0x044C0403, 0x044CF001, 0x044CF807, 0x044D1C02, 0x044D2C03, | |
| 119 | + 0x044D5C01, 0x044D8802, 0x044D9807, 0x044DC005, 0x0452C014, | |
| 120 | + 0x04531801, 0x0456BC07, 0x0456E012, 0x0458C014, 0x045AAC0D, | |
| 121 | + 0x0491C005, 0x05A9B802, 0x05ABC006, 0x05ACC010, 0x05AD1002, | |
| 122 | + 0x05BD442E, 0x05BE3C04, 0x06F27008, 0x074000F6, 0x07440027, | |
| 123 | + 0x0744A4B5, 0x07480046, 0x074C0057, 0x075B0401, 0x075B6C01, | |
| 124 | + 0x075BEC01, 0x075C5401, 0x075CD401, 0x075D3C01, 0x075DBC01, | |
| 125 | + 0x075E2401, 0x075EA401, 0x075F0C01, 0x07A34007, 0x07BBC002, | |
| 126 | + 0x07C0002C, 0x07C0C064, 0x07C2800F, 0x07C2C40F, 0x07C3040F, | |
| 127 | + 0x07C34425, 0x07C4401F, 0x07C4C03C, 0x07C5C02B, 0x07C7981D, | |
| 128 | + 0x07C8402B, 0x07C90009, 0x07C94002, 0x07CC002D, 0x07CCC04E, | |
| 129 | + 0x07CE004F, 0x07CF5024, 0x07D000FF, 0x07D4004B, 0x07D5402A, | |
| 130 | + 0x07D5EC29, 0x07D6949E, 0x07D9148B, 0x07DB800D, 0x07DBC004, | |
| 131 | + 0x07DC0074, 0x07DE0055, 0x07E0000C, 0x07E04038, 0x07E1400A, | |
| 132 | + 0x07E18028, 0x07E2401E, 0x38000401, 0x38008060, 0x380400F0, | |
| 127 | 133 | }; |
| 128 | 134 | static const unsigned int aAscii[4] = { |
| 129 | 135 | 0xFFFFFFFF, 0xFC00FFFF, 0xF8000001, 0xF8000001, |
| 130 | 136 | }; |
| 131 | 137 | |
| @@ -160,35 +166,35 @@ | ||
| 160 | 166 | ** SMALL LETTER E WITH DIAERESIS" - return 65 ("LATIN SMALL LETTER |
| 161 | 167 | ** E"). The resuls of passing a codepoint that corresponds to an |
| 162 | 168 | ** uppercase letter are undefined. |
| 163 | 169 | */ |
| 164 | 170 | static int unicode_remove_diacritic(int c){ |
| 165 | - unsigned short aDia[] = { | |
| 166 | - 0, 1797, 1848, 1859, 1891, 1928, 1940, 1995, | |
| 167 | - 2024, 2040, 2060, 2110, 2168, 2206, 2264, 2286, | |
| 168 | - 2344, 2383, 2472, 2488, 2516, 2596, 2668, 2732, | |
| 169 | - 2782, 2842, 2894, 2954, 2984, 3000, 3028, 3336, | |
| 170 | - 3456, 3696, 3712, 3728, 3744, 3896, 3912, 3928, | |
| 171 | - 3968, 4008, 4040, 4106, 4138, 4170, 4202, 4234, | |
| 172 | - 4266, 4296, 4312, 4344, 4408, 4424, 4472, 4504, | |
| 173 | - 6148, 6198, 6264, 6280, 6360, 6429, 6505, 6529, | |
| 174 | - 61448, 61468, 61534, 61592, 61642, 61688, 61704, 61726, | |
| 175 | - 61784, 61800, 61836, 61880, 61914, 61948, 61998, 62122, | |
| 176 | - 62154, 62200, 62218, 62302, 62364, 62442, 62478, 62536, | |
| 177 | - 62554, 62584, 62604, 62640, 62648, 62656, 62664, 62730, | |
| 178 | - 62924, 63050, 63082, 63274, 63390, | |
| 171 | + static const unsigned short aDia[] = { | |
| 172 | + 0, 1797, 1848, 1859, 1891, 1928, 1940, 1995, | |
| 173 | + 2024, 2040, 2060, 2110, 2168, 2206, 2264, 2286, | |
| 174 | + 2344, 2383, 2472, 2488, 2516, 2596, 2668, 2732, | |
| 175 | + 2782, 2842, 2894, 2954, 2984, 3000, 3028, 3336, | |
| 176 | + 3456, 3696, 3712, 3728, 3744, 3896, 3912, 3928, | |
| 177 | + 3968, 4008, 4040, 4106, 4138, 4170, 4202, 4234, | |
| 178 | + 4266, 4296, 4312, 4344, 4408, 4424, 4472, 4504, | |
| 179 | + 6148, 6198, 6264, 6280, 6360, 6429, 6505, 6529, | |
| 180 | + 61448, 61468, 61534, 61592, 61642, 61688, 61704, 61726, | |
| 181 | + 61784, 61800, 61836, 61880, 61914, 61948, 61998, 62122, | |
| 182 | + 62154, 62200, 62218, 62302, 62364, 62442, 62478, 62536, | |
| 183 | + 62554, 62584, 62604, 62640, 62648, 62656, 62664, 62730, | |
| 184 | + 62924, 63050, 63082, 63274, 63390, | |
| 179 | 185 | }; |
| 180 | - char aChar[] = { | |
| 181 | - '\0', 'a', 'c', 'e', 'i', 'n', 'o', 'u', 'y', 'y', 'a', 'c', | |
| 182 | - 'd', 'e', 'e', 'g', 'h', 'i', 'j', 'k', 'l', 'n', 'o', 'r', | |
| 183 | - 's', 't', 'u', 'u', 'w', 'y', 'z', 'o', 'u', 'a', 'i', 'o', | |
| 184 | - 'u', 'g', 'k', 'o', 'j', 'g', 'n', 'a', 'e', 'i', 'o', 'r', | |
| 185 | - 'u', 's', 't', 'h', 'a', 'e', 'o', 'y', '\0', '\0', '\0', '\0', | |
| 186 | - '\0', '\0', '\0', '\0', 'a', 'b', 'd', 'd', 'e', 'f', 'g', 'h', | |
| 187 | - 'h', 'i', 'k', 'l', 'l', 'm', 'n', 'p', 'r', 'r', 's', 't', | |
| 188 | - 'u', 'v', 'w', 'w', 'x', 'y', 'z', 'h', 't', 'w', 'y', 'a', | |
| 189 | - 'e', 'i', 'o', 'u', 'y', | |
| 186 | + static const char aChar[] = { | |
| 187 | + '\0', 'a', 'c', 'e', 'i', 'n', 'o', 'u', 'y', 'y', 'a', 'c', | |
| 188 | + 'd', 'e', 'e', 'g', 'h', 'i', 'j', 'k', 'l', 'n', 'o', 'r', | |
| 189 | + 's', 't', 'u', 'u', 'w', 'y', 'z', 'o', 'u', 'a', 'i', 'o', | |
| 190 | + 'u', 'g', 'k', 'o', 'j', 'g', 'n', 'a', 'e', 'i', 'o', 'r', | |
| 191 | + 'u', 's', 't', 'h', 'a', 'e', 'o', 'y', '\0', '\0', '\0', '\0', | |
| 192 | + '\0', '\0', '\0', '\0', 'a', 'b', 'd', 'd', 'e', 'f', 'g', 'h', | |
| 193 | + 'h', 'i', 'k', 'l', 'l', 'm', 'n', 'p', 'r', 'r', 's', 't', | |
| 194 | + 'u', 'v', 'w', 'w', 'x', 'y', 'z', 'h', 't', 'w', 'y', 'a', | |
| 195 | + 'e', 'i', 'o', 'u', 'y', | |
| 190 | 196 | }; |
| 191 | 197 | |
| 192 | 198 | unsigned int key = (((unsigned int)c)<<3) | 0x00000007; |
| 193 | 199 | int iRes = 0; |
| 194 | 200 | int iHi = sizeof(aDia)/sizeof(aDia[0]) - 1; |
| @@ -253,12 +259,12 @@ | ||
| 253 | 259 | unsigned char flags; |
| 254 | 260 | unsigned char nRange; |
| 255 | 261 | } aEntry[] = { |
| 256 | 262 | {65, 14, 26}, {181, 64, 1}, {192, 14, 23}, |
| 257 | 263 | {216, 14, 7}, {256, 1, 48}, {306, 1, 6}, |
| 258 | - {313, 1, 16}, {330, 1, 46}, {376, 116, 1}, | |
| 259 | - {377, 1, 6}, {383, 104, 1}, {385, 50, 1}, | |
| 264 | + {313, 1, 16}, {330, 1, 46}, {376, 126, 1}, | |
| 265 | + {377, 1, 6}, {383, 114, 1}, {385, 50, 1}, | |
| 260 | 266 | {386, 1, 4}, {390, 44, 1}, {391, 0, 1}, |
| 261 | 267 | {393, 42, 2}, {395, 0, 1}, {398, 32, 1}, |
| 262 | 268 | {399, 38, 1}, {400, 40, 1}, {401, 0, 1}, |
| 263 | 269 | {403, 42, 1}, {404, 46, 1}, {406, 52, 1}, |
| 264 | 270 | {407, 48, 1}, {408, 0, 1}, {412, 52, 1}, |
| @@ -267,61 +273,64 @@ | ||
| 267 | 273 | {428, 0, 1}, {430, 60, 1}, {431, 0, 1}, |
| 268 | 274 | {433, 58, 2}, {435, 1, 4}, {439, 62, 1}, |
| 269 | 275 | {440, 0, 1}, {444, 0, 1}, {452, 2, 1}, |
| 270 | 276 | {453, 0, 1}, {455, 2, 1}, {456, 0, 1}, |
| 271 | 277 | {458, 2, 1}, {459, 1, 18}, {478, 1, 18}, |
| 272 | - {497, 2, 1}, {498, 1, 4}, {502, 122, 1}, | |
| 273 | - {503, 134, 1}, {504, 1, 40}, {544, 110, 1}, | |
| 278 | + {497, 2, 1}, {498, 1, 4}, {502, 132, 1}, | |
| 279 | + {503, 144, 1}, {504, 1, 40}, {544, 120, 1}, | |
| 274 | 280 | {546, 1, 18}, {570, 70, 1}, {571, 0, 1}, |
| 275 | - {573, 108, 1}, {574, 68, 1}, {577, 0, 1}, | |
| 276 | - {579, 106, 1}, {580, 28, 1}, {581, 30, 1}, | |
| 281 | + {573, 118, 1}, {574, 68, 1}, {577, 0, 1}, | |
| 282 | + {579, 116, 1}, {580, 28, 1}, {581, 30, 1}, | |
| 277 | 283 | {582, 1, 10}, {837, 36, 1}, {880, 1, 4}, |
| 278 | - {886, 0, 1}, {902, 18, 1}, {904, 16, 3}, | |
| 279 | - {908, 26, 1}, {910, 24, 2}, {913, 14, 17}, | |
| 280 | - {931, 14, 9}, {962, 0, 1}, {975, 4, 1}, | |
| 281 | - {976, 140, 1}, {977, 142, 1}, {981, 146, 1}, | |
| 282 | - {982, 144, 1}, {984, 1, 24}, {1008, 136, 1}, | |
| 283 | - {1009, 138, 1}, {1012, 130, 1}, {1013, 128, 1}, | |
| 284 | - {1015, 0, 1}, {1017, 152, 1}, {1018, 0, 1}, | |
| 285 | - {1021, 110, 3}, {1024, 34, 16}, {1040, 14, 32}, | |
| 286 | - {1120, 1, 34}, {1162, 1, 54}, {1216, 6, 1}, | |
| 287 | - {1217, 1, 14}, {1232, 1, 88}, {1329, 22, 38}, | |
| 288 | - {4256, 66, 38}, {4295, 66, 1}, {4301, 66, 1}, | |
| 289 | - {7680, 1, 150}, {7835, 132, 1}, {7838, 96, 1}, | |
| 290 | - {7840, 1, 96}, {7944, 150, 8}, {7960, 150, 6}, | |
| 291 | - {7976, 150, 8}, {7992, 150, 8}, {8008, 150, 6}, | |
| 292 | - {8025, 151, 8}, {8040, 150, 8}, {8072, 150, 8}, | |
| 293 | - {8088, 150, 8}, {8104, 150, 8}, {8120, 150, 2}, | |
| 294 | - {8122, 126, 2}, {8124, 148, 1}, {8126, 100, 1}, | |
| 295 | - {8136, 124, 4}, {8140, 148, 1}, {8152, 150, 2}, | |
| 296 | - {8154, 120, 2}, {8168, 150, 2}, {8170, 118, 2}, | |
| 297 | - {8172, 152, 1}, {8184, 112, 2}, {8186, 114, 2}, | |
| 298 | - {8188, 148, 1}, {8486, 98, 1}, {8490, 92, 1}, | |
| 299 | - {8491, 94, 1}, {8498, 12, 1}, {8544, 8, 16}, | |
| 300 | - {8579, 0, 1}, {9398, 10, 26}, {11264, 22, 47}, | |
| 301 | - {11360, 0, 1}, {11362, 88, 1}, {11363, 102, 1}, | |
| 302 | - {11364, 90, 1}, {11367, 1, 6}, {11373, 84, 1}, | |
| 303 | - {11374, 86, 1}, {11375, 80, 1}, {11376, 82, 1}, | |
| 304 | - {11378, 0, 1}, {11381, 0, 1}, {11390, 78, 2}, | |
| 305 | - {11392, 1, 100}, {11499, 1, 4}, {11506, 0, 1}, | |
| 306 | - {42560, 1, 46}, {42624, 1, 24}, {42786, 1, 14}, | |
| 307 | - {42802, 1, 62}, {42873, 1, 4}, {42877, 76, 1}, | |
| 308 | - {42878, 1, 10}, {42891, 0, 1}, {42893, 74, 1}, | |
| 309 | - {42896, 1, 4}, {42912, 1, 10}, {42922, 72, 1}, | |
| 310 | - {65313, 14, 26}, | |
| 284 | + {886, 0, 1}, {895, 36, 1}, {902, 18, 1}, | |
| 285 | + {904, 16, 3}, {908, 26, 1}, {910, 24, 2}, | |
| 286 | + {913, 14, 17}, {931, 14, 9}, {962, 0, 1}, | |
| 287 | + {975, 4, 1}, {976, 150, 1}, {977, 152, 1}, | |
| 288 | + {981, 156, 1}, {982, 154, 1}, {984, 1, 24}, | |
| 289 | + {1008, 146, 1}, {1009, 148, 1}, {1012, 140, 1}, | |
| 290 | + {1013, 138, 1}, {1015, 0, 1}, {1017, 162, 1}, | |
| 291 | + {1018, 0, 1}, {1021, 120, 3}, {1024, 34, 16}, | |
| 292 | + {1040, 14, 32}, {1120, 1, 34}, {1162, 1, 54}, | |
| 293 | + {1216, 6, 1}, {1217, 1, 14}, {1232, 1, 96}, | |
| 294 | + {1329, 22, 38}, {4256, 66, 38}, {4295, 66, 1}, | |
| 295 | + {4301, 66, 1}, {7680, 1, 150}, {7835, 142, 1}, | |
| 296 | + {7838, 106, 1}, {7840, 1, 96}, {7944, 160, 8}, | |
| 297 | + {7960, 160, 6}, {7976, 160, 8}, {7992, 160, 8}, | |
| 298 | + {8008, 160, 6}, {8025, 161, 8}, {8040, 160, 8}, | |
| 299 | + {8072, 160, 8}, {8088, 160, 8}, {8104, 160, 8}, | |
| 300 | + {8120, 160, 2}, {8122, 136, 2}, {8124, 158, 1}, | |
| 301 | + {8126, 110, 1}, {8136, 134, 4}, {8140, 158, 1}, | |
| 302 | + {8152, 160, 2}, {8154, 130, 2}, {8168, 160, 2}, | |
| 303 | + {8170, 128, 2}, {8172, 162, 1}, {8184, 122, 2}, | |
| 304 | + {8186, 124, 2}, {8188, 158, 1}, {8486, 108, 1}, | |
| 305 | + {8490, 102, 1}, {8491, 104, 1}, {8498, 12, 1}, | |
| 306 | + {8544, 8, 16}, {8579, 0, 1}, {9398, 10, 26}, | |
| 307 | + {11264, 22, 47}, {11360, 0, 1}, {11362, 98, 1}, | |
| 308 | + {11363, 112, 1}, {11364, 100, 1}, {11367, 1, 6}, | |
| 309 | + {11373, 94, 1}, {11374, 96, 1}, {11375, 90, 1}, | |
| 310 | + {11376, 92, 1}, {11378, 0, 1}, {11381, 0, 1}, | |
| 311 | + {11390, 88, 2}, {11392, 1, 100}, {11499, 1, 4}, | |
| 312 | + {11506, 0, 1}, {42560, 1, 46}, {42624, 1, 28}, | |
| 313 | + {42786, 1, 14}, {42802, 1, 62}, {42873, 1, 4}, | |
| 314 | + {42877, 86, 1}, {42878, 1, 10}, {42891, 0, 1}, | |
| 315 | + {42893, 82, 1}, {42896, 1, 4}, {42902, 1, 20}, | |
| 316 | + {42922, 76, 1}, {42923, 72, 1}, {42924, 74, 1}, | |
| 317 | + {42925, 78, 1}, {42928, 84, 1}, {42929, 80, 1}, | |
| 318 | + {65313, 14, 26}, | |
| 311 | 319 | }; |
| 312 | 320 | static const unsigned short aiOff[] = { |
| 313 | - 1, 2, 8, 15, 16, 26, 28, 32, | |
| 314 | - 37, 38, 40, 48, 63, 64, 69, 71, | |
| 315 | - 79, 80, 116, 202, 203, 205, 206, 207, | |
| 316 | - 209, 210, 211, 213, 214, 217, 218, 219, | |
| 317 | - 775, 7264, 10792, 10795, 23228, 23256, 30204, 54721, | |
| 318 | - 54753, 54754, 54756, 54787, 54793, 54809, 57153, 57274, | |
| 319 | - 57921, 58019, 58363, 61722, 65268, 65341, 65373, 65406, | |
| 320 | - 65408, 65410, 65415, 65424, 65436, 65439, 65450, 65462, | |
| 321 | - 65472, 65476, 65478, 65480, 65482, 65488, 65506, 65511, | |
| 322 | - 65514, 65521, 65527, 65528, 65529, | |
| 321 | + 1, 2, 8, 15, 16, 26, 28, 32, | |
| 322 | + 37, 38, 40, 48, 63, 64, 69, 71, | |
| 323 | + 79, 80, 116, 202, 203, 205, 206, 207, | |
| 324 | + 209, 210, 211, 213, 214, 217, 218, 219, | |
| 325 | + 775, 7264, 10792, 10795, 23217, 23221, 23228, 23231, | |
| 326 | + 23254, 23256, 23278, 30204, 54721, 54753, 54754, 54756, | |
| 327 | + 54787, 54793, 54809, 57153, 57274, 57921, 58019, 58363, | |
| 328 | + 61722, 65268, 65341, 65373, 65406, 65408, 65410, 65415, | |
| 329 | + 65424, 65436, 65439, 65450, 65462, 65472, 65476, 65478, | |
| 330 | + 65480, 65482, 65488, 65506, 65511, 65514, 65521, 65527, | |
| 331 | + 65528, 65529, | |
| 323 | 332 | }; |
| 324 | 333 | |
| 325 | 334 | int ret = c; |
| 326 | 335 | |
| 327 | 336 | assert( c>=0 ); |
| @@ -354,12 +363,15 @@ | ||
| 354 | 363 | } |
| 355 | 364 | } |
| 356 | 365 | |
| 357 | 366 | if( bRemoveDiacritic ) ret = unicode_remove_diacritic(ret); |
| 358 | 367 | } |
| 359 | - | |
| 368 | + | |
| 360 | 369 | else if( c>=66560 && c<66600 ){ |
| 361 | 370 | ret = c + 40; |
| 371 | + } | |
| 372 | + else if( c>=71840 && c<71872 ){ | |
| 373 | + ret = c + 32; | |
| 362 | 374 | } |
| 363 | 375 | |
| 364 | 376 | return ret; |
| 365 | 377 | } |
| 366 | 378 |
| --- src/unicode.c | |
| +++ src/unicode.c | |
| @@ -31,101 +31,107 @@ | |
| 31 | int unicode_isalnum(int c){ |
| 32 | /* Each unsigned integer in the following array corresponds to a contiguous |
| 33 | ** range of unicode codepoints that are not either letters or numbers (i.e. |
| 34 | ** codepoints for which this function should return 0). |
| 35 | ** |
| 36 | ** The most significant 22 bits in each 32-bit value contain the first |
| 37 | ** codepoint in the range. The least significant 10 bits are used to store |
| 38 | ** the size of the range (always at least 1). In other words, the value |
| 39 | ** ((C<<22) + N) represents a range of N codepoints starting with codepoint |
| 40 | ** C. It is not possible to represent a range larger than 1023 codepoints |
| 41 | ** using this format. |
| 42 | */ |
| 43 | static const unsigned int aEntry[] = { |
| 44 | 0x00000030, 0x0000E807, 0x00016C06, 0x0001EC2F, 0x0002AC07, |
| 45 | 0x0002D001, 0x0002D803, 0x0002EC01, 0x0002FC01, 0x00035C01, |
| 46 | 0x0003DC01, 0x000B0804, 0x000B480E, 0x000B9407, 0x000BB401, |
| 47 | 0x000BBC81, 0x000DD401, 0x000DF801, 0x000E1002, 0x000E1C01, |
| 48 | 0x000FD801, 0x00120808, 0x00156806, 0x00162402, 0x00163C01, |
| 49 | 0x00164437, 0x0017CC02, 0x00180005, 0x00181816, 0x00187802, |
| 50 | 0x00192C15, 0x0019A804, 0x0019C001, 0x001B5001, 0x001B580F, |
| 51 | 0x001B9C07, 0x001BF402, 0x001C000E, 0x001C3C01, 0x001C4401, |
| 52 | 0x001CC01B, 0x001E980B, 0x001FAC09, 0x001FD804, 0x00205804, |
| 53 | 0x00206C09, 0x00209403, 0x0020A405, 0x0020C00F, 0x00216403, |
| 54 | 0x00217801, 0x0023901B, 0x00240004, 0x0024E803, 0x0024F812, |
| 55 | 0x00254407, 0x00258804, 0x0025C001, 0x00260403, 0x0026F001, |
| 56 | 0x0026F807, 0x00271C02, 0x00272C03, 0x00275C01, 0x00278802, |
| 57 | 0x0027C802, 0x0027E802, 0x00280403, 0x0028F001, 0x0028F805, |
| 58 | 0x00291C02, 0x00292C03, 0x00294401, 0x0029C002, 0x0029D401, |
| 59 | 0x002A0403, 0x002AF001, 0x002AF808, 0x002B1C03, 0x002B2C03, |
| 60 | 0x002B8802, 0x002BC002, 0x002C0403, 0x002CF001, 0x002CF807, |
| 61 | 0x002D1C02, 0x002D2C03, 0x002D5802, 0x002D8802, 0x002DC001, |
| 62 | 0x002E0801, 0x002EF805, 0x002F1803, 0x002F2804, 0x002F5C01, |
| 63 | 0x002FCC08, 0x00300403, 0x0030F807, 0x00311803, 0x00312804, |
| 64 | 0x00315402, 0x00318802, 0x0031FC01, 0x00320802, 0x0032F001, |
| 65 | 0x0032F807, 0x00331803, 0x00332804, 0x00335402, 0x00338802, |
| 66 | 0x00340802, 0x0034F807, 0x00351803, 0x00352804, 0x00355C01, |
| 67 | 0x00358802, 0x0035E401, 0x00360802, 0x00372801, 0x00373C06, |
| 68 | 0x00375801, 0x00376008, 0x0037C803, 0x0038C401, 0x0038D007, |
| 69 | 0x0038FC01, 0x00391C09, 0x00396802, 0x003AC401, 0x003AD006, |
| 70 | 0x003AEC02, 0x003B2006, 0x003C041F, 0x003CD00C, 0x003DC417, |
| 71 | 0x003E340B, 0x003E6424, 0x003EF80F, 0x003F380D, 0x0040AC14, |
| 72 | 0x00412806, 0x00415804, 0x00417803, 0x00418803, 0x00419C07, |
| 73 | 0x0041C404, 0x0042080C, 0x00423C01, 0x00426806, 0x0043EC01, |
| 74 | 0x004D740C, 0x004E400A, 0x00500001, 0x0059B402, 0x005A0001, |
| 75 | 0x005A6C02, 0x005BAC03, 0x005C4803, 0x005CC805, 0x005D4802, |
| 76 | 0x005DC802, 0x005ED023, 0x005F6004, 0x005F7401, 0x0060000F, |
| 77 | 0x0062A401, 0x0064800C, 0x0064C00C, 0x00650001, 0x00651002, |
| 78 | 0x0066C011, 0x00672002, 0x00677822, 0x00685C05, 0x00687802, |
| 79 | 0x0069540A, 0x0069801D, 0x0069FC01, 0x006A8007, 0x006AA006, |
| 80 | 0x006C0005, 0x006CD011, 0x006D6823, 0x006E0003, 0x006E840D, |
| 81 | 0x006F980E, 0x006FF004, 0x00709014, 0x0070EC05, 0x0071F802, |
| 82 | 0x00730008, 0x00734019, 0x0073B401, 0x0073C803, 0x00770027, |
| 83 | 0x0077F004, 0x007EF401, 0x007EFC03, 0x007F3403, 0x007F7403, |
| 84 | 0x007FB403, 0x007FF402, 0x00800065, 0x0081A806, 0x0081E805, |
| 85 | 0x00822805, 0x0082801A, 0x00834021, 0x00840002, 0x00840C04, |
| 86 | 0x00842002, 0x00845001, 0x00845803, 0x00847806, 0x00849401, |
| 87 | 0x00849C01, 0x0084A401, 0x0084B801, 0x0084E802, 0x00850005, |
| 88 | 0x00852804, 0x00853C01, 0x00864264, 0x00900027, 0x0091000B, |
| 89 | 0x0092704E, 0x00940200, 0x009C0475, 0x009E53B9, 0x00AD400A, |
| 90 | 0x00B39406, 0x00B3BC03, 0x00B3E404, 0x00B3F802, 0x00B5C001, |
| 91 | 0x00B5FC01, 0x00B7804F, 0x00B8C00C, 0x00BA001A, 0x00BA6C59, |
| 92 | 0x00BC00D6, 0x00BFC00C, 0x00C00005, 0x00C02019, 0x00C0A807, |
| 93 | 0x00C0D802, 0x00C0F403, 0x00C26404, 0x00C28001, 0x00C3EC01, |
| 94 | 0x00C64002, 0x00C6580A, 0x00C70024, 0x00C8001F, 0x00C8A81E, |
| 95 | 0x00C94001, 0x00C98020, 0x00CA2827, 0x00CB003F, 0x00CC0100, |
| 96 | 0x01370040, 0x02924037, 0x0293F802, 0x02983403, 0x0299BC10, |
| 97 | 0x029A7C01, 0x029BC008, 0x029C0017, 0x029C8002, 0x029E2402, |
| 98 | 0x02A00801, 0x02A01801, 0x02A02C01, 0x02A08C09, 0x02A0D804, |
| 99 | 0x02A1D004, 0x02A20002, 0x02A2D011, 0x02A33802, 0x02A38012, |
| 100 | 0x02A3E003, 0x02A4980A, 0x02A51C0D, 0x02A57C01, 0x02A60004, |
| 101 | 0x02A6CC1B, 0x02A77802, 0x02A8A40E, 0x02A90C01, 0x02A93002, |
| 102 | 0x02A97004, 0x02A9DC03, 0x02A9EC01, 0x02AAC001, 0x02AAC803, |
| 103 | 0x02AADC02, 0x02AAF802, 0x02AB0401, 0x02AB7802, 0x02ABAC07, |
| 104 | 0x02ABD402, 0x02AF8C0B, 0x03600001, 0x036DFC02, 0x036FFC02, |
| 105 | 0x037FFC02, 0x03E3FC01, 0x03EC7801, 0x03ECA401, 0x03EEC810, |
| 106 | 0x03F4F802, 0x03F7F002, 0x03F8001A, 0x03F88007, 0x03F8C023, |
| 107 | 0x03F95013, 0x03F9A004, 0x03FBFC01, 0x03FC040F, 0x03FC6807, |
| 108 | 0x03FCEC06, 0x03FD6C0B, 0x03FF8007, 0x03FFA007, 0x03FFE405, |
| 109 | 0x04040003, 0x0404DC09, 0x0405E411, 0x0406400C, 0x0407402E, |
| 110 | 0x040E7C01, 0x040F4001, 0x04215C01, 0x04247C01, 0x0424FC01, |
| 111 | 0x04280403, 0x04281402, 0x04283004, 0x0428E003, 0x0428FC01, |
| 112 | 0x04294009, 0x0429FC01, 0x042CE407, 0x04400003, 0x0440E016, |
| 113 | 0x04420003, 0x0442C012, 0x04440003, 0x04449C0E, 0x04450004, |
| 114 | 0x04460003, 0x0446CC0E, 0x04471404, 0x045AAC0D, 0x0491C004, |
| 115 | 0x05BD442E, 0x05BE3C04, 0x074000F6, 0x07440027, 0x0744A4B5, |
| 116 | 0x07480046, 0x074C0057, 0x075B0401, 0x075B6C01, 0x075BEC01, |
| 117 | 0x075C5401, 0x075CD401, 0x075D3C01, 0x075DBC01, 0x075E2401, |
| 118 | 0x075EA401, 0x075F0C01, 0x07BBC002, 0x07C0002C, 0x07C0C064, |
| 119 | 0x07C2800F, 0x07C2C40E, 0x07C3040F, 0x07C3440F, 0x07C4401F, |
| 120 | 0x07C4C03C, 0x07C5C02B, 0x07C7981D, 0x07C8402B, 0x07C90009, |
| 121 | 0x07C94002, 0x07CC0021, 0x07CCC006, 0x07CCDC46, 0x07CE0014, |
| 122 | 0x07CE8025, 0x07CF1805, 0x07CF8011, 0x07D0003F, 0x07D10001, |
| 123 | 0x07D108B6, 0x07D3E404, 0x07D4003E, 0x07D50004, 0x07D54018, |
| 124 | 0x07D7EC46, 0x07D9140B, 0x07DA0046, 0x07DC0074, 0x38000401, |
| 125 | 0x38008060, 0x380400F0, 0x3C000001, 0x3FFFF401, 0x40000001, |
| 126 | 0x43FFF401, |
| 127 | }; |
| 128 | static const unsigned int aAscii[4] = { |
| 129 | 0xFFFFFFFF, 0xFC00FFFF, 0xF8000001, 0xF8000001, |
| 130 | }; |
| 131 | |
| @@ -160,35 +166,35 @@ | |
| 160 | ** SMALL LETTER E WITH DIAERESIS" - return 65 ("LATIN SMALL LETTER |
| 161 | ** E"). The resuls of passing a codepoint that corresponds to an |
| 162 | ** uppercase letter are undefined. |
| 163 | */ |
| 164 | static int unicode_remove_diacritic(int c){ |
| 165 | unsigned short aDia[] = { |
| 166 | 0, 1797, 1848, 1859, 1891, 1928, 1940, 1995, |
| 167 | 2024, 2040, 2060, 2110, 2168, 2206, 2264, 2286, |
| 168 | 2344, 2383, 2472, 2488, 2516, 2596, 2668, 2732, |
| 169 | 2782, 2842, 2894, 2954, 2984, 3000, 3028, 3336, |
| 170 | 3456, 3696, 3712, 3728, 3744, 3896, 3912, 3928, |
| 171 | 3968, 4008, 4040, 4106, 4138, 4170, 4202, 4234, |
| 172 | 4266, 4296, 4312, 4344, 4408, 4424, 4472, 4504, |
| 173 | 6148, 6198, 6264, 6280, 6360, 6429, 6505, 6529, |
| 174 | 61448, 61468, 61534, 61592, 61642, 61688, 61704, 61726, |
| 175 | 61784, 61800, 61836, 61880, 61914, 61948, 61998, 62122, |
| 176 | 62154, 62200, 62218, 62302, 62364, 62442, 62478, 62536, |
| 177 | 62554, 62584, 62604, 62640, 62648, 62656, 62664, 62730, |
| 178 | 62924, 63050, 63082, 63274, 63390, |
| 179 | }; |
| 180 | char aChar[] = { |
| 181 | '\0', 'a', 'c', 'e', 'i', 'n', 'o', 'u', 'y', 'y', 'a', 'c', |
| 182 | 'd', 'e', 'e', 'g', 'h', 'i', 'j', 'k', 'l', 'n', 'o', 'r', |
| 183 | 's', 't', 'u', 'u', 'w', 'y', 'z', 'o', 'u', 'a', 'i', 'o', |
| 184 | 'u', 'g', 'k', 'o', 'j', 'g', 'n', 'a', 'e', 'i', 'o', 'r', |
| 185 | 'u', 's', 't', 'h', 'a', 'e', 'o', 'y', '\0', '\0', '\0', '\0', |
| 186 | '\0', '\0', '\0', '\0', 'a', 'b', 'd', 'd', 'e', 'f', 'g', 'h', |
| 187 | 'h', 'i', 'k', 'l', 'l', 'm', 'n', 'p', 'r', 'r', 's', 't', |
| 188 | 'u', 'v', 'w', 'w', 'x', 'y', 'z', 'h', 't', 'w', 'y', 'a', |
| 189 | 'e', 'i', 'o', 'u', 'y', |
| 190 | }; |
| 191 | |
| 192 | unsigned int key = (((unsigned int)c)<<3) | 0x00000007; |
| 193 | int iRes = 0; |
| 194 | int iHi = sizeof(aDia)/sizeof(aDia[0]) - 1; |
| @@ -253,12 +259,12 @@ | |
| 253 | unsigned char flags; |
| 254 | unsigned char nRange; |
| 255 | } aEntry[] = { |
| 256 | {65, 14, 26}, {181, 64, 1}, {192, 14, 23}, |
| 257 | {216, 14, 7}, {256, 1, 48}, {306, 1, 6}, |
| 258 | {313, 1, 16}, {330, 1, 46}, {376, 116, 1}, |
| 259 | {377, 1, 6}, {383, 104, 1}, {385, 50, 1}, |
| 260 | {386, 1, 4}, {390, 44, 1}, {391, 0, 1}, |
| 261 | {393, 42, 2}, {395, 0, 1}, {398, 32, 1}, |
| 262 | {399, 38, 1}, {400, 40, 1}, {401, 0, 1}, |
| 263 | {403, 42, 1}, {404, 46, 1}, {406, 52, 1}, |
| 264 | {407, 48, 1}, {408, 0, 1}, {412, 52, 1}, |
| @@ -267,61 +273,64 @@ | |
| 267 | {428, 0, 1}, {430, 60, 1}, {431, 0, 1}, |
| 268 | {433, 58, 2}, {435, 1, 4}, {439, 62, 1}, |
| 269 | {440, 0, 1}, {444, 0, 1}, {452, 2, 1}, |
| 270 | {453, 0, 1}, {455, 2, 1}, {456, 0, 1}, |
| 271 | {458, 2, 1}, {459, 1, 18}, {478, 1, 18}, |
| 272 | {497, 2, 1}, {498, 1, 4}, {502, 122, 1}, |
| 273 | {503, 134, 1}, {504, 1, 40}, {544, 110, 1}, |
| 274 | {546, 1, 18}, {570, 70, 1}, {571, 0, 1}, |
| 275 | {573, 108, 1}, {574, 68, 1}, {577, 0, 1}, |
| 276 | {579, 106, 1}, {580, 28, 1}, {581, 30, 1}, |
| 277 | {582, 1, 10}, {837, 36, 1}, {880, 1, 4}, |
| 278 | {886, 0, 1}, {902, 18, 1}, {904, 16, 3}, |
| 279 | {908, 26, 1}, {910, 24, 2}, {913, 14, 17}, |
| 280 | {931, 14, 9}, {962, 0, 1}, {975, 4, 1}, |
| 281 | {976, 140, 1}, {977, 142, 1}, {981, 146, 1}, |
| 282 | {982, 144, 1}, {984, 1, 24}, {1008, 136, 1}, |
| 283 | {1009, 138, 1}, {1012, 130, 1}, {1013, 128, 1}, |
| 284 | {1015, 0, 1}, {1017, 152, 1}, {1018, 0, 1}, |
| 285 | {1021, 110, 3}, {1024, 34, 16}, {1040, 14, 32}, |
| 286 | {1120, 1, 34}, {1162, 1, 54}, {1216, 6, 1}, |
| 287 | {1217, 1, 14}, {1232, 1, 88}, {1329, 22, 38}, |
| 288 | {4256, 66, 38}, {4295, 66, 1}, {4301, 66, 1}, |
| 289 | {7680, 1, 150}, {7835, 132, 1}, {7838, 96, 1}, |
| 290 | {7840, 1, 96}, {7944, 150, 8}, {7960, 150, 6}, |
| 291 | {7976, 150, 8}, {7992, 150, 8}, {8008, 150, 6}, |
| 292 | {8025, 151, 8}, {8040, 150, 8}, {8072, 150, 8}, |
| 293 | {8088, 150, 8}, {8104, 150, 8}, {8120, 150, 2}, |
| 294 | {8122, 126, 2}, {8124, 148, 1}, {8126, 100, 1}, |
| 295 | {8136, 124, 4}, {8140, 148, 1}, {8152, 150, 2}, |
| 296 | {8154, 120, 2}, {8168, 150, 2}, {8170, 118, 2}, |
| 297 | {8172, 152, 1}, {8184, 112, 2}, {8186, 114, 2}, |
| 298 | {8188, 148, 1}, {8486, 98, 1}, {8490, 92, 1}, |
| 299 | {8491, 94, 1}, {8498, 12, 1}, {8544, 8, 16}, |
| 300 | {8579, 0, 1}, {9398, 10, 26}, {11264, 22, 47}, |
| 301 | {11360, 0, 1}, {11362, 88, 1}, {11363, 102, 1}, |
| 302 | {11364, 90, 1}, {11367, 1, 6}, {11373, 84, 1}, |
| 303 | {11374, 86, 1}, {11375, 80, 1}, {11376, 82, 1}, |
| 304 | {11378, 0, 1}, {11381, 0, 1}, {11390, 78, 2}, |
| 305 | {11392, 1, 100}, {11499, 1, 4}, {11506, 0, 1}, |
| 306 | {42560, 1, 46}, {42624, 1, 24}, {42786, 1, 14}, |
| 307 | {42802, 1, 62}, {42873, 1, 4}, {42877, 76, 1}, |
| 308 | {42878, 1, 10}, {42891, 0, 1}, {42893, 74, 1}, |
| 309 | {42896, 1, 4}, {42912, 1, 10}, {42922, 72, 1}, |
| 310 | {65313, 14, 26}, |
| 311 | }; |
| 312 | static const unsigned short aiOff[] = { |
| 313 | 1, 2, 8, 15, 16, 26, 28, 32, |
| 314 | 37, 38, 40, 48, 63, 64, 69, 71, |
| 315 | 79, 80, 116, 202, 203, 205, 206, 207, |
| 316 | 209, 210, 211, 213, 214, 217, 218, 219, |
| 317 | 775, 7264, 10792, 10795, 23228, 23256, 30204, 54721, |
| 318 | 54753, 54754, 54756, 54787, 54793, 54809, 57153, 57274, |
| 319 | 57921, 58019, 58363, 61722, 65268, 65341, 65373, 65406, |
| 320 | 65408, 65410, 65415, 65424, 65436, 65439, 65450, 65462, |
| 321 | 65472, 65476, 65478, 65480, 65482, 65488, 65506, 65511, |
| 322 | 65514, 65521, 65527, 65528, 65529, |
| 323 | }; |
| 324 | |
| 325 | int ret = c; |
| 326 | |
| 327 | assert( c>=0 ); |
| @@ -354,12 +363,15 @@ | |
| 354 | } |
| 355 | } |
| 356 | |
| 357 | if( bRemoveDiacritic ) ret = unicode_remove_diacritic(ret); |
| 358 | } |
| 359 | |
| 360 | else if( c>=66560 && c<66600 ){ |
| 361 | ret = c + 40; |
| 362 | } |
| 363 | |
| 364 | return ret; |
| 365 | } |
| 366 |
| --- src/unicode.c | |
| +++ src/unicode.c | |
| @@ -31,101 +31,107 @@ | |
| 31 | int unicode_isalnum(int c){ |
| 32 | /* Each unsigned integer in the following array corresponds to a contiguous |
| 33 | ** range of unicode codepoints that are not either letters or numbers (i.e. |
| 34 | ** codepoints for which this function should return 0). |
| 35 | ** |
| 36 | ** The most significant 22 bits in each 32-bit value contain the first |
| 37 | ** codepoint in the range. The least significant 10 bits are used to store |
| 38 | ** the size of the range (always at least 1). In other words, the value |
| 39 | ** ((C<<22) + N) represents a range of N codepoints starting with codepoint |
| 40 | ** C. It is not possible to represent a range larger than 1023 codepoints |
| 41 | ** using this format. |
| 42 | */ |
| 43 | static const unsigned int aEntry[] = { |
| 44 | 0x00000030, 0x0000E807, 0x00016C06, 0x0001EC2F, 0x0002AC07, |
| 45 | 0x0002D001, 0x0002D803, 0x0002EC01, 0x0002FC01, 0x00035C01, |
| 46 | 0x0003DC01, 0x000B0804, 0x000B480E, 0x000B9407, 0x000BB401, |
| 47 | 0x000BBC81, 0x000DD401, 0x000DF801, 0x000E1002, 0x000E1C01, |
| 48 | 0x000FD801, 0x00120808, 0x00156806, 0x00162402, 0x00163403, |
| 49 | 0x00164437, 0x0017CC02, 0x0018001D, 0x00187802, 0x00192C15, |
| 50 | 0x0019A804, 0x0019C001, 0x001B5001, 0x001B580F, 0x001B9C07, |
| 51 | 0x001BF402, 0x001C000E, 0x001C3C01, 0x001C4401, 0x001CC01B, |
| 52 | 0x001E980B, 0x001FAC09, 0x001FD804, 0x00205804, 0x00206C09, |
| 53 | 0x00209403, 0x0020A405, 0x0020C00F, 0x00216403, 0x00217801, |
| 54 | 0x00239020, 0x0024E803, 0x0024F812, 0x00254407, 0x00258804, |
| 55 | 0x0025C001, 0x00260403, 0x0026F001, 0x0026F807, 0x00271C02, |
| 56 | 0x00272C03, 0x00275C01, 0x00278802, 0x0027C802, 0x0027E802, |
| 57 | 0x00280403, 0x0028F001, 0x0028F805, 0x00291C02, 0x00292C03, |
| 58 | 0x00294401, 0x0029C002, 0x0029D401, 0x002A0403, 0x002AF001, |
| 59 | 0x002AF808, 0x002B1C03, 0x002B2C03, 0x002B8802, 0x002BC002, |
| 60 | 0x002C0403, 0x002CF001, 0x002CF807, 0x002D1C02, 0x002D2C03, |
| 61 | 0x002D5802, 0x002D8802, 0x002DC001, 0x002E0801, 0x002EF805, |
| 62 | 0x002F1803, 0x002F2804, 0x002F5C01, 0x002FCC08, 0x00300004, |
| 63 | 0x0030F807, 0x00311803, 0x00312804, 0x00315402, 0x00318802, |
| 64 | 0x0031FC01, 0x00320403, 0x0032F001, 0x0032F807, 0x00331803, |
| 65 | 0x00332804, 0x00335402, 0x00338802, 0x00340403, 0x0034F807, |
| 66 | 0x00351803, 0x00352804, 0x00355C01, 0x00358802, 0x0035E401, |
| 67 | 0x00360802, 0x00372801, 0x00373C06, 0x00375801, 0x00376008, |
| 68 | 0x0037C803, 0x0038C401, 0x0038D007, 0x0038FC01, 0x00391C09, |
| 69 | 0x00396802, 0x003AC401, 0x003AD006, 0x003AEC02, 0x003B2006, |
| 70 | 0x003C041F, 0x003CD00C, 0x003DC417, 0x003E340B, 0x003E6424, |
| 71 | 0x003EF80F, 0x003F380D, 0x0040AC14, 0x00412806, 0x00415804, |
| 72 | 0x00417803, 0x00418803, 0x00419C07, 0x0041C404, 0x0042080C, |
| 73 | 0x00423C01, 0x00426806, 0x0043EC01, 0x004D740C, 0x004E400A, |
| 74 | 0x00500001, 0x0059B402, 0x005A0001, 0x005A6C02, 0x005BAC03, |
| 75 | 0x005C4803, 0x005CC805, 0x005D4802, 0x005DC802, 0x005ED023, |
| 76 | 0x005F6004, 0x005F7401, 0x0060000F, 0x0062A401, 0x0064800C, |
| 77 | 0x0064C00C, 0x00650001, 0x00651002, 0x0066C011, 0x00672002, |
| 78 | 0x00677822, 0x00685C05, 0x00687802, 0x0069540A, 0x0069801D, |
| 79 | 0x0069FC01, 0x006A8007, 0x006AA006, 0x006AC00F, 0x006C0005, |
| 80 | 0x006CD011, 0x006D6823, 0x006E0003, 0x006E840D, 0x006F980E, |
| 81 | 0x006FF004, 0x00709014, 0x0070EC05, 0x0071F802, 0x00730008, |
| 82 | 0x00734019, 0x0073B401, 0x0073C803, 0x0073E002, 0x00770036, |
| 83 | 0x0077F004, 0x007EF401, 0x007EFC03, 0x007F3403, 0x007F7403, |
| 84 | 0x007FB403, 0x007FF402, 0x00800065, 0x0081980A, 0x0081E805, |
| 85 | 0x00822805, 0x0082801E, 0x00834021, 0x00840002, 0x00840C04, |
| 86 | 0x00842002, 0x00845001, 0x00845803, 0x00847806, 0x00849401, |
| 87 | 0x00849C01, 0x0084A401, 0x0084B801, 0x0084E802, 0x00850005, |
| 88 | 0x00852804, 0x00853C01, 0x0086426B, 0x00900027, 0x0091000B, |
| 89 | 0x0092704E, 0x00940276, 0x009E53E0, 0x00ADD820, 0x00AE6022, |
| 90 | 0x00AEF40C, 0x00AF2808, 0x00B39406, 0x00B3BC03, 0x00B3E404, |
| 91 | 0x00B3F802, 0x00B5C001, 0x00B5FC01, 0x00B7804F, 0x00B8C013, |
| 92 | 0x00BA001A, 0x00BA6C59, 0x00BC00D6, 0x00BFC00C, 0x00C00005, |
| 93 | 0x00C02019, 0x00C0A807, 0x00C0D802, 0x00C0F403, 0x00C26404, |
| 94 | 0x00C28001, 0x00C3EC01, 0x00C64002, 0x00C6580A, 0x00C70024, |
| 95 | 0x00C8001F, 0x00C8A81E, 0x00C94001, 0x00C98020, 0x00CA2827, |
| 96 | 0x00CB003F, 0x00CC0100, 0x01370040, 0x02924037, 0x0293F802, |
| 97 | 0x02983403, 0x0299BC10, 0x029A7C01, 0x029BC008, 0x029C0017, |
| 98 | 0x029C8002, 0x029E2402, 0x02A00801, 0x02A01801, 0x02A02C01, |
| 99 | 0x02A08C09, 0x02A0D804, 0x02A1D004, 0x02A20002, 0x02A2D011, |
| 100 | 0x02A33802, 0x02A38012, 0x02A3E003, 0x02A4980A, 0x02A51C0D, |
| 101 | 0x02A57C01, 0x02A60004, 0x02A6CC1B, 0x02A77802, 0x02A79401, |
| 102 | 0x02A8A40E, 0x02A90C01, 0x02A93002, 0x02A97004, 0x02A9DC03, |
| 103 | 0x02A9EC03, 0x02AAC001, 0x02AAC803, 0x02AADC02, 0x02AAF802, |
| 104 | 0x02AB0401, 0x02AB7802, 0x02ABAC07, 0x02ABD402, 0x02AD6C01, |
| 105 | 0x02AF8C0B, 0x03600001, 0x036DFC02, 0x036FFC02, 0x037FFC01, |
| 106 | 0x03EC7801, 0x03ECA401, 0x03EEC810, 0x03F4F802, 0x03F7F002, |
| 107 | 0x03F8001A, 0x03F8800E, 0x03F8C023, 0x03F95013, 0x03F9A004, |
| 108 | 0x03FBFC01, 0x03FC040F, 0x03FC6807, 0x03FCEC06, 0x03FD6C0B, |
| 109 | 0x03FF8007, 0x03FFA007, 0x03FFE405, 0x04040003, 0x0404DC09, |
| 110 | 0x0405E411, 0x04063001, 0x0406400C, 0x04068001, 0x0407402E, |
| 111 | 0x040B8001, 0x040DD805, 0x040E7C01, 0x040F4001, 0x0415BC01, |
| 112 | 0x04215C01, 0x0421DC02, 0x04247C01, 0x0424FC01, 0x04280403, |
| 113 | 0x04281402, 0x04283004, 0x0428E003, 0x0428FC01, 0x04294009, |
| 114 | 0x0429FC01, 0x042B2001, 0x042B9402, 0x042BC007, 0x042CE407, |
| 115 | 0x042E6404, 0x04400003, 0x0440E016, 0x0441FC04, 0x0442C012, |
| 116 | 0x04440003, 0x04449C0E, 0x04450004, 0x0445CC03, 0x04460003, |
| 117 | 0x0446CC0E, 0x04471404, 0x04473401, 0x0448B012, 0x044B7C0C, |
| 118 | 0x044C0403, 0x044CF001, 0x044CF807, 0x044D1C02, 0x044D2C03, |
| 119 | 0x044D5C01, 0x044D8802, 0x044D9807, 0x044DC005, 0x0452C014, |
| 120 | 0x04531801, 0x0456BC07, 0x0456E012, 0x0458C014, 0x045AAC0D, |
| 121 | 0x0491C005, 0x05A9B802, 0x05ABC006, 0x05ACC010, 0x05AD1002, |
| 122 | 0x05BD442E, 0x05BE3C04, 0x06F27008, 0x074000F6, 0x07440027, |
| 123 | 0x0744A4B5, 0x07480046, 0x074C0057, 0x075B0401, 0x075B6C01, |
| 124 | 0x075BEC01, 0x075C5401, 0x075CD401, 0x075D3C01, 0x075DBC01, |
| 125 | 0x075E2401, 0x075EA401, 0x075F0C01, 0x07A34007, 0x07BBC002, |
| 126 | 0x07C0002C, 0x07C0C064, 0x07C2800F, 0x07C2C40F, 0x07C3040F, |
| 127 | 0x07C34425, 0x07C4401F, 0x07C4C03C, 0x07C5C02B, 0x07C7981D, |
| 128 | 0x07C8402B, 0x07C90009, 0x07C94002, 0x07CC002D, 0x07CCC04E, |
| 129 | 0x07CE004F, 0x07CF5024, 0x07D000FF, 0x07D4004B, 0x07D5402A, |
| 130 | 0x07D5EC29, 0x07D6949E, 0x07D9148B, 0x07DB800D, 0x07DBC004, |
| 131 | 0x07DC0074, 0x07DE0055, 0x07E0000C, 0x07E04038, 0x07E1400A, |
| 132 | 0x07E18028, 0x07E2401E, 0x38000401, 0x38008060, 0x380400F0, |
| 133 | }; |
| 134 | static const unsigned int aAscii[4] = { |
| 135 | 0xFFFFFFFF, 0xFC00FFFF, 0xF8000001, 0xF8000001, |
| 136 | }; |
| 137 | |
| @@ -160,35 +166,35 @@ | |
| 166 | ** SMALL LETTER E WITH DIAERESIS" - return 65 ("LATIN SMALL LETTER |
| 167 | ** E"). The resuls of passing a codepoint that corresponds to an |
| 168 | ** uppercase letter are undefined. |
| 169 | */ |
| 170 | static int unicode_remove_diacritic(int c){ |
| 171 | static const unsigned short aDia[] = { |
| 172 | 0, 1797, 1848, 1859, 1891, 1928, 1940, 1995, |
| 173 | 2024, 2040, 2060, 2110, 2168, 2206, 2264, 2286, |
| 174 | 2344, 2383, 2472, 2488, 2516, 2596, 2668, 2732, |
| 175 | 2782, 2842, 2894, 2954, 2984, 3000, 3028, 3336, |
| 176 | 3456, 3696, 3712, 3728, 3744, 3896, 3912, 3928, |
| 177 | 3968, 4008, 4040, 4106, 4138, 4170, 4202, 4234, |
| 178 | 4266, 4296, 4312, 4344, 4408, 4424, 4472, 4504, |
| 179 | 6148, 6198, 6264, 6280, 6360, 6429, 6505, 6529, |
| 180 | 61448, 61468, 61534, 61592, 61642, 61688, 61704, 61726, |
| 181 | 61784, 61800, 61836, 61880, 61914, 61948, 61998, 62122, |
| 182 | 62154, 62200, 62218, 62302, 62364, 62442, 62478, 62536, |
| 183 | 62554, 62584, 62604, 62640, 62648, 62656, 62664, 62730, |
| 184 | 62924, 63050, 63082, 63274, 63390, |
| 185 | }; |
| 186 | static const char aChar[] = { |
| 187 | '\0', 'a', 'c', 'e', 'i', 'n', 'o', 'u', 'y', 'y', 'a', 'c', |
| 188 | 'd', 'e', 'e', 'g', 'h', 'i', 'j', 'k', 'l', 'n', 'o', 'r', |
| 189 | 's', 't', 'u', 'u', 'w', 'y', 'z', 'o', 'u', 'a', 'i', 'o', |
| 190 | 'u', 'g', 'k', 'o', 'j', 'g', 'n', 'a', 'e', 'i', 'o', 'r', |
| 191 | 'u', 's', 't', 'h', 'a', 'e', 'o', 'y', '\0', '\0', '\0', '\0', |
| 192 | '\0', '\0', '\0', '\0', 'a', 'b', 'd', 'd', 'e', 'f', 'g', 'h', |
| 193 | 'h', 'i', 'k', 'l', 'l', 'm', 'n', 'p', 'r', 'r', 's', 't', |
| 194 | 'u', 'v', 'w', 'w', 'x', 'y', 'z', 'h', 't', 'w', 'y', 'a', |
| 195 | 'e', 'i', 'o', 'u', 'y', |
| 196 | }; |
| 197 | |
| 198 | unsigned int key = (((unsigned int)c)<<3) | 0x00000007; |
| 199 | int iRes = 0; |
| 200 | int iHi = sizeof(aDia)/sizeof(aDia[0]) - 1; |
| @@ -253,12 +259,12 @@ | |
| 259 | unsigned char flags; |
| 260 | unsigned char nRange; |
| 261 | } aEntry[] = { |
| 262 | {65, 14, 26}, {181, 64, 1}, {192, 14, 23}, |
| 263 | {216, 14, 7}, {256, 1, 48}, {306, 1, 6}, |
| 264 | {313, 1, 16}, {330, 1, 46}, {376, 126, 1}, |
| 265 | {377, 1, 6}, {383, 114, 1}, {385, 50, 1}, |
| 266 | {386, 1, 4}, {390, 44, 1}, {391, 0, 1}, |
| 267 | {393, 42, 2}, {395, 0, 1}, {398, 32, 1}, |
| 268 | {399, 38, 1}, {400, 40, 1}, {401, 0, 1}, |
| 269 | {403, 42, 1}, {404, 46, 1}, {406, 52, 1}, |
| 270 | {407, 48, 1}, {408, 0, 1}, {412, 52, 1}, |
| @@ -267,61 +273,64 @@ | |
| 273 | {428, 0, 1}, {430, 60, 1}, {431, 0, 1}, |
| 274 | {433, 58, 2}, {435, 1, 4}, {439, 62, 1}, |
| 275 | {440, 0, 1}, {444, 0, 1}, {452, 2, 1}, |
| 276 | {453, 0, 1}, {455, 2, 1}, {456, 0, 1}, |
| 277 | {458, 2, 1}, {459, 1, 18}, {478, 1, 18}, |
| 278 | {497, 2, 1}, {498, 1, 4}, {502, 132, 1}, |
| 279 | {503, 144, 1}, {504, 1, 40}, {544, 120, 1}, |
| 280 | {546, 1, 18}, {570, 70, 1}, {571, 0, 1}, |
| 281 | {573, 118, 1}, {574, 68, 1}, {577, 0, 1}, |
| 282 | {579, 116, 1}, {580, 28, 1}, {581, 30, 1}, |
| 283 | {582, 1, 10}, {837, 36, 1}, {880, 1, 4}, |
| 284 | {886, 0, 1}, {895, 36, 1}, {902, 18, 1}, |
| 285 | {904, 16, 3}, {908, 26, 1}, {910, 24, 2}, |
| 286 | {913, 14, 17}, {931, 14, 9}, {962, 0, 1}, |
| 287 | {975, 4, 1}, {976, 150, 1}, {977, 152, 1}, |
| 288 | {981, 156, 1}, {982, 154, 1}, {984, 1, 24}, |
| 289 | {1008, 146, 1}, {1009, 148, 1}, {1012, 140, 1}, |
| 290 | {1013, 138, 1}, {1015, 0, 1}, {1017, 162, 1}, |
| 291 | {1018, 0, 1}, {1021, 120, 3}, {1024, 34, 16}, |
| 292 | {1040, 14, 32}, {1120, 1, 34}, {1162, 1, 54}, |
| 293 | {1216, 6, 1}, {1217, 1, 14}, {1232, 1, 96}, |
| 294 | {1329, 22, 38}, {4256, 66, 38}, {4295, 66, 1}, |
| 295 | {4301, 66, 1}, {7680, 1, 150}, {7835, 142, 1}, |
| 296 | {7838, 106, 1}, {7840, 1, 96}, {7944, 160, 8}, |
| 297 | {7960, 160, 6}, {7976, 160, 8}, {7992, 160, 8}, |
| 298 | {8008, 160, 6}, {8025, 161, 8}, {8040, 160, 8}, |
| 299 | {8072, 160, 8}, {8088, 160, 8}, {8104, 160, 8}, |
| 300 | {8120, 160, 2}, {8122, 136, 2}, {8124, 158, 1}, |
| 301 | {8126, 110, 1}, {8136, 134, 4}, {8140, 158, 1}, |
| 302 | {8152, 160, 2}, {8154, 130, 2}, {8168, 160, 2}, |
| 303 | {8170, 128, 2}, {8172, 162, 1}, {8184, 122, 2}, |
| 304 | {8186, 124, 2}, {8188, 158, 1}, {8486, 108, 1}, |
| 305 | {8490, 102, 1}, {8491, 104, 1}, {8498, 12, 1}, |
| 306 | {8544, 8, 16}, {8579, 0, 1}, {9398, 10, 26}, |
| 307 | {11264, 22, 47}, {11360, 0, 1}, {11362, 98, 1}, |
| 308 | {11363, 112, 1}, {11364, 100, 1}, {11367, 1, 6}, |
| 309 | {11373, 94, 1}, {11374, 96, 1}, {11375, 90, 1}, |
| 310 | {11376, 92, 1}, {11378, 0, 1}, {11381, 0, 1}, |
| 311 | {11390, 88, 2}, {11392, 1, 100}, {11499, 1, 4}, |
| 312 | {11506, 0, 1}, {42560, 1, 46}, {42624, 1, 28}, |
| 313 | {42786, 1, 14}, {42802, 1, 62}, {42873, 1, 4}, |
| 314 | {42877, 86, 1}, {42878, 1, 10}, {42891, 0, 1}, |
| 315 | {42893, 82, 1}, {42896, 1, 4}, {42902, 1, 20}, |
| 316 | {42922, 76, 1}, {42923, 72, 1}, {42924, 74, 1}, |
| 317 | {42925, 78, 1}, {42928, 84, 1}, {42929, 80, 1}, |
| 318 | {65313, 14, 26}, |
| 319 | }; |
| 320 | static const unsigned short aiOff[] = { |
| 321 | 1, 2, 8, 15, 16, 26, 28, 32, |
| 322 | 37, 38, 40, 48, 63, 64, 69, 71, |
| 323 | 79, 80, 116, 202, 203, 205, 206, 207, |
| 324 | 209, 210, 211, 213, 214, 217, 218, 219, |
| 325 | 775, 7264, 10792, 10795, 23217, 23221, 23228, 23231, |
| 326 | 23254, 23256, 23278, 30204, 54721, 54753, 54754, 54756, |
| 327 | 54787, 54793, 54809, 57153, 57274, 57921, 58019, 58363, |
| 328 | 61722, 65268, 65341, 65373, 65406, 65408, 65410, 65415, |
| 329 | 65424, 65436, 65439, 65450, 65462, 65472, 65476, 65478, |
| 330 | 65480, 65482, 65488, 65506, 65511, 65514, 65521, 65527, |
| 331 | 65528, 65529, |
| 332 | }; |
| 333 | |
| 334 | int ret = c; |
| 335 | |
| 336 | assert( c>=0 ); |
| @@ -354,12 +363,15 @@ | |
| 363 | } |
| 364 | } |
| 365 | |
| 366 | if( bRemoveDiacritic ) ret = unicode_remove_diacritic(ret); |
| 367 | } |
| 368 | |
| 369 | else if( c>=66560 && c<66600 ){ |
| 370 | ret = c + 40; |
| 371 | } |
| 372 | else if( c>=71840 && c<71872 ){ |
| 373 | ret = c + 32; |
| 374 | } |
| 375 | |
| 376 | return ret; |
| 377 | } |
| 378 |
+36
-3
| --- test/merge_renames.test | ||
| +++ test/merge_renames.test | ||
| @@ -1,8 +1,8 @@ | ||
| 1 | 1 | # |
| 2 | 2 | # Tests for merging with renames |
| 3 | -# | |
| 3 | +# | |
| 4 | 4 | # |
| 5 | 5 | |
| 6 | 6 | catch {exec $::fossilexe info} res |
| 7 | 7 | puts res=$res |
| 8 | 8 | if {![regexp {use --repository} $res]} { |
| @@ -169,11 +169,44 @@ | ||
| 169 | 169 | # Reported: Ticket [67176c3aa4] # |
| 170 | 170 | ###################################### |
| 171 | 171 | |
| 172 | 172 | # TO BE WRITTEN. |
| 173 | 173 | |
| 174 | +###################################### | |
| 175 | +# Test 5 # | |
| 176 | +# Handle Rename/Add via Merge # | |
| 177 | +###################################### | |
| 178 | + | |
| 179 | +repo_init | |
| 180 | + | |
| 181 | +write_file f1 "old f1 line" | |
| 182 | +fossil add f1 | |
| 183 | +fossil commit -m "base file" | |
| 184 | + | |
| 185 | +write_file f3 "f3 line" | |
| 186 | +fossil add f3 | |
| 187 | +fossil commit -m "branch file" -b branch_for_f3 | |
| 188 | + | |
| 189 | +fossil update trunk | |
| 190 | +fossil mv f1 f2 | |
| 191 | +file rename -force f1 f2 | |
| 192 | +write_file f1 "new f1 line" | |
| 193 | +fossil add f1 | |
| 194 | +fossil commit -m "rename and add file with old name" | |
| 195 | + | |
| 196 | +fossil update branch_for_f3 | |
| 197 | +fossil merge trunk | |
| 198 | +fossil commit -m "trunk merged, should have 3 files" | |
| 199 | + | |
| 200 | +fossil ls | |
| 201 | + | |
| 202 | +test merge_renames-5 {[string map [list \r\n \n] [string trim $RESULT]] eq {f1 | |
| 203 | +f2 | |
| 204 | +f3}} | |
| 174 | 205 | |
| 206 | +###################################### | |
| 207 | +# | |
| 175 | 208 | # Tests for troubles not specifically linked with renames but that I'd like to |
| 176 | 209 | # write: |
| 177 | 210 | # [c26c63eb1b] - 'merge --backout' does not handle conflicts properly |
| 178 | -# [953031915f] - Lack of warning when overwriting extra files | |
| 179 | -# [4df5f38f1e] - Troubles merging a file delete with a file change | |
| 211 | +# [953031915f] - Lack of warning when overwriting extra files | |
| 212 | +# [4df5f38f1e] - Troubles merging a file delete with a file change | |
| 180 | 213 |
| --- test/merge_renames.test | |
| +++ test/merge_renames.test | |
| @@ -1,8 +1,8 @@ | |
| 1 | # |
| 2 | # Tests for merging with renames |
| 3 | # |
| 4 | # |
| 5 | |
| 6 | catch {exec $::fossilexe info} res |
| 7 | puts res=$res |
| 8 | if {![regexp {use --repository} $res]} { |
| @@ -169,11 +169,44 @@ | |
| 169 | # Reported: Ticket [67176c3aa4] # |
| 170 | ###################################### |
| 171 | |
| 172 | # TO BE WRITTEN. |
| 173 | |
| 174 | |
| 175 | # Tests for troubles not specifically linked with renames but that I'd like to |
| 176 | # write: |
| 177 | # [c26c63eb1b] - 'merge --backout' does not handle conflicts properly |
| 178 | # [953031915f] - Lack of warning when overwriting extra files |
| 179 | # [4df5f38f1e] - Troubles merging a file delete with a file change |
| 180 |
| --- test/merge_renames.test | |
| +++ test/merge_renames.test | |
| @@ -1,8 +1,8 @@ | |
| 1 | # |
| 2 | # Tests for merging with renames |
| 3 | # |
| 4 | # |
| 5 | |
| 6 | catch {exec $::fossilexe info} res |
| 7 | puts res=$res |
| 8 | if {![regexp {use --repository} $res]} { |
| @@ -169,11 +169,44 @@ | |
| 169 | # Reported: Ticket [67176c3aa4] # |
| 170 | ###################################### |
| 171 | |
| 172 | # TO BE WRITTEN. |
| 173 | |
| 174 | ###################################### |
| 175 | # Test 5 # |
| 176 | # Handle Rename/Add via Merge # |
| 177 | ###################################### |
| 178 | |
| 179 | repo_init |
| 180 | |
| 181 | write_file f1 "old f1 line" |
| 182 | fossil add f1 |
| 183 | fossil commit -m "base file" |
| 184 | |
| 185 | write_file f3 "f3 line" |
| 186 | fossil add f3 |
| 187 | fossil commit -m "branch file" -b branch_for_f3 |
| 188 | |
| 189 | fossil update trunk |
| 190 | fossil mv f1 f2 |
| 191 | file rename -force f1 f2 |
| 192 | write_file f1 "new f1 line" |
| 193 | fossil add f1 |
| 194 | fossil commit -m "rename and add file with old name" |
| 195 | |
| 196 | fossil update branch_for_f3 |
| 197 | fossil merge trunk |
| 198 | fossil commit -m "trunk merged, should have 3 files" |
| 199 | |
| 200 | fossil ls |
| 201 | |
| 202 | test merge_renames-5 {[string map [list \r\n \n] [string trim $RESULT]] eq {f1 |
| 203 | f2 |
| 204 | f3}} |
| 205 | |
| 206 | ###################################### |
| 207 | # |
| 208 | # Tests for troubles not specifically linked with renames but that I'd like to |
| 209 | # write: |
| 210 | # [c26c63eb1b] - 'merge --backout' does not handle conflicts properly |
| 211 | # [953031915f] - Lack of warning when overwriting extra files |
| 212 | # [4df5f38f1e] - Troubles merging a file delete with a file change |
| 213 |
+1
-1
| --- win/Makefile.PellesCGMake | ||
| +++ win/Makefile.PellesCGMake | ||
| @@ -89,11 +89,11 @@ | ||
| 89 | 89 | |
| 90 | 90 | # define the sqlite shell files, which need special flags on compile |
| 91 | 91 | SQLITESHELLSRC=shell.c |
| 92 | 92 | ORIGSQLITESHELLSRC=$(foreach sf,$(SQLITESHELLSRC),$(SRCDIR)$(sf)) |
| 93 | 93 | SQLITESHELLOBJ=$(foreach sf,$(SQLITESHELLSRC),$(sf:.c=.obj)) |
| 94 | -SQLITESHELLDEFINES=-Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dgetenv=fossil_getenv -Dfopen=fossil_fopen | |
| 94 | +SQLITESHELLDEFINES=-Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen | |
| 95 | 95 | |
| 96 | 96 | # define the th scripting files, which need special flags on compile |
| 97 | 97 | THSRC=th.c th_lang.c |
| 98 | 98 | ORIGTHSRC=$(foreach sf,$(THSRC),$(SRCDIR)$(sf)) |
| 99 | 99 | THOBJ=$(foreach sf,$(THSRC),$(sf:.c=.obj)) |
| 100 | 100 |
| --- win/Makefile.PellesCGMake | |
| +++ win/Makefile.PellesCGMake | |
| @@ -89,11 +89,11 @@ | |
| 89 | |
| 90 | # define the sqlite shell files, which need special flags on compile |
| 91 | SQLITESHELLSRC=shell.c |
| 92 | ORIGSQLITESHELLSRC=$(foreach sf,$(SQLITESHELLSRC),$(SRCDIR)$(sf)) |
| 93 | SQLITESHELLOBJ=$(foreach sf,$(SQLITESHELLSRC),$(sf:.c=.obj)) |
| 94 | SQLITESHELLDEFINES=-Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dgetenv=fossil_getenv -Dfopen=fossil_fopen |
| 95 | |
| 96 | # define the th scripting files, which need special flags on compile |
| 97 | THSRC=th.c th_lang.c |
| 98 | ORIGTHSRC=$(foreach sf,$(THSRC),$(SRCDIR)$(sf)) |
| 99 | THOBJ=$(foreach sf,$(THSRC),$(sf:.c=.obj)) |
| 100 |
| --- win/Makefile.PellesCGMake | |
| +++ win/Makefile.PellesCGMake | |
| @@ -89,11 +89,11 @@ | |
| 89 | |
| 90 | # define the sqlite shell files, which need special flags on compile |
| 91 | SQLITESHELLSRC=shell.c |
| 92 | ORIGSQLITESHELLSRC=$(foreach sf,$(SQLITESHELLSRC),$(SRCDIR)$(sf)) |
| 93 | SQLITESHELLOBJ=$(foreach sf,$(SQLITESHELLSRC),$(sf:.c=.obj)) |
| 94 | SQLITESHELLDEFINES=-Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen |
| 95 | |
| 96 | # define the th scripting files, which need special flags on compile |
| 97 | THSRC=th.c th_lang.c |
| 98 | ORIGTHSRC=$(foreach sf,$(THSRC),$(SRCDIR)$(sf)) |
| 99 | THOBJ=$(foreach sf,$(THSRC),$(sf:.c=.obj)) |
| 100 |
+1
-1
| --- win/Makefile.dmc | ||
| +++ win/Makefile.dmc | ||
| @@ -26,11 +26,11 @@ | ||
| 26 | 26 | TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL) |
| 27 | 27 | LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32 |
| 28 | 28 | |
| 29 | 29 | SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS |
| 30 | 30 | |
| 31 | -SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dgetenv=fossil_getenv -Dfopen=fossil_fopen | |
| 31 | +SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen | |
| 32 | 32 | |
| 33 | 33 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c cache_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c fusefs_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c |
| 34 | 34 | |
| 35 | 35 | OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\cache$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O |
| 36 | 36 | |
| 37 | 37 |
| --- win/Makefile.dmc | |
| +++ win/Makefile.dmc | |
| @@ -26,11 +26,11 @@ | |
| 26 | TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL) |
| 27 | LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32 |
| 28 | |
| 29 | SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS |
| 30 | |
| 31 | SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dgetenv=fossil_getenv -Dfopen=fossil_fopen |
| 32 | |
| 33 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c cache_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c fusefs_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c |
| 34 | |
| 35 | OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\cache$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O |
| 36 | |
| 37 |
| --- win/Makefile.dmc | |
| +++ win/Makefile.dmc | |
| @@ -26,11 +26,11 @@ | |
| 26 | TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL) |
| 27 | LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32 |
| 28 | |
| 29 | SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_OMIT_DEPRECATED -DSQLITE_ENABLE_EXPLAIN_COMMENTS |
| 30 | |
| 31 | SHELL_OPTIONS = -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=fossil_open -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen |
| 32 | |
| 33 | SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c cache_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c fusefs_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c md5_.c merge_.c merge3_.c moderate_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c regexp_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c |
| 34 | |
| 35 | OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\cache$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\fusefs$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_status$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\loadctrl$O $(OBJDIR)\login$O $(OBJDIR)\lookslike$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\markdown$O $(OBJDIR)\markdown_html$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\moderate$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\regexp$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\unicode$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\utf8$O $(OBJDIR)\util$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winfile$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O |
| 36 | |
| 37 |
+1
| --- win/Makefile.mingw | ||
| +++ win/Makefile.mingw | ||
| @@ -1780,10 +1780,11 @@ | ||
| 1780 | 1780 | SHELL_OPTIONS = -Dmain=sqlite3_shell \ |
| 1781 | 1781 | -DSQLITE_OMIT_LOAD_EXTENSION=1 \ |
| 1782 | 1782 | -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) \ |
| 1783 | 1783 | -DSQLITE_SHELL_DBNAME_PROC=fossil_open \ |
| 1784 | 1784 | -Daccess=file_access \ |
| 1785 | + -Dsystem=fossil_system \ | |
| 1785 | 1786 | -Dgetenv=fossil_getenv \ |
| 1786 | 1787 | -Dfopen=fossil_fopen |
| 1787 | 1788 | |
| 1788 | 1789 | $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c $(SRCDIR)/../win/Makefile.mingw |
| 1789 | 1790 | $(XTCC) $(SQLITE_OPTIONS) $(SQLITE_CFLAGS) -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 1790 | 1791 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -1780,10 +1780,11 @@ | |
| 1780 | SHELL_OPTIONS = -Dmain=sqlite3_shell \ |
| 1781 | -DSQLITE_OMIT_LOAD_EXTENSION=1 \ |
| 1782 | -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) \ |
| 1783 | -DSQLITE_SHELL_DBNAME_PROC=fossil_open \ |
| 1784 | -Daccess=file_access \ |
| 1785 | -Dgetenv=fossil_getenv \ |
| 1786 | -Dfopen=fossil_fopen |
| 1787 | |
| 1788 | $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c $(SRCDIR)/../win/Makefile.mingw |
| 1789 | $(XTCC) $(SQLITE_OPTIONS) $(SQLITE_CFLAGS) -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 1790 |
| --- win/Makefile.mingw | |
| +++ win/Makefile.mingw | |
| @@ -1780,10 +1780,11 @@ | |
| 1780 | SHELL_OPTIONS = -Dmain=sqlite3_shell \ |
| 1781 | -DSQLITE_OMIT_LOAD_EXTENSION=1 \ |
| 1782 | -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) \ |
| 1783 | -DSQLITE_SHELL_DBNAME_PROC=fossil_open \ |
| 1784 | -Daccess=file_access \ |
| 1785 | -Dsystem=fossil_system \ |
| 1786 | -Dgetenv=fossil_getenv \ |
| 1787 | -Dfopen=fossil_fopen |
| 1788 | |
| 1789 | $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c $(SRCDIR)/../win/Makefile.mingw |
| 1790 | $(XTCC) $(SQLITE_OPTIONS) $(SQLITE_CFLAGS) -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 1791 |
| --- win/Makefile.mingw.mistachkin | ||
| +++ win/Makefile.mingw.mistachkin | ||
| @@ -1780,10 +1780,11 @@ | ||
| 1780 | 1780 | SHELL_OPTIONS = -Dmain=sqlite3_shell \ |
| 1781 | 1781 | -DSQLITE_OMIT_LOAD_EXTENSION=1 \ |
| 1782 | 1782 | -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) \ |
| 1783 | 1783 | -DSQLITE_SHELL_DBNAME_PROC=fossil_open \ |
| 1784 | 1784 | -Daccess=file_access \ |
| 1785 | + -Dsystem=fossil_system \ | |
| 1785 | 1786 | -Dgetenv=fossil_getenv \ |
| 1786 | 1787 | -Dfopen=fossil_fopen |
| 1787 | 1788 | |
| 1788 | 1789 | $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c $(SRCDIR)/../win/Makefile.mingw.mistachkin |
| 1789 | 1790 | $(XTCC) $(SQLITE_OPTIONS) $(SQLITE_CFLAGS) -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 1790 | 1791 |
| --- win/Makefile.mingw.mistachkin | |
| +++ win/Makefile.mingw.mistachkin | |
| @@ -1780,10 +1780,11 @@ | |
| 1780 | SHELL_OPTIONS = -Dmain=sqlite3_shell \ |
| 1781 | -DSQLITE_OMIT_LOAD_EXTENSION=1 \ |
| 1782 | -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) \ |
| 1783 | -DSQLITE_SHELL_DBNAME_PROC=fossil_open \ |
| 1784 | -Daccess=file_access \ |
| 1785 | -Dgetenv=fossil_getenv \ |
| 1786 | -Dfopen=fossil_fopen |
| 1787 | |
| 1788 | $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c $(SRCDIR)/../win/Makefile.mingw.mistachkin |
| 1789 | $(XTCC) $(SQLITE_OPTIONS) $(SQLITE_CFLAGS) -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 1790 |
| --- win/Makefile.mingw.mistachkin | |
| +++ win/Makefile.mingw.mistachkin | |
| @@ -1780,10 +1780,11 @@ | |
| 1780 | SHELL_OPTIONS = -Dmain=sqlite3_shell \ |
| 1781 | -DSQLITE_OMIT_LOAD_EXTENSION=1 \ |
| 1782 | -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) \ |
| 1783 | -DSQLITE_SHELL_DBNAME_PROC=fossil_open \ |
| 1784 | -Daccess=file_access \ |
| 1785 | -Dsystem=fossil_system \ |
| 1786 | -Dgetenv=fossil_getenv \ |
| 1787 | -Dfopen=fossil_fopen |
| 1788 | |
| 1789 | $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c $(SRCDIR)/../win/Makefile.mingw.mistachkin |
| 1790 | $(XTCC) $(SQLITE_OPTIONS) $(SQLITE_CFLAGS) -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 1791 |
+1
| --- win/Makefile.msc | ||
| +++ win/Makefile.msc | ||
| @@ -111,10 +111,11 @@ | ||
| 111 | 111 | SHELL_OPTIONS = /Dmain=sqlite3_shell \ |
| 112 | 112 | /DSQLITE_OMIT_LOAD_EXTENSION=1 \ |
| 113 | 113 | /DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) \ |
| 114 | 114 | /DSQLITE_SHELL_DBNAME_PROC=fossil_open \ |
| 115 | 115 | /Daccess=file_access \ |
| 116 | + /Dsystem=fossil_system \ | |
| 116 | 117 | /Dgetenv=fossil_getenv \ |
| 117 | 118 | /Dfopen=fossil_fopen |
| 118 | 119 | |
| 119 | 120 | SRC = add_.c \ |
| 120 | 121 | allrepo_.c \ |
| 121 | 122 |
| --- win/Makefile.msc | |
| +++ win/Makefile.msc | |
| @@ -111,10 +111,11 @@ | |
| 111 | SHELL_OPTIONS = /Dmain=sqlite3_shell \ |
| 112 | /DSQLITE_OMIT_LOAD_EXTENSION=1 \ |
| 113 | /DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) \ |
| 114 | /DSQLITE_SHELL_DBNAME_PROC=fossil_open \ |
| 115 | /Daccess=file_access \ |
| 116 | /Dgetenv=fossil_getenv \ |
| 117 | /Dfopen=fossil_fopen |
| 118 | |
| 119 | SRC = add_.c \ |
| 120 | allrepo_.c \ |
| 121 |
| --- win/Makefile.msc | |
| +++ win/Makefile.msc | |
| @@ -111,10 +111,11 @@ | |
| 111 | SHELL_OPTIONS = /Dmain=sqlite3_shell \ |
| 112 | /DSQLITE_OMIT_LOAD_EXTENSION=1 \ |
| 113 | /DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) \ |
| 114 | /DSQLITE_SHELL_DBNAME_PROC=fossil_open \ |
| 115 | /Daccess=file_access \ |
| 116 | /Dsystem=fossil_system \ |
| 117 | /Dgetenv=fossil_getenv \ |
| 118 | /Dfopen=fossil_fopen |
| 119 | |
| 120 | SRC = add_.c \ |
| 121 | allrepo_.c \ |
| 122 |
+29
-30
| --- www/branching.wiki | ||
| +++ www/branching.wiki | ||
| @@ -19,19 +19,19 @@ | ||
| 19 | 19 | |
| 20 | 20 | The arrows in figure 1 show the evolution of a project. The initial |
| 21 | 21 | check-in is 1. Check-in 2 is derived from 1. In other words, check-in 2 |
| 22 | 22 | was created by making edits to check-in 1 and then committing those edits. |
| 23 | 23 | We say that 2 is a <i>child</i> of 1 |
| 24 | -and that 1 is a <i>parent</i> of 2. | |
| 24 | +and that 1 is a <i>parent</i> of 2. | |
| 25 | 25 | Check-in 3 is derived from check-in 2, making |
| 26 | 26 | 3 a child of 2. We say that 3 is a <i>descendant</i> of both 1 and 2 and that 1 |
| 27 | -and 2 are both <i>ancestors</i> of 3. | |
| 27 | +and 2 are both <i>ancestors</i> of 3. | |
| 28 | 28 | |
| 29 | 29 | <a name="dag"></a> |
| 30 | 30 | <h2>DAGs</h2> |
| 31 | 31 | |
| 32 | -The graph of check-ins is a | |
| 32 | +The graph of check-ins is a | |
| 33 | 33 | [http://en.wikipedia.org/wiki/Directed_acyclic_graph | directed acyclic graph] |
| 34 | 34 | commonly shortened to <i>DAG</i>. Check-in 1 is the <i>root</i> of the DAG |
| 35 | 35 | since it has no ancestors. Check-in 4 is a <i>leaf</i> of the DAG since |
| 36 | 36 | it has no descendants. (We will give a more precise definition later of |
| 37 | 37 | "leaf.") |
| @@ -47,29 +47,29 @@ | ||
| 47 | 47 | </td></tr></table></center> |
| 48 | 48 | |
| 49 | 49 | The graph in figure 2 has two leaves: check-ins 3 and 4. Check-in 2 has |
| 50 | 50 | two children, check-ins 3 and 4. We call this state a <i>fork</i>. |
| 51 | 51 | |
| 52 | -Fossil tries to prevent forks. Suppose two programmers named Alice and | |
| 53 | -Bob are each editing check-in 2 separately. Alice finishes her edits | |
| 54 | -first and commits her changes, resulting in check-in 3. Later, when Bob | |
| 55 | -attempts to commit his changes, fossil verifies that check-in 2 is still | |
| 56 | -a leaf. Fossil sees that check-in 3 has occurred and aborts Bob's commit | |
| 57 | -attempt with a message "would fork." This allows Bob to do a "fossil | |
| 58 | -update" which pulls in Alice's changes, merging them into his own | |
| 59 | -changes. After merging, Bob commits check-in 4 as a child of check-in 3. | |
| 60 | -The result is a linear graph as shown in figure 1. This is how CVS | |
| 61 | -works. This is also how fossil works in [./concepts.wiki#workflow | | |
| 62 | -"autosync"] mode. | |
| 52 | +Fossil tries to prevent forks. Suppose two programmers named Alice and | |
| 53 | +Bob are each editing check-in 2 separately. Alice finishes her edits | |
| 54 | +first and commits her changes, resulting in check-in 3. Later, when Bob | |
| 55 | +attempts to commit his changes, fossil verifies that check-in 2 is still | |
| 56 | +a leaf. Fossil sees that check-in 3 has occurred and aborts Bob's commit | |
| 57 | +attempt with a message "would fork." This allows Bob to do a "fossil | |
| 58 | +update" which pulls in Alice's changes, merging them into his own | |
| 59 | +changes. After merging, Bob commits check-in 4 as a child of check-in 3. | |
| 60 | +The result is a linear graph as shown in figure 1. This is how CVS | |
| 61 | +works. This is also how fossil works in [./concepts.wiki#workflow | | |
| 62 | +"autosync"] mode. | |
| 63 | 63 | |
| 64 | 64 | But perhaps Bob is off-network when he does his commit, so he |
| 65 | 65 | has no way of knowing that Alice has already committed her changes. |
| 66 | 66 | Or, it could be that Bob has turned off "autosync" mode in Fossil. Or, |
| 67 | 67 | maybe Bob just doesn't want to merge in Alice's changes before he has |
| 68 | -saved his own, so he forces the commit to occur using the "--force" option | |
| 69 | -to the fossil <b>commit</b> command. For any of these reasons, two commits against | |
| 70 | -check-in 2 have occurred and now the DAG has two leaves. | |
| 68 | +saved his own, so he forces the commit to occur using the "--allow-fork" | |
| 69 | +option to the fossil <b>commit</b> command. For any of these reasons, | |
| 70 | +two commits against check-in 2 have occurred and now the DAG has two leaves. | |
| 71 | 71 | |
| 72 | 72 | So which version of the project is the "latest" in the sense of having |
| 73 | 73 | the most features and the most bug fixes? When there is more than |
| 74 | 74 | one leaf in the graph, you don't really know. So we like to have |
| 75 | 75 | graphs with a single leaf. |
| @@ -86,11 +86,11 @@ | ||
| 86 | 86 | </td></tr></table></center> |
| 87 | 87 | |
| 88 | 88 | Check-in 5 is a child of check-in 3 because it was created by editing |
| 89 | 89 | check-in 3. But check-in 5 also inherits the changes from check-in 4 by |
| 90 | 90 | virtue of the merge. So we say that check-in 5 is a <i>merge child</i> |
| 91 | -of check-in 4 and that it is a <i>direct child</i> of check-in 3. | |
| 91 | +of check-in 4 and that it is a <i>direct child</i> of check-in 3. | |
| 92 | 92 | The graph is now back to a single leaf (check-in 5). |
| 93 | 93 | |
| 94 | 94 | We have already seen that if fossil is in autosync mode then Bob would |
| 95 | 95 | have been warned about the potential fork the first time he tried to |
| 96 | 96 | commit check-in 4. If Bob had updated his local check-out to merge in |
| @@ -112,11 +112,11 @@ | ||
| 112 | 112 | instead of as a separate manual step. We will not take sides in that |
| 113 | 113 | debate. We will simply point out that fossil enables you to do it either way. |
| 114 | 114 | |
| 115 | 115 | <h2>Forking Versus Branching</h2> |
| 116 | 116 | |
| 117 | -Having more than one leaf in the check-in DAG is called a "fork." This | |
| 117 | +Having more than one leaf in the check-in DAG is called a "fork." This | |
| 118 | 118 | is usually undesirable and either avoided entirely, |
| 119 | 119 | as in figure 1, or else quickly resolved as shown in figure 3. |
| 120 | 120 | But sometimes, one does want to have multiple leaves. For example, a project |
| 121 | 121 | might have one leaf that is the latest version of the project under |
| 122 | 122 | development and another leaf that is the latest version that has been |
| @@ -131,19 +131,19 @@ | ||
| 131 | 131 | <img src="branch04.gif" width=426 height=123><br> |
| 132 | 132 | Figure 4 |
| 133 | 133 | </td></tr></table></center> |
| 134 | 134 | |
| 135 | 135 | The hypothetical scenario of figure 4 is this: The project starts and |
| 136 | -progresses to a point where (at check-in 2) | |
| 136 | +progresses to a point where (at check-in 2) | |
| 137 | 137 | it is ready to enter testing for its first release. |
| 138 | 138 | In a real project, of course, there might be hundreds or thousands of |
| 139 | 139 | check-ins before a project reaches this point, but for simplicity of |
| 140 | 140 | presentation we will say that the project is ready after check-in 2. |
| 141 | 141 | The project then splits into two branches that are used by separate |
| 142 | 142 | teams. The testing team, using the blue branch, finds and fixes a few |
| 143 | 143 | bugs. This is shown by check-ins 6 and 9. Meanwhile the development |
| 144 | -team, working on the top uncolored branch, | |
| 144 | +team, working on the top uncolored branch, | |
| 145 | 145 | is busy adding features for the second |
| 146 | 146 | release. Of course, the development team would like to take advantage of |
| 147 | 147 | the bug fixes implemented by the testing team. So periodically, the |
| 148 | 148 | changes in the test branch are merged into the dev branch. This is |
| 149 | 149 | shown by the dashed merge arrows between check-ins 6 and 7 and between |
| @@ -174,13 +174,13 @@ | ||
| 174 | 174 | |
| 175 | 175 | A <i>tag</i> is a name that is attached to a check-in. A |
| 176 | 176 | <i>property</i> is a name/value pair. Internally, fossil implements |
| 177 | 177 | tags as properties with a NULL value. So, tags and properties really |
| 178 | 178 | are much the same thing, and henceforth we will use the word "tag" |
| 179 | -to mean either a tag or a property. | |
| 179 | +to mean either a tag or a property. | |
| 180 | 180 | |
| 181 | -A tag can be a one-time tag, a propagating tag or a cancellation tag. | |
| 181 | +A tag can be a one-time tag, a propagating tag or a cancellation tag. | |
| 182 | 182 | A one-time tag only applies to the check-in to which it is attached. A |
| 183 | 183 | propagating tag applies to the check-in to which it is attached and also |
| 184 | 184 | to all direct descendants of that check-in. A <i>direct descendant</i> |
| 185 | 185 | is a descendant through direct children. Tags propagation does not |
| 186 | 186 | cross merges. Tag propagation also stops as soon |
| @@ -187,14 +187,13 @@ | ||
| 187 | 187 | as it encounters another check-in with the same tag. A cancellation tag |
| 188 | 188 | is attached to a single check-in in order to either override a one-time |
| 189 | 189 | tag that was previously placed on that same check-in, or to block |
| 190 | 190 | tag propagation from an ancestor. |
| 191 | 191 | |
| 192 | -Every repository is created with a single empty check-in that has two | |
| 193 | -propagating tags. In figure 5, that initial empty check-in is check-in 1. | |
| 194 | -The <b>branch</b> tag tells (by its value) | |
| 195 | -what branch the check-in is a member of. | |
| 192 | +The initial checkin of every repository has two propagating tags. In | |
| 193 | +figure 5, that initial check-in is check-in 1. The <b>branch</b> tag | |
| 194 | +tells (by its value) what branch the check-in is a member of. | |
| 196 | 195 | The default branch is called "trunk." All tags that begin with "<b>sym-</b>" |
| 197 | 196 | are symbolic name tags. When a symbolic name tag is attached to a |
| 198 | 197 | check-in, that allows you to refer to that check-in by its symbolic |
| 199 | 198 | name rather than by its 40-character SHA1 hash name. When a symbolic name |
| 200 | 199 | tag propagates (as does the <b>sym-trunk</b> tag) then referring to that |
| @@ -212,12 +211,12 @@ | ||
| 212 | 211 | |
| 213 | 212 | Check-in 4 also has a <b>sym-test</b> tag, which gives the symbolic name |
| 214 | 213 | "test" to check-ins 4, 6, and 9. Because tags do not propagate across |
| 215 | 214 | merges, check-ins 7, 8, and 10 do not inherit the <b>sym-test</b> tag and |
| 216 | 215 | are hence not known by the name "test." |
| 217 | -To prevent the <b>sym-trunk</b> tag from propagating from check-in 1 | |
| 218 | -into check-ins 4, 6, and 9, there is a cancellation tag for | |
| 216 | +To prevent the <b>sym-trunk</b> tag from propagating from check-in 1 | |
| 217 | +into check-ins 4, 6, and 9, there is a cancellation tag for | |
| 219 | 218 | <b>sym-trunk</b> on check-in 4. The net effect is that |
| 220 | 219 | check-ins on the trunk go by the symbolic name of "trunk" and check-ins |
| 221 | 220 | on the test branch go by the symbolic name "test." |
| 222 | 221 | |
| 223 | 222 | The <b>bgcolor=blue</b> tag on check-in 4 causes the background color |
| @@ -225,11 +224,11 @@ | ||
| 225 | 224 | |
| 226 | 225 | Figure 5 also shows two one-time tags on check-in 9. (The diagram does |
| 227 | 226 | not make a graphical distinction between one-time and propagating tags.) |
| 228 | 227 | The <b>sym-release-1.0</b> tag means that check-in 9 can be referred to |
| 229 | 228 | using the more meaningful name "release-1.0." The <b>closed</b> tag means |
| 230 | -that check-in 9 is a "closed leaf." A closed leaf is a leaf that should | |
| 229 | +that check-in 9 is a "closed leaf." A closed leaf is a leaf that should | |
| 231 | 230 | never have direct children. |
| 232 | 231 | |
| 233 | 232 | <h2>Review Of Terminology</h2> |
| 234 | 233 | |
| 235 | 234 | <blockquote><dl> |
| 236 | 235 |
| --- www/branching.wiki | |
| +++ www/branching.wiki | |
| @@ -19,19 +19,19 @@ | |
| 19 | |
| 20 | The arrows in figure 1 show the evolution of a project. The initial |
| 21 | check-in is 1. Check-in 2 is derived from 1. In other words, check-in 2 |
| 22 | was created by making edits to check-in 1 and then committing those edits. |
| 23 | We say that 2 is a <i>child</i> of 1 |
| 24 | and that 1 is a <i>parent</i> of 2. |
| 25 | Check-in 3 is derived from check-in 2, making |
| 26 | 3 a child of 2. We say that 3 is a <i>descendant</i> of both 1 and 2 and that 1 |
| 27 | and 2 are both <i>ancestors</i> of 3. |
| 28 | |
| 29 | <a name="dag"></a> |
| 30 | <h2>DAGs</h2> |
| 31 | |
| 32 | The graph of check-ins is a |
| 33 | [http://en.wikipedia.org/wiki/Directed_acyclic_graph | directed acyclic graph] |
| 34 | commonly shortened to <i>DAG</i>. Check-in 1 is the <i>root</i> of the DAG |
| 35 | since it has no ancestors. Check-in 4 is a <i>leaf</i> of the DAG since |
| 36 | it has no descendants. (We will give a more precise definition later of |
| 37 | "leaf.") |
| @@ -47,29 +47,29 @@ | |
| 47 | </td></tr></table></center> |
| 48 | |
| 49 | The graph in figure 2 has two leaves: check-ins 3 and 4. Check-in 2 has |
| 50 | two children, check-ins 3 and 4. We call this state a <i>fork</i>. |
| 51 | |
| 52 | Fossil tries to prevent forks. Suppose two programmers named Alice and |
| 53 | Bob are each editing check-in 2 separately. Alice finishes her edits |
| 54 | first and commits her changes, resulting in check-in 3. Later, when Bob |
| 55 | attempts to commit his changes, fossil verifies that check-in 2 is still |
| 56 | a leaf. Fossil sees that check-in 3 has occurred and aborts Bob's commit |
| 57 | attempt with a message "would fork." This allows Bob to do a "fossil |
| 58 | update" which pulls in Alice's changes, merging them into his own |
| 59 | changes. After merging, Bob commits check-in 4 as a child of check-in 3. |
| 60 | The result is a linear graph as shown in figure 1. This is how CVS |
| 61 | works. This is also how fossil works in [./concepts.wiki#workflow | |
| 62 | "autosync"] mode. |
| 63 | |
| 64 | But perhaps Bob is off-network when he does his commit, so he |
| 65 | has no way of knowing that Alice has already committed her changes. |
| 66 | Or, it could be that Bob has turned off "autosync" mode in Fossil. Or, |
| 67 | maybe Bob just doesn't want to merge in Alice's changes before he has |
| 68 | saved his own, so he forces the commit to occur using the "--force" option |
| 69 | to the fossil <b>commit</b> command. For any of these reasons, two commits against |
| 70 | check-in 2 have occurred and now the DAG has two leaves. |
| 71 | |
| 72 | So which version of the project is the "latest" in the sense of having |
| 73 | the most features and the most bug fixes? When there is more than |
| 74 | one leaf in the graph, you don't really know. So we like to have |
| 75 | graphs with a single leaf. |
| @@ -86,11 +86,11 @@ | |
| 86 | </td></tr></table></center> |
| 87 | |
| 88 | Check-in 5 is a child of check-in 3 because it was created by editing |
| 89 | check-in 3. But check-in 5 also inherits the changes from check-in 4 by |
| 90 | virtue of the merge. So we say that check-in 5 is a <i>merge child</i> |
| 91 | of check-in 4 and that it is a <i>direct child</i> of check-in 3. |
| 92 | The graph is now back to a single leaf (check-in 5). |
| 93 | |
| 94 | We have already seen that if fossil is in autosync mode then Bob would |
| 95 | have been warned about the potential fork the first time he tried to |
| 96 | commit check-in 4. If Bob had updated his local check-out to merge in |
| @@ -112,11 +112,11 @@ | |
| 112 | instead of as a separate manual step. We will not take sides in that |
| 113 | debate. We will simply point out that fossil enables you to do it either way. |
| 114 | |
| 115 | <h2>Forking Versus Branching</h2> |
| 116 | |
| 117 | Having more than one leaf in the check-in DAG is called a "fork." This |
| 118 | is usually undesirable and either avoided entirely, |
| 119 | as in figure 1, or else quickly resolved as shown in figure 3. |
| 120 | But sometimes, one does want to have multiple leaves. For example, a project |
| 121 | might have one leaf that is the latest version of the project under |
| 122 | development and another leaf that is the latest version that has been |
| @@ -131,19 +131,19 @@ | |
| 131 | <img src="branch04.gif" width=426 height=123><br> |
| 132 | Figure 4 |
| 133 | </td></tr></table></center> |
| 134 | |
| 135 | The hypothetical scenario of figure 4 is this: The project starts and |
| 136 | progresses to a point where (at check-in 2) |
| 137 | it is ready to enter testing for its first release. |
| 138 | In a real project, of course, there might be hundreds or thousands of |
| 139 | check-ins before a project reaches this point, but for simplicity of |
| 140 | presentation we will say that the project is ready after check-in 2. |
| 141 | The project then splits into two branches that are used by separate |
| 142 | teams. The testing team, using the blue branch, finds and fixes a few |
| 143 | bugs. This is shown by check-ins 6 and 9. Meanwhile the development |
| 144 | team, working on the top uncolored branch, |
| 145 | is busy adding features for the second |
| 146 | release. Of course, the development team would like to take advantage of |
| 147 | the bug fixes implemented by the testing team. So periodically, the |
| 148 | changes in the test branch are merged into the dev branch. This is |
| 149 | shown by the dashed merge arrows between check-ins 6 and 7 and between |
| @@ -174,13 +174,13 @@ | |
| 174 | |
| 175 | A <i>tag</i> is a name that is attached to a check-in. A |
| 176 | <i>property</i> is a name/value pair. Internally, fossil implements |
| 177 | tags as properties with a NULL value. So, tags and properties really |
| 178 | are much the same thing, and henceforth we will use the word "tag" |
| 179 | to mean either a tag or a property. |
| 180 | |
| 181 | A tag can be a one-time tag, a propagating tag or a cancellation tag. |
| 182 | A one-time tag only applies to the check-in to which it is attached. A |
| 183 | propagating tag applies to the check-in to which it is attached and also |
| 184 | to all direct descendants of that check-in. A <i>direct descendant</i> |
| 185 | is a descendant through direct children. Tags propagation does not |
| 186 | cross merges. Tag propagation also stops as soon |
| @@ -187,14 +187,13 @@ | |
| 187 | as it encounters another check-in with the same tag. A cancellation tag |
| 188 | is attached to a single check-in in order to either override a one-time |
| 189 | tag that was previously placed on that same check-in, or to block |
| 190 | tag propagation from an ancestor. |
| 191 | |
| 192 | Every repository is created with a single empty check-in that has two |
| 193 | propagating tags. In figure 5, that initial empty check-in is check-in 1. |
| 194 | The <b>branch</b> tag tells (by its value) |
| 195 | what branch the check-in is a member of. |
| 196 | The default branch is called "trunk." All tags that begin with "<b>sym-</b>" |
| 197 | are symbolic name tags. When a symbolic name tag is attached to a |
| 198 | check-in, that allows you to refer to that check-in by its symbolic |
| 199 | name rather than by its 40-character SHA1 hash name. When a symbolic name |
| 200 | tag propagates (as does the <b>sym-trunk</b> tag) then referring to that |
| @@ -212,12 +211,12 @@ | |
| 212 | |
| 213 | Check-in 4 also has a <b>sym-test</b> tag, which gives the symbolic name |
| 214 | "test" to check-ins 4, 6, and 9. Because tags do not propagate across |
| 215 | merges, check-ins 7, 8, and 10 do not inherit the <b>sym-test</b> tag and |
| 216 | are hence not known by the name "test." |
| 217 | To prevent the <b>sym-trunk</b> tag from propagating from check-in 1 |
| 218 | into check-ins 4, 6, and 9, there is a cancellation tag for |
| 219 | <b>sym-trunk</b> on check-in 4. The net effect is that |
| 220 | check-ins on the trunk go by the symbolic name of "trunk" and check-ins |
| 221 | on the test branch go by the symbolic name "test." |
| 222 | |
| 223 | The <b>bgcolor=blue</b> tag on check-in 4 causes the background color |
| @@ -225,11 +224,11 @@ | |
| 225 | |
| 226 | Figure 5 also shows two one-time tags on check-in 9. (The diagram does |
| 227 | not make a graphical distinction between one-time and propagating tags.) |
| 228 | The <b>sym-release-1.0</b> tag means that check-in 9 can be referred to |
| 229 | using the more meaningful name "release-1.0." The <b>closed</b> tag means |
| 230 | that check-in 9 is a "closed leaf." A closed leaf is a leaf that should |
| 231 | never have direct children. |
| 232 | |
| 233 | <h2>Review Of Terminology</h2> |
| 234 | |
| 235 | <blockquote><dl> |
| 236 |
| --- www/branching.wiki | |
| +++ www/branching.wiki | |
| @@ -19,19 +19,19 @@ | |
| 19 | |
| 20 | The arrows in figure 1 show the evolution of a project. The initial |
| 21 | check-in is 1. Check-in 2 is derived from 1. In other words, check-in 2 |
| 22 | was created by making edits to check-in 1 and then committing those edits. |
| 23 | We say that 2 is a <i>child</i> of 1 |
| 24 | and that 1 is a <i>parent</i> of 2. |
| 25 | Check-in 3 is derived from check-in 2, making |
| 26 | 3 a child of 2. We say that 3 is a <i>descendant</i> of both 1 and 2 and that 1 |
| 27 | and 2 are both <i>ancestors</i> of 3. |
| 28 | |
| 29 | <a name="dag"></a> |
| 30 | <h2>DAGs</h2> |
| 31 | |
| 32 | The graph of check-ins is a |
| 33 | [http://en.wikipedia.org/wiki/Directed_acyclic_graph | directed acyclic graph] |
| 34 | commonly shortened to <i>DAG</i>. Check-in 1 is the <i>root</i> of the DAG |
| 35 | since it has no ancestors. Check-in 4 is a <i>leaf</i> of the DAG since |
| 36 | it has no descendants. (We will give a more precise definition later of |
| 37 | "leaf.") |
| @@ -47,29 +47,29 @@ | |
| 47 | </td></tr></table></center> |
| 48 | |
| 49 | The graph in figure 2 has two leaves: check-ins 3 and 4. Check-in 2 has |
| 50 | two children, check-ins 3 and 4. We call this state a <i>fork</i>. |
| 51 | |
| 52 | Fossil tries to prevent forks. Suppose two programmers named Alice and |
| 53 | Bob are each editing check-in 2 separately. Alice finishes her edits |
| 54 | first and commits her changes, resulting in check-in 3. Later, when Bob |
| 55 | attempts to commit his changes, fossil verifies that check-in 2 is still |
| 56 | a leaf. Fossil sees that check-in 3 has occurred and aborts Bob's commit |
| 57 | attempt with a message "would fork." This allows Bob to do a "fossil |
| 58 | update" which pulls in Alice's changes, merging them into his own |
| 59 | changes. After merging, Bob commits check-in 4 as a child of check-in 3. |
| 60 | The result is a linear graph as shown in figure 1. This is how CVS |
| 61 | works. This is also how fossil works in [./concepts.wiki#workflow | |
| 62 | "autosync"] mode. |
| 63 | |
| 64 | But perhaps Bob is off-network when he does his commit, so he |
| 65 | has no way of knowing that Alice has already committed her changes. |
| 66 | Or, it could be that Bob has turned off "autosync" mode in Fossil. Or, |
| 67 | maybe Bob just doesn't want to merge in Alice's changes before he has |
| 68 | saved his own, so he forces the commit to occur using the "--allow-fork" |
| 69 | option to the fossil <b>commit</b> command. For any of these reasons, |
| 70 | two commits against check-in 2 have occurred and now the DAG has two leaves. |
| 71 | |
| 72 | So which version of the project is the "latest" in the sense of having |
| 73 | the most features and the most bug fixes? When there is more than |
| 74 | one leaf in the graph, you don't really know. So we like to have |
| 75 | graphs with a single leaf. |
| @@ -86,11 +86,11 @@ | |
| 86 | </td></tr></table></center> |
| 87 | |
| 88 | Check-in 5 is a child of check-in 3 because it was created by editing |
| 89 | check-in 3. But check-in 5 also inherits the changes from check-in 4 by |
| 90 | virtue of the merge. So we say that check-in 5 is a <i>merge child</i> |
| 91 | of check-in 4 and that it is a <i>direct child</i> of check-in 3. |
| 92 | The graph is now back to a single leaf (check-in 5). |
| 93 | |
| 94 | We have already seen that if fossil is in autosync mode then Bob would |
| 95 | have been warned about the potential fork the first time he tried to |
| 96 | commit check-in 4. If Bob had updated his local check-out to merge in |
| @@ -112,11 +112,11 @@ | |
| 112 | instead of as a separate manual step. We will not take sides in that |
| 113 | debate. We will simply point out that fossil enables you to do it either way. |
| 114 | |
| 115 | <h2>Forking Versus Branching</h2> |
| 116 | |
| 117 | Having more than one leaf in the check-in DAG is called a "fork." This |
| 118 | is usually undesirable and either avoided entirely, |
| 119 | as in figure 1, or else quickly resolved as shown in figure 3. |
| 120 | But sometimes, one does want to have multiple leaves. For example, a project |
| 121 | might have one leaf that is the latest version of the project under |
| 122 | development and another leaf that is the latest version that has been |
| @@ -131,19 +131,19 @@ | |
| 131 | <img src="branch04.gif" width=426 height=123><br> |
| 132 | Figure 4 |
| 133 | </td></tr></table></center> |
| 134 | |
| 135 | The hypothetical scenario of figure 4 is this: The project starts and |
| 136 | progresses to a point where (at check-in 2) |
| 137 | it is ready to enter testing for its first release. |
| 138 | In a real project, of course, there might be hundreds or thousands of |
| 139 | check-ins before a project reaches this point, but for simplicity of |
| 140 | presentation we will say that the project is ready after check-in 2. |
| 141 | The project then splits into two branches that are used by separate |
| 142 | teams. The testing team, using the blue branch, finds and fixes a few |
| 143 | bugs. This is shown by check-ins 6 and 9. Meanwhile the development |
| 144 | team, working on the top uncolored branch, |
| 145 | is busy adding features for the second |
| 146 | release. Of course, the development team would like to take advantage of |
| 147 | the bug fixes implemented by the testing team. So periodically, the |
| 148 | changes in the test branch are merged into the dev branch. This is |
| 149 | shown by the dashed merge arrows between check-ins 6 and 7 and between |
| @@ -174,13 +174,13 @@ | |
| 174 | |
| 175 | A <i>tag</i> is a name that is attached to a check-in. A |
| 176 | <i>property</i> is a name/value pair. Internally, fossil implements |
| 177 | tags as properties with a NULL value. So, tags and properties really |
| 178 | are much the same thing, and henceforth we will use the word "tag" |
| 179 | to mean either a tag or a property. |
| 180 | |
| 181 | A tag can be a one-time tag, a propagating tag or a cancellation tag. |
| 182 | A one-time tag only applies to the check-in to which it is attached. A |
| 183 | propagating tag applies to the check-in to which it is attached and also |
| 184 | to all direct descendants of that check-in. A <i>direct descendant</i> |
| 185 | is a descendant through direct children. Tags propagation does not |
| 186 | cross merges. Tag propagation also stops as soon |
| @@ -187,14 +187,13 @@ | |
| 187 | as it encounters another check-in with the same tag. A cancellation tag |
| 188 | is attached to a single check-in in order to either override a one-time |
| 189 | tag that was previously placed on that same check-in, or to block |
| 190 | tag propagation from an ancestor. |
| 191 | |
| 192 | The initial checkin of every repository has two propagating tags. In |
| 193 | figure 5, that initial check-in is check-in 1. The <b>branch</b> tag |
| 194 | tells (by its value) what branch the check-in is a member of. |
| 195 | The default branch is called "trunk." All tags that begin with "<b>sym-</b>" |
| 196 | are symbolic name tags. When a symbolic name tag is attached to a |
| 197 | check-in, that allows you to refer to that check-in by its symbolic |
| 198 | name rather than by its 40-character SHA1 hash name. When a symbolic name |
| 199 | tag propagates (as does the <b>sym-trunk</b> tag) then referring to that |
| @@ -212,12 +211,12 @@ | |
| 211 | |
| 212 | Check-in 4 also has a <b>sym-test</b> tag, which gives the symbolic name |
| 213 | "test" to check-ins 4, 6, and 9. Because tags do not propagate across |
| 214 | merges, check-ins 7, 8, and 10 do not inherit the <b>sym-test</b> tag and |
| 215 | are hence not known by the name "test." |
| 216 | To prevent the <b>sym-trunk</b> tag from propagating from check-in 1 |
| 217 | into check-ins 4, 6, and 9, there is a cancellation tag for |
| 218 | <b>sym-trunk</b> on check-in 4. The net effect is that |
| 219 | check-ins on the trunk go by the symbolic name of "trunk" and check-ins |
| 220 | on the test branch go by the symbolic name "test." |
| 221 | |
| 222 | The <b>bgcolor=blue</b> tag on check-in 4 causes the background color |
| @@ -225,11 +224,11 @@ | |
| 224 | |
| 225 | Figure 5 also shows two one-time tags on check-in 9. (The diagram does |
| 226 | not make a graphical distinction between one-time and propagating tags.) |
| 227 | The <b>sym-release-1.0</b> tag means that check-in 9 can be referred to |
| 228 | using the more meaningful name "release-1.0." The <b>closed</b> tag means |
| 229 | that check-in 9 is a "closed leaf." A closed leaf is a leaf that should |
| 230 | never have direct children. |
| 231 | |
| 232 | <h2>Review Of Terminology</h2> |
| 233 | |
| 234 | <blockquote><dl> |
| 235 |
+8
| --- www/changes.wiki | ||
| +++ www/changes.wiki | ||
| @@ -12,10 +12,18 @@ | ||
| 12 | 12 | via a compile-time option. |
| 13 | 13 | * Add the <nowiki>[checkout], [render], [styleHeader], [styleFooter], |
| 14 | 14 | [trace], [getParameter], [setParameter], and [artifact]</nowiki> commands |
| 15 | 15 | to TH1, primarily for use by TH1 hooks. |
| 16 | 16 | * Bring in the latest version of autosetup from upstream. |
| 17 | + * When committing a (non-binary) file which contains bytes forming an | |
| 18 | + invalid UTF-8 stream, fossil now adds the possibility to convert it | |
| 19 | + to a valid UTF-8 stream ('c') if you like. | |
| 20 | + * Let [/help?cmd=new|fossil new] no longer create an initial empty commit | |
| 21 | + by default. The first commit after checking out an empty repository will | |
| 22 | + become the initial commit. (NOT PLANNED FOR 1.30, BUT DONE TO EXPOSE | |
| 23 | + [/help?cmd=new|fossil new --empty] TO MORE FIELD TESTING BEFORE | |
| 24 | + MAKING ANY DECISION ON IT!) | |
| 17 | 25 | |
| 18 | 26 | <h2>Changes For Version 1.29 (2014-06-12)</h2> |
| 19 | 27 | * Add the ability to display content, diffs and annotations for UTF16 |
| 20 | 28 | text files in the web interface. |
| 21 | 29 | * Add the "SaveAs..." and "Invert" buttons |
| 22 | 30 |
| --- www/changes.wiki | |
| +++ www/changes.wiki | |
| @@ -12,10 +12,18 @@ | |
| 12 | via a compile-time option. |
| 13 | * Add the <nowiki>[checkout], [render], [styleHeader], [styleFooter], |
| 14 | [trace], [getParameter], [setParameter], and [artifact]</nowiki> commands |
| 15 | to TH1, primarily for use by TH1 hooks. |
| 16 | * Bring in the latest version of autosetup from upstream. |
| 17 | |
| 18 | <h2>Changes For Version 1.29 (2014-06-12)</h2> |
| 19 | * Add the ability to display content, diffs and annotations for UTF16 |
| 20 | text files in the web interface. |
| 21 | * Add the "SaveAs..." and "Invert" buttons |
| 22 |
| --- www/changes.wiki | |
| +++ www/changes.wiki | |
| @@ -12,10 +12,18 @@ | |
| 12 | via a compile-time option. |
| 13 | * Add the <nowiki>[checkout], [render], [styleHeader], [styleFooter], |
| 14 | [trace], [getParameter], [setParameter], and [artifact]</nowiki> commands |
| 15 | to TH1, primarily for use by TH1 hooks. |
| 16 | * Bring in the latest version of autosetup from upstream. |
| 17 | * When committing a (non-binary) file which contains bytes forming an |
| 18 | invalid UTF-8 stream, fossil now adds the possibility to convert it |
| 19 | to a valid UTF-8 stream ('c') if you like. |
| 20 | * Let [/help?cmd=new|fossil new] no longer create an initial empty commit |
| 21 | by default. The first commit after checking out an empty repository will |
| 22 | become the initial commit. (NOT PLANNED FOR 1.30, BUT DONE TO EXPOSE |
| 23 | [/help?cmd=new|fossil new --empty] TO MORE FIELD TESTING BEFORE |
| 24 | MAKING ANY DECISION ON IT!) |
| 25 | |
| 26 | <h2>Changes For Version 1.29 (2014-06-12)</h2> |
| 27 | * Add the ability to display content, diffs and annotations for UTF16 |
| 28 | text files in the web interface. |
| 29 | * Add the "SaveAs..." and "Invert" buttons |
| 30 |
+1
-1
| --- www/shunning.wiki | ||
| +++ www/shunning.wiki | ||
| @@ -42,11 +42,11 @@ | ||
| 42 | 42 | the shunning list does not propagate is a security feature. If the |
| 43 | 43 | shunning list propagated then a malicious user (or |
| 44 | 44 | a bug in the fossil code) might introduce a shun record that would |
| 45 | 45 | propagate through all repositories in a network and permanently |
| 46 | 46 | destroy vital information. By refusing to propagate the shunning list, |
| 47 | -Fossil insures that no remote user will ever be able to remove | |
| 47 | +Fossil ensures that no remote user will ever be able to remove | |
| 48 | 48 | information from your personal repositories without your permission. |
| 49 | 49 | |
| 50 | 50 | The shunning list does not propagate to a remote repository |
| 51 | 51 | by the normal "sync" mechanism, |
| 52 | 52 | but it is still possible to copy shuns from one repository to another |
| 53 | 53 |
| --- www/shunning.wiki | |
| +++ www/shunning.wiki | |
| @@ -42,11 +42,11 @@ | |
| 42 | the shunning list does not propagate is a security feature. If the |
| 43 | shunning list propagated then a malicious user (or |
| 44 | a bug in the fossil code) might introduce a shun record that would |
| 45 | propagate through all repositories in a network and permanently |
| 46 | destroy vital information. By refusing to propagate the shunning list, |
| 47 | Fossil insures that no remote user will ever be able to remove |
| 48 | information from your personal repositories without your permission. |
| 49 | |
| 50 | The shunning list does not propagate to a remote repository |
| 51 | by the normal "sync" mechanism, |
| 52 | but it is still possible to copy shuns from one repository to another |
| 53 |
| --- www/shunning.wiki | |
| +++ www/shunning.wiki | |
| @@ -42,11 +42,11 @@ | |
| 42 | the shunning list does not propagate is a security feature. If the |
| 43 | shunning list propagated then a malicious user (or |
| 44 | a bug in the fossil code) might introduce a shun record that would |
| 45 | propagate through all repositories in a network and permanently |
| 46 | destroy vital information. By refusing to propagate the shunning list, |
| 47 | Fossil ensures that no remote user will ever be able to remove |
| 48 | information from your personal repositories without your permission. |
| 49 | |
| 50 | The shunning list does not propagate to a remote repository |
| 51 | by the normal "sync" mechanism, |
| 52 | but it is still possible to copy shuns from one repository to another |
| 53 |