Index: src/bin/sh/expand.c diff -c src/bin/sh/expand.c:1.60 src/bin/sh/expand.c:1.60.2.1 *** src/bin/sh/expand.c:1.60 Sun Dec 21 08:32:39 2003 --- src/bin/sh/expand.c Fri Oct 28 22:52:23 2005 *************** *** 1,4 **** ! /* $NetBSD: expand.c,v 1.60 2003/12/21 08:32:39 jdolecek Exp $ */ /*- * Copyright (c) 1991, 1993 --- 1,4 ---- ! /* $NetBSD: expand.c,v 1.60.2.1 2005/10/28 22:52:23 riz Exp $ */ /*- * Copyright (c) 1991, 1993 *************** *** 37,43 **** #if 0 static char sccsid[] = "@(#)expand.c 8.5 (Berkeley) 5/15/95"; #else ! __RCSID("$NetBSD: expand.c,v 1.60 2003/12/21 08:32:39 jdolecek Exp $"); #endif #endif /* not lint */ --- 37,43 ---- #if 0 static char sccsid[] = "@(#)expand.c 8.5 (Berkeley) 5/15/95"; #else ! __RCSID("$NetBSD: expand.c,v 1.60.2.1 2005/10/28 22:52:23 riz Exp $"); #endif #endif /* not lint */ *************** *** 449,455 **** } /* Eat all trailing newlines */ ! for (p--; lastc == '\n'; lastc = *--p) STUNPUTC(dest); if (in.fd >= 0) --- 449,456 ---- } /* Eat all trailing newlines */ ! p = stackblock() + startloc; ! while (dest > p && dest[-1] == '\n') STUNPUTC(dest); if (in.fd >= 0) Index: src/crypto/dist/openssl/crypto/opensslv.h diff -c src/crypto/dist/openssl/crypto/opensslv.h:1.1.1.11 src/crypto/dist/openssl/crypto/opensslv.h:1.1.1.11.2.1 *** src/crypto/dist/openssl/crypto/opensslv.h:1.1.1.11 Sat Mar 20 04:22:19 2004 --- src/crypto/dist/openssl/crypto/opensslv.h Wed Oct 12 00:47:33 2005 *************** *** 81,85 **** --- 81,91 ---- #define SHLIB_VERSION_HISTORY "" #define SHLIB_VERSION_NUMBER "0.9.7" + /* The following macro indicates that this version of OpenSSL + * contains the security related patch from + * http://www.openssl.org/news/patch-CAN-2005-2969.txt + */ + #define OPENSSL_HAS_20051011_FIX + #endif /* HEADER_OPENSSLV_H */ Index: src/crypto/dist/openssl/ssl/s23_srvr.c diff -c src/crypto/dist/openssl/ssl/s23_srvr.c:1.1.1.5 src/crypto/dist/openssl/ssl/s23_srvr.c:1.1.1.5.2.1 *** src/crypto/dist/openssl/ssl/s23_srvr.c:1.1.1.5 Thu Jul 24 08:29:18 2003 --- src/crypto/dist/openssl/ssl/s23_srvr.c Tue Oct 11 21:08:11 2005 *************** *** 519,527 **** } s->state=SSL2_ST_GET_CLIENT_HELLO_A; ! if ((s->options & SSL_OP_MSIE_SSLV2_RSA_PADDING) || ! use_sslv2_strong || ! (s->options & SSL_OP_NO_TLSv1 && s->options & SSL_OP_NO_SSLv3)) s->s2->ssl2_rollback=0; else /* reject SSL 2.0 session if client supports SSL 3.0 or TLS 1.0 --- 519,525 ---- } s->state=SSL2_ST_GET_CLIENT_HELLO_A; ! if (s->options & SSL_OP_NO_TLSv1 && s->options & SSL_OP_NO_SSLv3) s->s2->ssl2_rollback=0; else /* reject SSL 2.0 session if client supports SSL 3.0 or TLS 1.0 Index: src/distrib/amd64/floppies/common/list.ramdisk diff -c src/distrib/amd64/floppies/common/list.ramdisk:1.3 src/distrib/amd64/floppies/common/list.ramdisk:1.3.2.1 *** src/distrib/amd64/floppies/common/list.ramdisk:1.3 Wed Oct 8 04:25:43 2003 --- src/distrib/amd64/floppies/common/list.ramdisk Tue Oct 11 16:35:53 2005 *************** *** 1,4 **** ! # $NetBSD: list.ramdisk,v 1.3 2003/10/08 04:25:43 lukem Exp $ SRCDIRS bin sbin usr.bin usr.sbin gnu/usr.bin --- 1,4 ---- ! # $NetBSD: list.ramdisk,v 1.3.2.1 2005/10/11 16:35:53 riz Exp $ SRCDIRS bin sbin usr.bin usr.sbin gnu/usr.bin *************** *** 18,23 **** --- 18,24 ---- # we need the boot block in /usr/mdec + the MBR copy COPY ${DESTDIR}/usr/mdec/boot usr/mdec/boot COPY ${DESTDIR}/usr/mdec/bootxx_ffsv1 usr/mdec/bootxx_ffsv1 + COPY ${DESTDIR}/usr/mdec/bootxx_ffsv2 usr/mdec/bootxx_ffsv2 COPY ${DESTDIR}/usr/mdec/mbr usr/mdec/mbr COPY ${DESTDIR}/usr/mdec/mbr_ext usr/mdec/mbr_ext COPY ${DESTDIR}/usr/mdec/mbr_bootsel usr/mdec/mbr_bootsel Index: src/distrib/evbppc/md-kernel/Makefile diff -c src/distrib/evbppc/md-kernel/Makefile:1.1 src/distrib/evbppc/md-kernel/Makefile:1.1.2.1 *** src/distrib/evbppc/md-kernel/Makefile:1.1 Mon Dec 9 14:20:54 2002 --- src/distrib/evbppc/md-kernel/Makefile Wed Mar 23 19:56:08 2005 *************** *** 1,9 **** ! # $NetBSD: Makefile,v 1.1 2002/12/09 14:20:54 scw Exp $ .include .include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib" ! MKIMG?= ${NETBSDSRCDIR}/sys/arch/evbppc/compile/walnut-mkimg.sh RAMDISKDIR!= cd ${.CURDIR}/../ramdisk && ${PRINTOBJDIR} RAMDISK= ${RAMDISKDIR}/ramdisk.fs --- 1,9 ---- ! # $NetBSD: Makefile,v 1.1.2.1 2005/03/23 19:56:08 jmc Exp $ .include .include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib" ! MKIMG?= ${HOST_SH} ${NETBSDSRCDIR}/sys/arch/evbppc/compile/walnut-mkimg.sh RAMDISKDIR!= cd ${.CURDIR}/../ramdisk && ${PRINTOBJDIR} RAMDISK= ${RAMDISKDIR}/ramdisk.fs Index: src/distrib/notes/cats/prep diff -c src/distrib/notes/cats/prep:1.7 src/distrib/notes/cats/prep:1.7.2.1 *** src/distrib/notes/cats/prep:1.7 Sat Jul 26 17:06:56 2003 --- src/distrib/notes/cats/prep Mon Aug 15 06:45:56 2005 *************** *** 1,4 **** ! .\" $NetBSD: prep,v 1.7 2003/07/26 17:06:56 salo Exp $ . A \*M machine usually needs little or no preparation before installing .Nx , --- 1,4 ---- ! .\" $NetBSD: prep,v 1.7.2.1 2005/08/15 06:45:56 snj Exp $ . A \*M machine usually needs little or no preparation before installing .Nx , *************** *** 56,62 **** You will need to substitute the correct name of the disk image file, speed for your CD writer, and the correct device for your system (for i386 it would be ! .Pa /dev/cd1d No Ns ). . .Ss2 Booting from CD-ROM . --- 56,62 ---- You will need to substitute the correct name of the disk image file, speed for your CD writer, and the correct device for your system (for i386 it would be ! .Pa /dev/cd1d ) . . .Ss2 Booting from CD-ROM . Index: src/distrib/notes/common/contents diff -c src/distrib/notes/common/contents:1.97.2.9 src/distrib/notes/common/contents:1.97.2.11 *** src/distrib/notes/common/contents:1.97.2.9 Mon Nov 29 06:05:41 2004 --- src/distrib/notes/common/contents Mon Aug 15 05:13:18 2005 *************** *** 1,4 **** ! .\" $NetBSD: contents,v 1.97.2.9 2004/11/29 06:05:41 jmc Exp $ .\" .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc. .\" All rights reserved. --- 1,4 ---- ! .\" $NetBSD: contents,v 1.97.2.11 2005/08/15 05:13:18 snj Exp $ .\" .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc. .\" All rights reserved. *************** *** 64,70 **** .if \n[hpcmips] \{\ This kernel runs on Vr41xx and TX3922 CPUs only. .\} .\" hpcmips ! .\} .\" !atari/mac68k/sgimips/evgppc .if \n[macppc]:\n[sparc]:\n[i386]:\n[amd64] \{\ . It Pa netbsd-GENERIC.MP.gz A gzipped --- 64,70 ---- .if \n[hpcmips] \{\ This kernel runs on Vr41xx and TX3922 CPUs only. .\} .\" hpcmips ! .\} .\" !atari/mac68k/sgimips/evbppc .if \n[macppc]:\n[sparc]:\n[i386]:\n[amd64] \{\ . It Pa netbsd-GENERIC.MP.gz A gzipped *************** *** 431,437 **** does. This happens more frequently than you might think. SRM will usually only boot from ! .Xr ncr 4 or .Xr isp 4 SCSI devices, and on most platforms will not --- 431,437 ---- does. This happens more frequently than you might think. SRM will usually only boot from ! .Xr siop 4 or .Xr isp 4 SCSI devices, and on most platforms will not Index: src/distrib/notes/common/extract-contrib-string.pl diff -c src/distrib/notes/common/extract-contrib-string.pl:1.2.2.1 src/distrib/notes/common/extract-contrib-string.pl:1.2.2.2 *** src/distrib/notes/common/extract-contrib-string.pl:1.2.2.1 Wed Aug 25 21:48:19 2004 --- src/distrib/notes/common/extract-contrib-string.pl Mon Aug 15 05:27:11 2005 *************** *** 1,4 **** ! #!/usr/pkg/bin/perl # # Copyright (c) 2004 Hubert Feyrer # All rights reserved. --- 1,4 ---- ! #!/usr/bin/env perl # # Copyright (c) 2004 Hubert Feyrer # All rights reserved. *************** *** 187,193 **** # ... maybe with other case? $lc_msg2=lc($msg2); if ($lc_copyrights{$lc_msg2}) { ! print "alreadu there, in different case - skipping\n" if $debug; next msg; } --- 187,193 ---- # ... maybe with other case? $lc_msg2=lc($msg2); if ($lc_copyrights{$lc_msg2}) { ! print "already there, in different case - skipping\n" if $debug; next msg; } *************** *** 207,213 **** # ... maybe with other case? $lc_msg2=lc($msg2); if ($lc_copyrights{$lc_msg2}) { ! print "alreadu there, in different case - skipping\n" if $debug; next msg; } --- 207,213 ---- # ... maybe with other case? $lc_msg2=lc($msg2); if ($lc_copyrights{$lc_msg2}) { ! print "already there, in different case - skipping\n" if $debug; next msg; } Index: src/distrib/notes/common/main diff -c src/distrib/notes/common/main:1.253.2.10 src/distrib/notes/common/main:1.253.2.16 *** src/distrib/notes/common/main:1.253.2.10 Mon Nov 29 06:03:09 2004 --- src/distrib/notes/common/main Sun Oct 30 00:55:57 2005 *************** *** 1,4 **** ! .\" $NetBSD: main,v 1.253.2.10 2004/11/29 06:03:09 jmc Exp $ .\" .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc. .\" All rights reserved. --- 1,4 ---- ! .\" $NetBSD: main,v 1.253.2.16 2005/10/30 00:55:57 jmc Exp $ .\" .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc. .\" All rights reserved. *************** *** 424,434 **** wouldn't exist. . .if \n[FOR_RELEASE] \{\ ! .Ss Changes Between The NetBSD 1.6 and 2.0 Releases .Pp ! The .Nx 2.0 release provides numerous significant functional enhancements, including support for many new devices, integration of hundreds of bug fixes, new and updated kernel subsystems, and many user-land enhancements. --- 424,753 ---- wouldn't exist. . .if \n[FOR_RELEASE] \{\ ! .Ss Changes Between The NetBSD 2.0.2 and 2.0.3 updates ! .Pp ! The ! .Nx 2.0.3 ! update ! is the third security/critical update of the ! .Nx 2.0 ! release branch. This represents a selected subset of fixes deemed ! critical in nature for stability or security reasons. .Pp ! All fixes in security/critical updates (i.e. ! .Nx 2.0.2 ! , 2.0.3, etc) are cumulative, so this latest update contains all such fixes since ! the .Nx 2.0 + release. These fixes will also appear in future releases ( + .Nx 2.1 + , 2.2, etc), together with other less-critical fixes and feature enhancements. + .Pp + Specific updates are as follows: + . + .Ss2 Kernel + . + .(bullet + Drop the big lock in upcallret() on powerpc to prevent hangs with pthreads + on SMP systems. + .It + Fix "sleep forever" issue raise on sparc64 systems. + .It + For powerpc don't enable interrupts while calling trap() if the trapping frame + didn't have them enabled either. Prevents crashes on some G4 based systems. + .It + Prevent random panics on process exit where calls to knote_fdclose() were + being done on incorrect file descriptors. + .It + Remove code assuming kernfs supports mmap as it does not. + .It + Prevent a panic where disk interrupts could be enabled while the ATACH_TH_RUN + flag is still set. + .It + In pmap_enter(), preset the mod/ref bits based on the flags argument to avoid + possible data loss. + .It + Make sure buffer sizes are initialized correctly even when the pause + state is explicitly set. Avoids crashes on some audio hardware. + .It + Fix memory leak in uipc_usrreq calls. + .It + Make PCI cards work on NetBSD-mappc systems with a "Grackle" bridge. + .It + Avoids deadlocks in the alpha pmap code between pmap_activate() and it's + use of sched_lock. + .It + Protect the ipsec ioctls from negative offsets to prevent panics in + m_copydata(). + .It + The maximum file size on MS-DOS filesystems is 4 GB - 1 byte, so + don't bother trying to write files bigger than this. Just return EFBIG + to caller, rather than panic()ing later. + .It + Range check calls correctly in freebsd compat code to prevent data corruption + and possible crashes. + .It + Handle MMX faults as floating exceptions. Matlab full functional again. + .bullet) + . + .Ss2 Networking + . + .(bullet + Prevent panics where it was possible to end up with a negative RTT. + .It + When adding or deleting multicast addresses, only change the address filter + if the interface is marked RUNNING. + .It + Fix the HPC1 transmit logic on sgimips which was previously not working. + .It + Make sure to purge prefixes from the ND list or else panics can result. + .It + Avoid an optimization in m_pulldown to avoid a prepend to the next mbuf in the + chain if the result would still not have all data continous. Prevents panics + under certain circumstances. + .It + Prevent a panic on sun3 where NULL could be de-referenced in the case of + #if NBPFILTER == 0 + .It + Fix a possible data/pool corruption in the icmp6 code where possibly free'd + data is reused. + .bullet) + . + .Ss2 File system + . + .(bullet + Fix a silent truncation problem that could cause corruption with large + FFSv1 file systems. + .It + In ext2 check that we are not the pagedaemon as getblk() can return NULL in + this case. + .bullet) + . + .Ss2 Security + . + .(bullet + Fix buffer overflows in + .Xr telnet 1 + identified in CAN 2005-0468 and 2005-0469. + .It + Make verified exec functional again by using UIO_SYSSPACE for NDINIT. + .It + Prevent possible buffer overruns in + .Xr telnetd 8 + by removing static local variables so its easier to correctly use strlcpy. + .It + Prevent buffer overflows in + .Xr cvs 1 + by updating to version 1.11.20 in response to CAN-2005-0753. + .It + IPsec-AH was always calculated using the same key in AES-XCBC-MAC. + .It + Return correct error on all zero length codes in libz. + .It + Prevent vulnerability in + .Xr cvs 1 + reported in SA16553. + .It + Simplify code in procfs to check for a negative uio_offset at the beginning + and check for attempts to write to init sooner and in all cases. + .It + Don't allow negative offsets when reading the message buffer, because + it can allow reading arbitrary kernel memory. + .It + Remove unsafe /tmp file creation for the file.0 target when using + .Xr imake 1 + .. + .It + Fix security hole in + .Xr Xserver 1 + reported in CAN-2005-2495. + .It + Fix openssl 2.0 rollback, CAN-2005-2969. + .bullet) + . + .Ss2 System administration and user tools + . + .(bullet + Install xdm scripts as executable so that xdm will function and not consume + 100% cpu. + .It + In + .Xr user 8 + be consistent when deleting a non-existent group - tell if the group is + non-existent. + .It + Correctly set LOGNAME in new environment when using + .Xr su 1 + .. + .It + In + .Xr amd 8 + embed machine and cpu architecture correctly from target host environment, + not from build host. + .It + Fix bug in + .Xr sh 1 + on big endian systems where underflowing a buffer when evaluating output + from a back tick substitution can cause a crash. + .bullet) + . + .Ss2 Miscellaneous + . + .(bullet + Update copyright to 2005. + .It + Update to tzdata2005n. Lots of fixes, including most recently the + leap second at the end of 2005 and the U.S. DST changes taking effect in 2007. + .It + Add support for ffsv2 to amd64 boot floppies. + .bullet) + . + .Ss2 \*M specific + .Ss Changes Between The NetBSD 2.0.1 and 2.0.2 updates + .Pp + The + .Nx 2.0.2 release + is the second security/critical update of the NetBSD 2.0 + release branch. This represents a selected subset of fixes deemed + critical in nature for stability or security reasons. All of these fixes + will also appear on future + .Nx + releases (e.g. + .Nx 2.1 + , etc) from the NetBSD 2 release branch as well. + . + .Pp + Specific updates are as follows: + . + .Ss2 Kernel + . + .(bullet + Avoid endless loop in F_CLOSEM fnctl which could be abused for a local DOS. + .It + Avoid possible security issues on amd64, x86 and xen by properly checking + range for copyinstr and copyoutstr. + .It + Make pmap_map() work on sun4 machines so these are usable again. + .It + Fix a UVM problem that causes hangs when large processes fork. + .It + Fix pthreads on sun4c hardware by fixing a problem with detecting faults + in atomic load/store instructions. + .It + Address further pthread issues on sparc and sparc64 by defining a new + LWP flag which indicates that we're in the process of doing a context switch. + .It + Make sun3 port functional again by restoring the definition for MAXPHYS + as it is now used rather than MAXBSIZE to limit page cache I/O sizes. + .It + Prevent lockups/panics if the VOP_LOOKUP() call unlocked the parent directory + node. + .It + Prevent a kernel panic on boot with a PX graphics card on DECstations. + .It + Fix prep port to be functional by ensuring that the OpenPIC register window + is mapped during startup. + .It + Clear freed memory in + .Xr cgd 4 + code to avoid possibly security issues. + .bullet) + . + .Ss2 Networking + . + .(bullet + Disabled the oow test in ipf because it is killing valid packets. + .It + Prevent deadlock/panic on NFS clients after NFS server reboots and caches + aren't in sync. + .It + Fix an NFS panic caused by truncating a file while another client is writing + data to it. + .It + Avoid infinite loops when getting NFS readdir response without any entries + or EOF. + .It + Fix possible remote DOS via IPSec AH packets. + .bullet) + . + .Ss2 System administration and user tools + . + .(bullet + Teach groff about NetBSD versions that aren't on the branches documentation. + .It + Add description for Solaris 10 dual boot installation. + .It + Document PTHREAD_CONCURRENCY. + .It + Fix bug in binutils which broke Firefox under NetBSD-sparc64. + .It + Address xpm security problems reported in CAN-2005-0605. + .bullet) + .Ss2 \*M specific + .Ss Changes Between The NetBSD 2.0 release and 2.0.1 update + .Pp + The + .Nx 2.0.1 + release + is the first security/critical update of the NetBSD 2.0 + release branch. This represents a selected subset of fixes deemed + critical in nature for stability or security reasons. All of these fixes + will also appear on future minor + .Nx + releases (e.g. + .Nx 2.1 + , etc) from the NetBSD 2 release branch as well. + . + .Pp + Specific updates are as follows: + . + .Ss2 Kernel + . + .(bullet + Prevent panics on powerpc with DIAGNOSTIC kernels and trap handling. + .It + Make the macppc INSTALL kernel bootable again by moving the load address + to the correct location. + .It + Fix a major issue with sparc64 pmap to prevent crashes under heavy load. + .It + Fix major performance issue with xen port so idle loop doesn't consume 100% + of cpu time. + .It + Fix xen port so it can reboot cleanly instead of hanging. + .It + MMU fixes for sh3 based ports to prevent reboots under heavy load. + .bullet) + . + .Ss2 Networking + . + .(bullet + Fix major performance issues with the i82547 Gig-E chip which improves + performance with + .Xr wm 4 + . + .It + Fix problems with + .Xr sk 4 + performance on ASUS A8V motherboards. + .It + Prevent panics in ipf when receiving IPv6 packets. + .It + NFS fixes to address incorrect atimes updates and cache coherancy issues. + .bullet) + . + .Ss2 System administration and user tools + . + .(bullet + Fix + .Xr swapcontext 3 + for amd64 so that it works correctly. + .bullet) + .Ss2 \*M specific + .Ss Changes Between The NetBSD 1.6 and 2.0 Releases + .Pp + The NetBSD 2.0 release provides numerous significant functional enhancements, including support for many new devices, integration of hundreds of bug fixes, new and updated kernel subsystems, and many user-land enhancements. *************** *** 766,772 **** .It Li README.files README describing the distribution's contents. .It Li TODO ! .Nx 's todo list (also somewhat incomplete and out of date). .It Pa patches/ Post-release source code patches. --- 1085,1092 ---- .It Li README.files README describing the distribution's contents. .It Li TODO ! The ! .Nx todo list (also somewhat incomplete and out of date). .It Pa patches/ Post-release source code patches. *************** *** 1211,1217 **** .Bl -column xxx "Jun-ichiro itojun Hagino" Mt sommerfeld@NetBSD.org newsmips . .br_ne 1i ! .It-span Em "The NetBSD core group:" .It Ta Ta .It Ta Allen Briggs Ta Mt briggs@NetBSD.org .It Ta Frank van der Linden Ta Mt fvdl@NetBSD.org --- 1531,1537 ---- .Bl -column xxx "Jun-ichiro itojun Hagino" Mt sommerfeld@NetBSD.org newsmips . .br_ne 1i ! .It Em "The NetBSD core group:" .It Ta Ta .It Ta Allen Briggs Ta Mt briggs@NetBSD.org .It Ta Frank van der Linden Ta Mt fvdl@NetBSD.org *************** *** 1221,1227 **** .It Ta Ta . .br_ne 2i ! .It-span Em "The portmasters (and their ports):" .\" .\" XXX created by list-portmasters.pl .\" --- 1541,1547 ---- .It Ta Ta . .br_ne 2i ! .It Em "The portmasters (and their ports):" .\" .\" XXX created by list-portmasters.pl .\" *************** *** 1286,1292 **** .It Ta Ta . .br_ne 1i ! .It-span Em "The NetBSD \*V Release Engineering team:" .It Ta Ta .It Ta Grant Beattie Ta Mt grant@NetBSD.org .It Ta Erik Berls Ta Mt cyber@NetBSD.org --- 1606,1612 ---- .It Ta Ta . .br_ne 1i ! .It Em "The NetBSD \*V Release Engineering team:" .It Ta Ta .It Ta Grant Beattie Ta Mt grant@NetBSD.org .It Ta Erik Berls Ta Mt cyber@NetBSD.org *************** *** 1302,1308 **** .It Ta Ta . .br_ne 2i ! .It-span Em "NetBSD Developers:" .It Ta Ta .It Ta Nathan Ahlstrom Ta Mt nra@NetBSD.org .It Ta Steve Allen Ta Mt wormey@NetBSD.org --- 1622,1628 ---- .It Ta Ta . .br_ne 2i ! .It Em "NetBSD Developers:" .It Ta Ta .It Ta Nathan Ahlstrom Ta Mt nra@NetBSD.org .It Ta Steve Allen Ta Mt wormey@NetBSD.org *************** *** 1555,1561 **** .It Ta Ta . .br_ne 2i ! .It-span Em "Other contributors:" .It Ta Ta .It Ta Dave Burgess Ta Mt burgess@cynjut.infonet.net .It Ta Brian R. Gaeke Ta Mt brg@dgate.org --- 1875,1881 ---- .It Ta Ta . .br_ne 2i ! .It Em "Other contributors:" .It Ta Ta .It Ta Dave Burgess Ta Mt burgess@cynjut.infonet.net .It Ta Brian R. Gaeke Ta Mt brg@dgate.org Index: src/distrib/notes/common/postinstall diff -c src/distrib/notes/common/postinstall:1.54.2.3 src/distrib/notes/common/postinstall:1.54.2.4 *** src/distrib/notes/common/postinstall:1.54.2.3 Wed Aug 25 21:51:54 2004 --- src/distrib/notes/common/postinstall Mon Aug 15 05:32:03 2005 *************** *** 1,4 **** ! .\" $NetBSD: postinstall,v 1.54.2.3 2004/08/25 21:51:54 he Exp $ .\" .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc. .\" All rights reserved. --- 1,4 ---- ! .\" $NetBSD: postinstall,v 1.54.2.4 2005/08/15 05:32:03 snj Exp $ .\" .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc. .\" All rights reserved. *************** *** 417,423 **** .Ed .Pp The above commands will install the Tenex-csh and Bourne Again shell, ! the perl programming language , Apache web server, KDE desktop environment and the Mozilla web browser as well as all the packages they depend on. .It --- 417,423 ---- .Ed .Pp The above commands will install the Tenex-csh and Bourne Again shell, ! the Perl programming language, Apache web server, KDE desktop environment and the Mozilla web browser as well as all the packages they depend on. .It *************** *** 434,440 **** After extracting, see the .Pa README and ! .Pa Packages.txt files in the extraction directory (e.g. .Pa /usr/pkgsrc/README ) for more information. --- 434,440 ---- After extracting, see the .Pa README and ! .Pa doc/pkgsrc.txt files in the extraction directory (e.g. .Pa /usr/pkgsrc/README ) for more information. Index: src/distrib/notes/common/sysinst diff -c src/distrib/notes/common/sysinst:1.68.2.3 src/distrib/notes/common/sysinst:1.68.2.5 *** src/distrib/notes/common/sysinst:1.68.2.3 Mon Nov 29 06:03:20 2004 --- src/distrib/notes/common/sysinst Mon Aug 15 05:53:46 2005 *************** *** 1,4 **** ! .\" $NetBSD: sysinst,v 1.68.2.3 2004/11/29 06:03:20 jmc Exp $ .\" .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc. .\" All rights reserved. --- 1,4 ---- ! .\" $NetBSD: sysinst,v 1.68.2.5 2005/08/15 05:53:46 snj Exp $ .\" .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc. .\" All rights reserved. *************** *** 256,262 **** .Pp .Dl db\*> Ic "write 0xc0513e3c 0x0a00" .Pp - After installation, this value can be permanently written to the kernel image directly with: .Pp --- 256,261 ---- *************** *** 548,554 **** .Ic Set button on the right will become active. Use it to locate and ! select the Installation Kernel file appropiate for your hardware. This will be either .Pa netbsd-INSTALL.gz or --- 547,553 ---- .Ic Set button on the right will become active. Use it to locate and ! select the Installation Kernel file appropriate for your hardware. This will be either .Pa netbsd-INSTALL.gz or *************** *** 751,757 **** Place the system in B\*&W Mode (1-bit color or grayscale) as shown in the Monitors Control Panel or in the Monitors options dialog of the Booter. You may choose to have the Booter do this for you automatically by selecting ! the appropiate check box and radio button in the .Ic Monitors dialog on the .Ic Options --- 750,756 ---- Place the system in B\*&W Mode (1-bit color or grayscale) as shown in the Monitors Control Panel or in the Monitors options dialog of the Booter. You may choose to have the Booter do this for you automatically by selecting ! the appropriate check box and radio button in the .Ic Monitors dialog on the .Ic Options *************** *** 900,906 **** and the geometry will be printed on a line that begins with its name. As mentioned above, you may need your disk's geometry when creating ! .Nx 's partitions. You will also need to know the name, to tell .Ic sysinst --- 899,905 ---- and the geometry will be printed on a line that begins with its name. As mentioned above, you may need your disk's geometry when creating ! .Nx partitions. You will also need to know the name, to tell .Ic sysinst *************** *** 909,916 **** .\} The most important thing to know is that .Li wd0 ! is ! .Nx 's name for your first IDE disk, .Li wd1 the second, etc. --- 908,915 ---- .\} The most important thing to know is that .Li wd0 ! is the ! .Nx name for your first IDE disk, .Li wd1 the second, etc. *************** *** 1186,1192 **** will give you the option of writing one, but doing so will not make the disk a Mac OS bootable volume. You will have the option of creating HFS partitions that may be ! subsequentially initialized and used under Mac OS though. .\} .Pp .if \n[i386] \{\ --- 1185,1191 ---- will give you the option of writing one, but doing so will not make the disk a Mac OS bootable volume. You will have the option of creating HFS partitions that may be ! subsequently initialized and used under Mac OS though. .\} .Pp .if \n[i386] \{\ *************** *** 1252,1261 **** partitions it is allowed to use. You have to mark the partition you want to use as swap SWP or (deprecated!) NBS and the other partitions as NBD. ! Note that all the changes you make to the ID's are reversable as long as you remember the original value. ahdilabel is capable of creating or changing an ! AHDI compatible partioning on the disk, and in the partition-ID editor, the partitions are shown in the order that AHDI created them. When you leave this editor and continue with --- 1251,1260 ---- partitions it is allowed to use. You have to mark the partition you want to use as swap SWP or (deprecated!) NBS and the other partitions as NBD. ! Note that all the changes you make to the ID's are reversible as long as you remember the original value. ahdilabel is capable of creating or changing an ! AHDI compatible partitioning on the disk, and in the partition-ID editor, the partitions are shown in the order that AHDI created them. When you leave this editor and continue with *************** *** 1412,1418 **** .Pp This option reviews the partition's size and starting address and fixes the values if they overlap any adjacent partition. ! This is primarily a debugging option and shouldn't be necesary during a normal installation. However, some 3rd party disk formatters have been known to create bogus entries in the Apple Disk Partition Map, and this option can aid --- 1411,1417 ---- .Pp This option reviews the partition's size and starting address and fixes the values if they overlap any adjacent partition. ! This is primarily a debugging option and shouldn't be necessary during a normal installation. However, some 3rd party disk formatters have been known to create bogus entries in the Apple Disk Partition Map, and this option can aid Index: src/distrib/notes/common/xfer diff -c src/distrib/notes/common/xfer:1.39.2.5 src/distrib/notes/common/xfer:1.39.2.6 *** src/distrib/notes/common/xfer:1.39.2.5 Mon Nov 29 06:03:14 2004 --- src/distrib/notes/common/xfer Tue Mar 22 00:52:08 2005 *************** *** 1,4 **** ! .\" $NetBSD: xfer,v 1.39.2.5 2004/11/29 06:03:14 jmc Exp $ .\" .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc. .\" All rights reserved. --- 1,4 ---- ! .\" $NetBSD: xfer,v 1.39.2.6 2005/03/22 00:52:08 jmc Exp $ .\" .\" Copyright (c) 1999-2004 The NetBSD Foundation, Inc. .\" All rights reserved. *************** *** 480,486 **** .Pp .\} \" \n[x68k] . ! .if !\n[x68k] \{ Note that if you are installing or upgrading from a writable media, the media can be write-protected if you wish. These systems mount a root image from inside the kernel, and will not --- 480,486 ---- .Pp .\} \" \n[x68k] . ! .if !\n[x68k] \{\ Note that if you are installing or upgrading from a writable media, the media can be write-protected if you wish. These systems mount a root image from inside the kernel, and will not Index: src/distrib/notes/i386/hardware diff -c src/distrib/notes/i386/hardware:1.113.2.2 src/distrib/notes/i386/hardware:1.113.2.3 *** src/distrib/notes/i386/hardware:1.113.2.2 Mon Nov 29 05:51:41 2004 --- src/distrib/notes/i386/hardware Mon Aug 15 06:40:35 2005 *************** *** 1,4 **** ! .\" $NetBSD: hardware,v 1.113.2.2 2004/11/29 05:51:41 jmc Exp $ . .Nx \*V runs on ISA (AT-Bus), EISA, MCA, PCI, and VL-bus systems --- 1,4 ---- ! .\" $NetBSD: hardware,v 1.113.2.3 2005/08/15 06:40:35 snj Exp $ . .Nx \*V runs on ISA (AT-Bus), EISA, MCA, PCI, and VL-bus systems *************** *** 305,314 **** --- 305,318 ---- .It Intel EtherExpress 100 Fast Ethernet adapters .It + Intel Intel PRO/1000 Gigabit Ethernet adapters + .It Novell NE1000, NE2000 (ISA, PCI, PCMCIA, ISA PnP) .It Realtek 8129/8139 based boards .It + Realtek 8139C+/8169/8169S/8110S based boards + .It SMC/WD 8003, 8013, and the SMC .Sq Elite16 ISA boards Index: src/distrib/notes/macppc/install diff -c src/distrib/notes/macppc/install:1.31.2.1 src/distrib/notes/macppc/install:1.31.2.2 *** src/distrib/notes/macppc/install:1.31.2.1 Fri Nov 12 06:01:21 2004 --- src/distrib/notes/macppc/install Mon Aug 15 06:45:58 2005 *************** *** 1,4 **** ! .\" $NetBSD: install,v 1.31.2.1 2004/11/12 06:01:21 jmc Exp $ . .Ss2 Open Firmware boot syntax . --- 1,4 ---- ! .\" $NetBSD: install,v 1.31.2.2 2005/08/15 06:45:58 snj Exp $ . .Ss2 Open Firmware boot syntax . *************** *** 22,28 **** .Xr ofwboot 8 by listing the device, the partition (if it's a disk), and the filename of the bootloader (if using ! .Pa ofwboot.xcf No Ns ). .Pp If the .Li boot-file --- 22,28 ---- .Xr ofwboot 8 by listing the device, the partition (if it's a disk), and the filename of the bootloader (if using ! .Pa ofwboot.xcf ) . .Pp If the .Li boot-file *************** *** 576,582 **** Of course, a lot of the information in this example depends on your model and what your boot method is, but we'll include this anyways just so you get an idea of what to expect (user-typed commands are in ! .Ic bold No Ns ). .(disp Apple PowerBook3,1 2.1f1 BootROM built on 01/29/00 at 22:38:07 Copyright 1994-2000 Apple Computer, Inc. --- 576,582 ---- Of course, a lot of the information in this example depends on your model and what your boot method is, but we'll include this anyways just so you get an idea of what to expect (user-typed commands are in ! .Ic bold ) . .(disp Apple PowerBook3,1 2.1f1 BootROM built on 01/29/00 at 22:38:07 Copyright 1994-2000 Apple Computer, Inc. *************** *** 672,678 **** .(Note Don't forget to check your Open Firmware environment variables, as they may have been changed by your brief excursion into ! .Tn MacOS No Ns . .Note) .It .To 2 "Information on your screen seems garbled or out of sync" --- 672,678 ---- .(Note Don't forget to check your Open Firmware environment variables, as they may have been changed by your brief excursion into ! .Tn MacOS . .Note) .It .To 2 "Information on your screen seems garbled or out of sync" Index: src/distrib/notes/macppc/prep diff -c src/distrib/notes/macppc/prep:1.40 src/distrib/notes/macppc/prep:1.40.2.1 *** src/distrib/notes/macppc/prep:1.40 Tue Sep 2 05:47:24 2003 --- src/distrib/notes/macppc/prep Mon Aug 15 06:46:00 2005 *************** *** 1,4 **** ! .\" $NetBSD: prep,v 1.40 2003/09/02 05:47:24 mbw Exp $ . .Ss2 Prepare yourself . --- 1,4 ---- ! .\" $NetBSD: prep,v 1.40.2.1 2005/08/15 06:46:00 snj Exp $ . .Ss2 Prepare yourself . *************** *** 19,25 **** If you assume the worst, you'll be pleasantly surprised when everything works easier than you expected. Also, forget everything you've been told about installing ! .Nx*M No Ns . That's right, flush your knowledge cache -- some of it is almost certainly dirty. .Pp --- 19,25 ---- If you assume the worst, you'll be pleasantly surprised when everything works easier than you expected. Also, forget everything you've been told about installing ! .Nx*M . That's right, flush your knowledge cache -- some of it is almost certainly dirty. .Pp Index: src/distrib/notes/macppc/prep.OPENFIRMWARE diff -c src/distrib/notes/macppc/prep.OPENFIRMWARE:1.5 src/distrib/notes/macppc/prep.OPENFIRMWARE:1.5.2.1 *** src/distrib/notes/macppc/prep.OPENFIRMWARE:1.5 Sat Nov 1 03:03:00 2003 --- src/distrib/notes/macppc/prep.OPENFIRMWARE Mon Aug 15 06:45:53 2005 *************** *** 1,4 **** ! .\" $NetBSD: prep.OPENFIRMWARE,v 1.5 2003/11/01 03:03:00 grant Exp $ .if \*[OF_VERSION_3] \{\ . .Ss2 Updating your BootROM --- 1,4 ---- ! .\" $NetBSD: prep.OPENFIRMWARE,v 1.5.2.1 2005/08/15 06:45:53 snj Exp $ .if \*[OF_VERSION_3] \{\ . .Ss2 Updating your BootROM *************** *** 143,149 **** Open Firmware has two variables, .Sq input-device and ! .Sq output-device No Ns , which specify how it accepts commands and displays output. All Open Firmware 1.0.5 and most Open Firmware 2.0.x systems will default to using the --- 143,149 ---- Open Firmware has two variables, .Sq input-device and ! .Sq output-device , which specify how it accepts commands and displays output. All Open Firmware 1.0.5 and most Open Firmware 2.0.x systems will default to using the *************** *** 920,943 **** .Pp You can use the instructions in this section to partition a disk that may also be used with ! .Tn MacOS No Ns , although a disk prepared in this way .Em "will not boot" ! .Em Nx No Ns . That means, your root partition ! .No ( Ns Pa / No Ns ) must be on a drive prepared with the .Nx installer, but the partitions not necessary to boot (for example ! .Pa /usr No Ns , ! .Pa /home No Ns , or ! .Pa /export No Ns ) may be on the same disk as ! .Tn MacOS No Ns . .Pp Unless you are planning to use partitions on the same disk as ! .Tn MacOS No Ns , skip forward to .Sx "Preparing the Open Firmware 1 or 2 Bootable Media" .\} --- 920,943 ---- .Pp You can use the instructions in this section to partition a disk that may also be used with ! .Tn MacOS , although a disk prepared in this way .Em "will not boot" ! .Em Nx . That means, your root partition ! .Pq Pa / must be on a drive prepared with the .Nx installer, but the partitions not necessary to boot (for example ! .Pa /usr , ! .Pa /home , or ! .Pa /export ) may be on the same disk as ! .Tn MacOS . .Pp Unless you are planning to use partitions on the same disk as ! .Tn MacOS , skip forward to .Sx "Preparing the Open Firmware 1 or 2 Bootable Media" .\} *************** *** 947,953 **** installer. .Pp This is the drive that will have the bootloader, ! .Pa ofwboot.xcf No Ns . Your .Nx partitions may either be on this same disk (using the method described --- 947,953 ---- installer. .Pp This is the drive that will have the bootloader, ! .Pa ofwboot.xcf . Your .Nx partitions may either be on this same disk (using the method described *************** *** 1069,1078 **** interprets an .Em "A/UX Root" partition as the first partition ! .No ( Ns Em a No Ns ) on the disk. This partition is not readable from ! .Tn MacOS No Ns . .\} .It Em "A/UX Swap" Any size. --- 1069,1078 ---- interprets an .Em "A/UX Root" partition as the first partition ! .Pq Em a on the disk. This partition is not readable from ! .Tn MacOS . .\} .It Em "A/UX Swap" Any size. *************** *** 1082,1097 **** interprets an .Em "A/UX Swap" partition as the second partition ! .No ( Ns Em b No Ns ) on the disk. This partition is not readable from ! .Tn MacOS No Ns . .It Em "A/UX User" No and Em "A/UX Free1" Use these for any additional partitions you may want to use under .Nx Ns , such as ! .Pa /usr No (at least 200 MB),\ Pa /home No Ns ,\ Pa /usr/local No Ns ,\ or ! .Pa /usr/pkg No Ns . .Nx interprets these partitions as normal .Nx No Ns -style --- 1082,1098 ---- interprets an .Em "A/UX Swap" partition as the second partition ! .Pq Em b on the disk. This partition is not readable from ! .Tn MacOS . .It Em "A/UX User" No and Em "A/UX Free1" Use these for any additional partitions you may want to use under .Nx Ns , such as ! .Pa /usr No (at least 200 MB) , Pa /home , Pa /usr/local , ! or ! .Pa /usr/pkg . .Nx interprets these partitions as normal .Nx No Ns -style *************** *** 1118,1124 **** partition as your root, then it may not be recognized by the .Nx kernel as the first partition ! .No ( Ns Em a No Ns ) on the disk. You will need to compile a new kernel with the root partition explicitly defined to be the .Em UFS --- 1119,1125 ---- partition as your root, then it may not be recognized by the .Nx kernel as the first partition ! .Pq Em a on the disk. You will need to compile a new kernel with the root partition explicitly defined to be the .Em UFS *************** *** 1144,1151 **** .Pp To get the distribution sets onto appropriate media, see the above section entitled ! .Sx "Getting the NetBSD System on to Useful Media" ! .No Ns . You may want to get the distribution sets when you create the bootable media. .Pp .(Note --- 1145,1151 ---- .Pp To get the distribution sets onto appropriate media, see the above section entitled ! .Sx "Getting the NetBSD System on to Useful Media" . You may want to get the distribution sets when you create the bootable media. .Pp .(Note *************** *** 1204,1210 **** You will need to substitute the correct name of the disk image file, speed for your CD writer, and the correct device for your system (for i386 it would be ! .Pa /dev/cd1d No Ns ). .Pp .It .Em "From a MacOS machine (using Toast)" --- 1204,1210 ---- You will need to substitute the correct name of the disk image file, speed for your CD writer, and the correct device for your system (for i386 it would be ! .Pa /dev/cd1d ) . .Pp .It .Em "From a MacOS machine (using Toast)" *************** *** 1397,1403 **** .Pp You will need to substitute the correct speed for your CD writer, and the correct device for your system (for i386 it would be ! .Pa /dev/cd1d No Ns ). .Pp See the .Nx --- 1397,1403 ---- .Pp You will need to substitute the correct speed for your CD writer, and the correct device for your system (for i386 it would be ! .Pa /dev/cd1d ) . .Pp See the .Nx Index: src/distrib/notes/sandpoint/install diff -c src/distrib/notes/sandpoint/install:1.2 src/distrib/notes/sandpoint/install:1.2.4.1 *** src/distrib/notes/sandpoint/install:1.2 Wed Jan 2 21:12:18 2002 --- src/distrib/notes/sandpoint/install Mon Aug 15 06:45:50 2005 *************** *** 1,4 **** ! .\" $NetBSD: install,v 1.2 2002/01/02 21:12:18 he Exp $ . .Ss2 Booting the installer . --- 1,4 ---- ! .\" $NetBSD: install,v 1.2.4.1 2005/08/15 06:45:50 snj Exp $ . .Ss2 Booting the installer . *************** *** 9,15 **** Of course, a lot of the information in this example depends on your model and what your boot method is, but we'll include this anyways just so you get an idea of what to expect (user-typed commands are in ! .Ic bold No Ns ). .(disp .No DINK32\*>\*> Ic go 90000 [ XXX - insert boot w/ installer on ramdisk instead of this example ] --- 9,15 ---- Of course, a lot of the information in this example depends on your model and what your boot method is, but we'll include this anyways just so you get an idea of what to expect (user-typed commands are in ! .Ic bold ) . .(disp .No DINK32\*>\*> Ic go 90000 [ XXX - insert boot w/ installer on ramdisk instead of this example ] Index: src/distrib/notes/sgimips/hardware diff -c src/distrib/notes/sgimips/hardware:1.7.2.3 src/distrib/notes/sgimips/hardware:1.7.2.4 *** src/distrib/notes/sgimips/hardware:1.7.2.3 Fri Jul 23 07:06:14 2004 --- src/distrib/notes/sgimips/hardware Tue Oct 11 16:23:32 2005 *************** *** 1,4 **** ! .\" $NetBSD: hardware,v 1.7.2.3 2004/07/23 07:06:14 tron Exp $ . .Nx*M is aimed to run on MIPS-based computers manufactured by --- 1,4 ---- ! .\" $NetBSD: hardware,v 1.7.2.4 2005/10/11 16:23:32 riz Exp $ . .Nx*M is aimed to run on MIPS-based computers manufactured by *************** *** 108,113 **** Parallel ports .It zs keyboard/mouse - .It - Mace Ethernet controller (IP32) .bullet) --- 108,111 ---- Index: src/distrib/notes/sparc64/install diff -c src/distrib/notes/sparc64/install:1.19.2.2 src/distrib/notes/sparc64/install:1.19.2.4 *** src/distrib/notes/sparc64/install:1.19.2.2 Tue Jun 15 22:59:35 2004 --- src/distrib/notes/sparc64/install Wed Mar 16 16:42:43 2005 *************** *** 1,4 **** ! .\" $NetBSD: install,v 1.19.2.2 2004/06/15 22:59:35 he Exp $ .\" .\" Copyright (c) 1999-2002 The NetBSD Foundation, Inc. .\" All rights reserved. --- 1,4 ---- ! .\" $NetBSD: install,v 1.19.2.4 2005/03/16 16:42:43 tron Exp $ .\" .\" Copyright (c) 1999-2002 The NetBSD Foundation, Inc. .\" All rights reserved. *************** *** 233,238 **** --- 233,247 ---- or .Sx "Installing NetBSD by using a NetBSD kernel on a Solaris partition" . .Pp + Manual installation from Solaris 10 is not possible because NetBSD + cannot use the resulting UFS file system. It is possible to install + Solaris 10 and NetBSD on the same disk. To do so, partition the disk + with the Solaris format command, then boot NetBSD and perform a manual + installation. Be careful not to write a NetBSD disklabel. Use the + disklabel command to read the partition size, as constructed from the + Solaris disklabel. By default the NetBSD newfs command writes a NetBSD + disklabel. Avoid this by using the -F and -s arguments to newfs. + .Pp .(bullet .To 2 "Preparing the disk in Solaris" .Em "Preparing the disk in Solaris" Index: src/distrib/sets/makesrctars diff -c src/distrib/sets/makesrctars:1.15.2.3 src/distrib/sets/makesrctars:1.15.2.4 *** src/distrib/sets/makesrctars:1.15.2.3 Tue May 11 13:11:18 2004 --- src/distrib/sets/makesrctars Fri Oct 21 05:49:48 2005 *************** *** 1,6 **** #! /bin/sh # ! # $NetBSD: makesrctars,v 1.15.2.3 2004/05/11 13:11:18 tron Exp $ # # makesrctars srcdir setdir # Create source tarballs in setdir from the source under srcdir. --- 1,6 ---- #! /bin/sh # ! # $NetBSD: makesrctars,v 1.15.2.4 2005/10/21 05:49:48 riz Exp $ # # makesrctars srcdir setdir # Create source tarballs in setdir from the source under srcdir. *************** *** 9,16 **** prog=${0##*/} # set defaults ! : ${CKSUM=cksum} ! : ${PAX=pax} xsrcdir= --- 9,17 ---- prog=${0##*/} # set defaults ! : ${CKSUM:=cksum} ! : ${MTREE:=/usr/sbin/mtree} ! : ${PAX:=pax} xsrcdir= *************** *** 20,26 **** usage() { cat 1>&2 <&2 < "${setdir}/${set}" ! set +f ! } # create (base)src sets --- 60,91 ---- fi makeset() ! {( set=$1.tgz shift + dir=$1 + shift echo "Creating ${set}" + if [ "${dir}" != "." ]; then + cd $dir + srcprefix="${srcprefix}/${dir}" + fi + # Gets rid of any obj dirs and things below it + echo "obj" > /tmp/in$$ + egrep=$* + if [ "$egrep" = "" ]; then + egrep='.' + fi set -f ! ${MTREE} -c -X /tmp/in$$ | ${MTREE} -C -k type | \ ! egrep -v 'type=link' | egrep $egrep | \ ! sed -e 's:type=file:& mode=0664:' \ ! -e 's:type=dir:& mode=0775:' \ ! -e 's:$: uname=root gname=wsrc:' | \ ! ${PAX} -M -N ${PASSWD} -w -d -s'|^\.|'${srcprefix}'|' | \ ! gzip > "${setdir}/${set}" ! rm -f /tmp/in$$ ! )} # create (base)src sets *************** *** 78,99 **** fi srcprefix=usr/src ! makeset src . \ ! ! \( \( -path ./gnu \ ! -o -path ./share \ ! -o -path ./sys \ ! -o -path ./contrib/sys \ ! -o -path ./usr.sbin/config \ ! \) -prune \) ! ! makeset gnusrc ./gnu ! ! makeset syssrc ./sys ./contrib/sys ./usr.sbin/config \ ! ! \( -path ./sys/arch/\*/compile/\* -type d \ ! ! -name CVS -prune \) ! makeset sharesrc ./share # create xsrc sets --- 97,112 ---- fi srcprefix=usr/src + export setdir MTREE PAX CKSUM GZIP PASSWD srcprefix + + makeset src . \ + -v '^\.\/gnu|^\.\/share|^\.\/sys|^\.\/contrib\.sys|^\.\/usr\.bin\/config' + + makeset gnusrc gnu ! makeset syssrc . -e '^\..type=dir|^\.\/sys|^\.\/contrib.type=dir|^\.\/contrib\/sys|^\.\/usr\.sbin.type=dir|^\.\/usr\.sbin\/config' ! makeset sharesrc share # create xsrc sets *************** *** 115,117 **** --- 128,131 ---- ${CKSUM} -m *.tgz > MD5 ${CKSUM} -o2 *.tgz > SYSVSUM ) + exit 0 Index: src/distrib/sets/lists/base/md.ibmnws diff -c src/distrib/sets/lists/base/md.ibmnws:1.2 src/distrib/sets/lists/base/md.ibmnws:removed *** src/distrib/sets/lists/base/md.ibmnws:1.2 Sun Jan 11 10:24:58 2004 --- src/distrib/sets/lists/base/md.ibmnws Mon Oct 31 02:21:48 2005 *************** *** 1,2 **** - # $NetBSD: md.ibmnws,v 1.2 2004/01/11 10:24:58 lukem Exp $ - ./usr/sbin/ncdcs base-sysutil-root --- 0 ---- Index: src/distrib/sets/lists/base/mi diff -c src/distrib/sets/lists/base/mi:1.470.2.2 src/distrib/sets/lists/base/mi:1.470.2.4 *** src/distrib/sets/lists/base/mi:1.470.2.2 Mon May 10 19:30:47 2004 --- src/distrib/sets/lists/base/mi Fri Oct 28 23:40:56 2005 *************** *** 1,4 **** ! # $NetBSD: mi,v 1.470.2.2 2004/05/10 19:30:47 tron Exp $ . base-sys-root ./altroot base-sys-root ./bin base-sys-root --- 1,4 ---- ! # $NetBSD: mi,v 1.470.2.4 2005/10/28 23:40:56 riz Exp $ . base-sys-root ./altroot base-sys-root ./bin base-sys-root *************** *** 1017,1022 **** --- 1017,1023 ---- ./usr/sbin/named-bootconf base-bind-bin ./usr/sbin/named.reload base-bind-bin ./usr/sbin/named.restart base-bind-bin + ./usr/sbin/ncdcs base-sysutil-root ./usr/sbin/ndbootd base-bootserver-bin ./usr/sbin/ndc base-bind-bin ./usr/sbin/ndp base-netutil-bin *************** *** 2850,2855 **** --- 2851,2868 ---- ./usr/share/zoneinfo/America/Anguilla base-sys-share share ./usr/share/zoneinfo/America/Antigua base-sys-share share ./usr/share/zoneinfo/America/Araguaina base-sys-share share + ./usr/share/zoneinfo/America/Argentina base-sys-share share + ./usr/share/zoneinfo/America/Argentina/Buenos_Aires base-sys-share share + ./usr/share/zoneinfo/America/Argentina/Catamarca base-sys-share share + ./usr/share/zoneinfo/America/Argentina/ComodRivadavia base-sys-share share + ./usr/share/zoneinfo/America/Argentina/Cordoba base-sys-share share + ./usr/share/zoneinfo/America/Argentina/Jujuy base-sys-share share + ./usr/share/zoneinfo/America/Argentina/La_Rioja base-sys-share share + ./usr/share/zoneinfo/America/Argentina/Mendoza base-sys-share share + ./usr/share/zoneinfo/America/Argentina/Rio_Gallegos base-sys-share share + ./usr/share/zoneinfo/America/Argentina/San_Juan base-sys-share share + ./usr/share/zoneinfo/America/Argentina/Tucuman base-sys-share share + ./usr/share/zoneinfo/America/Argentina/Ushuaia base-sys-share share ./usr/share/zoneinfo/America/Aruba base-sys-share share ./usr/share/zoneinfo/America/Asuncion base-sys-share share ./usr/share/zoneinfo/America/Atka base-sys-share share *************** *** 2870,2875 **** --- 2883,2889 ---- ./usr/share/zoneinfo/America/Cayman base-sys-share share ./usr/share/zoneinfo/America/Chicago base-sys-share share ./usr/share/zoneinfo/America/Chihuahua base-sys-share share + ./usr/share/zoneinfo/America/Coral_Harbour base-sys-share share ./usr/share/zoneinfo/America/Cordoba base-sys-share share ./usr/share/zoneinfo/America/Costa_Rica base-sys-share share ./usr/share/zoneinfo/America/Cuiaba base-sys-share share *************** *** 3099,3104 **** --- 3113,3119 ---- ./usr/share/zoneinfo/Australia/Brisbane base-sys-share share ./usr/share/zoneinfo/Australia/Broken_Hill base-sys-share share ./usr/share/zoneinfo/Australia/Canberra base-sys-share share + ./usr/share/zoneinfo/Australia/Currie base-sys-share share ./usr/share/zoneinfo/Australia/Darwin base-sys-share share ./usr/share/zoneinfo/Australia/Hobart base-sys-share share ./usr/share/zoneinfo/Australia/LHI base-sys-share share *************** *** 3203,3208 **** --- 3218,3224 ---- ./usr/share/zoneinfo/Europe/Luxembourg base-sys-share share ./usr/share/zoneinfo/Europe/Madrid base-sys-share share ./usr/share/zoneinfo/Europe/Malta base-sys-share share + ./usr/share/zoneinfo/Europe/Mariehamn base-sys-share share ./usr/share/zoneinfo/Europe/Minsk base-sys-share share ./usr/share/zoneinfo/Europe/Monaco base-sys-share share ./usr/share/zoneinfo/Europe/Moscow base-sys-share share Index: src/distrib/sets/lists/man/md.ibmnws diff -c src/distrib/sets/lists/man/md.ibmnws:1.3 src/distrib/sets/lists/man/md.ibmnws:removed *** src/distrib/sets/lists/man/md.ibmnws:1.3 Sun Jan 11 15:09:51 2004 --- src/distrib/sets/lists/man/md.ibmnws Mon Oct 31 02:21:48 2005 *************** *** 1,3 **** - # $NetBSD: md.ibmnws,v 1.3 2004/01/11 15:09:51 lukem Exp $ - ./usr/share/man/cat8/ncdcs.0 man-sysutil-catman .cat - ./usr/share/man/man8/ncdcs.8 man-sysutil-man .man --- 0 ---- Index: src/distrib/sets/lists/man/mi diff -c src/distrib/sets/lists/man/mi:1.672.2.10 src/distrib/sets/lists/man/mi:1.672.2.14 *** src/distrib/sets/lists/man/mi:1.672.2.10 Fri Oct 1 03:33:18 2004 --- src/distrib/sets/lists/man/mi Fri Oct 28 23:37:58 2005 *************** *** 1,4 **** ! # $NetBSD: mi,v 1.672.2.10 2004/10/01 03:33:18 jmc Exp $ ./etc/mtree/set.man man-sys-root ./usr/share/info/am-utils.info man-amd-info info ./usr/share/info/as.info man-computil-info bfd,info --- 1,4 ---- ! # $NetBSD: mi,v 1.672.2.14 2005/10/28 23:37:58 riz Exp $ ./etc/mtree/set.man man-sys-root ./usr/share/info/am-utils.info man-amd-info info ./usr/share/info/as.info man-computil-info bfd,info *************** *** 1823,1828 **** --- 1823,1829 ---- ./usr/share/man/cat8/named.0 man-bind-catman .cat ./usr/share/man/cat8/named.reload.0 man-bind-catman .cat ./usr/share/man/cat8/named.restart.0 man-bind-catman .cat + ./usr/share/man/cat8/ncdcs.0 man-sysutil-catman .cat ./usr/share/man/cat8/ndbootd.0 man-bootserver-catman .cat ./usr/share/man/cat8/ndc.0 man-bind-catman .cat ./usr/share/man/cat8/ndp.0 man-netutil-catman .cat *************** *** 3900,3905 **** --- 3901,3907 ---- ./usr/share/man/man8/named.8 man-bind-man .man ./usr/share/man/man8/named.reload.8 man-bind-man .man ./usr/share/man/man8/named.restart.8 man-bind-man .man + ./usr/share/man/man8/ncdcs.8 man-sysutil-man .man ./usr/share/man/man8/ndbootd.8 man-bootserver-man .man ./usr/share/man/man8/ndc.8 man-bind-man .man ./usr/share/man/man8/ndp.8 man-netutil-man .man Index: src/distrib/utils/sysinst/msg.mi.en diff -c src/distrib/utils/sysinst/msg.mi.en:1.125.2.4 src/distrib/utils/sysinst/msg.mi.en:1.125.2.5 *** src/distrib/utils/sysinst/msg.mi.en:1.125.2.4 Wed Aug 25 03:15:43 2004 --- src/distrib/utils/sysinst/msg.mi.en Mon Aug 15 06:31:25 2005 *************** *** 1,4 **** ! /* $NetBSD: msg.mi.en,v 1.125.2.4 2004/08/25 03:15:43 jmc Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. --- 1,4 ---- ! /* $NetBSD: msg.mi.en,v 1.125.2.5 2005/08/15 06:31:25 snj Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. *************** *** 750,756 **** } message badroot ! {The completed new root fileystem failed a basic sanity check. Are you sure you installed all the required sets? } --- 750,756 ---- } message badroot ! {The completed new root filesystem failed a basic sanity check. Are you sure you installed all the required sets? } Index: src/doc/3RDPARTY diff -c src/doc/3RDPARTY:1.201.2.3 src/doc/3RDPARTY:1.201.2.5 *** src/doc/3RDPARTY:1.201.2.3 Tue Jun 15 22:13:07 2004 --- src/doc/3RDPARTY Tue Oct 11 16:49:55 2005 *************** *** 1,4 **** ! # $NetBSD: 3RDPARTY,v 1.201.2.3 2004/06/15 22:13:07 he Exp $ # # This file contains a list of the software that has been integrated into # NetBSD where we are not the primary maintainer. --- 1,4 ---- ! # $NetBSD: 3RDPARTY,v 1.201.2.5 2005/10/11 16:49:55 riz Exp $ # # This file contains a list of the software that has been integrated into # NetBSD where we are not the primary maintainer. *************** *** 702,709 **** Notes: Package: tz ! Version: tzcode2004a / tzdata2004a ! Current Vers: tzcode2004a / tzdata2004a Maintainer: Arthur David Olson Archive Site: ftp://elsie.nci.nih.gov/pub/ Mailing List: tz@elsie.nci.nih.gov --- 702,709 ---- Notes: Package: tz ! Version: tzcode2004a / tzdata2005n ! Current Vers: tzcode2005n / tzdata2005n Maintainer: Arthur David Olson Archive Site: ftp://elsie.nci.nih.gov/pub/ Mailing List: tz@elsie.nci.nih.gov Index: src/doc/CHANGES-2.0.1 diff -c /dev/null src/doc/CHANGES-2.0.1:1.1.2.12 *** /dev/null Mon Oct 31 02:21:49 2005 --- src/doc/CHANGES-2.0.1 Thu Feb 17 04:29:02 2005 *************** *** 0 **** --- 1,158 ---- + # $NetBSD: CHANGES-2.0.1,v 1.1.2.12 2005/02/17 04:29:02 jmc Exp $ + + A complete list of changes from the NetBSD 2.0 release to the NetBSD 2.0.1 + release. + + File Revision(s) + ---- -------- + src/sys/dev/mii/igphy.c 1.5 + src/sys/dev/mii/igphyreg.h 1.2 + src/sys/dev/pci/if_wmreg.h 1.12 + src/sys/dev/pci/if_wm.c 1.78 + + Fix major performance issues with the i82547 Gig-E chip: + - enable the SmartSpeed work-around code for the IGP phy, with some + minor adjustments. + - add some useful constants related to the Packet Buffer Allocation + register. + - add the Receive and Transmit Data FIFO registers. + - change the Tx:Rx on-chip RAM allocation ratio based on MTU. + - On the 82547, keep track of how much of the Tx FIFO has been used. + [thorpej, ticket #897] + + sys/dev/pci/if_sk.c 1.11 + sys/dev/pci/if_skreg.h 1.3 + sys/dev/pci/if_skvar.h 1.4 + + Fix Yukon ram sizing. + Fix tx queue (slist can be corrupted when tx interrupts hit within + tx_encap. + Lower interrupt moderation timer to (improves performance). + Improve chip identification. (from linux sk98lin driver). + Keep tx queue running by kicking the tx bmu repeatedly. + [abs, ticket #973] + + sys/arch/powerpc/powerpc/trap.c 1.104 + + Make sure to do setenv/unsetenv in pairs. This prevents panics in + DIAGNOSTIC kernel when crossing segment boundaries. + [matt, ticket #985] + + src/sys/arch/macppc/conf/INSTALL 1.78 + + Now that we have ofwboot load at 0xe00000, it doesn't make sense for + this kernel to load at 0x800000 - move back to the default and we + have around 13 MB of space for the kernel. + [wrstuden, ticket #951] + + sys/arch/sparc64/sparc64/pmap.c 1.157 + + Do the invalidation of the (virtually-addressed) L1 cache in + pmap_remove_all() (ie. just before we skip the per-page cache + invalidations while tearing down each context) instead of just + before we recycle all the contexts in ctx_alloc(). The latter + is not good enough since a (physically tagged) L1 cache line is + valid for all contexts, not just the one that was used to + instantiate it. PR#24126, PR#25669 and PR#27730. + [martin, ticket #1013] + + sys/arch/sparc64/sparc64/pmap.c 1.158 + + Better return value checking for pseg_get/pseg_set. Turn Debugger() + calls into proper panics and sprinkle some KASSERTs. PR#27288. + [martin, ticket #1014] + + lib/libc/arch/sparc64/gen/_setjmp.S 1.6 + + Replace the stack unwinding by a much simpler solution taken from + ../../arch/sparc/gen/_setjmp.S rev. 1.6. This ended up to be + ~identical to the OpenBSD change triggered by the same sparc change. + [martin, ticket #1020] + + lib/libc/arch/x86_64/gen/swapcontext.S 1.3 + + Use correct stack offsets after pushing values onto it. + PR#28486. + [hira, ticket #1029] + + sys/net/if_media.c 1.23 + + Add malloc_type M_IFMEDIA and use it for both malloc'ing and free'ing + ifmedia_entrys to prevent panic(9) in DIAGNOSTIC kernels. + [dyoung, ticket #1030] + + sys/arch/xen/i386/locore.S 1.7 + + HYPERVISOR_yield is one of the hypervisor calls that's "overloaded"; + it does different things depending what's in %ebx. + + We weren't setting %ebx here *at all*; so we did not get + SCHEDOP_yield, which was what was wanted; so unpredictable things + happened, notably immediate return to the NetBSD idle loop, in + other words spinning on CPU. + [tls, ticket #1043] + + sys/arch/xen/i386/machdep.c 1.11 + + Terminate the domain on RB_HALT, not just on reboot. This avoids + looping around a cngetc() that will never return while "halted". + [tls, ticket #1045] + + sys/arch/sh3/sh3/mmu.c 1.10 + sys/arch/sh3/sh3/mmu_sh3.c 1.7 + sys/arch/sh3/sh3/mmu_sh4.c 1.8 + + Protect accesses to PTE/TLB registers with + _cpu_exception_suspend()/_cpu_exception_resume() pair. Prevents + spontaneous reboot under heavy load + [tsutsui, ticket #1072] + + sys/netinet/fil.c patch + + Pull revs 1.2-1.7 from sys/dist/ipf/netinet/fil.c from trunk to fix + panics with ipf and IPv6. Fixes PR#28875 and #26839 + [hubertf, ticket #1068] + + sys/nfs/nfsnode.h patch + sys/nfs/nfs_vnops.c patch + + nfs_lookup: check n_nctime for positive entries as well to improve + cache consistency. + [yamt, ticket #1077] + + sys/nfs/nfs.h patch + sys/nfs/nfs_socket.c patch + sys/nfs/nfs_var.h patch + sys/nfs/nfs_vnops.c patch + sys/nfs/nfsm_subs.h patch + + Don't do kludge for a reply to a retransmitted request + unless we actually retransmitted the request. + [yamt, ticket #1078] + + sys/nfs/nfs_subs.c 1.140 + sys/nfs/nfsnode.h 1.53 + + Invalidate cache if filesize is changed besides our activity + because it means that were out of sync with the server. + [yamt, ticket #1079] + + sys/dev/ic/tulip.c 1.130 + + Silence the 'receive process failed to idle' message on the Davicom + DM9102A. + [sketch, ticket #1084] + + sys/sys/param.h patch + share/tmac/doc-common patch + gnu/usr.bin/groff/tmac/mdoc.local patch + + Welcome to 2.0.1 + + distrib/notes/common/main patch + doc/LAST_MINUTE patch + gnu/usr.bin/groff/tmac/mdoc.local patch + + Add specific release notes/updates for 2.0.1 + + *NOTE: moved 2.0.1 tag on these 3 files + doc/CHANGES-2.0.1 Index: src/doc/CHANGES-2.0.2 diff -c /dev/null src/doc/CHANGES-2.0.2:1.1.2.20 *** /dev/null Mon Oct 31 02:21:49 2005 --- src/doc/CHANGES-2.0.2 Wed Mar 30 05:41:54 2005 *************** *** 0 **** --- 1,215 ---- + # $NetBSD: CHANGES-2.0.2,v 1.1.2.20 2005/03/30 05:41:54 jmc Exp $ + + A complete list of changes from the NetBSD 2.0.1 release to the NetBSD 2.0.2 + release. + + File Revision(s) + ---- -------- + sys/kern/kern_descrip.c 1.128 (via patch) + + Avoid endless loop in F_CLOSEM fnctl which could be abused for a + local DoS. This fixes PR kern/28929. + [cube, ticket #1089] + + sys/arch/amd64/amd64/copy.S 1.2 + sys/arch/i386/i386/locore.S 1.33 + + Check the passed in address as well as determining the maximum length + using VM_MAXUSER_ADDRESS in copyinstr and copyoutstr. + [fvdl, ticket #1317] + + sys/nfs/nfs_subs.c 1.146 + + nfs_clearcommit: don't attempt to clear commit info (n_pushlo, etc) + unless the vnode is of VREG. union members used to keep commit info + are used for other purposes in the case of !VREG. + [yamt, ticket #1148] + + sys/netinet/ip_state.c patch + + Disable the oow test because it is broken. It is killing valid packets. + [martti, ticket #1110] + + sys/arch/sparc/stand/common/mmu.c 1.5 + + Make pmap_map() work on sun4 machines. + [pk, ticket #1118] + + sys/nfs/nfs_vnops.c 1.206 + + nfs_commit: use NAC_NOTRUNC when loading an attribute + as we're called holding pages locked. + [yamt, ticket #1134] + + sys/uvm/uvm_amap.c 1.57 + sys/uvm/uvm_pdaemon.c 1.61 + + Hack around a UVM problem that causes hangs when large processes fork. + See PR 26908 for details. + [chs, ticket #1137] + + sys/arch/sparc/sparc/trap.c 1.156 + + sun4c hardware reports faults by the atomic load/store instructions as + read faults even if the problem was that the memory was read-only. + detect this case and relabel the fault as both read and write. + part of PR 25633, PR 25896. + [chs, ticket #1158] + + sys/sys/param.h patch + share/tmac/doc-common patch + gnu/usr.bin/groff/tmac/mdoc.local patch + + Welcome to 2.0.2_BETA + + sys/arch/sparc/include/lock.h 1.18 + + Add the early-clobber modifier on the destination reg of ldstub. + In some implementations (eg. sun4c), the hardware modifies the + destination reg before checking for write permission on the memory + location. Without this change, gcc was using the same register for + the address and the destination, so if the store part of the + instruction faulted, the address was already gone when the instruction + was retried after resolving the fault. Part of PR 25633, PR 25896. + [chs, ticket #1159] + + gnu/usr.bin/groff/tmac/mdoc.local 1.19 via patch + + Teach groff about NetBSD 1.6.3 (used by njs(4), noted by tron). + [wiz, ticket #1167] + + sys/nfs/nfs_vnops.c 1.219 + + nfs_readdirrpc, nfs_readdirplusrpc: + Avoid infinite loops when getting readdir response without + any entries or EOF. PR/28971. + [yamt, ticket #1208] + + sys/arch/sun3/include/param3.h 1.50 + + Bring back the sun3 MAXPHYS definition that has been missing for + 8 years. More recently, we changed to relying on MAXPHYS rather + than MAXBSIZE to limit page cache I/O sizes, and sun3 has been + broken since then. + [chs, ticket #1229] + + sys/kern/vfs_lookup.c 1.57 + + Adjust error case handling. If the VOP_LOOKUP() call unlocked the + parent directory node, remember that. + [wrstuden, ticket #1298] + + xsrc/xfree/xc/extras/Xpm/lib/Attrib.c 1.4 + xsrc/xfree/xc/extras/Xpm/lib/CrDatFrI.c 1.4 + xsrc/xfree/xc/extras/Xpm/lib/hashtab.c 1.4 + xsrc/xfree/xc/extras/Xpm/lib/parse.c 1.4 + xsrc/xfree/xc/extras/Xpm/lib/scan.c 1.4 + xsrc/xfree/xc/extras/Xpm/lib/CrBufFrI.c 1.3 + xsrc/xfree/xc/extras/Xpm/lib/RdFToI.c 1.3 + xsrc/xfree/xc/extras/Xpm/lib/WrFFrI.c 1.3 + xsrc/xfree/xc/extras/Xpm/lib/XpmI.h 1.3 + xsrc/xfree/xc/extras/Xpm/lib/data.c 1.3 + xsrc/xfree/xc/extras/Xpm/lib/xpm.h 1.3 + xsrc/xfree/xc/extras/Xpm/lib/Imakefile 1.2 + xsrc/xfree/xc/extras/Xpm/lib/RdFToBuf.c 1.2 + xsrc/xfree/xc/extras/Xpm/lib/WrFFrBuf.c 1.2 + xsrc/xfree/xc/extras/Xpm/lib/misc.c 1.2 + xsrc/xfree/xc/extras/Xpm/lib/create.c 1.6 + + Import latest Xpm sources from OpenBSD: + o Changes from X.Org 6.8.2 RC1 + o Fix security problems reported in CAN-2005-0605 + [tron, ticket #1304] + + sys/arch/xen/i386/locore.S 1.10 + + Sync with i386/locore.S 1.33: + Check the passed in address as well as determining the maximum length + using VM_MAXUSER_ADDRESS in copyinstr and copyoutstr. + [bouyer, ticket #1321] + + distrib/notes/sparc64/install 1.24-1.25 + + Add description for Solaris 10 dual boot installation from Ben Collver + in PR port-sparc64/29703. + [martin, ticket #1322] + + gnu/dist/binutils/bfd/ChangeLog 1.2 via patch + gnu/dist/binutils/bfd/elf64-sparc.c 1.4 + + Fix bug in "binutils" which broke Firefox under NetBSD-sparc64. + [skrll, ticket #1101] + + sys/dev/tc/px.c 1.22 + + Fix a 3 year old error which caused px_init() to fail. Fixes PR 28798. + [mhitch, ticket #1063] + + sys/netinet6/ipsec.c 1.101 + + Fix possible remote DoS via IPSec AH packets. + [itojun, ticket #1327] + + sys/arch/prep/prep/ibm_7043_140.c 1.4 + sys/arch/prep/prep/machdep.c 1.52 + + Ensure that the OpenPIC register window is mapped during + the startup; only parts of the PCI memory space is mapped + already. Move initialization since it requires UVM. + [jkunz, ticket 1152] + + lib/libpthread/pthread.3 1.4 + + Document PTHREAD_CONCURRENCY. + [daniel, ticket #1166] + + sys/arch/sparc/sparc/machdep.c 1.252 + sys/arch/sparc64/sparc64/machdep.c 1.177 + sys/kern/kern_sa.c 1.57 via patch + sys/sys/lwp.h 1.25 via patch + + Define a new LWP flag which indicates that we're in the process of + doing a context switch. use this on sparc and sparc64 to avoid trying + to access user memory (writing the register windows back to the stack) + in this case (since it's both unnecessary and wrong). + [chs, ticket #1160] + + sys/dev/cgd_crypto.c 1.4 + + Clear freed memory. + [dan, ticket #1343] + + distrib/notes/common/contents patch + distrib/notes/common/main patch + distrib/notes/common/sysinst patch + distrib/notes/common/xfer patch + doc/LAST_MINUTE + + Update release notes for 2.0.2 + + sys/sys/param.h patch + + Welcome to 2.0.2 + + sys/arch/evbppc/conf/Makefile.ev64260.inc 1.3 + sys/arch/evbppc/conf/Makefile.obs405.inc 1.2 + sys/arch/evbppc/conf/Makefile.walnut.inc 1.3 + + Can't depend on shell scripts being executable from CVS. Preface + mkimg.sh with ${HOST_SH} + [jmc, ticket #1350] + + NOTE: Moved 2.0.2 tags on last 3 and CHANGES-2.0.2 file so evbpcc could build + + distrib/evbppc/md-kernel/Makefile 1.2 + + Can't depend on shell scripts being executable from CVS. Preface + mkimg.sh with ${HOST_SH} + + NOTE: Moved 2.0.2 tags on last 1 and CHANGES-2.0.2 file so evbpcc could build + + doc/README.files patch + + Fixed to reflect 2.0.2 changes in doc files. + + NOTE: Moved 2.0.2 tags on last and CHANGES-2.0.2 Index: src/doc/CHANGES-2.0.3 diff -c /dev/null src/doc/CHANGES-2.0.3:1.1.2.55 *** /dev/null Mon Oct 31 02:21:49 2005 --- src/doc/CHANGES-2.0.3 Sat Oct 29 23:42:04 2005 *************** *** 0 **** --- 1,592 ---- + # $NetBSD: CHANGES-2.0.3,v 1.1.2.55 2005/10/29 23:42:04 jmc Exp $ + + A complete list of changes from the NetBSD 2.0.2 release to the NetBSD 2.0.3 + release. + + File Revision(s) + ---- -------- + sys/ufs/ufs/ufs_bmap.c patch + + Fix a silent truncation problem that could cause corruption with large + FFSv1 file systems. + [mycroft, ticket #1035] + + sys/sys/param.h patch + + Welcome to 2.0.2_STABLE + + sys/netinet/tcp_input.c patch + + If an echoed RFC 1323 time stamp appears to be later than the current + time, ignore it and fall back to old-style RTT calculation. This + prevents ending up with a negative RTT and panicking later. + [christos, ticket #1401] + + sys/arch/sgimips/hpc/if_sq.c 1.21 + + When adding or deleting multicast addresses, only change + the address filter if the interface is marked RUNNING. + Fixes PR#27678. + [thorpej, ticket #939] + + sys/arch/sgimips/hpc/if_sq.c 1.22-1.23 + sys/arch/sgimips/hpc/sqvar.h 1.6-1.7 + + Fix the HPC1 transmit logic, which was previously very broken. + [rumble, ticket #1054] + + sys/netinet6/nd6.c 1.92 + + Make sure that prefixes get purged. Fixes PR#21189, + PR#25968, and PR#37873. + [tron, ticket #1394] + + usr.bin/telnet/telnet.c 1.30 + + Plug buffer overflows, ref. CAN 2005-0468 and 2005-0469. + Patch from MIT/Kerberos (MITKRB5-SA-2005-001-telnet.txt). + [tron, ticket #1410] + + sys/arch/powerpc/powerpc/trap.c 1.106 + + Drop the big lock in upcallret() like all the other platforms do. + [chs, ticket #1066] + + sys/netinet/tcp_input.c patch + + Fix TCP performance problems introduced in ticket 1401. + [chs, ticket #1445] + + sys/arch/sparc64/sparc64/locore.c 1.197-1.204 via patch + + Various changes from NetBSD-current, revisions 1.197 to 1.204. + Interrupt and soft-interrupt handling changes that appear to fix + the "sleep forever" problem (PR port-sparc64/21750). + [martin, ticket #1487] + + sys/kern/uipc_mbuf2.c 1.19 + + In m_pulldown avoid a prepend to the next mbuf in the chain if the + result would still not have all data we want continous. Fixes PR#30098 + [martin, ticket #1503] + + sys/arch/powerpc/powerpc/trap_subr.S 1.57 + + Don't enable interrupts while calling trap() if the trapping frame + didn't have them enabled either. + Addresses PR#29559. + [matt, ticket #1286] + + sys/ufs/ext2fs/ext2fs_bmap.c 1.19 + + getblk() can return NULL if we are the pagedaemon. Check for this. + [bouyer, ticket #1355] + + sys/kern/kern_descrip.c 1.132 + + The file being closed is (fdp->fd_lastfile - i), not i. So compare + (fdp->fd_lastfile - i) against fd_knlistsize. Otherwise we can + call knote_fdclose() on a file descriptor that doesn't have a knote. + This issue explains random panics I have had on process exit over the + past few years. + [wrstuden, ticket #1537] + + sys/miscfs/kernfs/kernfs.h 1.24 + sys/miscfs/kernfs/kernfs_vnops.c 1.108 + + kernfs does not support mmap(), remove code that pretends that it does. + [chs, ticket #1540] + + sys/dev/ata/ata.c 1.69 via patch + + Close a window where (disks) interrupts could be enabled while the + ATACH_TH_RUN flag is still set. + [bouyer, ticket #1543] + + sys/arch/sun3/dev/if_ie.c 1.42 + + Avoid NULL pointer dereference in case of #if NBPFILTER == 0. + Closes PR port-sun3/21699. + [tsutsui, ticket #1874] + + sys/arch/i386/i386/pmap.c 1.181 + + Preload the referenced and modified bits when entering a page due to + a fault. + [chs, ticket #1979] + + sys/arch/amd64/amd64/pmap.c 1.19 + sys/arch/amiga/amiga/pmap.c 1.113 + sys/arch/atari/atari/pmap.c 1.90 + sys/arch/hppa/hppa/pmap.c 1.16 + sys/arch/pc532/pc532/pmap.c 1.77 + sys/arch/sparc/sparc/pmap.c 1.299 + sys/arch/sun2/sun2/pmap.c 1.27 + sys/arch/sun3/sun3/pmap.c 1.147 + sys/arch/sun3/sun3x/pmap.c 1.87 + + In pmap_enter(), preset the mod/ref bits based on the flags argument. + This fixes PR kern/25640. + [chs, ticket #1980] + + sys/dev/verified_exec.c 1.6 + + Use UIO_SYSSPACE for NDINIT. + [kleink, ticket #1988] + + sys/dev/audio.c 1.196 via patch + + Make sure buffer sizes are initialized correctly even when the pause + state is explicitly set. + Without this, the machine would crash for some audio hardware that + needs to divide by the block size (e.g., cs4281.c/cs4280.c). + [is, ticket #1990] + + x11/bin/xdm/config/Makefile 1.9 via patch + + Install the following as executable scripts: + GiveConsole TakeConsole Xsetup_0 Xsession Xwilling + This fixes PR xsrc/30489. + [tron, ticket #1986] + + libexec/telnetd/ext.h patch + libexec/telnetd/state.c patch + libexec/telnetd/telnetd.c patch + + Remove static local variable so its easier to correctly use strlcpy. + [lha, ticket #2041] + + usr.sbin/user/user.c 1.80 + + Be consistent when deleting a non-existent group - tell if the group is + non-existent. + [agc, ticket #2024] + + gnu/dist/cvs/AUTHORS patch + gnu/dist/cvs/BUGS patch + gnu/dist/cvs/ChangeLog patch + gnu/dist/cvs/HACKING patch + gnu/dist/cvs/Makefile.in patch + gnu/dist/cvs/NEWS patch + gnu/dist/cvs/README patch + gnu/dist/cvs/TODO patch + gnu/dist/cvs/aclocal.m4 patch + gnu/dist/cvs/configure patch + gnu/dist/cvs/configure.in patch + gnu/dist/cvs/contrib/ChangeLog patch + gnu/dist/cvs/contrib/Makefile.am patch + gnu/dist/cvs/contrib/Makefile.in patch + gnu/dist/cvs/contrib/README patch + gnu/dist/cvs/contrib/commit_prep.in patch + gnu/dist/cvs/contrib/cvs_acls.html new file + gnu/dist/cvs/contrib/cvs_acls.in patch + gnu/dist/cvs/contrib/log.in patch + gnu/dist/cvs/contrib/log_accum.in patch + gnu/dist/cvs/contrib/mfpipe.in patch + gnu/dist/cvs/contrib/rcslock.in patch + gnu/dist/cvs/diff/ChangeLog patch + gnu/dist/cvs/diff/Makefile.in patch + gnu/dist/cvs/diff/libdiff.dep new file + gnu/dist/cvs/diff/libdiff.mak new file + gnu/dist/cvs/doc/ChangeLog patch + gnu/dist/cvs/doc/Makefile.am patch + gnu/dist/cvs/doc/Makefile.in patch + gnu/dist/cvs/doc/cvs.1 patch + gnu/dist/cvs/doc/cvs.man.footer new file + gnu/dist/cvs/doc/cvs.man.header new file + gnu/dist/cvs/doc/cvs.texinfo patch + gnu/dist/cvs/doc/mkman.pl new file + gnu/dist/cvs/doc/stamp-1 patch + gnu/dist/cvs/doc/stamp-vti patch + gnu/dist/cvs/doc/version-client.texi patch + gnu/dist/cvs/doc/version.texi patch + gnu/dist/cvs/lib/ChangeLog patch + gnu/dist/cvs/lib/Makefile.am patch + gnu/dist/cvs/lib/Makefile.in patch + gnu/dist/cvs/lib/fncase.c patch + gnu/dist/cvs/lib/libcvs.dep new file + gnu/dist/cvs/lib/libcvs.dsp new file + gnu/dist/cvs/lib/libcvs.mak new file + gnu/dist/cvs/lib/regex.c patch + gnu/dist/cvs/lib/sighandle.c patch + gnu/dist/cvs/lib/system.h patch + gnu/dist/cvs/lib/test-getdate.sh new file + gnu/dist/cvs/lib/xtime.h patch + gnu/dist/cvs/man/ChangeLog patch + gnu/dist/cvs/man/Makefile.am patch + gnu/dist/cvs/man/Makefile.in patch + gnu/dist/cvs/src/ChangeLog patch + gnu/dist/cvs/src/Makefile.am patch + gnu/dist/cvs/src/Makefile.in patch + gnu/dist/cvs/src/add.c patch + gnu/dist/cvs/src/admin.c patch + gnu/dist/cvs/src/annotate.c patch + gnu/dist/cvs/src/buffer.c patch + gnu/dist/cvs/src/build_src.com patch + gnu/dist/cvs/src/checkin.c patch + gnu/dist/cvs/src/checkout.c patch + gnu/dist/cvs/src/classify.c patch + gnu/dist/cvs/src/client.c patch + gnu/dist/cvs/src/commit.c patch + gnu/dist/cvs/src/create_adm.c patch + gnu/dist/cvs/src/cvs.h patch + gnu/dist/cvs/src/cvsrc.c patch + gnu/dist/cvs/src/diff.c patch + gnu/dist/cvs/src/edit.c patch + gnu/dist/cvs/src/entries.c patch + gnu/dist/cvs/src/expand_path.c patch + gnu/dist/cvs/src/fileattr.c patch + gnu/dist/cvs/src/filesubr.c patch + gnu/dist/cvs/src/find_names.c patch + gnu/dist/cvs/src/hardlink.c patch + gnu/dist/cvs/src/hardlink.h patch + gnu/dist/cvs/src/hash.c patch + gnu/dist/cvs/src/hash.h patch + gnu/dist/cvs/src/history.c patch + gnu/dist/cvs/src/history.h patch + gnu/dist/cvs/src/ignore.c patch + gnu/dist/cvs/src/import.c patch + gnu/dist/cvs/src/lock.c patch + gnu/dist/cvs/src/log.c patch + gnu/dist/cvs/src/login.c patch + gnu/dist/cvs/src/logmsg.c patch + gnu/dist/cvs/src/main.c patch + gnu/dist/cvs/src/mkmodules.c patch + gnu/dist/cvs/src/modules.c patch + gnu/dist/cvs/src/myndbm.c patch + gnu/dist/cvs/src/no_diff.c patch + gnu/dist/cvs/src/parseinfo.c patch + gnu/dist/cvs/src/patch.c patch + gnu/dist/cvs/src/rcs.c patch + gnu/dist/cvs/src/rcs.h patch + gnu/dist/cvs/src/rcscmds.c patch + gnu/dist/cvs/src/recurse.c patch + gnu/dist/cvs/src/release.c patch + gnu/dist/cvs/src/remove.c patch + gnu/dist/cvs/src/repos.c patch + gnu/dist/cvs/src/root.c patch + gnu/dist/cvs/src/root.h patch + gnu/dist/cvs/src/sanity.sh patch + gnu/dist/cvs/src/server.c patch + gnu/dist/cvs/src/server.h patch + gnu/dist/cvs/src/stack.c patch + gnu/dist/cvs/src/stack.h patch + gnu/dist/cvs/src/status.c patch + gnu/dist/cvs/src/subr.c patch + gnu/dist/cvs/src/tag.c patch + gnu/dist/cvs/src/update.c patch + gnu/dist/cvs/src/vers_ts.c patch + gnu/dist/cvs/src/version.c patch + gnu/dist/cvs/src/wrapper.c patch + gnu/dist/cvs/ylwrap new file + gnu/usr.bin/cvs/cvs/Makefile patch + gnu/usr.bin/cvs/include/config.h patch + gnu/usr.bin/cvs/libcvs/Makefile patch + gnu/usr.bin/cvs/libdiff/Makefile patch + gnu/usr.bin/cvs/rcs2log/Makefile patch + + Update CVS to version 1.11.20. + [tron, ticket #2927] + + src/gnu/usr.bin/cvs/libcvs/Makefile patch + src/gnu/usr.bin/cvs/libdiff/Makefile patch + + Don't install "libcvs" and "libdiff". This fixes build problems caused + by the pullup of ticket #2927. + [tron, ticket #2933] + + + usr.bin/su/su.1 1.44 + usr.bin/su/su.c 1.65 + + Set LOGNAME in the new environment (in addition to USER). PR#30670 + [kleink, ticket #2070] + + sys/kern/uipc_usrreq.c 1.83 + + uipc_usrreq: plug mbuf leak. + [yamt, ticket #2940] + + sys/arch/macppc/pci/pci_machdep.c 1.26 + + Make PCI cards work on NetBSD-mappc systems with a "Grackle" bridge. + [briggs, ticket #1329] + + sys/netinet6/ah_aesxcbcmac.c 1.2 + + IPsec-AH is always calculated using the same key in AES-XCBC-MAC. + PR#30821 + [elad, ticket 5538] + + lib/libz/inftrees.c 1.10 + sys/lib/libz/inftrees.c 1.10 + + Return correct error on all zero length codes. + [tron, ticket #5550] + + sys/arch/alpha/alpha/pmap.c 1.211 + + 1. Disable the lazy allocation of lev1map in pmap_enter(), instead + doing it in pmap_create(), and freeing the lev1map in + pmap_destroy(). This means that pm_lev1map is consistent for the + life of the pmap. + 2. pmap_extract() now uses vtophys() for the kernel pmap. This avoids + having to lock the kernel pmap, since kernel PT pages are never + freed. + 3. Because of (1), pmap_asn_alloc() no longer needs to operate on a + locked pmap; pm_lev1map will never change over the life of the pmap, + and all other access to the pmap is done in per-CPU fields or with + atomic operations. + 4. Because of (3), pmap_activate() no longer needs to lock the pmap + to do its work, thus eliminating the deadlock with sched_lock + described in PR port-alpha/25599. This is safe because we are + guaranteed that the pmap is still alive, since by definition an LWP + that uses that it is about to run. + [thorpej, ticket #5528] + + usr.sbin/amd/libamu/mkconf 1.4 + + Embed machine and cpu architecture correctly from target host + environment, not from build host. + [nakayama, ticket #5560] + + distrib/notes/common/contents 1.115 + + Reference siop(4) not ncr(4) + [riz, ticket #5568] + + share/man/man4/options.4 1.283 + + Remove reference to ncr(4) + [riz, ticket #5569] + + distrib/notes/common/extract-contrib-string.pl 1.2 + + Use '#!/usr/bin/env perl' instead of hardcoding the path. + Fix some typos. + [riz, ticket #5570] + + distrib/notes/common/postinstall 1.59 + + Packages.txt has been obsoleted, point to doc/pkgsrc.txt. + Whitespace and casing nit fixes. + [riz, ticket #5571] + + distrib/notes/common/sysinst 1.71 + + Fix some typos. + [riz, ticket #5574] + + distrib/utils/sysinst/msg.mi.en 1.134 + + Fix a typo: fileystem -> filesystem. + [riz, ticket #5578] + + distrib/notes/i386/hardware 1.120 + + Add ethernet adapters driven by re(4) and wm(4) to the list of + supported devices. + [riz, ticket #5580] + + distrib/notes/cats/prep 1.8 + distrib/notes/macppc/install 1.32 + distrib/notes/macppc/prep 1.41 + distrib/notes/macppc/prep.OPENFIRMWARE 1.6 + distrib/notes/sandpoint/install 1.3 + + Get rid of some superfluous "No Ns" calls before punctuation. + [riz, ticket #5581] + + gnu/dist/cvs/src/cvsbug.in 1.3 + + Fix vulnerability reported in SA16553 using the Red Hat patch. + [tron, ticket #5613] + + sys/miscfs/kernfs/kernfs_vnops.c 1.111 + + Don't allow negative offsets when reading the message buffer, because + it can allow reading arbitrary kernel memory. + [christos, ticket #5633] + + sys/miscfs/procfs/procfs_subr.c 1.59 + + Simplify the code by: + 1. Checking for a negative uio_offset at the beginning. This really + does not affect us in most cases because we check that later too. + 2. Checking for attempts to write to init sooner and in all cases. + [christos, ticket #5634] + + sys/miscfs/kernfs/kernfs_vnops.c 1.112 + + Also protect the ipsec ioctls from negative offsets to prevent panics + in m_copydata(). Move the negative offset check from kernfs_xread() + to kernfs_read(). + [christos, ticket #5637] + + distrib/sets/lists/base/mi 1.525,1.543,1.569 + doc/3RDPARTY 1.357 via patch + etc/mtree/NetBSD.dist 1.283 + share/zoneinfo/africa 1.1.1.16-1.1.1.18 + share/zoneinfo/antarctica 1.1.1.12-1.1.1.13 + share/zoneinfo/asia 1.1.1.28-1.1.1.33 + share/zoneinfo/australasia 1.5-1.8 + share/zoneinfo/backward 1.1.1.14-1.1.1.15 + share/zoneinfo/etcetera 1.1.1.5 + share/zoneinfo/europe 1.1.1.28-1.1.1.31 + share/zoneinfo/iso3166.tab 1.1.1.11-1.1.1.13 + share/zoneinfo/leapseconds 1.1.1.10-1.1.1.11 + share/zoneinfo/northamerica 1.1.1.27-1.1.1.30 + share/zoneinfo/solar87 1.1.1.2 + share/zoneinfo/solar88 1.1.1.2 + share/zoneinfo/solar89 1.1.1.2 + share/zoneinfo/southamerica 1.1.1.26-1.1.1.29 + share/zoneinfo/yearistype.sh 1.5 + share/zoneinfo/zone.tab 1.1.1.21-1.1.1.23 + + Update to tzdata2005m. Lots of fixes, including most recently the + leap second at the end of 2005 and the U.S. DST changes + taking effect in 2007. + [kleink, ticket #5816] + + sys/fs/msdosfs/denode.h 1.6 + sys/fs/msdosfs/msdosfs_vnops.c 1.17 + + The maximum file size on MS-DOS filesystems is 4 GB - 1 byte, so + don't bother trying to write files bigger than this. Just return + EFBIG to caller, rather than panic()ing later. PR#30864 + [xtraeme, ticket #5627] + + xsrc/xfree/xc/config/cf/NetBSD.cf 1.80 + + Remove unsafe /tmp file creation for the file.0 target. Just make + the file in the current build directory instead of temp directory. + [reed, ticket #5844] + + sys/conf/copyright 1.2 + + Welcome to 2005. + [rpaulo, ticket #5848] + + sys/compat/freebsd/freebsd_misc.c 1.22 via patch + + Range checks are not optional. The omission of this one, allows the + user to corrupt the heap and/or crash the kernel. + [christos, ticket #5846] + + xfree/xc/programs/Xserver/afb/afbpixmap.c 1.2 + xfree/xc/programs/Xserver/cfb/cfbpixmap.c 1.2 + xfree/xc/programs/Xserver/dix/pixmap.c 1.2 + xfree/xc/programs/Xserver/fb/fbpixmap.c 1.2 + xfree/xc/programs/Xserver/hw/xfree86/xaa/xaaInit.c 1.2 + xfree/xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPixmap.c 1.2 + xfree/xc/programs/Xserver/ilbm/ilbmpixmap.c 1.2 + xfree/xc/programs/Xserver/iplan2p4/iplpixmap.c 1.2 + xfree/xc/programs/Xserver/mfb/mfbpixmap.c 1.2 + xfree/xc/programs/Xserver/os/utils.c 1.7 via patch + + Fix security hole reported in CAN-2005-2495. + [tron, ticket #5858] + + distrib/notes/sgimips/hardware patch + + Remove MACE ethernet from the unsupported list. + [tsutsui, ticket #5924] + + sys/netinet6/esp_aesctr.c 1.2 + + AES counter mode uses 8byte IV, not 16 bytes. PR#30291. + [kleink, ticket #5899] + + distrib/amd64/floppies/common/list.ramdisk 1.4 + + Add bootxx_ffsv2 + [kleink, ticket #5828] + + doc/3RDPARTY 1.367 + share/zoneinfo/asia 1.1.1.34 + share/zoneinfo/australasia 1.9 + share/zoneinfo/northamerica 1.1.1.31 + share/zoneinfo/southamerica 1.1.1.30 + + Update to tzdata2005n. + [kleink, ticket #5911] + + sys/arch/i386/i386/trap.c 1.205 + sys/arch/i386/i386/vector.S 1.20 + sys/arch/i386/include/npx.h 1.21 + + Handle MMX faults as floating exceptions. Matlab full functional again. + [christos, ticket #5923] + + crypto/dist/openssl/crypto/opensslv.h 1.2 + crypto/dist/openssl/ssl/s23_srvr.c 1.2 + + Fix openssl 2.0 rollback, CAN-2005-2969. Also, add a + preprocessor symbol so we can distinguish fixed openssl + from the vanilla openssl. + [gendalia, ticket #5926] + + distrib/sets/makesrctars patch + + Allow autobuild to create ready-to-release source tars with builds. + [jmc, ticket #5935] + + doc/README.files patch + + Update to reflect all CHANGES files + + distrib/notes/common/main patch + + Clean up some ambiguous wording. + + bin/sh/expand.c 1.68 + + expbackq() was incorrectly backing up a temporary buffer + when removing \n from the end of output of commands + inside $(...) substitutions. If the program output + is n*128+1 bytes long (ending in a \n) then the code checks + buf[-1] for another \n - looking an uninitialised stack. + On a big-endian system an integer of value 10 + will satisfy this (unlikely on little endian) and can + happen depending on the last code path to use a lot of stack! + This caused the problem with newvers.sh on + sparc64 after ', 2005' was added to the date list. + PR#28852 + [martin, ticket #1418] + + sys/netinet6/icmp6.c 1.111 + + In icmp6_redirect_output(), sip6 is initialised to point to the + data area of m0. But m0 may be freed later, so trying to use + sip6 at the end of this function is wrong. My guess is that + we want to reference the data area of m (the mbuf about to be + send) instead at this point. Fix a panic on Xen (where a data + area of a mbuf may be unmapped when the mbuf is freed), and + probably potential data/pool corruption in other cases. + [bouyer, ticket #5938] + + share/man/man4/fast_ipsec.4 1.2-1.3 + + Fix Dd argument; new sentence, new line; sort sections; + typo fixes. + [jmc, ticket #5946] + + distrib/sets/lists/base/md.ibmnws delete + distrib/sets/lists/base/mi 1.576 + distrib/sets/lists/man/md.ibmnws delete + distrib/sets/lists/man/mi 1.835 via patch + gnu/usr.sbin/Makefile 1.14 + + Build ncdcs on everything. Allows better set sharing (and + we don't exclude other 'system specific' binaries from other + builds ala sunlabel, etc), and nuke only md man page in existence, + simplifying man.tgz set sharing. + [jmc, ticket #5948] + + distrib/notes/common/main patch + gnu/usr.bin/groff/tmac/mdoc.local patch + share/tmac/doc-common patch + sys/sys/param.h patch + doc/LAST_MINUTE patch + + Welcome to 2.0.3 Index: src/doc/LAST_MINUTE diff -c src/doc/LAST_MINUTE:1.2.2.2 src/doc/LAST_MINUTE:1.2.2.5 *** src/doc/LAST_MINUTE:1.2.2.2 Mon Dec 6 05:46:24 2004 --- src/doc/LAST_MINUTE Sat Oct 29 23:41:50 2005 *************** *** 1,18 **** ! # $NetBSD: LAST_MINUTE,v 1.2.2.2 2004/12/06 05:46:24 jmc Exp $ ! This file contains important information on the NetBSD 2.0 release that did not make it into the main documentation. [cats] The xserver does not currently work with module support for cats. This will be fixed shortly and released as part of the 2.1 release. - - [sparc64] - - There are 3 known PR's dealing with cache related memory corruption - issues: 24126, 25669, 27730 - - Fixes for these have been identified but did not make the 2.0 release. - They will be part of the source/binary release for 2.1 and available - on the 2.0 source tree immediately after release. --- 1,9 ---- ! # $NetBSD: LAST_MINUTE,v 1.2.2.5 2005/10/29 23:41:50 jmc Exp $ ! This file contains important information on the NetBSD 2.0.3 release that did not make it into the main documentation. [cats] The xserver does not currently work with module support for cats. This will be fixed shortly and released as part of the 2.1 release. Index: src/doc/README.files diff -c src/doc/README.files:1.2 src/doc/README.files:1.2.2.2 *** src/doc/README.files:1.2 Mon Sep 23 08:02:34 2002 --- src/doc/README.files Thu Oct 27 02:25:02 2005 *************** *** 1,8 **** ! # $NetBSD: README.files,v 1.2 2002/09/23 08:02:34 lukem Exp $ What's in this directory: ! CHANGES Changes between the XXX.XXX-1 and XXX.XXX releases. CHANGES.prev Changes in previous NetBSD releases. --- 1,16 ---- ! # $NetBSD: README.files,v 1.2.2.2 2005/10/27 02:25:02 jmc Exp $ What's in this directory: ! CHANGES-2.0.3 Changes between the 2.0.2 and 2.0.3 releases. ! ! CHANGES-2.0.2 Changes between the 2.0.1 and 2.0.2 releases. ! ! CHANGES-2.0.1 Changes between the 2.0 and 2.0.1 releases. ! ! CHANGES-2.0 Changes between the original 2.0 branch and the 2.0 release. ! ! CHANGES Changes between the 1.6 and 2.0 releases. CHANGES.prev Changes in previous NetBSD releases. *************** *** 24,30 **** In addition to the files and directories listed above, there is one directory per architecture, for each of the architectures for which ! NetBSD XXX.XXX has a binary distribution. The contents of each architecture's directory are described in an "INSTALL" file found in that directory. --- 32,38 ---- In addition to the files and directories listed above, there is one directory per architecture, for each of the architectures for which ! NetBSD 2.0.2 has a binary distribution. The contents of each architecture's directory are described in an "INSTALL" file found in that directory. Index: src/etc/mtree/NetBSD.dist diff -c src/etc/mtree/NetBSD.dist:1.259.2.2 src/etc/mtree/NetBSD.dist:1.259.2.3 *** src/etc/mtree/NetBSD.dist:1.259.2.2 Mon May 10 15:00:20 2004 --- src/etc/mtree/NetBSD.dist Tue Sep 6 01:33:43 2005 *************** *** 1,4 **** ! # $NetBSD: NetBSD.dist,v 1.259.2.2 2004/05/10 15:00:20 tron Exp $ # @(#)4.4BSD.dist 8.1 (Berkeley) 6/13/93 /set type=dir uname=root gname=wheel mode=0755 --- 1,4 ---- ! # $NetBSD: NetBSD.dist,v 1.259.2.3 2005/09/06 01:33:43 riz Exp $ # @(#)4.4BSD.dist 8.1 (Berkeley) 6/13/93 /set type=dir uname=root gname=wheel mode=0755 *************** *** 1032,1037 **** --- 1032,1038 ---- ./usr/share/zoneinfo ./usr/share/zoneinfo/Africa ./usr/share/zoneinfo/America + ./usr/share/zoneinfo/America/Argentina ./usr/share/zoneinfo/America/Indiana ./usr/share/zoneinfo/America/Kentucky ./usr/share/zoneinfo/America/North_Dakota Index: src/gnu/dist/binutils/bfd/ChangeLog diff -c src/gnu/dist/binutils/bfd/ChangeLog:1.1.1.1 src/gnu/dist/binutils/bfd/ChangeLog:1.1.1.1.2.1 *** src/gnu/dist/binutils/bfd/ChangeLog:1.1.1.1 Wed Nov 26 11:32:02 2003 --- src/gnu/dist/binutils/bfd/ChangeLog Wed Mar 16 19:11:16 2005 *************** *** 1,3 **** --- 1,9 ---- + 2005-01-10 Eric Botcazou + + * elf64-sparc.c (sparc64_elf_adjust_dynamic_symbol): When linking a + non-shared object, do not reserve space in .plt and .rela.plt for + regular symbols neither defined nor referenced in shared objects. + 2003-06-12 Daniel Jacobowitz * configure.in: Bump version to 2.14. Index: src/gnu/dist/binutils/bfd/elf64-sparc.c diff -c src/gnu/dist/binutils/bfd/elf64-sparc.c:1.2 src/gnu/dist/binutils/bfd/elf64-sparc.c:1.2.2.1 *** src/gnu/dist/binutils/bfd/elf64-sparc.c:1.2 Thu Nov 27 09:45:33 2003 --- src/gnu/dist/binutils/bfd/elf64-sparc.c Wed Mar 16 19:11:27 2005 *************** *** 1635,1641 **** || h->root.type == bfd_link_hash_defweak) && (h->root.u.def.section->flags & SEC_CODE) != 0)) { ! if (! elf_hash_table (info)->dynamic_sections_created) { /* This case can occur if we saw a WPLT30 reloc in an input file, but none of the input files were dynamic objects. --- 1635,1645 ---- || h->root.type == bfd_link_hash_defweak) && (h->root.u.def.section->flags & SEC_CODE) != 0)) { ! if (! info->shared ! && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0 ! && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0 ! && h->root.type != bfd_link_hash_undefweak ! && h->root.type != bfd_link_hash_undefined) { /* This case can occur if we saw a WPLT30 reloc in an input file, but none of the input files were dynamic objects. Index: src/gnu/dist/cvs/AUTHORS diff -c src/gnu/dist/cvs/AUTHORS:1.2 src/gnu/dist/cvs/AUTHORS:1.2.2.1 *** src/gnu/dist/cvs/AUTHORS:1.2 Wed Dec 10 06:09:52 2003 --- src/gnu/dist/cvs/AUTHORS Wed Jul 6 20:12:36 2005 *************** *** 52,57 **** --- 52,59 ---- enhancing CVS for some years. Mark D. Baushke came on in 2003. + Conrad Pino began maintaining the Windows port in 2004. + There have been many, many contributions not listed here. Consult the individual ChangeLog files in each directory for a more complete idea. Index: src/gnu/dist/cvs/BUGS diff -c src/gnu/dist/cvs/BUGS:1.1.1.2.2.1 src/gnu/dist/cvs/BUGS:1.1.1.2.2.2 *** src/gnu/dist/cvs/BUGS:1.1.1.2.2.1 Thu May 20 04:30:48 2004 --- src/gnu/dist/cvs/BUGS Wed Jul 6 20:12:36 2005 *************** *** 95,109 **** formats. - * `release' of a project subdir does not remove the `subdir' entry from - `./CVS/Entries'. - - - * Most of the remote commands are encountering assertion failures when listing - the toplevel of the repository (e.g. `cvs rlog .'). This appears to be - related to the symlinked CVS root fix. - - * Status /*-------. --- 95,100 ---- Index: src/gnu/dist/cvs/ChangeLog diff -c src/gnu/dist/cvs/ChangeLog:1.1.1.7.2.2 src/gnu/dist/cvs/ChangeLog:1.1.1.7.2.3 *** src/gnu/dist/cvs/ChangeLog:1.1.1.7.2.2 Fri Jul 23 08:03:01 2004 --- src/gnu/dist/cvs/ChangeLog Wed Jul 6 20:12:36 2005 *************** *** 1,3 **** --- 1,123 ---- + 2005-04-15 Derek Price + + * NEWS: Note Klocwork fixes. + + 2005-04-14 Derek Price + + * NEWS: Note contrib Perl taint vulnerability fix. + + 2005-03-23 Derek Price + + * ylwrap: New file. + + 2005-03-15 Derek Price + + * HACKING, NEWS: Note new Automake version. + + 2005-03-04 Jim Hyslop + + * NEWS: Note fix for compile errors on IRIX 5.3. + + 2005-02-22 Derek Price + + * NEWS: Note recent watch on/off fileattr fix. + + 2005-01-31 Derek Price + + * AUTHORS: Add Conrad Pino. + * README: Update copyright notice. + + 2005-01-29 Derek Price + + * NEWS: Note some recent changes. + + 2004-11-17 Derek Price + + * NEWS: Note "red file" fix source inclusion. + + 2004-11-05 Conrad T. Pino + + * cvsnt.dep: Regenerated after complete rebuild. + * cvsnt.mak: Regenerated after complete rebuild. + + 2004-11-03 Derek Price + + * HACKING, NEWS: Note new Autoconf & Automake versions. + + 2004-10-29 Derek Price + + * NEWS: Note xreadlink fix. + + 2004-10-26 Derek Price + + * NEWS: Note GSSAPI error message fix. + + 2004-10-19 Derek Price + + * NEWS: Note resurrection fix. + + 2004-10-14 Derek Price + + * NEWS: Note new import branch verification. + + 2004-09-25 Derek Price + + * configure.in: Use doc/mkman.pl as source for doc/mkman. + + 2004-09-08 Conrad T. Pino + + * cvsnt.dsp: Add "windows-NT/JmgStat.c" to project. Add + "windows-NT/JmgStat.h" to project. Add "lib/xsize.h" to project. + * cvsnt.dep: Regenerated for "cvsnt.dsp" change. + * cvsnt.mak: Regenerated for "cvsnt.dsp" change. + + 2004-09-07 Derek Price + + * NEWS: Note Windows DST fix. + + 2004-09-03 Derek Price + + * HACKING: Codify backwards compatibility conventions. Remove outdated + reference to very old MSVC++ releases. + + 2004-08-30 Derek Price + + * NEWS: Note compliance of log_accum.pl with Perl 5.8.5. + + 2004-08-24 Derek Price + + * TODO (24, 49, 92, 113): Remove completed/obsolescent items. + + 2004-08-24 Derek Price + + * BUGS: Remove release subdir note. This was fixed with the commit on + 2004-02-25, based on Matthew Ogilvie's patch. + + 2004-08-24 Derek Price + + * NEWS: Note r* . fix. + * BUGS: Remove r* . note. + + 2004-08-24 Derek Price + + * NEWS: Note invalid tag fix. + + 2004-08-24 Mark D. Baushke + + * NEWS: Note that modules -a bugfix has a change in behavior. + + 2004-06-22 Derek Price + + * NEWS: Note Conrad's Windows fix. + + 2004-06-21 Derek Price + + * .cvsignore: Ignore GPG signature files for distributions. + + 2004-06-10 Derek Price + + * NEWS: Note manual update. + 2004-06-09 Derek Price * NEWS: Note Stefan & Sebastian's security fixes. Index: src/gnu/dist/cvs/HACKING diff -c src/gnu/dist/cvs/HACKING:1.1.1.3.2.1 src/gnu/dist/cvs/HACKING:1.1.1.3.2.2 *** src/gnu/dist/cvs/HACKING:1.1.1.3.2.1 Thu May 20 04:30:48 2004 --- src/gnu/dist/cvs/HACKING Wed Jul 6 20:12:36 2005 *************** *** 21,26 **** --- 21,41 ---- $ CFLAGS="-g -Wall" ./config.status --recheck + * Backwards Compatibility + + Only bug fixes are accepted into the stable branch. New features should be + applied to the trunk. + + If it is not inextricable from a bug fix, CVS's output (to stdout/stderr) + should not be changed on the stable branch in order to best support scripts and + other tools which parse CVS's output. It is ok to change output between + feature releases (on the trunk), though such changes should be noted in the + NEWS file. + + Changes in the way CVS responds to command line options, config options, etc. + should be accompanied by deprecation warnings for an entire stable series of + releases before being changed permanently, if at all possible. + * Indentation style CVS mostly uses a consistent indentation style which looks like this: *************** *** 100,109 **** and perhaps an exception or two we haven't mentioned). This is the file standards.text at the GNU FTP sites. - Filenames for .c and .h files may contain _ but should not contain - - (the latter causes Visual C++ 2.1 to create makefiles which Visual C++ - 4.0 cannot use). - * Regenerating Build Files On UNIX, if you wish to change the Build files, you will need Autoconf and --- 115,120 ---- *************** *** 115,122 **** automatically aren't included in the generated Makefiles unless you run configure with the --enable-maintainer-mode option. ! The CVS Makefiles and configure script were built using Automake 1.7.9 and ! Autoconf 2.58, respectively. There is a known bug in Autoconf 2.57 that will prevent the configure scripts it generates from working on some platforms. Other combinations of --- 126,133 ---- automatically aren't included in the generated Makefiles unless you run configure with the --enable-maintainer-mode option. ! The CVS Makefiles and configure script were built using Automake 1.9.5 and ! Autoconf 2.59, respectively. There is a known bug in Autoconf 2.57 that will prevent the configure scripts it generates from working on some platforms. Other combinations of Index: src/gnu/dist/cvs/Makefile.in diff -c src/gnu/dist/cvs/Makefile.in:1.1.1.5.2.1 src/gnu/dist/cvs/Makefile.in:1.1.1.5.2.2 *** src/gnu/dist/cvs/Makefile.in:1.1.1.5.2.1 Thu May 20 04:30:48 2004 --- src/gnu/dist/cvs/Makefile.in Wed Jul 6 20:12:36 2005 *************** *** 1,8 **** ! # Makefile.in generated by automake 1.7.9 from Makefile.am. # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. --- 1,8 ---- ! # Makefile.in generated by automake 1.9.5 from Makefile.am. # @configure_input@ ! # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ! # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. *************** *** 28,34 **** # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. - srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ --- 28,33 ---- *************** *** 36,42 **** pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 --- 35,40 ---- *************** *** 50,55 **** --- 48,93 ---- NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : + subdir = . + DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(srcdir)/cvs.spec.in $(top_srcdir)/configure \ + $(top_srcdir)/emx/Makefile.in $(top_srcdir)/os2/Makefile.in \ + $(top_srcdir)/zlib/Makefile.in AUTHORS COPYING COPYING.LIB \ + ChangeLog INSTALL NEWS TODO compile depcomp install-sh \ + mdate-sh missing mkinstalldirs ylwrap + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) + am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno + mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + CONFIG_HEADER = config.h + CONFIG_CLEAN_FILES = cvs.spec emx/Makefile os2/Makefile zlib/Makefile + SOURCES = + DIST_SOURCES = + RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive + ETAGS = etags + CTAGS = ctags + DIST_SUBDIRS = $(SUBDIRS) + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + distdir = $(PACKAGE)-$(VERSION) + top_distdir = $(distdir) + am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 + GZIP_ENV = --best + distuninstallcheck_listfiles = find . -type f -print + distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ *************** *** 119,124 **** --- 157,164 ---- am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ + am__tar = @am__tar@ + am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ datadir = @datadir@ *************** *** 132,137 **** --- 172,178 ---- libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ + mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ *************** *** 147,153 **** SUBDIRS = $(USOURCE_SUBDIRS) man doc contrib tools \ windows-NT os2 emx vms - EXTRA_DIST = \ .cvsignore \ BUGS \ --- 188,193 ---- *************** *** 168,210 **** cvs.spec \ mktemp.sh - subdir = . - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs - CONFIG_HEADER = config.h - CONFIG_CLEAN_FILES = cvs.spec emx/Makefile os2/Makefile zlib/Makefile - DIST_SOURCES = - - RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ - ps-recursive install-info-recursive uninstall-info-recursive \ - all-recursive install-data-recursive install-exec-recursive \ - installdirs-recursive install-recursive uninstall-recursive \ - check-recursive installcheck-recursive - DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure AUTHORS \ - COPYING COPYING.LIB ChangeLog INSTALL Makefile.am NEWS TODO \ - acinclude.m4 aclocal.m4 compile config.h.in configure \ - configure.in cvs.spec.in depcomp install-sh mdate-sh missing \ - mkinstalldirs - DIST_SUBDIRS = $(SUBDIRS) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: ! ! am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ! configure.lineno ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) ! $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck - $(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) ! $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 --- 208,249 ---- cvs.spec \ mktemp.sh all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: ! am--refresh: ! @: ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ! @for dep in $?; do \ ! case '$(am__configure_deps)' in \ ! *$$dep*) \ ! echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ ! cd $(srcdir) && $(AUTOMAKE) --gnu \ ! && exit 0; \ ! exit 1;; \ ! esac; \ ! done; \ ! echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile ! .PRECIOUS: Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! @case '$?' in \ ! *config.status*) \ ! echo ' $(SHELL) ./config.status'; \ ! $(SHELL) ./config.status;; \ ! *) \ ! echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ ! cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ ! esac; ! $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck ! $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ! cd $(srcdir) && $(AUTOCONF) ! $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 *************** *** 216,229 **** stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h ! ! $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOHEADER) ! touch $(srcdir)/config.h.in distclean-hdr: -rm -f config.h stamp-h1 ! cvs.spec: $(top_builddir)/config.status cvs.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ emx/Makefile: $(top_builddir)/config.status $(top_srcdir)/emx/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ --- 255,268 ---- stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h ! $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) ! rm -f stamp-h1 ! touch $@ distclean-hdr: -rm -f config.h stamp-h1 ! cvs.spec: $(top_builddir)/config.status $(srcdir)/cvs.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ emx/Makefile: $(top_builddir)/config.status $(top_srcdir)/emx/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ *************** *** 240,246 **** # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): ! @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ --- 279,291 ---- # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): ! @failcom='exit 1'; \ ! for f in x $$MAKEFLAGS; do \ ! case $$f in \ ! *=* | --[!k]*);; \ ! *k*) failcom='fail=yes';; \ ! esac; \ ! done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ *************** *** 252,258 **** local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ ! || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ --- 297,303 ---- local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ ! || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ *************** *** 260,266 **** mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: ! @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ --- 305,317 ---- mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: ! @failcom='exit 1'; \ ! for f in x $$MAKEFLAGS; do \ ! case $$f in \ ! *=* | --[!k]*);; \ ! *k*) failcom='fail=yes';; \ ! esac; \ ! done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *************** *** 281,287 **** local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ ! || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ --- 332,338 ---- local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ ! || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ *************** *** 292,305 **** test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done - ETAGS = etags - ETAGSFLAGS = - - CTAGS = ctags - CTAGSFLAGS = - - tags: TAGS - ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ --- 343,348 ---- *************** *** 308,326 **** $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! if (etags --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ else \ include_option=--include; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ ! test -f $$subdir/TAGS && \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ --- 351,372 ---- $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique + tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ + empty_fix=.; \ else \ include_option=--include; \ + empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ ! test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ *************** *** 330,339 **** done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) --- 376,386 ---- done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ! test -n "$$unique" || unique=$$empty_fix; \ ! $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique; \ ! fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) *************** *** 356,379 **** distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - - top_distdir = . - distdir = $(PACKAGE)-$(VERSION) - - am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } - - GZIP_ENV = --best - distuninstallcheck_listfiles = find . -type f -print - distcleancheck_listfiles = find . -type f -print distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) ! $(mkinstalldirs) $(distdir)/. $(distdir)/contrib $(distdir)/doc $(distdir)/emx $(distdir)/os2 $(distdir)/src $(distdir)/windows-NT $(distdir)/zlib @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ --- 403,413 ---- distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) ! $(mkdir_p) $(distdir)/. $(distdir)/contrib $(distdir)/doc $(distdir)/emx $(distdir)/lib $(distdir)/os2 $(distdir)/src $(distdir)/windows-NT $(distdir)/zlib @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ *************** *** 385,391 **** dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ --- 419,425 ---- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ *************** *** 400,414 **** || exit 1; \ fi; \ done ! list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ ! test -d $(distdir)/$$subdir \ ! || mkdir $(distdir)/$$subdir \ || exit 1; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ ! top_distdir="$(top_distdir)" \ ! distdir=../$(distdir)/$$subdir \ distdir) \ || exit 1; \ fi; \ --- 434,450 ---- || exit 1; \ fi; \ done ! list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ ! test -d "$(distdir)/$$subdir" \ ! || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ ! top_distdir="$$top_distdir" \ ! distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ *************** *** 419,442 **** ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir ! $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) - dist-bzip2: distdir ! $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist dist-all: distdir ! $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ! $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist ! $(am__remove_distdir) ! GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst --- 455,500 ---- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir ! tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir ! tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 ! $(am__remove_distdir) ! ! dist-tarZ: distdir ! tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z ! $(am__remove_distdir) ! ! dist-shar: distdir ! shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz ! $(am__remove_distdir) ! ! dist-zip: distdir ! -rm -f $(distdir).zip ! zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir ! tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ! tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist ! case '$(DIST_ARCHIVES)' in \ ! *.tar.gz*) \ ! GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ ! *.tar.bz2*) \ ! bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ ! *.tar.Z*) \ ! uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ ! *.shar.gz*) \ ! GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ ! *.zip*) \ ! unzip $(distdir).zip ;;\ ! esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst *************** *** 456,474 **** distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ ! (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ ! && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ ! && rm -f $(distdir).tar.gz \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) ! @echo "$(distdir).tar.gz is ready for distribution" | \ ! sed 'h;s/./=/g;p;x;p;x' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ --- 514,533 ---- distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ ! (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ ! && $(MAKE) $(AM_MAKEFLAGS) dist \ ! && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) ! @(echo "$(distdir) archives ready for distribution: "; \ ! list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ ! sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ *************** *** 492,498 **** all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: - install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive --- 551,556 ---- *************** *** 512,518 **** clean-generic: distclean-generic: ! -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" --- 570,576 ---- clean-generic: distclean-generic: ! -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" *************** *** 530,535 **** --- 588,595 ---- dvi-am: + html: html-recursive + info: info-recursive info-am: *************** *** 566,587 **** uninstall-info: uninstall-info-recursive ! .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ ! clean-generic clean-recursive ctags ctags-recursive dist \ ! dist-all dist-bzip2 dist-gzip distcheck distclean \ ! distclean-generic distclean-hdr distclean-recursive \ ! distclean-tags distcleancheck distdir distuninstallcheck dvi \ ! dvi-am dvi-recursive info info-am info-recursive install \ ! install-am install-data install-data-am install-data-recursive \ ! install-exec install-exec-am install-exec-recursive \ ! install-info install-info-am install-info-recursive install-man \ ! install-recursive install-strip installcheck installcheck-am \ ! installdirs installdirs-am installdirs-recursive \ ! maintainer-clean maintainer-clean-generic \ ! maintainer-clean-recursive mostlyclean mostlyclean-generic \ ! mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \ ! ps-recursive tags tags-recursive uninstall uninstall-am \ ! uninstall-info-am uninstall-info-recursive uninstall-recursive .PHONY: localcheck remotecheck --- 626,645 ---- uninstall-info: uninstall-info-recursive ! .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ ! check-am clean clean-generic clean-recursive ctags \ ! ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ ! dist-tarZ dist-zip distcheck distclean distclean-generic \ ! distclean-hdr distclean-recursive distclean-tags \ ! distcleancheck distdir distuninstallcheck dvi dvi-am html \ ! html-am info info-am install install-am install-data \ ! install-data-am install-exec install-exec-am install-info \ ! install-info-am install-man install-strip installcheck \ ! installcheck-am installdirs installdirs-am maintainer-clean \ ! maintainer-clean-generic maintainer-clean-recursive \ ! mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ ! pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ ! uninstall-info-am .PHONY: localcheck remotecheck Index: src/gnu/dist/cvs/NEWS diff -c src/gnu/dist/cvs/NEWS:1.1.1.7.2.2 src/gnu/dist/cvs/NEWS:1.1.1.7.2.3 *** src/gnu/dist/cvs/NEWS:1.1.1.7.2.2 Fri Jul 23 08:03:01 2004 --- src/gnu/dist/cvs/NEWS Wed Jul 6 20:12:36 2005 *************** *** 1,8 **** ! Changes since 1.11.16: ********************** SERVER SECURITY FIXES * Thanks to Stefan Esser & Sebastian Krahmer, several potential security problems have been fixed. The ones which were considered dangerous enough to catalogue were assigned issue numbers CAN-2004-0416, CAN-2004-0417, & --- 1,132 ---- ! Changes since 1.11.19: ********************** SERVER SECURITY FIXES + * Thanks to a report from Alen Zukich , several minor + security issues have been addressed. One was a buffer overflow that is + potentially serious but which may not be exploitable, assigned CAN-2005-0753 + by the Common Vulnerabilities and Exposures Project + . Other fixes resulting from Alen's report include + repair of an arbitrary free with no known exploit and several plugged memory + leaks and potentially freed NULL pointers which may have been exploitable for + a denial of service attack. + + * Thanks to a report from Craig Monson , minor + potential vulnerabilities in the contributed Perl scripts have been fixed. + The confirmed vulnerability could allow the execution of arbitrary code on + the CVS server, but only if a user already had commit access and if one of + the contrib scripts was installed improperly, a condition which should have + been quickly visible to any administrator. The complete description of the + problem is here: . If + you were making use of any of the contributed trigger scripts on a CVS + server, you should probably still replace them with the new versions, to be + on the safe side. + + Unfortunately, our fix is incomplete. Taint-checking has been enabled in all + the contributed Perl scripts intended to be run as trigger scripts, but no + attempt has been made to ensure that they still run in taint mode. You will + most likely have to tweak the scripts in some way to make them run. Please + send any patches you find necessary back to so that we may + again ship fully enabled scripts in the future. + + You should also make sure that any home-grown Perl scripts that you might + have installed as CVS triggers also have taint-checking enabled. This can be + done by adding `-T' on the scripts' #! lines. Please try running + `perldoc perlsec' if you would like more information on general Perl security + and taint-checking. + + BUG FIXES + + * Thanks to a report and a patch from Georg Scwharz + CVS now builds without error on IRIX 5.3 + + DEVELOPER ISSUES + + * We've standardized on Automake 1.9.5 to get some at new features that make + our jobs easier. See the HACKING file for more on using the autotools with + CVS. + + Changes from 1.11.18 to 1.11.19: + ******************************** + + BUG FIXES + + * Thanks to a patch from Jim Hyslop , issuing + 'cvs watch on' or 'cvs watch off' in an empty directory no longer + clears any watchers in that directory. + + * An intermittant assertion failure in checkout has been fixed. + + * Thanks to a report from Chris Bohn , all the source files + needed for the Windows "red file" fix are actually included in the + distribution. + + * Misc bug and documentation fixes. + + Changes from 1.11.17 to 1.11.18: + ******************************** + + BUG FIXES + + * Thanks to a report from Gottfried Ganssauge , CVS no + longer exits when it encounters links pointing to paths containing more + than 128 characters. + + * Thanks to a report from Dan Peterson , error messages from + GSSAPI servers are no longer truncated. + + * Thanks to a report from Dan Peterson , attempts to resurrect + a file on the trunk that was added on a branch no longer causes an assertion + failure. + + * Thanks to a report from Dan Peterson , imports to branches + like "1.1." no longer create corrupt RCS archives. + + * Thanks to a report from Chris Bohn , links from J.C. Hamlin + , and code posted by Jonathan Gilligan, we think we have + finally corrected the Windows "red-file" (daylight savings time) bug once and + for all. + + * Thanks to a patch from Jeroen Ruigrok/asmodai , the + log_accum.pl script should no longer elicit warnings from Perl 5.8.5. + + * The r* commands (rlog, rls, etc.) can once again handle requests to run + against the entire repository (e.g. `cvs rlog .'). Thanks go to Dan Peterson + for the report. + + * A problem where the attempted access of files via tags beginning with spaces + could cause the CVS server to hang has been fixed. This was a particular + problem with WinCVS clients because users would sometimes accidentally + include spaces in tags pasted into a dialog box. This fix also altered some + of the error messages generated by the use of invalid tags. Thanks go to Dan + Peterson for the report. + + * Thanks to James E Wilson for a bug fix to + modules processing "gcc-core -a !gcc/f gcc" will no longer exclude + gcc/fortran by mistake. + + * Thanks to Conrad Pino , the Windows build works once again. + + * Misc updates to the manual. + + DEVELOPER ISSUES + + * We've standardized on Automake 1.9.3 to get some at new features that make + our jobs easier. See the note below on the Autoconf upgrade for more + details. + + * We've standardized on Autoconf version 2.59 to get presumed bug fixes and + features, but nothing specific. Mostly, once we decide to upgrade one of the + autotools we just figure it'll save time later to grab the most current + versions of the others too. See the HACKING file for more on using the + autotools with CVS. + + Changes from 1.11.16 to 1.11.17: + ******************************** + + SERVER SECURITY FIXES + * Thanks to Stefan Esser & Sebastian Krahmer, several potential security problems have been fixed. The ones which were considered dangerous enough to catalogue were assigned issue numbers CAN-2004-0416, CAN-2004-0417, & Index: src/gnu/dist/cvs/README diff -c src/gnu/dist/cvs/README:1.1.1.4.2.1 src/gnu/dist/cvs/README:1.1.1.4.2.2 *** src/gnu/dist/cvs/README:1.1.1.4.2.1 Thu May 20 04:30:49 2004 --- src/gnu/dist/cvs/README Wed Jul 6 20:12:36 2005 *************** *** 1,12 **** CVS Kit ! Copyright (c) 1993-1994 Brian Berliner ! Copyright (c) 1992 Brian Berliner and Jeff Polk ! Copyright (c) 1989-1992, Brian Berliner ! Copyright (c) 1998-2004 Free Software Foundation, ! Derek Price, ! & Ximbiot ! All Rights Reserved This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,13 ---- CVS Kit ! Copyright (C) 1986-2005 Free Software Foundation, Inc. ! ! Portions Copyright (C) 1998-2005 Derek Price, ! & Ximbiot . ! Portions Copyright (C) 1993-1994 Brian Berliner. ! Portions Copyright (C) 1992 Brian Berliner and Jeff Polk. ! Portions Copyright (C) 1989-1992 Brian Berliner. ! All Rights Reserved This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by Index: src/gnu/dist/cvs/TODO diff -c src/gnu/dist/cvs/TODO:1.1.1.5.2.1 src/gnu/dist/cvs/TODO:1.1.1.5.2.2 *** src/gnu/dist/cvs/TODO:1.1.1.5.2.1 Thu May 20 04:30:49 2004 --- src/gnu/dist/cvs/TODO Wed Jul 6 20:12:36 2005 *************** *** 2,11 **** 22. Catch signals for cleanup when "add"ing files. - 24. Insist on a log message. - (If done, this should be configurable via commitinfo or some new - config file -kingdon, Jun 1995). - 30. Add "rdiff" & "rtag" program options to the modules database. These commands seem hard to use since these commands deal directly with the RCS ,v files. (perhaps should think a little harder about what this is --- 2,7 ---- *************** *** 27,37 **** PRCS 1.0 was particularly bad the way it handled the "invisible state", but 1.2 is significantly better. - 49. cvs xxx commands should be able to deal with files in other - directories. I want to do a cvs add foo/bar.c. - [[ most commands now use the generic recursion processor, but not all; - this note is left here to remind me to fix the others ]] - 52. SCCS has a feature that I would *love* to see in CVS, as it is very useful. One may make a private copy of SCCS suid to a particular user, so other users in the authentication list may check files in and out of --- 23,28 ---- *************** *** 73,85 **** can only support symlinks that are relative and within the scope of the sources being controlled. - 92. Look into this: - After a bit of soul searching via dbx, I realized my sin was that I'd - specified "echo" as the program to call from loginfo. The commit - procedure worked fine till it hit my echo, then silently aborted - leaving the lockfiles intact. Since I needn't use the loginfo - facility, I simply removed those commands and it all works. - 93. Need to think hard about release and development environments. Think about execsets as well. --- 64,69 ---- *************** *** 131,139 **** error. I think a later cvs get sys seemed to work so perhaps something is amiss in handling multiple arguments to cvs get? - 113. The "cvs update" command should tee its output to a log file in ".". - (why? What is wrong with piping stdout to "tee"? -kingdon, Jun 1995) - 119. When importing a directory tree that is under SCCS/RCS control, consider an option to have import checkout the SCCS/RCS files if necessary. (This is if someone wants to import something which --- 115,120 ---- Index: src/gnu/dist/cvs/aclocal.m4 diff -c src/gnu/dist/cvs/aclocal.m4:1.2.2.1 src/gnu/dist/cvs/aclocal.m4:1.2.2.2 *** src/gnu/dist/cvs/aclocal.m4:1.2.2.1 Fri Jul 23 08:03:02 2004 --- src/gnu/dist/cvs/aclocal.m4 Wed Jul 6 20:12:36 2005 *************** *** 1,7 **** ! # generated automatically by aclocal 1.7.9 -*- Autoconf -*- ! # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 ! # Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. --- 1,7 ---- ! # generated automatically by aclocal 1.9.5 -*- Autoconf -*- ! # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ! # 2005 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. *************** *** 11,694 **** # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. ! /* This program is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 2, or (at your option) ! any later version. ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. */ ! ! AC_DEFUN([ACX_WITH_GSSAPI],[ ! # ! # Use --with-gssapi[=DIR] to enable GSSAPI support. ! # ! # defaults to enabled with DIR in default list below ! # ! # Search for /SUNHEA/ and read the comments about this default below. ! # ! AC_ARG_WITH( ! [gssapi], ! AC_HELP_STRING( ! [--with-gssapi], ! [GSSAPI directory (default autoselects)]), , ! [with_gssapi=yes])dnl ! ! dnl ! dnl FIXME - cache withval and obliterate later cache values when options change ! dnl ! # ! # Try to locate a GSSAPI installation if no location was specified, assuming ! # GSSAPI was enabled (the default). ! # ! if test -n "$acx_gssapi_cv_gssapi"; then ! # Granted, this is a slightly ugly way to print this info, but the ! # AC_CHECK_HEADER used in the search for a GSSAPI installation makes using ! # AC_CACHE_CHECK worse ! AC_MSG_CHECKING([for GSSAPI]) ! else :; fi ! AC_CACHE_VAL([acx_gssapi_cv_gssapi], [ ! if test x$with_gssapi = xyes; then ! # --with but no location specified ! # assume a gssapi.h or gssapi/gssapi.h locates our install. ! # ! # This isn't always strictly true. For instance Solaris 7's SUNHEA (header) ! # package installs gssapi.h whether or not the necessary libraries are ! # installed. I'm still not sure whether to consider this a bug. The long ! # way around is to not consider GSSPAI installed unless gss_import_name is ! # found, but that brings up a lot of other hassles, like continuing to let ! # gcc & ld generate the error messages when the user uses --with-gssapi=dir ! # as a debugging aid. The short way around is to disable GSSAPI by default, ! # but I think Sun users have been faced with this for awhile and I haven't ! # heard many complaints. ! acx_gssapi_save_CPPFLAGS=$CPPFLAGS ! for acx_gssapi_cv_gssapi in yes /usr/kerberos /usr/cygnus/kerbnet no; do ! if test x$acx_gssapi_cv_gssapi = xno; then ! break ! fi ! if test x$acx_gssapi_cv_gssapi = xyes; then ! AC_MSG_CHECKING([for GSSAPI]) ! AC_MSG_RESULT([]) ! else ! CPPFLAGS="$acx_gssapi_save_CPPFLAGS -I$acx_gssapi_cv_gssapi/include" ! AC_MSG_CHECKING([for GSSAPI in $acx_gssapi_cv_gssapi]) ! AC_MSG_RESULT([]) ! fi ! unset ac_cv_header_gssapi_h ! unset ac_cv_header_gssapi_gssapi_h ! unset ac_cv_header_krb5_h ! AC_CHECK_HEADERS([gssapi.h gssapi/gssapi.h krb5.h]) ! if (test "$ac_cv_header_gssapi_h" = yes || ! test "$ac_cv_header_gssapi_gssapi_h" = yes) && ! test "$ac_cv_header_krb5_h" = yes; then ! break ! fi ! done ! CPPFLAGS=$acx_gssapi_save_CPPFLAGS ! else ! acx_gssapi_cv_gssapi=$with_gssapi ! fi ! AC_MSG_CHECKING([for GSSAPI]) ! ])dnl ! AC_MSG_RESULT([$acx_gssapi_cv_gssapi]) ! # ! # Set up GSSAPI includes for later use. We don't bother to check for ! # $acx_gssapi_cv_gssapi=no here since that will be caught later. ! # ! if test x$acx_gssapi_cv_gssapi = xyes; then ! # no special includes necessary ! GSSAPI_INCLUDES="" ! else ! # GSSAPI at $acx_gssapi_cv_gssapi (could be 'no') ! GSSAPI_INCLUDES=" -I$acx_gssapi_cv_gssapi/include" ! fi ! ! # ! # Get the rest of the information CVS needs to compile with GSSAPI support ! # ! if test x$acx_gssapi_cv_gssapi != xno; then ! # define HAVE_GSSAPI and set up the includes ! AC_DEFINE([HAVE_GSSAPI], , ! [Define if you have GSSAPI with Kerberos version 5 available.]) ! includeopt=$includeopt$GSSAPI_INCLUDES ! ! # locate any other headers ! acx_gssapi_save_CPPFLAGS=$CPPFLAGS ! CPPFLAGS=$CPPFLAGS$GSSAPI_INCLUDES ! dnl We don't use HAVE_KRB5_H anywhere, but including it here might make it ! dnl easier to spot errors by reading configure output ! AC_CHECK_HEADERS([gssapi.h gssapi/gssapi.h gssapi/gssapi_generic.h krb5.h]) ! # And look through them for GSS_C_NT_HOSTBASED_SERVICE or its alternatives ! AC_CACHE_CHECK( ! [for GSS_C_NT_HOSTBASED_SERVICE], ! [acx_gssapi_cv_gss_c_nt_hostbased_service], ! [ ! acx_gssapi_cv_gss_c_nt_hostbased_service=no ! if test "$ac_cv_header_gssapi_h" = "yes"; then ! AC_EGREP_HEADER( ! [GSS_C_NT_HOSTBASED_SERVICE], [gssapi.h], ! [acx_gssapi_cv_gss_c_nt_hostbased_service=yes], ! [ ! AC_EGREP_HEADER( ! [gss_nt_service_name], [gssapi.h], ! [acx_gssapi_cv_gss_c_nt_hostbased_service=gss_nt_service_name]) ! ]) ! fi ! if test $acx_gssapi_cv_gss_c_nt_hostbased_service = no && ! test "$ac_cv_header_gssapi_gssapi_h" = "yes"; then ! AC_EGREP_HEADER( ! [GSS_C_NT_HOSTBASED_SERVICE], [gssapi/gssapi.h], ! [acx_gssapi_cv_gss_c_nt_hostbased_service=yes], ! [ ! AC_EGREP_HEADER([gss_nt_service_name], [gssapi/gssapi.h], ! [acx_gssapi_cv_gss_c_nt_hostbased_service=gss_nt_service_name]) ! ]) ! else :; fi ! if test $acx_gssapi_cv_gss_c_nt_hostbased_service = no && ! test "$ac_cv_header_gssapi_gssapi_generic_h" = "yes"; then ! AC_EGREP_HEADER( ! [GSS_C_NT_HOSTBASED_SERVICE], [gssapi/gssapi_generic.h], ! [acx_gssapi_cv_gss_c_nt_hostbased_service=yes], ! [ ! AC_EGREP_HEADER( ! [gss_nt_service_name], [gssapi/gssapi_generic.h], ! [acx_gssapi_cv_gss_c_nt_hostbased_service=gss_nt_service_name]) ! ]) ! else :; fi ! ]) ! if test $acx_gssapi_cv_gss_c_nt_hostbased_service != yes && ! test $acx_gssapi_cv_gss_c_nt_hostbased_service != no; then ! # don't define for yes since that means it already means something and ! # don't define for no since we'd rather the compiler catch the error ! # It's debatable whether we'd prefer that the compiler catch the error ! # - it seems our estranged developer is more likely to be familiar with ! # the intricacies of the compiler than with those of autoconf, but by ! # the same token, maybe we'd rather alert them to the fact that most ! # of the support they need to fix the problem is installed if they can ! # simply locate the appropriate symbol. ! AC_DEFINE_UNQUOTED( ! [GSS_C_NT_HOSTBASED_SERVICE], ! [$acx_gssapi_cv_gss_c_nt_hostbased_service], ! [Define to an alternative value if GSS_C_NT_HOSTBASED_SERVICE isn't defined ! in the gssapi.h header file. MIT Kerberos 1.2.1 requires this. Only relevant ! when using GSSAPI.]) ! else :; fi ! ! CPPFLAGS=$acx_gssapi_save_CPPFLAGS ! ! # Expect the libs to be installed parallel to the headers ! # ! # We could try once with and once without, but I'm not sure it's worth the ! # trouble. ! if test x$acx_gssapi_cv_gssapi != xyes; then ! if test -z "$LIBS"; then ! LIBS="-L$acx_gssapi_cv_gssapi/lib" ! else ! LIBS="-L$acx_gssapi_cv_gssapi/lib $LIBS" ! fi ! else :; fi ! ! dnl What happens if we want to enable, say, krb5 and some other GSSAPI ! dnl authentication method at the same time? ! # ! # Some of the order below is particular due to library dependencies ! # ! ! # ! # des Heimdal K 0.3d, but Heimdal seems to be set up such ! # that it could have been installed from elsewhere. ! # ! AC_SEARCH_LIBS([des_set_odd_parity], [des]) ! ! # ! # com_err Heimdal K 0.3d ! # ! # com_err MIT K5 v1.2.2-beta1 ! # ! AC_SEARCH_LIBS([com_err], [com_err]) ! ! # ! # asn1 Heimdal K 0.3d -lcom_err ! # ! AC_SEARCH_LIBS([initialize_asn1_error_table_r], [asn1]) ! ! # ! # resolv required, but not installed by Heimdal K 0.3d ! # ! # resolv MIT K5 1.2.2-beta1 ! # Linux 2.2.17 ! # ! AC_SEARCH_LIBS([__dn_expand], [resolv]) ! ! # ! # crypt Needed by roken under FreeBSD 4.6. ! # ! AC_SEARCH_LIBS([crypt], [crypt]) ! ! # ! # roken Heimdal K 0.3d -lresolv ! # roken FreeBSD 4.6 -lcrypt ! # ! AC_SEARCH_LIBS([roken_gethostbyaddr], [roken]) ! ! # ! # k5crypto MIT K5 v1.2.2-beta1 ! # ! AC_SEARCH_LIBS([valid_enctype], [k5crypto]) ! ! # ! # gen ? ? ? Needed on Irix 5.3 with some ! # Irix 5.3 version of Kerberos. I'm not ! # sure which since Irix didn't ! # get any testing this time ! # around. Original comment: ! # ! # This is necessary on Irix 5.3, in order to link against libkrb5 -- ! # there, an_to_ln.o refers to things defined only in -lgen. ! # ! AC_SEARCH_LIBS([compile], [gen]) ! ! # ! # krb5 ? ? ? -lgen -l??? ! # Irix 5.3 ! # ! # krb5 MIT K5 v1.1.1 ! # ! # krb5 MIT K5 v1.2.2-beta1 -lcrypto -lcom_err ! # Linux 2.2.17 ! # ! # krb5 MIT K5 v1.2.2-beta1 -lcrypto -lcom_err -lresolv ! # ! # krb5 Heimdal K 0.3d -lasn1 -lroken -ldes ! # ! AC_SEARCH_LIBS([krb5_free_context], [krb5]) ! ! # ! # gssapi_krb5 Only lib needed with MIT K5 v1.2.1, so find it first in ! # order to prefer MIT Kerberos. If both MIT & Heimdal ! # Kerberos are installed and in the path, this will leave ! # some of the libraries above in LIBS unnecessarily, but ! # noone would ever do that, right? ! # ! # gssapi_krb5 MIT K5 v1.2.2-beta1 -lkrb5 ! # ! # gssapi Heimdal K 0.3d -lkrb5 ! # ! AC_SEARCH_LIBS([gss_import_name], [gssapi_krb5 gssapi]) ! fi ! ])dnl ! ! ! ! # size_max.m4 serial 2 ! dnl Copyright (C) 2003 Free Software Foundation, Inc. ! dnl This file is free software, distributed under the terms of the GNU ! dnl General Public License. As a special exception to the GNU General ! dnl Public License, this file may be distributed as part of a program ! dnl that contains a configuration script generated by Autoconf, under ! dnl the same distribution terms as the rest of that program. ! ! dnl From Bruno Haible. ! ! AC_DEFUN([gl_SIZE_MAX], ! [ ! AC_CHECK_HEADERS(stdint.h) ! dnl First test whether the system already has SIZE_MAX. ! AC_MSG_CHECKING([for SIZE_MAX]) ! result= ! AC_EGREP_CPP([Found it], [ ! #include ! #if HAVE_STDINT_H ! #include ! #endif ! #ifdef SIZE_MAX ! Found it ! #endif ! ], result=yes) ! if test -z "$result"; then ! dnl Define it ourselves. Here we assume that the type 'size_t' is not wider ! dnl than the type 'unsigned long'. ! dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', ! dnl which is guaranteed to work from LONG_MIN to LONG_MAX. ! _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, ! [#include ], result=?) ! _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, ! [#include ], result=?) ! _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, ! [#include ], result=?) ! if test "$fits_in_uint" = 1; then ! dnl Even though SIZE_MAX fits in an unsigned int, it must be of type ! dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. ! AC_TRY_COMPILE([#include ! extern size_t foo; ! extern unsigned long foo; ! ], [], fits_in_uint=0) ! fi ! if test -z "$result"; then ! if test "$fits_in_uint" = 1; then ! result="$res_hi$res_lo"U ! else ! result="$res_hi$res_lo"UL ! fi ! else ! dnl Shouldn't happen, but who knows... ! result='~(size_t)0' ! fi ! fi ! AC_MSG_RESULT([$result]) ! if test "$result" != yes; then ! AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], ! [Define as the maximum value of type 'size_t', if the system doesn't define it.]) ! fi ! ]) ! ! ! ! # xsize.m4 serial 3 ! dnl Copyright (C) 2003-2004 Free Software Foundation, Inc. ! dnl This file is free software, distributed under the terms of the GNU ! dnl General Public License. As a special exception to the GNU General ! dnl Public License, this file may be distributed as part of a program ! dnl that contains a configuration script generated by Autoconf, under ! dnl the same distribution terms as the rest of that program. ! ! AC_DEFUN([gl_XSIZE], ! [ ! dnl Prerequisites of lib/xsize.h. ! AC_REQUIRE([gl_SIZE_MAX]) ! AC_REQUIRE([AC_C_INLINE]) ! AC_CHECK_HEADERS(stdint.h) ! ]) ! ! # Do all the work for Automake. -*- Autoconf -*- ! ! # This macro actually does too much some checks are only needed if ! # your package does certain things. But this isn't really a big deal. ! ! # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # serial 10 ! ! AC_PREREQ([2.54]) ! ! # Autoconf 2.50 wants to disallow AM_ names. We explicitly allow ! # the ones we care about. ! m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ! ! # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) ! # AM_INIT_AUTOMAKE([OPTIONS]) ! # ----------------------------------------------- ! # The call with PACKAGE and VERSION arguments is the old style ! # call (pre autoconf-2.50), which is being phased out. PACKAGE ! # and VERSION should now be passed to AC_INIT and removed from ! # the call to AM_INIT_AUTOMAKE. ! # We support both call styles for the transition. After ! # the next Automake release, Autoconf can make the AC_INIT ! # arguments mandatory, and then we can depend on a new Autoconf ! # release and drop the old call support. ! AC_DEFUN([AM_INIT_AUTOMAKE], ! [AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ! AC_REQUIRE([AC_PROG_INSTALL])dnl ! # test to see if srcdir already configured ! if test "`cd $srcdir && pwd`" != "`pwd`" && ! test -f $srcdir/config.status; then ! AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ! fi ! ! # test whether we have cygpath ! if test -z "$CYGPATH_W"; then ! if (cygpath --version) >/dev/null 2>/dev/null; then ! CYGPATH_W='cygpath -w' ! else ! CYGPATH_W=echo ! fi ! fi ! AC_SUBST([CYGPATH_W]) ! ! # Define the identity of the package. ! dnl Distinguish between old-style and new-style calls. ! m4_ifval([$2], ! [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl ! AC_SUBST([PACKAGE], [$1])dnl ! AC_SUBST([VERSION], [$2])], ! [_AM_SET_OPTIONS([$1])dnl ! AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl ! AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl ! ! _AM_IF_OPTION([no-define],, ! [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) ! AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl ! ! # Some tools Automake needs. ! AC_REQUIRE([AM_SANITY_CHECK])dnl ! AC_REQUIRE([AC_ARG_PROGRAM])dnl ! AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) ! AM_MISSING_PROG(AUTOCONF, autoconf) ! AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) ! AM_MISSING_PROG(AUTOHEADER, autoheader) ! AM_MISSING_PROG(MAKEINFO, makeinfo) ! AM_MISSING_PROG(AMTAR, tar) ! AM_PROG_INSTALL_SH ! AM_PROG_INSTALL_STRIP ! # We need awk for the "check" target. The system "awk" is bad on ! # some platforms. ! AC_REQUIRE([AC_PROG_AWK])dnl ! AC_REQUIRE([AC_PROG_MAKE_SET])dnl ! AC_REQUIRE([AM_SET_LEADING_DOT])dnl ! ! _AM_IF_OPTION([no-dependencies],, ! [AC_PROVIDE_IFELSE([AC_PROG_CC], ! [_AM_DEPENDENCIES(CC)], ! [define([AC_PROG_CC], ! defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl ! AC_PROVIDE_IFELSE([AC_PROG_CXX], ! [_AM_DEPENDENCIES(CXX)], ! [define([AC_PROG_CXX], ! defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ! ]) ! ]) ! ! ! # When config.status generates a header, we must update the stamp-h file. ! # This file resides in the same directory as the config header ! # that is generated. The stamp files are numbered to have different names. ! ! # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the ! # loop where config.status creates the headers, so we can generate ! # our stamp files there. ! AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], ! [# Compute $1's index in $config_headers. ! _am_stamp_count=1 ! for _am_header in $config_headers :; do ! case $_am_header in ! $1 | $1:* ) ! break ;; ! * ) ! _am_stamp_count=`expr $_am_stamp_count + 1` ;; ! esac ! done ! echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) ! ! # Copyright 2002 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. ! AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], ! [AM_AUTOMAKE_VERSION([1.7.9])]) ! ! # Helper functions for option handling. -*- Autoconf -*- ! ! # Copyright 2001, 2002 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # serial 2 ! # _AM_MANGLE_OPTION(NAME) ! # ----------------------- ! AC_DEFUN([_AM_MANGLE_OPTION], ! [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) ! ! # _AM_SET_OPTION(NAME) ! # ------------------------------ ! # Set option NAME. Presently that only means defining a flag for this option. ! AC_DEFUN([_AM_SET_OPTION], ! [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) ! ! # _AM_SET_OPTIONS(OPTIONS) ! # ---------------------------------- ! # OPTIONS is a space-separated list of Automake options. ! AC_DEFUN([_AM_SET_OPTIONS], ! [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) ! ! # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) ! # ------------------------------------------- ! # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ! AC_DEFUN([_AM_IF_OPTION], ! [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # ! # Check to make sure that the build environment is sane. ! # ! ! # Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # serial 3 ! ! # AM_SANITY_CHECK ! # --------------- ! AC_DEFUN([AM_SANITY_CHECK], ! [AC_MSG_CHECKING([whether build environment is sane]) ! # Just in case ! sleep 1 ! echo timestamp > conftest.file ! # Do `set' in a subshell so we don't clobber the current shell's ! # arguments. Must try -L first in case configure is actually a ! # symlink; some systems play weird games with the mod time of symlinks ! # (eg FreeBSD returns the mod time of the symlink's containing ! # directory). ! if ( ! set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` ! if test "$[*]" = "X"; then ! # -L didn't work. ! set X `ls -t $srcdir/configure conftest.file` ! fi ! rm -f conftest.file ! if test "$[*]" != "X $srcdir/configure conftest.file" \ ! && test "$[*]" != "X conftest.file $srcdir/configure"; then ! ! # If neither matched, then we have a broken ls. This can happen ! # if, for instance, CONFIG_SHELL is bash and it inherits a ! # broken ls alias from the environment. This has actually ! # happened. Such a system could not be considered "sane". ! AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken ! alias in your environment]) ! fi ! ! test "$[2]" = conftest.file ! ) ! then ! # Ok. ! : ! else ! AC_MSG_ERROR([newly created file is older than distributed files! ! Check your system clock]) ! fi ! AC_MSG_RESULT(yes)]) ! ! # -*- Autoconf -*- ! ! ! # Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # serial 3 ! ! # AM_MISSING_PROG(NAME, PROGRAM) ! # ------------------------------ ! AC_DEFUN([AM_MISSING_PROG], ! [AC_REQUIRE([AM_MISSING_HAS_RUN]) ! $1=${$1-"${am_missing_run}$2"} ! AC_SUBST($1)]) ! ! ! # AM_MISSING_HAS_RUN ! # ------------------ ! # Define MISSING if not defined so far and test if it supports --run. ! # If it does, set am_missing_run to use it, otherwise, to nothing. ! AC_DEFUN([AM_MISSING_HAS_RUN], ! [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ! test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ! # Use eval to expand $SHELL ! if eval "$MISSING --run true"; then ! am_missing_run="$MISSING --run " ! else ! am_missing_run= ! AC_MSG_WARN([`missing' script is too old or missing]) ! fi ! ]) ! ! # AM_AUX_DIR_EXPAND ! ! # Copyright 2001 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to --- 11,42 ---- # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. ! # Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. ! AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], ! [AM_AUTOMAKE_VERSION([1.9.5])]) ! # AM_AUX_DIR_EXPAND -*- Autoconf -*- + # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to *************** *** 728,858 **** # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. ! # Rely on autoconf to set up CDPATH properly. ! AC_PREREQ([2.50]) ! ! AC_DEFUN([AM_AUX_DIR_EXPAND], [ # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) ! # AM_PROG_INSTALL_SH ! # ------------------ ! # Define $install_sh. ! ! # Copyright 2001 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! AC_DEFUN([AM_PROG_INSTALL_SH], ! [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ! install_sh=${install_sh-"$am_aux_dir/install-sh"} ! AC_SUBST(install_sh)]) ! ! # AM_PROG_INSTALL_STRIP ! ! # Copyright 2001 Free Software Foundation, Inc. ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # One issue with vendor `install' (even GNU) is that you can't ! # specify the program used to strip binaries. This is especially ! # annoying in cross-compiling environments, where the build's strip ! # is unlikely to handle the host's binaries. ! # Fortunately install-sh will honor a STRIPPROG variable, so we ! # always use install-sh in `make install-strip', and initialize ! # STRIPPROG with the value of the STRIP variable (set by the user). ! AC_DEFUN([AM_PROG_INSTALL_STRIP], ! [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ! # Installed binaries are usually stripped using `strip' when the user ! # run `make install-strip'. However `strip' might not be the right ! # tool to use in cross-compilation environments, therefore Automake ! # will honor the `STRIP' environment variable to overrule this program. ! dnl Don't test for $cross_compiling = yes, because it might be `maybe'. ! if test "$cross_compiling" != no; then ! AC_CHECK_TOOL([STRIP], [strip], :) ! fi ! INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" ! AC_SUBST([INSTALL_STRIP_PROGRAM])]) ! ! # -*- Autoconf -*- ! # Copyright (C) 2003 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! # serial 1 ! # Check whether the underlying file-system supports filenames ! # with a leading dot. For instance MS-DOS doesn't. ! AC_DEFUN([AM_SET_LEADING_DOT], ! [rm -rf .tst 2>/dev/null ! mkdir .tst 2>/dev/null ! if test -d .tst; then ! am__leading_dot=. else ! am__leading_dot=_ fi ! rmdir .tst 2>/dev/null ! AC_SUBST([am__leading_dot])]) ! ! # serial 5 -*- Autoconf -*- ! ! # Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - # This program is free software; you can redistribute it and/or modify - # it under the terms of the GNU General Public License as published by - # the Free Software Foundation; either version 2, or (at your option) - # any later version. ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, --- 76,130 ---- # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. ! AC_DEFUN([AM_AUX_DIR_EXPAND], ! [dnl Rely on autoconf to set up CDPATH properly. ! AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) ! # AM_CONDITIONAL -*- Autoconf -*- ! # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 ! # Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! # serial 7 ! # AM_CONDITIONAL(NAME, SHELL-CONDITION) ! # ------------------------------------- ! # Define a conditional. ! AC_DEFUN([AM_CONDITIONAL], ! [AC_PREREQ(2.52)dnl ! ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], ! [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl ! AC_SUBST([$1_TRUE]) ! AC_SUBST([$1_FALSE]) ! if $2; then ! $1_TRUE= ! $1_FALSE='#' else ! $1_TRUE='#' ! $1_FALSE= fi ! AC_CONFIG_COMMANDS_PRE( ! [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ! AC_MSG_ERROR([[conditional "$1" was never defined. ! Usually this means the macro was only invoked conditionally.]]) ! fi])]) ! # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 ! # Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. + # serial 8 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, *************** *** 861,867 **** # CC etc. in the Makefile, will ask for an AC_PROG_CC use... - # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. --- 133,138 ---- *************** *** 920,926 **** : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c ! : > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf --- 191,199 ---- : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c ! # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ! # Solaris 8's {/usr,}/bin/sh. ! touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf *************** *** 948,956 **** grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings ! # (even with -Werror). So we grep stderr for any message ! # that says an option was ignored. ! if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi --- 221,234 ---- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings ! # or remarks (even with -Werror). So we grep stderr for any message ! # that says an option was ignored or not supported. ! # When given -MP, icc 7.0 and 7.1 complain thusly: ! # icc: Command line warning: ignoring option '-M'; no argument required ! # The diagnosis changed in icc 8.0: ! # icc: Command line remark: option '-MP' not supported ! if (grep 'ignoring option' conftest.err || ! grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi *************** *** 984,991 **** # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, ! [ --disable-dependency-tracking Speeds up one-time builds ! --enable-dependency-tracking Do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' --- 262,269 ---- # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, ! [ --disable-dependency-tracking speeds up one-time build ! --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' *************** *** 994,1019 **** AC_SUBST([AMDEPBACKSLASH]) ]) ! # Generate code to set up dependency tracking. -*- Autoconf -*- ! ! # Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! #serial 2 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ --- 272,287 ---- AC_SUBST([AMDEPBACKSLASH]) ]) ! # Generate code to set up dependency tracking. -*- Autoconf -*- ! # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 ! # Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! #serial 3 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ *************** *** 1032,1058 **** else continue fi ! grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue ! # Extract the definition of DEP_FILES from the Makefile without ! # running `make'. ! DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it ! U=`sed -n -e '/^U = / s///p' < "$mf"` ! test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" ! # We invoke sed twice because it is the simplest approach to ! # changing $(DEPDIR) to its actual value in the expansion. ! for file in `sed -n -e ' ! /^DEP_FILES = .*\\\\$/ { ! s/^DEP_FILES = // ! :loop ! s/\\\\$// ! p ! n ! /\\\\$/ b loop ! p ! } ! /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue --- 300,320 ---- else continue fi ! # Extract the definition of DEPDIR, am__include, and am__quote ! # from the Makefile without running `make'. ! DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it ! U=`sed -n 's/^U = //p' < "$mf"` ! # Find all dependency output files, they are included files with ! # $(DEPDIR) in their names. We invoke sed twice because it is the ! # simplest approach to changing $(DEPDIR) to its actual value in the ! # expansion. ! for file in `sed -n " ! s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue *************** *** 1069,1103 **** # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # ! # This code is only required when automatic dependency tracking ! # is enabled. FIXME. This creates each `.P' file that we will ! # need in order to bootstrap the dependency handling code. ! AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], ! [AC_CONFIG_COMMANDS([depfiles], ! [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], ! [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ! ]) ! # Check to see how 'make' treats includes. -*- Autoconf -*- ! # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! # serial 2 # AM_MAKE_INCLUDE() # ----------------- --- 331,544 ---- # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # ! # This code is only required when automatic dependency tracking ! # is enabled. FIXME. This creates each `.P' file that we will ! # need in order to bootstrap the dependency handling code. ! AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], ! [AC_CONFIG_COMMANDS([depfiles], ! [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], ! [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ! ]) ! ! # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 ! # Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! ! # serial 8 ! ! # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. ! AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) ! ! # Do all the work for Automake. -*- Autoconf -*- ! ! # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 ! # Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! ! # serial 12 ! ! # This macro actually does too much. Some checks are only needed if ! # your package does certain things. But this isn't really a big deal. ! ! # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) ! # AM_INIT_AUTOMAKE([OPTIONS]) ! # ----------------------------------------------- ! # The call with PACKAGE and VERSION arguments is the old style ! # call (pre autoconf-2.50), which is being phased out. PACKAGE ! # and VERSION should now be passed to AC_INIT and removed from ! # the call to AM_INIT_AUTOMAKE. ! # We support both call styles for the transition. After ! # the next Automake release, Autoconf can make the AC_INIT ! # arguments mandatory, and then we can depend on a new Autoconf ! # release and drop the old call support. ! AC_DEFUN([AM_INIT_AUTOMAKE], ! [AC_PREREQ([2.58])dnl ! dnl Autoconf wants to disallow AM_ names. We explicitly allow ! dnl the ones we care about. ! m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ! AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ! AC_REQUIRE([AC_PROG_INSTALL])dnl ! # test to see if srcdir already configured ! if test "`cd $srcdir && pwd`" != "`pwd`" && ! test -f $srcdir/config.status; then ! AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ! fi ! ! # test whether we have cygpath ! if test -z "$CYGPATH_W"; then ! if (cygpath --version) >/dev/null 2>/dev/null; then ! CYGPATH_W='cygpath -w' ! else ! CYGPATH_W=echo ! fi ! fi ! AC_SUBST([CYGPATH_W]) ! ! # Define the identity of the package. ! dnl Distinguish between old-style and new-style calls. ! m4_ifval([$2], ! [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl ! AC_SUBST([PACKAGE], [$1])dnl ! AC_SUBST([VERSION], [$2])], ! [_AM_SET_OPTIONS([$1])dnl ! AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl ! AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl ! ! _AM_IF_OPTION([no-define],, ! [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) ! AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl ! ! # Some tools Automake needs. ! AC_REQUIRE([AM_SANITY_CHECK])dnl ! AC_REQUIRE([AC_ARG_PROGRAM])dnl ! AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) ! AM_MISSING_PROG(AUTOCONF, autoconf) ! AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) ! AM_MISSING_PROG(AUTOHEADER, autoheader) ! AM_MISSING_PROG(MAKEINFO, makeinfo) ! AM_PROG_INSTALL_SH ! AM_PROG_INSTALL_STRIP ! AC_REQUIRE([AM_PROG_MKDIR_P])dnl ! # We need awk for the "check" target. The system "awk" is bad on ! # some platforms. ! AC_REQUIRE([AC_PROG_AWK])dnl ! AC_REQUIRE([AC_PROG_MAKE_SET])dnl ! AC_REQUIRE([AM_SET_LEADING_DOT])dnl ! _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], ! [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], ! [_AM_PROG_TAR([v7])])]) ! _AM_IF_OPTION([no-dependencies],, ! [AC_PROVIDE_IFELSE([AC_PROG_CC], ! [_AM_DEPENDENCIES(CC)], ! [define([AC_PROG_CC], ! defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl ! AC_PROVIDE_IFELSE([AC_PROG_CXX], ! [_AM_DEPENDENCIES(CXX)], ! [define([AC_PROG_CXX], ! defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ! ]) ! ]) ! ! ! # When config.status generates a header, we must update the stamp-h file. ! # This file resides in the same directory as the config header ! # that is generated. The stamp files are numbered to have different names. ! ! # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the ! # loop where config.status creates the headers, so we can generate ! # our stamp files there. ! AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], ! [# Compute $1's index in $config_headers. ! _am_stamp_count=1 ! for _am_header in $config_headers :; do ! case $_am_header in ! $1 | $1:* ) ! break ;; ! * ) ! _am_stamp_count=`expr $_am_stamp_count + 1` ;; ! esac ! done ! echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) ! ! # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! ! # AM_PROG_INSTALL_SH ! # ------------------ ! # Define $install_sh. ! AC_DEFUN([AM_PROG_INSTALL_SH], ! [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ! install_sh=${install_sh-"$am_aux_dir/install-sh"} ! AC_SUBST(install_sh)]) ! ! # Copyright (C) 2003, 2005 Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! ! # serial 2 ! ! # Check whether the underlying file-system supports filenames ! # with a leading dot. For instance MS-DOS doesn't. ! AC_DEFUN([AM_SET_LEADING_DOT], ! [rm -rf .tst 2>/dev/null ! mkdir .tst 2>/dev/null ! if test -d .tst; then ! am__leading_dot=. ! else ! am__leading_dot=_ ! fi ! rmdir .tst 2>/dev/null ! AC_SUBST([am__leading_dot])]) ! ! # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- ! # From Jim Meyering ! ! # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 ! # Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! # serial 4 ! ! AC_DEFUN([AM_MAINTAINER_MODE], ! [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) ! dnl maintainer-mode is disabled by default ! AC_ARG_ENABLE(maintainer-mode, ! [ --enable-maintainer-mode enable make rules and dependencies not useful ! (and sometimes confusing) to the casual installer], ! USE_MAINTAINER_MODE=$enableval, ! USE_MAINTAINER_MODE=no) ! AC_MSG_RESULT([$USE_MAINTAINER_MODE]) ! AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) ! MAINT=$MAINTAINER_MODE_TRUE ! AC_SUBST(MAINT)dnl ! ] ! ) ! AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) ! # Check to see how 'make' treats includes. -*- Autoconf -*- ! # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! # serial 3 # AM_MAKE_INCLUDE() # ----------------- *************** *** 1141,1292 **** rm -f confinc confmf ]) ! # AM_CONDITIONAL -*- Autoconf -*- ! # Copyright 1997, 2000, 2001 Free Software Foundation, Inc. ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! # serial 5 ! AC_PREREQ(2.52) ! # AM_CONDITIONAL(NAME, SHELL-CONDITION) ! # ------------------------------------- ! # Define a conditional. ! AC_DEFUN([AM_CONDITIONAL], ! [ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], ! [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl ! AC_SUBST([$1_TRUE]) ! AC_SUBST([$1_FALSE]) ! if $2; then ! $1_TRUE= ! $1_FALSE='#' else ! $1_TRUE='#' ! $1_FALSE= fi ! AC_CONFIG_COMMANDS_PRE( ! [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ! AC_MSG_ERROR([conditional "$1" was never defined. ! Usually this means the macro was only invoked conditionally.]) ! fi])]) ! # Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- ! # Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! AC_PREREQ([2.52]) ! # serial 6 ! # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. ! AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) ! # Add --enable-maintainer-mode option to configure. ! # From Jim Meyering ! # Copyright 1996, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! # serial 2 ! AC_DEFUN([AM_MAINTAINER_MODE], ! [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) ! dnl maintainer-mode is disabled by default ! AC_ARG_ENABLE(maintainer-mode, ! [ --enable-maintainer-mode enable make rules and dependencies not useful ! (and sometimes confusing) to the casual installer], ! USE_MAINTAINER_MODE=$enableval, ! USE_MAINTAINER_MODE=no) ! AC_MSG_RESULT([$USE_MAINTAINER_MODE]) ! AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) ! MAINT=$MAINTAINER_MODE_TRUE ! AC_SUBST(MAINT)dnl ! ] ! ) ! AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) ! # serial 2 ! # AM_PROG_CC_C_O ! # -------------- ! # Like AC_PROG_CC_C_O, but changed for automake. ! # Copyright 1999, 2000, 2001 Free Software Foundation, Inc. ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! AC_DEFUN([AM_PROG_CC_C_O], ! [AC_REQUIRE([AC_PROG_CC_C_O])dnl ! AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ! # FIXME: we rely on the cache variable name because ! # there is no other way. ! set dummy $CC ! ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` ! if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then ! # Losing compiler, so override with the script. ! # FIXME: It is wrong to rewrite CC. ! # But if we don't then we get into trouble of one sort or another. ! # A longer-term fix would be to have automake use am__CC in this case, ! # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" ! CC="$am_aux_dir/compile $CC" ! fi ! ]) --- 582,920 ---- rm -f confinc confmf ]) ! # Copyright (C) 1999, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! # serial 3 ! # AM_PROG_CC_C_O ! # -------------- ! # Like AC_PROG_CC_C_O, but changed for automake. ! AC_DEFUN([AM_PROG_CC_C_O], ! [AC_REQUIRE([AC_PROG_CC_C_O])dnl ! AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ! # FIXME: we rely on the cache variable name because ! # there is no other way. ! set dummy $CC ! ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` ! if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then ! # Losing compiler, so override with the script. ! # FIXME: It is wrong to rewrite CC. ! # But if we don't then we get into trouble of one sort or another. ! # A longer-term fix would be to have automake use am__CC in this case, ! # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" ! CC="$am_aux_dir/compile $CC" ! fi ! ]) ! # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- ! # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 ! # Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! # serial 4 ! # AM_MISSING_PROG(NAME, PROGRAM) ! # ------------------------------ ! AC_DEFUN([AM_MISSING_PROG], ! [AC_REQUIRE([AM_MISSING_HAS_RUN]) ! $1=${$1-"${am_missing_run}$2"} ! AC_SUBST($1)]) ! ! ! # AM_MISSING_HAS_RUN ! # ------------------ ! # Define MISSING if not defined so far and test if it supports --run. ! # If it does, set am_missing_run to use it, otherwise, to nothing. ! AC_DEFUN([AM_MISSING_HAS_RUN], ! [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ! test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ! # Use eval to expand $SHELL ! if eval "$MISSING --run true"; then ! am_missing_run="$MISSING --run " else ! am_missing_run= ! AC_MSG_WARN([`missing' script is too old or missing]) fi ! ]) ! # Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! # AM_PROG_MKDIR_P ! # --------------- ! # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. ! # ! # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories ! # created by `make install' are always world readable, even if the ! # installer happens to have an overly restrictive umask (e.g. 077). ! # This was a mistake. There are at least two reasons why we must not ! # use `-m 0755': ! # - it causes special bits like SGID to be ignored, ! # - it may be too restrictive (some setups expect 775 directories). ! # ! # Do not use -m 0755 and let people choose whatever they expect by ! # setting umask. ! # ! # We cannot accept any implementation of `mkdir' that recognizes `-p'. ! # Some implementations (such as Solaris 8's) are not thread-safe: if a ! # parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' ! # concurrently, both version can detect that a/ is missing, but only ! # one can create it and the other will error out. Consequently we ! # restrict ourselves to GNU make (using the --version option ensures ! # this.) ! AC_DEFUN([AM_PROG_MKDIR_P], ! [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then ! # We used to keeping the `.' as first argument, in order to ! # allow $(mkdir_p) to be used without argument. As in ! # $(mkdir_p) $(somedir) ! # where $(somedir) is conditionally defined. However this is wrong ! # for two reasons: ! # 1. if the package is installed by a user who cannot write `.' ! # make install will fail, ! # 2. the above comment should most certainly read ! # $(mkdir_p) $(DESTDIR)$(somedir) ! # so it does not work when $(somedir) is undefined and ! # $(DESTDIR) is not. ! # To support the latter case, we have to write ! # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), ! # so the `.' trick is pointless. ! mkdir_p='mkdir -p --' ! else ! # On NextStep and OpenStep, the `mkdir' command does not ! # recognize any option. It will interpret all options as ! # directories to create, and then abort because `.' already ! # exists. ! for d in ./-p ./--version; ! do ! test -d $d && rmdir $d ! done ! # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. ! if test -f "$ac_aux_dir/mkinstalldirs"; then ! mkdir_p='$(mkinstalldirs)' ! else ! mkdir_p='$(install_sh) -d' ! fi ! fi ! AC_SUBST([mkdir_p])]) ! # Helper functions for option handling. -*- Autoconf -*- ! # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! # serial 3 ! # _AM_MANGLE_OPTION(NAME) ! # ----------------------- ! AC_DEFUN([_AM_MANGLE_OPTION], ! [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) ! # _AM_SET_OPTION(NAME) ! # ------------------------------ ! # Set option NAME. Presently that only means defining a flag for this option. ! AC_DEFUN([_AM_SET_OPTION], ! [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) ! # _AM_SET_OPTIONS(OPTIONS) ! # ---------------------------------- ! # OPTIONS is a space-separated list of Automake options. ! AC_DEFUN([_AM_SET_OPTIONS], ! [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) ! # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) ! # ------------------------------------------- ! # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ! AC_DEFUN([_AM_IF_OPTION], ! [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) ! # Check to make sure that the build environment is sane. -*- Autoconf -*- ! # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 ! # Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! # serial 4 ! # AM_SANITY_CHECK ! # --------------- ! AC_DEFUN([AM_SANITY_CHECK], ! [AC_MSG_CHECKING([whether build environment is sane]) ! # Just in case ! sleep 1 ! echo timestamp > conftest.file ! # Do `set' in a subshell so we don't clobber the current shell's ! # arguments. Must try -L first in case configure is actually a ! # symlink; some systems play weird games with the mod time of symlinks ! # (eg FreeBSD returns the mod time of the symlink's containing ! # directory). ! if ( ! set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` ! if test "$[*]" = "X"; then ! # -L didn't work. ! set X `ls -t $srcdir/configure conftest.file` ! fi ! rm -f conftest.file ! if test "$[*]" != "X $srcdir/configure conftest.file" \ ! && test "$[*]" != "X conftest.file $srcdir/configure"; then ! # If neither matched, then we have a broken ls. This can happen ! # if, for instance, CONFIG_SHELL is bash and it inherits a ! # broken ls alias from the environment. This has actually ! # happened. Such a system could not be considered "sane". ! AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken ! alias in your environment]) ! fi ! test "$[2]" = conftest.file ! ) ! then ! # Ok. ! : ! else ! AC_MSG_ERROR([newly created file is older than distributed files! ! Check your system clock]) ! fi ! AC_MSG_RESULT(yes)]) ! # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! # AM_PROG_INSTALL_STRIP ! # --------------------- ! # One issue with vendor `install' (even GNU) is that you can't ! # specify the program used to strip binaries. This is especially ! # annoying in cross-compiling environments, where the build's strip ! # is unlikely to handle the host's binaries. ! # Fortunately install-sh will honor a STRIPPROG variable, so we ! # always use install-sh in `make install-strip', and initialize ! # STRIPPROG with the value of the STRIP variable (set by the user). ! AC_DEFUN([AM_PROG_INSTALL_STRIP], ! [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ! # Installed binaries are usually stripped using `strip' when the user ! # run `make install-strip'. However `strip' might not be the right ! # tool to use in cross-compilation environments, therefore Automake ! # will honor the `STRIP' environment variable to overrule this program. ! dnl Don't test for $cross_compiling = yes, because it might be `maybe'. ! if test "$cross_compiling" != no; then ! AC_CHECK_TOOL([STRIP], [strip], :) ! fi ! INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" ! AC_SUBST([INSTALL_STRIP_PROGRAM])]) ! # Check how to create a tarball. -*- Autoconf -*- ! # Copyright (C) 2004, 2005 Free Software Foundation, Inc. ! # ! # This file is free software; the Free Software Foundation ! # gives unlimited permission to copy and/or distribute it, ! # with or without modifications, as long as this notice is preserved. ! # serial 2 ! ! # _AM_PROG_TAR(FORMAT) ! # -------------------- ! # Check how to create a tarball in format FORMAT. ! # FORMAT should be one of `v7', `ustar', or `pax'. ! # ! # Substitute a variable $(am__tar) that is a command ! # writing to stdout a FORMAT-tarball containing the directory ! # $tardir. ! # tardir=directory && $(am__tar) > result.tar ! # ! # Substitute a variable $(am__untar) that extract such ! # a tarball read from stdin. ! # $(am__untar) < result.tar ! AC_DEFUN([_AM_PROG_TAR], ! [# Always define AMTAR for backward compatibility. ! AM_MISSING_PROG([AMTAR], [tar]) ! m4_if([$1], [v7], ! [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], ! [m4_case([$1], [ustar],, [pax],, ! [m4_fatal([Unknown tar format])]) ! AC_MSG_CHECKING([how to create a $1 tar archive]) ! # Loop over all known methods to create a tar archive until one works. ! _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' ! _am_tools=${am_cv_prog_tar_$1-$_am_tools} ! # Do not fold the above two line into one, because Tru64 sh and ! # Solaris sh will not grok spaces in the rhs of `-'. ! for _am_tool in $_am_tools ! do ! case $_am_tool in ! gnutar) ! for _am_tar in tar gnutar gtar; ! do ! AM_RUN_LOG([$_am_tar --version]) && break ! done ! am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' ! am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' ! am__untar="$_am_tar -xf -" ! ;; ! plaintar) ! # Must skip GNU tar: if it does not support --format= it doesn't create ! # ustar tarball either. ! (tar --version) >/dev/null 2>&1 && continue ! am__tar='tar chf - "$$tardir"' ! am__tar_='tar chf - "$tardir"' ! am__untar='tar xf -' ! ;; ! pax) ! am__tar='pax -L -x $1 -w "$$tardir"' ! am__tar_='pax -L -x $1 -w "$tardir"' ! am__untar='pax -r' ! ;; ! cpio) ! am__tar='find "$$tardir" -print | cpio -o -H $1 -L' ! am__tar_='find "$tardir" -print | cpio -o -H $1 -L' ! am__untar='cpio -i -H $1 -d' ! ;; ! none) ! am__tar=false ! am__tar_=false ! am__untar=false ! ;; ! esac ! ! # If the value was cached, stop now. We just wanted to have am__tar ! # and am__untar set. ! test -n "${am_cv_prog_tar_$1}" && break ! ! # tar/untar a dummy directory, and stop if the command works ! rm -rf conftest.dir ! mkdir conftest.dir ! echo GrepMe > conftest.dir/file ! AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) ! rm -rf conftest.dir ! if test -s conftest.tar; then ! AM_RUN_LOG([$am__untar /dev/null 2>&1 && break ! fi ! done ! rm -rf conftest.dir ! ! AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) ! AC_MSG_RESULT([$am_cv_prog_tar_$1])]) ! AC_SUBST([am__tar]) ! AC_SUBST([am__untar]) ! ]) # _AM_PROG_TAR + m4_include([acinclude.m4]) Index: src/gnu/dist/cvs/configure diff -c src/gnu/dist/cvs/configure:1.1.1.7.2.2 src/gnu/dist/cvs/configure:1.1.1.7.2.3 *** src/gnu/dist/cvs/configure:1.1.1.7.2.2 Fri Jul 23 08:03:02 2004 --- src/gnu/dist/cvs/configure Wed Jul 6 20:12:36 2005 *************** *** 1,6 **** #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.58 for Concurrent Versions System (CVS) 1.11.17. # # Report bugs to . # --- 1,6 ---- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.59 for Concurrent Versions System (CVS) 1.11.20. # # Report bugs to . # *************** *** 269,276 **** # Identity of this package. PACKAGE_NAME='Concurrent Versions System (CVS)' PACKAGE_TARNAME='cvs' ! PACKAGE_VERSION='1.11.17' ! PACKAGE_STRING='Concurrent Versions System (CVS) 1.11.17' PACKAGE_BUGREPORT='bug-cvs@gnu.org' ac_unique_file="src/cvs.h" --- 269,276 ---- # Identity of this package. PACKAGE_NAME='Concurrent Versions System (CVS)' PACKAGE_TARNAME='cvs' ! PACKAGE_VERSION='1.11.20' ! PACKAGE_STRING='Concurrent Versions System (CVS) 1.11.20' PACKAGE_BUGREPORT='bug-cvs@gnu.org' ac_unique_file="src/cvs.h" *************** *** 311,317 **** # include #endif" ! ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot ac_prefix_program MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP RANLIB ac_ct_RANLIB YACC LN_S PERL CSH MKTEMP SENDMAIL PR ROFF PS2PDF TEXI2DVI MAKE_TARGETS_IN_VPATH_TRUE MAKE_TARGETS_IN_VPATH_FALSE LIBOBJS KRB4 includeopt EDITOR LTLIBOBJS' ac_subst_files='MKTEMP_SH_FUNCTION' # Initialize some variables set by options. --- 311,317 ---- # include #endif" ! ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar ac_prefix_program MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP RANLIB ac_ct_RANLIB YACC LN_S PERL CSH MKTEMP SENDMAIL PR ROFF PS2PDF TEXI2DVI MAKE_TARGETS_IN_VPATH_TRUE MAKE_TARGETS_IN_VPATH_FALSE LIBOBJS KRB4 includeopt EDITOR LTLIBOBJS' ac_subst_files='MKTEMP_SH_FUNCTION' # Initialize some variables set by options. *************** *** 784,790 **** # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF ! \`configure' configures Concurrent Versions System (CVS) 1.11.17 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... --- 784,790 ---- # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF ! \`configure' configures Concurrent Versions System (CVS) 1.11.20 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... *************** *** 846,862 **** if test -n "$ac_init_help"; then case $ac_init_help in ! short | recursive ) echo "Configuration of Concurrent Versions System (CVS) 1.11.17:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ! --enable-maintainer-mode enable make rules and dependencies not useful ! (and sometimes confusing) to the casual installer ! --disable-dependency-tracking Speeds up one-time builds ! --enable-dependency-tracking Do not reject slow dependency extractors --enable-cvs-ndbm Use the NDBM library distributed with CVS rather than attempting to use a system NDBM library. Disabling this may not work. (default) --- 846,862 ---- if test -n "$ac_init_help"; then case $ac_init_help in ! short | recursive ) echo "Configuration of Concurrent Versions System (CVS) 1.11.20:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ! --enable-maintainer-mode enable make rules and dependencies not useful ! (and sometimes confusing) to the casual installer ! --disable-dependency-tracking speeds up one-time build ! --enable-dependency-tracking do not reject slow dependency extractors --enable-cvs-ndbm Use the NDBM library distributed with CVS rather than attempting to use a system NDBM library. Disabling this may not work. (default) *************** *** 972,1011 **** ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! case "$ac_dir" in ! .) ac_abs_builddir=$ac_builddir;; *) ! case $ac_builddir in ! .) ac_abs_builddir="$ac_dir";; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir=$ac_builddir;; ! *) ac_abs_builddir="$ac_dir"/$ac_builddir;; esac;; esac ! case "$ac_dir" in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in ! .) ac_abs_top_builddir="$ac_dir";; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir="$ac_dir"/${ac_top_builddir}.;; esac;; esac ! case "$ac_dir" in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in ! .) ac_abs_srcdir="$ac_dir";; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir="$ac_dir"/$ac_srcdir;; esac;; esac ! case "$ac_dir" in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in ! .) ac_abs_top_srcdir="$ac_dir";; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir="$ac_dir"/$ac_top_srcdir;; esac;; esac --- 972,1014 ---- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac ! case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac ! case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac ! case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac *************** *** 1031,1038 **** test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF ! Concurrent Versions System (CVS) configure 1.11.17 ! generated by GNU Autoconf 2.58 Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation --- 1034,1041 ---- test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF ! Concurrent Versions System (CVS) configure 1.11.20 ! generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation *************** *** 1045,1052 **** This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. ! It was created by Concurrent Versions System (CVS) $as_me 1.11.17, which was ! generated by GNU Autoconf 2.58. Invocation command line was $ $0 $@ --- 1048,1055 ---- This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. ! It was created by Concurrent Versions System (CVS) $as_me 1.11.20, which was ! generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ *************** *** 1382,1388 **** ! am__api_version="1.7" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then --- 1385,1391 ---- ! am__api_version="1.9" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then *************** *** 1545,1551 **** program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed - # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` --- 1548,1553 ---- *************** *** 1559,1564 **** --- 1561,1599 ---- echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi + fi + for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. *************** *** 1637,1643 **** fi rmdir .tst 2>/dev/null ! # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 --- 1672,1678 ---- fi rmdir .tst 2>/dev/null ! # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 *************** *** 1657,1663 **** # Define the identity of the package. PACKAGE='cvs' ! VERSION='1.11.17' # Some tools Automake needs. --- 1692,1698 ---- # Define the identity of the package. PACKAGE='cvs' ! VERSION='1.11.20' # Some tools Automake needs. *************** *** 1676,1684 **** MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - - AMTAR=${AMTAR-"${am_missing_run}tar"} - install_sh=${install_sh-"$am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user --- 1711,1716 ---- *************** *** 1771,1776 **** --- 1803,1815 ---- # We need awk for the "check" target. The system "awk" is bad on # some platforms. + # Always define AMTAR for backward compatibility. + + AMTAR=${AMTAR-"${am_missing_run}tar"} + + am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + *************** *** 2908,2914 **** : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c ! : > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf --- 2947,2955 ---- : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c ! # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ! # Solaris 8's {/usr,}/bin/sh. ! touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf *************** *** 2936,2944 **** grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings ! # (even with -Werror). So we grep stderr for any message ! # that says an option was ignored. ! if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi --- 2977,2990 ---- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings ! # or remarks (even with -Werror). So we grep stderr for any message ! # that says an option was ignored or not supported. ! # When given -MP, icc 7.0 and 7.1 complain thusly: ! # icc: Command line warning: ignoring option '-M'; no argument required ! # The diagnosis changed in icc 8.0: ! # icc: Command line remark: option '-MP' not supported ! if (grep 'ignoring option' conftest.err || ! grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi *************** *** 13006,13012 **** ac_config_files="$ac_config_files contrib/sccs2rcs" ! ac_config_files="$ac_config_files doc/mkman" ac_config_files="$ac_config_files src/cvsbug" --- 13052,13058 ---- ac_config_files="$ac_config_files contrib/sccs2rcs" ! ac_config_files="$ac_config_files doc/mkman:doc/mkman.pl" ac_config_files="$ac_config_files src/cvsbug" *************** *** 13406,13413 **** } >&5 cat >&5 <<_CSEOF ! This file was extended by Concurrent Versions System (CVS) $as_me 1.11.17, which was ! generated by GNU Autoconf 2.58. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS --- 13452,13459 ---- } >&5 cat >&5 <<_CSEOF ! This file was extended by Concurrent Versions System (CVS) $as_me 1.11.20, which was ! generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS *************** *** 13472,13479 **** cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ ! Concurrent Versions System (CVS) config.status 1.11.17 ! configured by $0, generated by GNU Autoconf 2.58, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. --- 13518,13525 ---- cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ ! Concurrent Versions System (CVS) config.status 1.11.20 ! configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. *************** *** 13594,13600 **** "contrib/rcs2log" ) CONFIG_FILES="$CONFIG_FILES contrib/rcs2log:contrib/rcs2log.sh" ;; "contrib/rcslock" ) CONFIG_FILES="$CONFIG_FILES contrib/rcslock" ;; "contrib/sccs2rcs" ) CONFIG_FILES="$CONFIG_FILES contrib/sccs2rcs" ;; ! "doc/mkman" ) CONFIG_FILES="$CONFIG_FILES doc/mkman" ;; "src/cvsbug" ) CONFIG_FILES="$CONFIG_FILES src/cvsbug" ;; "windows-NT/fix-msvc-mak" ) CONFIG_FILES="$CONFIG_FILES windows-NT/fix-msvc-mak:windows-NT/fix-msvc-mak-head.pl:windows-NT/fix-msvc-mak.pl" ;; "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; --- 13640,13646 ---- "contrib/rcs2log" ) CONFIG_FILES="$CONFIG_FILES contrib/rcs2log:contrib/rcs2log.sh" ;; "contrib/rcslock" ) CONFIG_FILES="$CONFIG_FILES contrib/rcslock" ;; "contrib/sccs2rcs" ) CONFIG_FILES="$CONFIG_FILES contrib/sccs2rcs" ;; ! "doc/mkman" ) CONFIG_FILES="$CONFIG_FILES doc/mkman:doc/mkman.pl" ;; "src/cvsbug" ) CONFIG_FILES="$CONFIG_FILES src/cvsbug" ;; "windows-NT/fix-msvc-mak" ) CONFIG_FILES="$CONFIG_FILES windows-NT/fix-msvc-mak:windows-NT/fix-msvc-mak-head.pl:windows-NT/fix-msvc-mak.pl" ;; "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; *************** *** 13712,13725 **** s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t - s,@AMTAR@,$AMTAR,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@ac_prefix_program@,$ac_prefix_program,;t t s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t --- 13758,13774 ---- s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t + s,@mkdir_p@,$mkdir_p,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t + s,@AMTAR@,$AMTAR,;t t + s,@am__tar@,$am__tar,;t t + s,@am__untar@,$am__untar,;t t s,@ac_prefix_program@,$ac_prefix_program,;t t s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t *************** *** 13883,13922 **** ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! case "$ac_dir" in ! .) ac_abs_builddir=$ac_builddir;; *) ! case $ac_builddir in ! .) ac_abs_builddir="$ac_dir";; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir=$ac_builddir;; ! *) ac_abs_builddir="$ac_dir"/$ac_builddir;; esac;; esac ! case "$ac_dir" in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in ! .) ac_abs_top_builddir="$ac_dir";; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir="$ac_dir"/${ac_top_builddir}.;; esac;; esac ! case "$ac_dir" in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in ! .) ac_abs_srcdir="$ac_dir";; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir="$ac_dir"/$ac_srcdir;; esac;; esac ! case "$ac_dir" in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in ! .) ac_abs_top_srcdir="$ac_dir";; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir="$ac_dir"/$ac_top_srcdir;; esac;; esac --- 13932,13974 ---- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac ! case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac ! case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac ! case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac *************** *** 14344,14383 **** ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! case "$ac_dest_dir" in ! .) ac_abs_builddir=$ac_builddir;; *) ! case $ac_builddir in ! .) ac_abs_builddir="$ac_dest_dir";; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir=$ac_builddir;; ! *) ac_abs_builddir="$ac_dest_dir"/$ac_builddir;; esac;; esac ! case "$ac_dest_dir" in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in ! .) ac_abs_top_builddir="$ac_dest_dir";; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir="$ac_dest_dir"/${ac_top_builddir}.;; esac;; esac ! case "$ac_dest_dir" in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in ! .) ac_abs_srcdir="$ac_dest_dir";; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir="$ac_dest_dir"/$ac_srcdir;; esac;; esac ! case "$ac_dest_dir" in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in ! .) ac_abs_top_srcdir="$ac_dest_dir";; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir="$ac_dest_dir"/$ac_top_srcdir;; esac;; esac --- 14396,14438 ---- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dest_dir";; *) ! case "$ac_dest_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dest_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dest_dir";; esac;; esac ! case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac ! case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac ! case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac *************** *** 14466,14505 **** ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! case "$ac_dir" in ! .) ac_abs_builddir=$ac_builddir;; *) ! case $ac_builddir in ! .) ac_abs_builddir="$ac_dir";; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir=$ac_builddir;; ! *) ac_abs_builddir="$ac_dir"/$ac_builddir;; esac;; esac ! case "$ac_dir" in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in ! .) ac_abs_top_builddir="$ac_dir";; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir="$ac_dir"/${ac_top_builddir}.;; esac;; esac ! case "$ac_dir" in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in ! .) ac_abs_srcdir="$ac_dir";; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir="$ac_dir"/$ac_srcdir;; esac;; esac ! case "$ac_dir" in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in ! .) ac_abs_top_srcdir="$ac_dir";; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir="$ac_dir"/$ac_top_srcdir;; esac;; esac --- 14521,14563 ---- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac ! case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac ! case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac ! case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac *************** *** 14532,14558 **** else continue fi ! grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue ! # Extract the definition of DEP_FILES from the Makefile without ! # running `make'. ! DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it ! U=`sed -n -e '/^U = / s///p' < "$mf"` ! test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" ! # We invoke sed twice because it is the simplest approach to ! # changing $(DEPDIR) to its actual value in the expansion. ! for file in `sed -n -e ' ! /^DEP_FILES = .*\\\\$/ { ! s/^DEP_FILES = // ! :loop ! s/\\\\$// ! p ! n ! /\\\\$/ b loop ! p ! } ! /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue --- 14590,14610 ---- else continue fi ! # Extract the definition of DEPDIR, am__include, and am__quote ! # from the Makefile without running `make'. ! DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it ! U=`sed -n 's/^U = //p' < "$mf"` ! # Find all dependency output files, they are included files with ! # $(DEPDIR) in their names. We invoke sed twice because it is the ! # simplest approach to changing $(DEPDIR) to its actual value in the ! # expansion. ! for file in `sed -n " ! s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue Index: src/gnu/dist/cvs/configure.in diff -c src/gnu/dist/cvs/configure.in:1.1.1.7.2.2 src/gnu/dist/cvs/configure.in:1.1.1.7.2.3 *** src/gnu/dist/cvs/configure.in:1.1.1.7.2.2 Fri Jul 23 08:03:02 2004 --- src/gnu/dist/cvs/configure.in Wed Jul 6 20:12:37 2005 *************** *** 1,5 **** dnl configure.in for cvs ! AC_INIT([Concurrent Versions System (CVS)],[1.11.17],[bug-cvs@gnu.org],[cvs]) AC_CONFIG_SRCDIR(src/cvs.h) AM_INIT_AUTOMAKE([gnu 1.7.9 dist-bzip2 no-define]) AC_PREREQ(2.58) --- 1,5 ---- dnl configure.in for cvs ! AC_INIT([Concurrent Versions System (CVS)],[1.11.20],[bug-cvs@gnu.org],[cvs]) AC_CONFIG_SRCDIR(src/cvs.h) AM_INIT_AUTOMAKE([gnu 1.7.9 dist-bzip2 no-define]) AC_PREREQ(2.58) *************** *** 1021,1027 **** AC_CONFIG_FILES(contrib/rcs2log:contrib/rcs2log.sh, [chmod +x contrib/rcs2log]) AC_CONFIG_FILES(contrib/rcslock, [chmod +x contrib/rcslock]) AC_CONFIG_FILES(contrib/sccs2rcs, [chmod +x contrib/sccs2rcs]) ! AC_CONFIG_FILES(doc/mkman, [chmod +x doc/mkman]) AC_CONFIG_FILES(src/cvsbug, [chmod +x src/cvsbug]) AC_CONFIG_FILES(windows-NT/fix-msvc-mak:windows-NT/fix-msvc-mak-head.pl:windows-NT/fix-msvc-mak.pl, [chmod +x windows-NT/fix-msvc-mak]) --- 1021,1027 ---- AC_CONFIG_FILES(contrib/rcs2log:contrib/rcs2log.sh, [chmod +x contrib/rcs2log]) AC_CONFIG_FILES(contrib/rcslock, [chmod +x contrib/rcslock]) AC_CONFIG_FILES(contrib/sccs2rcs, [chmod +x contrib/sccs2rcs]) ! AC_CONFIG_FILES(doc/mkman:doc/mkman.pl, [chmod +x doc/mkman]) AC_CONFIG_FILES(src/cvsbug, [chmod +x src/cvsbug]) AC_CONFIG_FILES(windows-NT/fix-msvc-mak:windows-NT/fix-msvc-mak-head.pl:windows-NT/fix-msvc-mak.pl, [chmod +x windows-NT/fix-msvc-mak]) Index: src/gnu/dist/cvs/ylwrap diff -c /dev/null src/gnu/dist/cvs/ylwrap:1.1.1.1.6.1 *** /dev/null Mon Oct 31 02:21:51 2005 --- src/gnu/dist/cvs/ylwrap Wed Jul 6 20:12:37 2005 *************** *** 0 **** --- 1,160 ---- + #! /bin/sh + # ylwrap - wrapper for lex/yacc invocations. + # + # Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003 Free Software + # Foundation, Inc. + # + # Written by Tom Tromey . + # + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 2, or (at your option) + # any later version. + # + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + + # Usage: + # ylwrap INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... + # * INPUT is the input file + # * OUTPUT is file PROG generates + # * DESIRED is file we actually want + # * PROGRAM is program to run + # * ARGS are passed to PROG + # Any number of OUTPUT,DESIRED pairs may be used. + + # The input. + input="$1" + shift + case "$input" in + [\\/]* | ?:[\\/]*) + # Absolute path; do nothing. + ;; + *) + # Relative path. Make it absolute. + input="`pwd`/$input" + ;; + esac + + pairlist= + while test "$#" -ne 0; do + if test "$1" = "--"; then + shift + break + fi + pairlist="$pairlist $1" + shift + done + + # The program to run. + prog="$1" + shift + # Make any relative path in $prog absolute. + case "$prog" in + [\\/]* | ?:[\\/]*) ;; + *[\\/]*) prog="`pwd`/$prog" ;; + esac + + # FIXME: add hostname here for parallel makes that run commands on + # other machines. But that might take us over the 14-char limit. + dirname=ylwrap$$ + trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15 + mkdir $dirname || exit 1 + + cd $dirname + + case $# in + 0) $prog "$input" ;; + *) $prog "$@" "$input" ;; + esac + status=$? + + if test $status -eq 0; then + set X $pairlist + shift + first=yes + # Since DOS filename conventions don't allow two dots, + # the DOS version of Bison writes out y_tab.c instead of y.tab.c + # and y_tab.h instead of y.tab.h. Test to see if this is the case. + y_tab_nodot="no" + if test -f y_tab.c || test -f y_tab.h; then + y_tab_nodot="yes" + fi + + # The directory holding the input. + input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'` + # Quote $INPUT_DIR so we can use it in a regexp. + # FIXME: really we should care about more than `.' and `\'. + input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'` + + while test "$#" -ne 0; do + from="$1" + # Handle y_tab.c and y_tab.h output by DOS + if test $y_tab_nodot = "yes"; then + if test $from = "y.tab.c"; then + from="y_tab.c" + else + if test $from = "y.tab.h"; then + from="y_tab.h" + fi + fi + fi + if test -f "$from"; then + # If $2 is an absolute path name, then just use that, + # otherwise prepend `../'. + case "$2" in + [\\/]* | ?:[\\/]*) target="$2";; + *) target="../$2";; + esac + + # Edit out `#line' or `#' directives. + # + # We don't want the resulting debug information to point at + # an absolute srcdir; it is better for it to just mention the + # .y file with no path. + # + # We want to use the real output file name, not yy.lex.c for + # instance. + # + # We want the include guards to be adjusted too. + FROM=`echo "$from" | sed \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ + -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` + TARGET=`echo "$2" | sed \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ + -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` + sed "/^#/{s,$input_rx,,;s,$from,$2,;s,$FROM,$TO,;}" "$from" >"$target" || + status=$? + else + # A missing file is only an error for the first file. This + # is a blatant hack to let us support using "yacc -d". If -d + # is not specified, we don't want an error when the header + # file is "missing". + if test $first = yes; then + status=1 + fi + fi + shift + shift + first=no + done + else + status=$? + fi + + # Remove the directory. + cd .. + rm -rf $dirname + + exit $status Index: src/gnu/dist/cvs/contrib/ChangeLog diff -c src/gnu/dist/cvs/contrib/ChangeLog:1.1.1.5.2.1 src/gnu/dist/cvs/contrib/ChangeLog:1.1.1.5.2.2 *** src/gnu/dist/cvs/contrib/ChangeLog:1.1.1.5.2.1 Thu May 20 04:30:49 2004 --- src/gnu/dist/cvs/contrib/ChangeLog Wed Jul 6 20:12:37 2005 *************** *** 1,8 **** 2004-01-30 Derek Price Close issue #155. * log_accum.in: Remove unused variables. ! (Patch from (Ville Skyttä .) 2003-10-14 Derek Price --- 1,36 ---- + 2005-04-14 Derek Price + + * commit_prep.in, cvs_acls.in, log.in, log_accum.in, mfpipe.in, + rcslock.in: Enable taint checking and comment. This closes cvshome.org + Issue #224. + + 2005-04-08 Derek Price + + * README: Correct my email address. + + 2005-01-31 Derek Price + + * Makefile.am: Update copyright notices. + + 2005-01-25 Mark D. Baushke + + * cvs_acls.in: New version from + "Peter Connolly" . + * cvs_acls.html: New file from + "Peter Connolly" . + * Makefile.am (EXTRA_DIST): Add cvs_acls.html + * Makefile.in: Regenerated. + + 2004-08-30 Derek Price + + * log_accum.in: Changes to supress warnings under Perl 5.8.5. + (Patch from Jeroen Ruigrok/asmodai .) + 2004-01-30 Derek Price Close issue #155. * log_accum.in: Remove unused variables. ! (Patch from Ville Skyttä .) 2003-10-14 Derek Price Index: src/gnu/dist/cvs/contrib/Makefile.am diff -c src/gnu/dist/cvs/contrib/Makefile.am:1.2 src/gnu/dist/cvs/contrib/Makefile.am:1.2.2.1 *** src/gnu/dist/cvs/contrib/Makefile.am:1.2 Wed Dec 10 06:09:52 2003 --- src/gnu/dist/cvs/contrib/Makefile.am Wed Jul 6 20:12:37 2005 *************** *** 1,9 **** ## Process this file with automake to produce Makefile.in # Makefile for GNU CVS contributed sources. # Do not use this makefile directly, but only from `../Makefile'. ! # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 1,11 ---- ## Process this file with automake to produce Makefile.in # Makefile for GNU CVS contributed sources. # Do not use this makefile directly, but only from `../Makefile'. ! # ! # Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! # ! # Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! # and others. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by *************** *** 63,68 **** --- 65,71 ---- cvs2vendor.sh \ cvscheck.sh \ cvshelp.man \ + cvs_acls.html \ debug_check_log.sh \ descend.sh \ descend.man \ Index: src/gnu/dist/cvs/contrib/Makefile.in diff -c src/gnu/dist/cvs/contrib/Makefile.in:1.1.1.5 src/gnu/dist/cvs/contrib/Makefile.in:1.1.1.5.2.1 *** src/gnu/dist/cvs/contrib/Makefile.in:1.1.1.5 Wed Dec 10 05:58:11 2003 --- src/gnu/dist/cvs/contrib/Makefile.in Wed Jul 6 20:12:37 2005 *************** *** 1,8 **** ! # Makefile.in generated by automake 1.7.9 from Makefile.am. # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. --- 1,8 ---- ! # Makefile.in generated by automake 1.9.5 from Makefile.am. # @configure_input@ ! # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ! # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. *************** *** 16,24 **** # Makefile for GNU CVS contributed sources. # Do not use this makefile directly, but only from `../Makefile'. ! # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 16,26 ---- # Makefile for GNU CVS contributed sources. # Do not use this makefile directly, but only from `../Makefile'. ! # ! # Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! # ! # Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! # and others. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by *************** *** 30,35 **** --- 32,38 ---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. + srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ *************** *** 37,43 **** pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 --- 40,45 ---- *************** *** 51,56 **** --- 53,88 ---- NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : + subdir = contrib + DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/check_cvs.in $(srcdir)/clmerge.in \ + $(srcdir)/cln_hist.in $(srcdir)/commit_prep.in \ + $(srcdir)/cvs_acls.in $(srcdir)/log.in $(srcdir)/log_accum.in \ + $(srcdir)/mfpipe.in $(srcdir)/pvcs2rcs.in $(srcdir)/rcs2log.sh \ + $(srcdir)/rcslock.in $(srcdir)/sccs2rcs.in ChangeLog + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) + mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + CONFIG_HEADER = $(top_builddir)/config.h + CONFIG_CLEAN_FILES = check_cvs clmerge cln_hist commit_prep cvs_acls \ + log log_accum mfpipe pvcs2rcs rcs2log rcslock sccs2rcs + am__installdirs = "$(DESTDIR)$(contribdir)" "$(DESTDIR)$(contribdir)" + contribSCRIPT_INSTALL = $(INSTALL_SCRIPT) + SCRIPTS = $(contrib_SCRIPTS) + SOURCES = + DIST_SOURCES = + am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; + am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; + am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; + contribDATA_INSTALL = $(INSTALL_DATA) + DATA = $(contrib_DATA) + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ *************** *** 120,125 **** --- 152,159 ---- am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ + am__tar = @am__tar@ + am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ datadir = @datadir@ *************** *** 133,138 **** --- 167,173 ---- libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ + mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ *************** *** 140,148 **** sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ - contribdir = $(pkgdatadir)/contrib - contrib_SCRIPTS = \ check_cvs \ clmerge \ --- 175,181 ---- *************** *** 161,180 **** rcslock \ sccs2rcs - contrib_DATA = \ README \ intro.doc - contrib_MANS = \ cvscheck.man - bin_LINKS = \ rcs2log - EXTRA_DIST = \ .cvsignore \ $(contrib_DATA) \ --- 194,209 ---- *************** *** 182,187 **** --- 211,217 ---- cvs2vendor.sh \ cvscheck.sh \ cvshelp.man \ + cvs_acls.html \ debug_check_log.sh \ descend.sh \ descend.man \ *************** *** 190,257 **** rcs2log.sh \ rcs2sccs.sh - CLEANFILES = $(bin_SCRIPTS) $(contrib_SCRIPTS) - SUFFIXES = .sh - subdir = contrib - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs - CONFIG_HEADER = $(top_builddir)/config.h - CONFIG_CLEAN_FILES = check_cvs clmerge cln_hist commit_prep cvs_acls log \ - log_accum mfpipe pvcs2rcs rcs2log rcslock sccs2rcs - SCRIPTS = $(contrib_SCRIPTS) - - DIST_SOURCES = - DATA = $(contrib_DATA) - - DIST_COMMON = README $(srcdir)/Makefile.in ChangeLog Makefile.am \ - check_cvs.in clmerge.in cln_hist.in commit_prep.in cvs_acls.in \ - log.in log_accum.in mfpipe.in pvcs2rcs.in rcs2log.sh rcslock.in \ - sccs2rcs.in all: all-am .SUFFIXES: .SUFFIXES: .sh ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ! check_cvs: $(top_builddir)/config.status check_cvs.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! clmerge: $(top_builddir)/config.status clmerge.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! cln_hist: $(top_builddir)/config.status cln_hist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! commit_prep: $(top_builddir)/config.status commit_prep.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! cvs_acls: $(top_builddir)/config.status cvs_acls.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! log: $(top_builddir)/config.status log.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! log_accum: $(top_builddir)/config.status log_accum.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! mfpipe: $(top_builddir)/config.status mfpipe.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! pvcs2rcs: $(top_builddir)/config.status pvcs2rcs.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! rcs2log: $(top_builddir)/config.status rcs2log.sh cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! rcslock: $(top_builddir)/config.status rcslock.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! sccs2rcs: $(top_builddir)/config.status sccs2rcs.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - contribSCRIPT_INSTALL = $(INSTALL_SCRIPT) install-contribSCRIPTS: $(contrib_SCRIPTS) @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(contribdir) @list='$(contrib_SCRIPTS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f $$d$$p; then \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ ! echo " $(contribSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(contribdir)/$$f"; \ ! $(contribSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(contribdir)/$$f; \ else :; fi; \ done --- 220,293 ---- rcs2log.sh \ rcs2sccs.sh CLEANFILES = $(bin_SCRIPTS) $(contrib_SCRIPTS) SUFFIXES = .sh all: all-am .SUFFIXES: .SUFFIXES: .sh ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ! @for dep in $?; do \ ! case '$(am__configure_deps)' in \ ! *$$dep*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ! && exit 0; \ ! exit 1;; \ ! esac; \ ! done; \ ! echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/Makefile ! .PRECIOUS: Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! @case '$?' in \ ! *config.status*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ! *) \ ! echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ! esac; ! ! $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! ! $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! check_cvs: $(top_builddir)/config.status $(srcdir)/check_cvs.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! clmerge: $(top_builddir)/config.status $(srcdir)/clmerge.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! cln_hist: $(top_builddir)/config.status $(srcdir)/cln_hist.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! commit_prep: $(top_builddir)/config.status $(srcdir)/commit_prep.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! cvs_acls: $(top_builddir)/config.status $(srcdir)/cvs_acls.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! log: $(top_builddir)/config.status $(srcdir)/log.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! log_accum: $(top_builddir)/config.status $(srcdir)/log_accum.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! mfpipe: $(top_builddir)/config.status $(srcdir)/mfpipe.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! pvcs2rcs: $(top_builddir)/config.status $(srcdir)/pvcs2rcs.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! rcs2log: $(top_builddir)/config.status $(srcdir)/rcs2log.sh cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! rcslock: $(top_builddir)/config.status $(srcdir)/rcslock.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! sccs2rcs: $(top_builddir)/config.status $(srcdir)/sccs2rcs.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-contribSCRIPTS: $(contrib_SCRIPTS) @$(NORMAL_INSTALL) ! test -z "$(contribdir)" || $(mkdir_p) "$(DESTDIR)$(contribdir)" @list='$(contrib_SCRIPTS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f $$d$$p; then \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ ! echo " $(contribSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(contribdir)/$$f'"; \ ! $(contribSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(contribdir)/$$f"; \ else :; fi; \ done *************** *** 259,285 **** @$(NORMAL_UNINSTALL) @list='$(contrib_SCRIPTS)'; for p in $$list; do \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ ! echo " rm -f $(DESTDIR)$(contribdir)/$$f"; \ ! rm -f $(DESTDIR)$(contribdir)/$$f; \ done uninstall-info-am: - contribDATA_INSTALL = $(INSTALL_DATA) install-contribDATA: $(contrib_DATA) @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(contribdir) @list='$(contrib_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(contribDATA_INSTALL) $$d$$p $(DESTDIR)$(contribdir)/$$f"; \ ! $(contribDATA_INSTALL) $$d$$p $(DESTDIR)$(contribdir)/$$f; \ done uninstall-contribDATA: @$(NORMAL_UNINSTALL) @list='$(contrib_DATA)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(contribdir)/$$f"; \ ! rm -f $(DESTDIR)$(contribdir)/$$f; \ done tags: TAGS TAGS: --- 295,320 ---- @$(NORMAL_UNINSTALL) @list='$(contrib_SCRIPTS)'; for p in $$list; do \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ ! echo " rm -f '$(DESTDIR)$(contribdir)/$$f'"; \ ! rm -f "$(DESTDIR)$(contribdir)/$$f"; \ done uninstall-info-am: install-contribDATA: $(contrib_DATA) @$(NORMAL_INSTALL) ! test -z "$(contribdir)" || $(mkdir_p) "$(DESTDIR)$(contribdir)" @list='$(contrib_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f=$(am__strip_dir) \ ! echo " $(contribDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(contribdir)/$$f'"; \ ! $(contribDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(contribdir)/$$f"; \ done uninstall-contribDATA: @$(NORMAL_UNINSTALL) @list='$(contrib_DATA)'; for p in $$list; do \ ! f=$(am__strip_dir) \ ! echo " rm -f '$(DESTDIR)$(contribdir)/$$f'"; \ ! rm -f "$(DESTDIR)$(contribdir)/$$f"; \ done tags: TAGS TAGS: *************** *** 287,296 **** ctags: CTAGS CTAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - - top_distdir = .. - distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ --- 322,327 ---- *************** *** 304,310 **** dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ --- 335,341 ---- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ *************** *** 322,330 **** check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) - installdirs: ! $(mkinstalldirs) $(DESTDIR)$(contribdir) $(DESTDIR)$(contribdir) install: install-am install-exec: install-exec-am install-data: install-data-am --- 353,362 ---- check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: ! for dir in "$(DESTDIR)$(contribdir)" "$(DESTDIR)$(contribdir)"; do \ ! test -z "$$dir" || $(mkdir_p) "$$dir"; \ ! done install: install-am install-exec: install-exec-am install-data: install-data-am *************** *** 345,351 **** -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: ! -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" --- 377,383 ---- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: ! -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" *************** *** 362,367 **** --- 394,401 ---- dvi-am: + html: html-am + info: info-am info-am: *************** *** 397,404 **** uninstall-info-am uninstall-local .PHONY: all all-am check check-am clean clean-generic distclean \ ! distclean-generic distdir dvi dvi-am info info-am install \ ! install-am install-contribDATA install-contribSCRIPTS \ install-data install-data-am install-data-local install-exec \ install-exec-am install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ --- 431,438 ---- uninstall-info-am uninstall-local .PHONY: all all-am check check-am clean clean-generic distclean \ ! distclean-generic distdir dvi dvi-am html html-am info info-am \ ! install install-am install-contribDATA install-contribSCRIPTS \ install-data install-data-am install-data-local install-exec \ install-exec-am install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ Index: src/gnu/dist/cvs/contrib/README diff -c src/gnu/dist/cvs/contrib/README:1.1.1.2 src/gnu/dist/cvs/contrib/README:1.1.1.2.2.1 *** src/gnu/dist/cvs/contrib/README:1.1.1.2 Thu Jan 16 02:15:35 2003 --- src/gnu/dist/cvs/contrib/README Wed Jul 6 20:12:37 2005 *************** *** 71,78 **** useful. debug_check_log A shell script to help analyze sanity check failures. ! Contributed by Derek R. Price ! descend A shell script that can be used to recursively descend.man descend through a directory. In CVS 1.2, this was --- 71,77 ---- useful. debug_check_log A shell script to help analyze sanity check failures. ! Contributed by Derek R. Price . descend A shell script that can be used to recursively descend.man descend through a directory. In CVS 1.2, this was Index: src/gnu/dist/cvs/contrib/commit_prep.in diff -c src/gnu/dist/cvs/contrib/commit_prep.in:1.2 src/gnu/dist/cvs/contrib/commit_prep.in:1.2.2.1 *** src/gnu/dist/cvs/contrib/commit_prep.in:1.2 Wed Dec 10 06:09:52 2003 --- src/gnu/dist/cvs/contrib/commit_prep.in Wed Jul 6 20:12:37 2005 *************** *** 1,6 **** ! #! @PERL@ # -*-Perl-*- ! # # Perl filter to handle pre-commit checking of files. This program # records the last directory where commits will be taking place for # use by the log_accum.pl script. --- 1,24 ---- ! #! @PERL@ -T # -*-Perl-*- ! ! ############################################################################### ! ############################################################################### ! ############################################################################### ! # ! # THIS SCRIPT IS PROBABLY BROKEN. REMOVING THE -T SWITCH ON THE #! LINE ABOVE ! # WOULD FIX IT, BUT THIS IS INSECURE. WE RECOMMEND FIXING THE ERRORS WHICH THE ! # -T SWITCH WILL CAUSE PERL TO REPORT BEFORE RUNNING THIS SCRIPT FROM A CVS ! # SERVER TRIGGER. PLEASE SEND PATCHES CONTAINING THE CHANGES YOU FIND ! # NECESSARY TO RUN THIS SCRIPT WITH THE TAINT-CHECKING ENABLED BACK TO THE ! # MAILING LIST. ! # ! # For more on general Perl security and taint-checking, please try running the ! # `perldoc perlsec' command. ! # ! ############################################################################### ! ############################################################################### ! ############################################################################### ! # Perl filter to handle pre-commit checking of files. This program # records the last directory where commits will be taking place for # use by the log_accum.pl script. Index: src/gnu/dist/cvs/contrib/cvs_acls.html diff -c /dev/null src/gnu/dist/cvs/contrib/cvs_acls.html:1.1.1.1.6.1 *** /dev/null Mon Oct 31 02:21:51 2005 --- src/gnu/dist/cvs/contrib/cvs_acls.html Wed Jul 6 20:12:37 2005 *************** *** 0 **** --- 1,459 ---- + + + + cvs_acls + + + + + +

+ + + + + +
+

+

+

Name

+

cvs_acls - Access Control List for CVS

+

+

+
+

Synopsis

+

In 'commitinfo':

+
+   repository/path/to/restrict $CVSROOT/CVSROOT/cvs_acls [-d][-u $USER][-f <logfile>]
+

where:

+
+   -d  turns on debug information
+   -u  passes the client-side userId to the cvs_acls script
+   -f  specifies an alternate filename for the restrict_log file
+

In 'cvsacl':

+
+   {allow.*,deny.*} [|user,user,... [|repos,repos,... [|branch,branch,...]]]
+

where:

+
+   allow|deny - allow: commits are allowed; deny: prohibited
+   user          - userId to be allowed or restricted
+   repos         - file or directory to be allowed or restricted
+   branch        - branch to be allowed or restricted
+

See below for examples.

+

+

+
+

Licensing

+

cvs_acls - provides access control list functionality for CVS +

+
+ 
+ Copyright (c) 2004 by Peter Connolly <peter.connolly@cnet.com>  
+ All rights reserved.
+

This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version.

+

This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

+

+

+
+

Description

+

This script--cvs_acls--is invoked once for each directory within a + ``cvs commit''. The set of files being committed for that directory as + well as the directory itself, are passed to this script. This script + checks its 'cvsacl' file to see if any of the files being committed + are on the 'cvsacl' file's restricted list. If any of the files are + restricted, then the cvs_acls script passes back an exit code of 1 + which disallows the commits for that directory.

+

Messages are returned to the committer indicating the file(s) that + he/she are not allowed to committ. Additionally, a site-specific + set of messages (e.g., contact information) can be included in these + messages.

+

When a commit is prohibited, log messages are written to a restrict_log + file in $CVSROOT/CVSROOT. This default file can be redirected to + another destination.

+

The script is triggered from the 'commitinfo' file in $CVSROOT/CVSROOT/.

+

+

+
+

Enhancements

+

This section lists the bug fixes and enhancements added to cvs_acls + that make up the current cvs_acls.

+

+

+

Fixed Bugs

+

This version attempts to get rid the following bugs from the + original version of cvs_acls:

+ +

+

+

Enhancements

+ +

+

+

ToDoS

+ +

+

+
+

Version Information

+

This is not offered as a fix to the original 'cvs_acls' script since it + differs substantially in goals and methods from the original and there + are probably a significant number of people out there that still require + the original version's functionality.

+

The 'cvsacl' file flags of 'allow' and 'deny' were intentionally + changed to 'allow' and 'deny' because there are enough differences + between the original script's behavior and this one's that we wanted to + make sure that users will rethink their 'cvsacl' file formats before + plugging in this newer script.

+

Please note that there has been very limited cross-platform testing of + this script!!! (We did not have the time or resources to do exhaustive + cross-platform testing.)

+

It was developed and tested under Red Hat Linux 9.0 using PERL 5.8.0. + Additionally, it was built and tested under Red Hat Linux 7.3 using + PERL 5.6.1.

+

$Id: cvs_acls.html,v 1.1.1.1.6.1 2005/07/06 20:12:37 snj Exp $

+

This version is based on the 1.11.13 version of cvs_acls + peter.connolly@cnet.com (Peter Connolly)

+
+   Access control lists for CVS.  dgg@ksr.com (David G. Grubbs)
+   Branch specific controls added by voisine@bytemobile.com (Aaron Voisine)
+

+

+
+

Installation

+

To use this program, do the following four things:

+

0. Install PERL, version 5.6.1 or 5.8.0.

+

1. Admin Setup:

+
+    There are two choices here.
+
+    a) The first option is to use the $ENV{"USER"}, server-side userId
+       (from the third column of your pserver 'passwd' file) as the basis for 
+       your restrictions.  In this case, you will (at a minimum) want to set
+       up a new "cvsadmin" userId and group on the pserver machine.  
+       CVS administrators will then set up their 'passwd' file entries to
+       run either as "cvs" (for regular users) or as "cvsadmin" (for power 
+       users).  Correspondingly, your 'cvsacl' file will only list 'cvs'
+       and 'cvsadmin' as the userIds in the second column.
+
+       Commentary: A potential weakness of this is that the xinetd 
+       cvspserver process will need to run as 'root' in order to switch 
+       between the 'cvs' and the 'cvsadmin' userIds.  Some sysadmins don't
+       like situations like this and may want to chroot the process.
+       Talk to them about this point...
+
+    b) The second option is to use the client-side userId as the basis for
+       your restrictions.  In this case, all the xinetd cvspserver processes 
+       can run as userId 'cvs' and no 'root' userId is required.  If you have
+       a 'passwd' file that lists 'cvs' as the effective run-time userId for
+       all your users, then no changes to this file are needed.  Your 'cvsacl'
+       file will use the individual, client-side userIds in its 2nd column.
+
+       As long as the userIds in pserver's 'passwd' file match those userIds 
+       that your Linux server know about, this approach is ideal if you are 
+       planning to move from pserver to SSH access at some later point in time.
+       Just by switching the CVSROOT var from CVSROOT=:pserver:<userId>... to 
+       CVSROOT=:ext:<userId>..., users can switch over to SSH access without
+       any other administrative changes.  When all users have switched over to
+       SSH, the inherently insecure xinetd cvspserver process can be disabled.
+       [https://www.cvshome.org/docs/manual/cvs-1.11.17/cvs_2.html#SEC32]
+
+       :TODO: The only potential glitch with the SSH approach is the possibility 
+       that each user can have differing umasks that might interfere with one 
+       another, especially during a transition from pserver to SSH.  As noted
+       in the ToDo section, this needs a good strategy and set of tests for that 
+       yet...
+

2. Put two lines, as the *only* non-comment lines, in your commitinfo file:

+
+    ALL $CVSROOT/CVSROOT/commit_prep 
+    ALL $CVSROOT/CVSROOT/cvs_acls [-d][-u $USER ][-f <logfilename>]
+
+    where "-d" turns on debug trace
+          "-u $USER" passes the client-side userId to cvs_acls 
+          "-f <logfilename"> overrides the default filename used to log
+                             restricted commit attempts.
+
+    (These are handled in the processArgs() subroutine.)
+

If you are using client-side userIds to restrict access to your + repository, make sure that they are in this order since the commit_prep + script is required in order to pass the $USER parameter.

+

A final note about the repository matching pattern. The example above + uses ``ALL'' but note that this means that the cvs_acls script will run + for each and every commit in your repository. Obviously, in a large + repository this adds up to a lot of overhead that may not be necesary. + A better strategy is to use a repository pattern that is more specific + to the areas that you wish to secure.

+

3. Install this file as $CVSROOT/CVSROOT/cvs_acls and make it executable.

+

4. Create a file named CVSROOT/cvsacl and optionally add it to + CVSROOT/checkoutlist and check it in. See the CVS manual's + administrative files section about checkoutlist. Typically:

+
+    $ cvs checkout CVSROOT
+    $ cd CVSROOT
+    [ create the cvsacl file, include 'commitinfo' line ]
+    [ add cvsacl to checkoutlist ]
+    $ cvs add cvsacl
+    $ cvs commit -m 'Added cvsacl for use with cvs_acls.' cvsacl checkoutlist
+

Note: The format of the 'cvsacl' file is described in detail immediately + below but here is an important set up point:

+
+    Make sure to include a line like the following:
+
+      deny||CVSROOT/commitinfo CVSROOT/cvsacl
+      allow|cvsadmin|CVSROOT/commitinfo CVSROOT/cvsacl
+
+    that restricts access to commitinfo and cvsacl since this would be one of
+    the easiest "end runs" around this ACL approach. ('commitinfo' has the 
+    line that executes the cvs_acls script and, of course, all the 
+    restrictions are in 'cvsacl'.)
+

5. (Optional) Create a 'restrict_msg' file in the $CVSROOT/CVSROOT directory. + Whenever there is a restricted file or dir message, cvs_acls will look + for this file and, if it exists, print its contents as part of the + commit-denial message. This gives you a chance to print any site-specific + information (e.g., who to call, what procedures to look up,...) whenever + a commit is denied.

+

+

+
+

Format of the cvsacl file

+

The 'cvsacl' file determines whether you may commit files. It contains lines + read from top to bottom, keeping track of whether a given user, repository + and branch combination is ``allowed'' or ``denied.'' The script will assume + ``allowed'' on all repository paths until 'allow' and 'deny' rules change + that default.

+

The normal pattern is to specify an 'deny' rule to turn off + access to ALL users, then follow it with a matching 'allow' rule that will + turn on access for a select set of users. In the case of multiple rules for + the same user, repository and branch, the last one takes precedence.

+

Blank lines and lines with only comments are ignored. Any other lines not + beginning with ``allow'' or ``deny'' are logged to the restrict_log file.

+

Lines beginning with ``allow'' or ``deny'' are assumed to be '|'-separated + triples: (All spaces and tabs are ignored in a line.)

+
+   {allow.*,deny.*} [|user,user,... [|repos,repos,... [|branch,branch,...]]]
+
+    1. String starting with "allow" or "deny".
+    2. Optional, comma-separated list of usernames.
+    3. Optional, comma-separated list of repository pathnames.
+       These are pathnames relative to $CVSROOT.  They can be directories or
+       filenames.  A directory name allows or restricts access to all files and
+       directories below it. One line can have either directories or filenames
+       but not both.
+    4. Optional, comma-separated list of branch tags.
+       If not specified, all branches are assumed. Use HEAD to reference the
+       main branch.
+

Example: (Note: No in-line comments.)

+
+    # ----- Make whole repository unavailable.
+    deny
+
+    # ----- Except for user "dgg".
+    allow|dgg
+
+    # ----- Except when "fred" or "john" commit to the 
+    #       module whose repository is "bin/ls"
+    allow|fred, john|bin/ls
+
+    # ----- Except when "ed" commits to the "stable" 
+    #       branch of the "bin/ls" repository
+    allow|ed|/bin/ls|stable
+

+

+
+

Program Logic

+

CVS passes to @ARGV an absolute directory pathname (the repository + appended to your $CVSROOT variable), followed by a list of filenames + within that directory that are to be committed.

+

The script walks through the 'cvsacl' file looking for matches on + the username, repository and branch.

+

A username match is simply the user's name appearing in the second + column of the cvsacl line in a space-or-comma separate list. If + blank, then any user will match.

+

A repository match:

+ +

+

+

Pseudocode

+
+      read CVS/Entries file and create branch{file}->{branch} hash table
+    + for each 'allow' and 'deny' line in the 'cvsacl' file:
+    |   user match?   
+    |     - Yes: set $user_match       = 1;
+    |   repository and branch match?
+    |     - Yes: add to %repository_matches;
+    |   did user, repository match?
+    |     - Yes: if 'deny' then 
+    |                add %repository_matches -> %restricted_entries
+    |            if 'allow'   then 
+    |                remove %repository_matches <- %restricted_entries
+    + end for loop
+      any saved restrictions?
+        no:  exit, 
+             set exit code allowing commits and exit
+        yes: report restrictions, 
+             set exit code prohibiting commits and exit
+

+

+

Sanity Check

+
+   1) file allow trumps a dir deny
+      deny||java/lib
+      allow||java/lib/README
+   2) dir allow can undo a file deny
+      deny||java/lib/README
+      allow||java/lib
+   3) file deny trumps a dir allow
+      allow||java/lib
+      deny||java/lib/README
+   4) dir deny trumps a file allow
+      allow||java/lib/README
+      deny||java/lib
+   ... so last match always takes precedence
+ + + + Index: src/gnu/dist/cvs/contrib/cvs_acls.in diff -c src/gnu/dist/cvs/contrib/cvs_acls.in:1.1 src/gnu/dist/cvs/contrib/cvs_acls.in:1.1.4.1 *** src/gnu/dist/cvs/contrib/cvs_acls.in:1.1 Thu Nov 28 04:54:04 2002 --- src/gnu/dist/cvs/contrib/cvs_acls.in Wed Jul 6 20:12:37 2005 *************** *** 1,129 **** ! #! @PERL@ # -*-Perl-*- # ! # Access control lists for CVS. dgg@ksr.com (David G. Grubbs) ! # Branch specific controls added by voisine@bytemobile.com (Aaron Voisine) ! # ! # CVS "commitinfo" for matching repository names, running the program it finds ! # on the same line. More information is available in the CVS man pages. ! # ! # ==== INSTALLATION: ! # ! # To use this program as I intended, do the following four things: ! # ! # 0. Install PERL. :-) ! # ! # 1. Put one line, as the *only* non-comment line, in your commitinfo file: ! # ! # DEFAULT /usr/local/bin/cvs_acls ! # ! # 2. Install this file as /usr/local/bin/cvs_acls and make it executable. ! # ! # 3. Create a file named $CVSROOT/CVSROOT/avail. ! # ! # ==== FORMAT OF THE avail FILE: ! # ! # The avail file determines whether you may commit files. It contains lines ! # read from top to bottom, keeping track of a single "bit". The "bit" ! # defaults to "on". It can be turned "off" by "unavail" lines and "on" by ! # "avail" lines. ==> Last one counts. ! # ! # Any line not beginning with "avail" or "unavail" is ignored. ! # ! # Lines beginning with "avail" or "unavail" are assumed to be '|'-separated ! # triples: (All spaces and tabs are ignored in a line.) ! # ! # {avail.*,unavail.*} [|user,user,... [|repos,repos,... [|branch,branch,...]]] ! # ! # 1. String starting with "avail" or "unavail". ! # 2. Optional, comma-separated list of usernames. ! # 3. Optional, comma-separated list of repository pathnames. ! # These are pathnames relative to $CVSROOT. They can be directories or ! # filenames. A directory name allows access to all files and ! # directories below it. ! # 4. Optional, comma-separated list of branch tags. ! # If not specified, all branches are assumed. Use HEAD to reference the ! # main branch. ! # ! # Example: (Text from the ';;' rightward may not appear in the file.) ! # ! # unavail ;; Make whole repository unavailable. ! # avail|dgg ;; Except for user "dgg". ! # avail|fred, john|bin/ls ;; Except when "fred" or "john" commit to ! # ;; the module whose repository is "bin/ls" ! # avail|ed|/bin/ls|stable ;; Except when "ed" commits to the "stable" ! # ;; branch of the "bin/ls" repository ! # ! # PROGRAM LOGIC: ! # ! # CVS passes to @ARGV an absolute directory pathname (the repository ! # appended to your $CVSROOT variable), followed by a list of filenames ! # within that directory. ! # ! # We walk through the avail file looking for a line that matches the ! # username, repository and branch. ! # ! # A username match is simply the user's name appearing in the second ! # column of the avail line in a space-or-comma separate list. ! # ! # A repository match is either: ! # - One element of the third column matches $ARGV[0], or some ! # parent directory of $ARGV[0]. ! # - Otherwise *all* file arguments ($ARGV[1..$#ARGV]) must be ! # in the file list in one avail line. ! # - In other words, using directory names in the third column of ! # the avail file allows committing of any file (or group of ! # files in a single commit) in the tree below that directory. ! # - If individual file names are used in the third column of ! # the avail file, then files must be committed individually or ! # all files specified in a single commit must all appear in ! # third column of a single avail line. # ! # A branch match is either: ! # - When no branches are listed in the fourth column. ! # - One element from the fourth column matches each of the tag ! # names for $ARGV[1..$#ARGV] found in the CVS/Entries file. ! # - HEAD specified in the fourth column will match if there ! # is no tag listed in the CVS/Entries file. # ! $debug = 0; $cvsroot = $ENV{'CVSROOT'}; ! $availfile = $cvsroot . "/CVSROOT/avail"; ! $entries = "CVS/Entries"; ! $myname = $ENV{"USER"} if !($myname = $ENV{"LOGNAME"}); eval "print STDERR \$die='Unknown parameter $1\n' if !defined \$$1; \$$1=\$';" while ($ARGV[0] =~ /^(\w+)=/ && shift(@ARGV)); ! exit 255 if $die; # process any variable=value switches ! die "Must set CVSROOT\n" if !$cvsroot; ! ($repos = shift) =~ s:^$cvsroot/::; ! grep($_ = $repos . '/' . $_, @ARGV); ! print "$$ Repos: $repos\n","$$ ==== ",join("\n$$ ==== ",@ARGV),"\n" if $debug; ! $exit_val = 0; # Good Exit value ! $universal_off = 0; ! my %branch; ! my $f; open(ENTRIES, $entries) || die("Cannot open $entries.\n"); while() { chop; ! next if /^\s*$/; ! if(m|^[^/]*/([^/]*)/(?:[^/]*/)*[^/]?([^/]*)$|) { ! $branch{$repos . '/' . $1} = ($2) ? $2 : "HEAD"; ! print "$$ $1/$2\n" if $debug; } } close(ENTRIES); ! open (AVAIL, $availfile) || exit(0); # It is ok for avail file not to exist ! while () { chop; next if /^\s*\#/; next if /^\s*$/; ($flagstr, $u, $m, $b) = split(/[\s,]*\|[\s,]*/, $_); --- 1,597 ---- ! #! @PERL@ -T # -*-Perl-*- + + ############################################################################### + ############################################################################### + ############################################################################### # ! # THIS SCRIPT IS PROBABLY BROKEN. REMOVING THE -T SWITCH ON THE #! LINE ABOVE ! # WOULD FIX IT, BUT THIS IS INSECURE. WE RECOMMEND FIXING THE ERRORS WHICH THE ! # -T SWITCH WILL CAUSE PERL TO REPORT BEFORE RUNNING THIS SCRIPT FROM A CVS ! # SERVER TRIGGER. PLEASE SEND PATCHES CONTAINING THE CHANGES YOU FIND ! # NECESSARY TO RUN THIS SCRIPT WITH THE TAINT-CHECKING ENABLED BACK TO THE ! # MAILING LIST. # ! # For more on general Perl security and taint-checking, please try running the ! # `perldoc perlsec' command. # + ############################################################################### + ############################################################################### + ############################################################################### + + =head1 Name + + cvs_acls - Access Control List for CVS + + =head1 Synopsis + + In 'commitinfo': + + repository/path/to/restrict $CVSROOT/CVSROOT/cvs_acls [-d][-u $USER][-f ] + + where: + + -d turns on debug information + -u passes the client-side userId to the cvs_acls script + -f specifies an alternate filename for the restrict_log file + + In 'cvsacl': + + {allow.*,deny.*} [|user,user,... [|repos,repos,... [|branch,branch,...]]] + + where: + + allow|deny - allow: commits are allowed; deny: prohibited + user - userId to be allowed or restricted + repos - file or directory to be allowed or restricted + branch - branch to be allowed or restricted + + See below for examples. + + =head1 Licensing + + cvs_acls - provides access control list functionality for CVS + + Copyright (c) 2004 by Peter Connolly + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + =head1 Description + + This script--cvs_acls--is invoked once for each directory within a + "cvs commit". The set of files being committed for that directory as + well as the directory itself, are passed to this script. This script + checks its 'cvsacl' file to see if any of the files being committed + are on the 'cvsacl' file's restricted list. If any of the files are + restricted, then the cvs_acls script passes back an exit code of 1 + which disallows the commits for that directory. + + Messages are returned to the committer indicating the file(s) that + he/she are not allowed to committ. Additionally, a site-specific + set of messages (e.g., contact information) can be included in these + messages. + + When a commit is prohibited, log messages are written to a restrict_log + file in $CVSROOT/CVSROOT. This default file can be redirected to + another destination. + + The script is triggered from the 'commitinfo' file in $CVSROOT/CVSROOT/. + + =head1 Enhancements + + This section lists the bug fixes and enhancements added to cvs_acls + that make up the current cvs_acls. + + =head2 Fixed Bugs + + This version attempts to get rid the following bugs from the + original version of cvs_acls: + + =over 2 + + =item * + Multiple entries on an 'cvsacl' line will be matched individually, + instead of requiring that all commit files *exactly* match all + 'cvsacl' entries. Commiting a file not in the 'cvsacl' list would + allow *all* files (including a restricted file) to be committed. + + [IMO, this basically made the original script unuseable for our + situation since any arbitrary combination of committed files could + avoid matching the 'cvsacl's entries.] + + =item * + Handle specific filename restrictions. cvs_acls didn't restrict + individual files specified in 'cvsacl'. + + =item * + Correctly handle multiple, specific filename restrictions + + =item * + Prohibit mix of dirs and files on a single 'cvsacl' line + [To simplify the logic and because this would be normal usage.] + + =item * + Correctly handle a mixture of branch restrictions within one work + directory + + =item * + $CVSROOT existence is checked too late + + =item * + Correctly handle the CVSROOT=:local:/... option (useful for + interactive testing) + + =item * + Replacing shoddy "$universal_off" logic + (Thanks to Karl-Konig Konigsson for pointing this out.) + + =back + + =head2 Enhancements + + =over 2 + + =item * + Checks modules in the 'cvsacl' file for valid files and directories + + =item * + Accurately report restricted entries and their matching patterns + + =item * + Simplified and commented overly complex PERL REGEXPs for readability + and maintainability + + =item * + Skip the rest of processing if a mismatch on portion of the 'cvsacl' line + + =item * + Get rid of opaque "karma" messages in favor of user-friendly messages + that describe which user, file(s) and branch(es) were disallowed. + + =item * + Add optional 'restrict_msg' file for additional, site-specific + restriction messages. + + =item * + Take a "-u" parameter for $USER from commit_prep so that the script + can do restrictions based on the client-side userId rather than the + server-side userId (usually 'cvs'). + + (See discussion below on "Admin Setup" for more on this point.) + + =item * + Added a lot more debug trace + + =item * + Tested these restrictions with concurrent use of pserver and SSH + access to model our transition from pserver to ext access. + + =item * + Added logging of restricted commit attempts. + Restricted commits can be sent to a default file: + $CVSROOT/CVSROOT/restrictlog or to one passed to the script + via the -f command parameter. + + =back + + =head2 ToDoS + + =over 2 + + =item * + Need to deal with pserver/SSH transition with conflicting umasks? + + =item * + Use a CPAN module to handle command parameters. + + =item * + Use a CPAN module to clone data structures. + + =back + + =head1 Version Information + + This is not offered as a fix to the original 'cvs_acls' script since it + differs substantially in goals and methods from the original and there + are probably a significant number of people out there that still require + the original version's functionality. + + The 'cvsacl' file flags of 'allow' and 'deny' were intentionally + changed to 'allow' and 'deny' because there are enough differences + between the original script's behavior and this one's that we wanted to + make sure that users will rethink their 'cvsacl' file formats before + plugging in this newer script. + + Please note that there has been very limited cross-platform testing of + this script!!! (We did not have the time or resources to do exhaustive + cross-platform testing.) + + It was developed and tested under Red Hat Linux 9.0 using PERL 5.8.0. + Additionally, it was built and tested under Red Hat Linux 7.3 using + PERL 5.6.1. + + $Id: cvs_acls.in,v 1.1.4.1 2005/07/06 20:12:37 snj Exp $ + + This version is based on the 1.11.13 version of cvs_acls + peter.connolly@cnet.com (Peter Connolly) + + Access control lists for CVS. dgg@ksr.com (David G. Grubbs) + Branch specific controls added by voisine@bytemobile.com (Aaron Voisine) + + =head1 Installation + + To use this program, do the following four things: + + 0. Install PERL, version 5.6.1 or 5.8.0. + + 1. Admin Setup: + + There are two choices here. + + a) The first option is to use the $ENV{"USER"}, server-side userId + (from the third column of your pserver 'passwd' file) as the basis for + your restrictions. In this case, you will (at a minimum) want to set + up a new "cvsadmin" userId and group on the pserver machine. + CVS administrators will then set up their 'passwd' file entries to + run either as "cvs" (for regular users) or as "cvsadmin" (for power + users). Correspondingly, your 'cvsacl' file will only list 'cvs' + and 'cvsadmin' as the userIds in the second column. + + Commentary: A potential weakness of this is that the xinetd + cvspserver process will need to run as 'root' in order to switch + between the 'cvs' and the 'cvsadmin' userIds. Some sysadmins don't + like situations like this and may want to chroot the process. + Talk to them about this point... + + b) The second option is to use the client-side userId as the basis for + your restrictions. In this case, all the xinetd cvspserver processes + can run as userId 'cvs' and no 'root' userId is required. If you have + a 'passwd' file that lists 'cvs' as the effective run-time userId for + all your users, then no changes to this file are needed. Your 'cvsacl' + file will use the individual, client-side userIds in its 2nd column. + + As long as the userIds in pserver's 'passwd' file match those userIds + that your Linux server know about, this approach is ideal if you are + planning to move from pserver to SSH access at some later point in time. + Just by switching the CVSROOT var from CVSROOT=:pserver:... to + CVSROOT=:ext:..., users can switch over to SSH access without + any other administrative changes. When all users have switched over to + SSH, the inherently insecure xinetd cvspserver process can be disabled. + [https://www.cvshome.org/docs/manual/cvs-1.11.17/cvs_2.html#SEC32] + + :TODO: The only potential glitch with the SSH approach is the possibility + that each user can have differing umasks that might interfere with one + another, especially during a transition from pserver to SSH. As noted + in the ToDo section, this needs a good strategy and set of tests for that + yet... + + 2. Put two lines, as the *only* non-comment lines, in your commitinfo file: + + ALL $CVSROOT/CVSROOT/commit_prep + ALL $CVSROOT/CVSROOT/cvs_acls [-d][-u $USER ][-f ] + + where "-d" turns on debug trace + "-u $USER" passes the client-side userId to cvs_acls + "-f overrides the default filename used to log + restricted commit attempts. + + (These are handled in the processArgs() subroutine.) + + If you are using client-side userIds to restrict access to your + repository, make sure that they are in this order since the commit_prep + script is required in order to pass the $USER parameter. + + A final note about the repository matching pattern. The example above + uses "ALL" but note that this means that the cvs_acls script will run + for each and every commit in your repository. Obviously, in a large + repository this adds up to a lot of overhead that may not be necesary. + A better strategy is to use a repository pattern that is more specific + to the areas that you wish to secure. + + 3. Install this file as $CVSROOT/CVSROOT/cvs_acls and make it executable. + + 4. Create a file named CVSROOT/cvsacl and optionally add it to + CVSROOT/checkoutlist and check it in. See the CVS manual's + administrative files section about checkoutlist. Typically: + + $ cvs checkout CVSROOT + $ cd CVSROOT + [ create the cvsacl file, include 'commitinfo' line ] + [ add cvsacl to checkoutlist ] + $ cvs add cvsacl + $ cvs commit -m 'Added cvsacl for use with cvs_acls.' cvsacl checkoutlist + + Note: The format of the 'cvsacl' file is described in detail immediately + below but here is an important set up point: + + Make sure to include a line like the following: + + deny||CVSROOT/commitinfo CVSROOT/cvsacl + allow|cvsadmin|CVSROOT/commitinfo CVSROOT/cvsacl ! that restricts access to commitinfo and cvsacl since this would be one of ! the easiest "end runs" around this ACL approach. ('commitinfo' has the ! line that executes the cvs_acls script and, of course, all the ! restrictions are in 'cvsacl'.) ! ! 5. (Optional) Create a 'restrict_msg' file in the $CVSROOT/CVSROOT directory. ! Whenever there is a restricted file or dir message, cvs_acls will look ! for this file and, if it exists, print its contents as part of the ! commit-denial message. This gives you a chance to print any site-specific ! information (e.g., who to call, what procedures to look up,...) whenever ! a commit is denied. ! ! =head1 Format of the cvsacl file ! ! The 'cvsacl' file determines whether you may commit files. It contains lines ! read from top to bottom, keeping track of whether a given user, repository ! and branch combination is "allowed" or "denied." The script will assume ! "allowed" on all repository paths until 'allow' and 'deny' rules change ! that default. ! ! The normal pattern is to specify an 'deny' rule to turn off ! access to ALL users, then follow it with a matching 'allow' rule that will ! turn on access for a select set of users. In the case of multiple rules for ! the same user, repository and branch, the last one takes precedence. ! ! Blank lines and lines with only comments are ignored. Any other lines not ! beginning with "allow" or "deny" are logged to the restrict_log file. ! ! Lines beginning with "allow" or "deny" are assumed to be '|'-separated ! triples: (All spaces and tabs are ignored in a line.) ! ! {allow.*,deny.*} [|user,user,... [|repos,repos,... [|branch,branch,...]]] ! ! 1. String starting with "allow" or "deny". ! 2. Optional, comma-separated list of usernames. ! 3. Optional, comma-separated list of repository pathnames. ! These are pathnames relative to $CVSROOT. They can be directories or ! filenames. A directory name allows or restricts access to all files and ! directories below it. One line can have either directories or filenames ! but not both. ! 4. Optional, comma-separated list of branch tags. ! If not specified, all branches are assumed. Use HEAD to reference the ! main branch. ! ! Example: (Note: No in-line comments.) ! ! # ----- Make whole repository unavailable. ! deny ! ! # ----- Except for user "dgg". ! allow|dgg ! ! # ----- Except when "fred" or "john" commit to the ! # module whose repository is "bin/ls" ! allow|fred, john|bin/ls ! ! # ----- Except when "ed" commits to the "stable" ! # branch of the "bin/ls" repository ! allow|ed|/bin/ls|stable ! ! =head1 Program Logic ! ! CVS passes to @ARGV an absolute directory pathname (the repository ! appended to your $CVSROOT variable), followed by a list of filenames ! within that directory that are to be committed. ! ! The script walks through the 'cvsacl' file looking for matches on ! the username, repository and branch. ! ! A username match is simply the user's name appearing in the second ! column of the cvsacl line in a space-or-comma separate list. If ! blank, then any user will match. ! ! A repository match: ! ! =over 2 ! ! =item * ! Each entry in the modules section of the current 'cvsacl' line is ! examined to see if it is a dir or a file. The line must have ! either files or dirs, but not both. (To simplify the logic.) ! ! =item * ! If neither, then assume the 'cvsacl' file was set up in error and ! skip that 'allow' line. ! ! =item * ! If a dir, then each dir pattern is matched separately against the ! beginning of each of the committed files in @ARGV. ! ! =item * ! If a file, then each file pattern is matched exactly against each ! of the files to be committed in @ARGV. ! ! =item * ! Repository and branch must BOTH match together. This is to cover ! the use case where a user has multiple branches checked out in ! a single work directory. Commit files can be from different ! branches. ! ! A branch match is either: ! ! =over 4 ! ! =item * ! When no branches are listed in the fourth column. ("Match any.") ! ! =item * ! All elements from the fourth column are matched against each of ! the tag names for $ARGV[1..$#ARGV] found in the %branches file. ! ! =back ! ! =item * ! 'allow' match remove that match from the tally map. ! ! =item * ! Restricted ('deny') matches are saved in the %repository_matches ! table. ! ! =item * ! If there is a match on user, repository and branch: ! ! If repository, branch and user match ! if 'deny' ! add %repository_matches entries to %restricted_entries ! else if 'allow' ! remove %repository_matches entries from %restricted_entries ! ! =item * ! At the end of all the 'cvsacl' line checks, check to see if there ! are any entries in the %restricted_entries. If so, then deny the ! commit. ! ! =back ! ! =head2 Pseudocode ! ! read CVS/Entries file and create branch{file}->{branch} hash table ! + for each 'allow' and 'deny' line in the 'cvsacl' file: ! | user match? ! | - Yes: set $user_match = 1; ! | repository and branch match? ! | - Yes: add to %repository_matches; ! | did user, repository match? ! | - Yes: if 'deny' then ! | add %repository_matches -> %restricted_entries ! | if 'allow' then ! | remove %repository_matches <- %restricted_entries ! + end for loop ! any saved restrictions? ! no: exit, ! set exit code allowing commits and exit ! yes: report restrictions, ! set exit code prohibiting commits and exit ! ! =head2 Sanity Check ! ! 1) file allow trumps a dir deny ! deny||java/lib ! allow||java/lib/README ! 2) dir allow can undo a file deny ! deny||java/lib/README ! allow||java/lib ! 3) file deny trumps a dir allow ! allow||java/lib ! deny||java/lib/README ! 4) dir deny trumps a file allow ! allow||java/lib/README ! deny||java/lib ! ... so last match always takes precedence ! ! =cut ! ! $debug = 0; # Set to 1 for debug messages ! ! %repository_matches = (); # hash of match file and pattern from 'cvsacl' ! # repository_matches --> [branch, matching-pattern] ! # (Used during module/branch matching loop) ! ! %restricted_entries = (); # hash table of restricted commit files (from @ARGV) ! # restricted_entries --> branch ! # (If user/module/branch all match on an 'deny' ! # line, then entries added to this map.) ! ! %branch; # hash table of key: commit file; value: branch ! # Built from ".../CVS/Entries" file of directory ! # currently being examined ! ! # ---------------------------------------------------------------- get CVSROOT $cvsroot = $ENV{'CVSROOT'}; ! die "Must set CVSROOT\n" if !$cvsroot; ! if ($cvsroot =~ /:([\/\w]*)$/) { # Filter ":pserver:", ":local:"-type prefixes ! $cvsroot = $1; ! } ! ! # ------------------------------------------------------------- set file paths ! $entries = "CVS/Entries"; # client-side file??? ! $cvsaclfile = $cvsroot . "/CVSROOT/cvsacl"; ! $restrictfile = $cvsroot . "/CVSROOT/restrict_msg"; ! $restrictlog = $cvsroot . "/CVSROOT/restrict_log"; + # --------------------------------------------------------------- process args + $user_name = processArgs(\@ARGV); + + print("$$ \@ARGV after processArgs is: @ARGV.\n") if $debug; + print("$$ ========== Begin $PROGRAM_NAME for \"$ARGV[0]\" repository. ========== \n") if $debug; + + # --------------------------------------------------------------- filter @ARGV eval "print STDERR \$die='Unknown parameter $1\n' if !defined \$$1; \$$1=\$';" while ($ARGV[0] =~ /^(\w+)=/ && shift(@ARGV)); ! exit 255 if $die; # process any variable=value switches ! print("$$ \@ARGV after shift processing contains:",join("\, ",@ARGV),".\n") if $debug; ! # ---------------------------------------------------------------- get cvsroot ! ($repository = shift) =~ s:^$cvsroot/::; ! grep($_ = $repository . '/' . $_, @ARGV); ! print("$$ \$cvsroot is: $cvsroot.\n") if $debug; ! print "$$ Repos: $repository\n","$$ ==== ",join("\n$$ ==== ",@ARGV),"\n" if $debug; ! $exit_val = 0; # presume good exit value for commit ! # ---------------------------------------------------------------------------- ! # ---------------------------------- create hash table $branch{file -> branch} ! # ---------------------------------------------------------------------------- ! ! # Here's a typical Entries file: ! # ! # /checkoutlist/1.4/Wed Feb 4 23:51:23 2004// ! # /cvsacl/1.3/Tue Feb 24 23:05:43 2004// ! # ... ! # /verifymsg/1.1/Fri Mar 16 19:56:24 2001// ! # D/backup//// ! # D/temp//// open(ENTRIES, $entries) || die("Cannot open $entries.\n"); + print("$$ File / Branch\n") if $debug; + my $i = 0; while() { chop; ! next if /^\s*$/; # Skip blank lines ! $i = $i + 1; ! if (m| ! / # 1st slash ! ([\w.-]*) # file name -> $1 ! / # 2nd slash ! .* # revision number ! / # 3rd slash ! .* # date and time ! / # 4th slash ! .* # keyword ! / # 5th slash ! T? # 'T' constant ! (\w*) # branch -> #2 ! |x) { ! $branch{$repository . '/' . $1} = ($2) ? $2 : "HEAD"; ! print "$$ CVS Entry $i: $1/$2\n" if $debug; } } close(ENTRIES); ! # ---------------------------------------------------------------------------- ! # ------------------------------------- evaluate each active line from 'cvsacl' ! # ---------------------------------------------------------------------------- ! open (CVSACL, $cvsaclfile) || exit(0); # It is ok for cvsacl file not to exist ! while () { chop; + <<<<<<< cvs_acls.in next if /^\s*\#/; next if /^\s*$/; ($flagstr, $u, $m, $b) = split(/[\s,]*\|[\s,]*/, $_); *************** *** 154,184 **** $in_repo = 1; for $j (@ARGV) { last if !($in_repo = grep ($_ eq $j, @tmp)); ! } ! } } - print "$$ \$repos($repos) in repository list: $_\n" if $debug && $in_repo; ! # Branch matches if it is in the branch list in the avail line, the branch ! # list is NULL, or there is no branch and HEAD is in the branch list. ! if(!($in_branch = !$b)) { ! @bls = split (/[\s,]+/,$b); ! for $j (@ARGV) { ! $f = $j; ! last if !($in_branch = grep($_ eq $branch{$j}, @bls)); } } ! print "$$ \$branch($branch{$f}) in branch list: $_\n" ! if $debug && $in_branch; ! $exit_val = $flag if ($in_user && $in_repo && $in_branch); ! print "$$ ==== \$exit_val = $exit_val\n$$ ==== \$flag = $flag\n" if $debug; } ! close(AVAIL); print "$$ ==== \$exit_val = $exit_val\n" if $debug; - print "**** Access denied: Insufficient Karma ($myname|$repos|$branch{$f})\n" - if $exit_val; - print "**** Access allowed: Personal Karma exceeds Environmental Karma.\n" - if $universal_off && !$exit_val; exit($exit_val); --- 622,984 ---- $in_repo = 1; for $j (@ARGV) { last if !($in_repo = grep ($_ eq $j, @tmp)); ! ======= ! next if /^\s*\#/; # skip comments ! next if /^\s*$/; # skip blank lines ! # --------------------------------------------- parse current 'cvsacl' line ! print("$$ ==========\n$$ Processing \'cvsacl\' line: $_.\n") if $debug; ! ($cvsacl_flag, $cvsacl_userIds, $cvsacl_modules, $cvsacl_branches) = split(/[\s,]*\|[\s,]*/, $_); ! ! # ------------------------------ Validate 'allow' or 'deny' line prefix ! if ($cvsacl_flag !~ /^allow/ && $cvsacl_flag !~ /^deny/) { ! print ("Bad cvsacl line: $_\n") if $debug; ! $log_text = sprintf "Bad cvsacl line: %s", $_; ! write_restrictlog_record($log_text); ! next; } ! # -------------------------------------------------- init loop match flags ! $user_match = 0; ! %repository_matches = (); ! ! # ------------------------------------------------------------------------ ! # ---------------------------------------------------------- user matching ! # ------------------------------------------------------------------------ ! # $user_name considered "in user list" if actually in list or is NULL ! $user_match = (!$cvsacl_userIds || grep ($_ eq $user_name, split(/[\s,]+/,$cvsacl_userIds))); ! print "$$ \$user_name: $user_name \$user_match match flag is: $user_match.\n" if $debug; ! if (!$user_match) { ! next; # no match, skip to next 'cvsacl' line ! } ! # ------------------------------------------------------------------------ ! # ---------------------------------------------------- repository matching ! # ------------------------------------------------------------------------ ! if (!$cvsacl_modules) { # blank module list = all modules ! if (!$cvsacl_branches) { # blank branch list = all branches ! print("$$ Adding all modules to \%repository_matches; null " . ! "\$cvsacl_modules and \$cvsacl_branches.\n") if $debug; ! for $commit_object (@ARGV) { ! $repository_matches{$commit_object} = [$branch{$commit_object}, $cvsacl_modules]; ! print("$$ \$repository_matches{$commit_object} = " . ! "[$branch{$commit_object}, $cvsacl_modules].\n") if $debug; ! } ! } ! else { # need to check for repository match ! @branch_list = split (/[\s,]+/,$cvsacl_branches); ! print("$$ Branches from \'cvsacl\' record: ", join(", ",@branch_list),".\n") if $debug; ! for $commit_object (@ARGV) { ! if (grep($branch{$commit_object}, @branch_list)) { ! $repository_matches{$commit_object} = [$branch{$commit_object}, $cvsacl_modules]; ! print("$$ \$repository_matches{$commit_object} = " . ! "[$branch{$commit_object}, $cvsacl_modules].\n") if $debug; ! } ! } ! } ! } ! else { ! # ----------------------------------- check every argument combination ! # parse 'cvsacl' modules to array ! my @module_list = split(/[\s,]+/,$cvsacl_modules); ! # ------------- Check all modules in list for either file or directory ! my $fileType = ""; ! if (($fileType = checkFileness(@module_list)) eq "") { ! next; # skip bad file types ! } ! # ---------- Check each combination of 'cvsacl' modules vs. @ARGV files ! print("$$ Checking matches for \@module_list: ", join("\, ",@module_list), ".\n") if $debug; ! # loop thru all command-line commit objects ! for $commit_object (@ARGV) { ! # loop thru all modules on 'cvsacl' line ! for $cvsacl_module (@module_list) { ! print("$$ Is \'cvsacl\': $cvsacl_modules pattern in: \@ARGV " . ! "\$commit_object: $commit_object?\n") if $debug; ! # Do match of beginning of $commit_object ! checkModuleMatch($fileType, $commit_object, $cvsacl_module); ! } # end for commit objects ! } # end for cvsacl modules ! } # end if ! ! print("$$ Matches for: \%repository_matches: ", join("\, ", (keys %repository_matches)), ".\n") if $debug; ! ! # ------------------------------------------------------------------------ ! # ----------------------------------------------------- setting exit value ! # ------------------------------------------------------------------------ ! if ($user_match && %repository_matches) { ! print("$$ An \"$cvsacl_flag\" match on User(s): $cvsacl_userIds; Module(s):" . ! " $cvsacl_modules; Branch(es): $cvsacl_branches.\n") if $debug; ! if ($cvsacl_flag eq "deny") { ! # Add all matches to the hash of restricted modules ! foreach $commitFile (keys %repository_matches) { ! print("$$ Adding \%repository_matches entry: $commitFile.\n") if $debug; ! $restricted_entries{$commitFile} = $repository_matches{$commitFile}[0]; ! >>>>>>> 1.1.1.3 ! } ! } ! else { ! # Remove all matches from the restricted modules hash ! foreach $commitFile (keys %repository_matches) { ! print("$$ Removing \%repository_matches entry: $commitFile.\n") if $debug; ! delete $restricted_entries{$commitFile}; ! } } } ! print "$$ ==== End of processing for \'cvsacl\' line: $_.\n" if $debug; ! } ! close(CVSACL); ! # ---------------------------------------------------------------------------- ! # --------------------------------------- determine final 'commit' disposition ! # ---------------------------------------------------------------------------- ! if (%restricted_entries) { # any restricted entries? ! $exit_val = 1; # don't commit ! print("**** Access denied: Insufficient authority for user: '$user_name\' " . ! "to commit to \'$repository\'.\n**** Contact CVS Administrators if " . ! "you require update access to these directories or files.\n"); ! print("**** file(s)/dir(s) restricted were:\n\t", join("\n\t",keys %restricted_entries), "\n"); ! printOptionalRestrictionMessage(); ! write_restrictlog(); ! } ! elsif (!$exit_val && $debug) { ! print "**** Access allowed: Sufficient authority for commit.\n"; } ! print "$$ ==== \$exit_val = $exit_val\n" if $debug; exit($exit_val); + + # ---------------------------------------------------------------------------- + # -------------------------------------------------------------- end of "main" + # ---------------------------------------------------------------------------- + + + # ---------------------------------------------------------------------------- + # -------------------------------------------------------- process script args + # ---------------------------------------------------------------------------- + sub processArgs { + + # This subroutine is passed a reference to @ARGV. + + # If @ARGV contains a "-u" entry, use that as the effective userId. In this + # case, the userId is the client-side userId that has been passed to this + # script by the commit_prep script. (This is why the commit_prep script must + # be placed *before* the cvs_acls script in the commitinfo admin file.) + + # Otherwise, pull the userId from the server-side environment. + + my $userId = ""; + my ($argv) = shift; # pick up ref to @ARGV + my @argvClone = (); # immutable copy for foreach loop + for ($i=0; $i<(scalar @{$argv}); $i++) { + $argvClone[$i]=$argv->[$i]; + } + + print("$$ \@_ to processArgs is: @_.\n") if $debug; + + # Parse command line arguments (file list is seen as one arg) + foreach $arg (@argvClone) { + print("$$ \$arg for processArgs loop is: $arg.\n") if $debug; + # Set $debug flag? + if ($arg eq '-d') { + shift @ARGV; + $debug = 1; + print("$$ \$debug flag set on.\n") if $debug; + print STDERR "Debug turned on...\n"; + } + # Passing in a client-side userId? + elsif ($arg eq '-u') { + shift @ARGV; + $userId = shift @ARGV; + print("$$ client-side \$userId set to: $userId.\n") if $debug; + } + # An override for the default restrictlog file? + elsif ($arg eq '-f') { + shift @ARGV; + $restrictlog = shift @ARGV; + } + else { + next; + } + } + + # No client-side userId passed? then get from server env + if (!$userId) { + $userId = $ENV{"USER"} if !($userId = $ENV{"LOGNAME"}); + print("$$ server-side \$userId set to: $userId.\n") if $debug; + } + + print("$$ processArgs returning \$userId: $userId.\n") if $debug; + return $userId; + + } + + + # ---------------------------------------------------------------------------- + # --------------------- Check all modules in list for either file or directory + # ---------------------------------------------------------------------------- + sub checkFileness { + + # Module patterns on the 'cvsacl' record can be files or directories. + # If it's a directory, we pattern-match the directory name from 'cvsacl' + # against the left side of the committed filename to see if the file is in + # that hierarchy. By contrast, files use an explicit match. If the entries + # are neither files nor directories, then the cvsacl file has been set up + # incorrectly; we return a "" and the caller skips that line as invalid. + # + # This function determines whether the entries on the 'cvsacl' record are all + # directories or all files; it cannot be a mixture. This restriction put in + # to simplify the logic (without taking away much functionality). + + my @module_list = @_; + print("$$ Checking \"fileness\" or \"dir-ness\" for \@module_list entries.\n") if $debug; + print("$$ Entries are: ", join("\, ",@module_list), ".\n") if $debug; + my $filetype = ""; + for $cvsacl_module (@module_list) { + my $reposDirName = $cvsroot . '/' . $cvsacl_module; + my $reposFileName = $reposDirName . "\,v"; + print("$$ In checkFileness: \$reposDirName: $reposDirName; \$reposFileName: $reposFileName.\n") if $debug; + if (((-d $reposDirName) && ($filetype eq "file")) || ((-f $reposFileName) && ($filetype eq "dir"))) { + print("Can\'t mix files and directories on single \'cvsacl\' file record; skipping entry.\n"); + print(" Please contact a CVS administrator.\n"); + $filetype = ""; + last; + } + elsif (-d $reposDirName) { + $filetype = "dir"; + print("$$ $reposDirName is a directory.\n") if $debug; + } + elsif (-f $reposFileName) { + $filetype = "file"; + print("$$ $reposFileName is a regular file.\n") if $debug; + } + else { + print("***** Item to commit was neither a regular file nor a directory.\n"); + print("***** Current \'cvsacl\' line ignored.\n"); + print("***** Possible problem with \'cvsacl\' admin file. Please contact a CVS administrator.\n"); + $filetype = ""; + $text = sprintf("Module entry on cvsacl line: %s is not a valid file or directory.\n", $cvsacl_module); + write_restrictlog_record($text); + last; + } # end if + } # end for + + print("$$ checkFileness will return \$filetype: $filetype.\n") if $debug; + return $filetype; + } + + + # ---------------------------------------------------------------------------- + # ----------------------------------------------------- check for module match + # ---------------------------------------------------------------------------- + sub checkModuleMatch { + + # This subroutine checks for a match between the directory or file pattern + # specified in the 'cvsacl' file (i.e., $cvsacl_modules) versus the commit file + # objects passed into the script via @ARGV (i.e., $commit_object). + + # The directory pattern only has to match the beginning portion of the commit + # file's name for a match since all files under that directory are considered + # a match. File patterns must exactly match. + + # Since (theoretically, if not normally in practice) a working directory can + # contain a mixture of files from different branches, this routine checks to + # see if there is also a match on branch before considering the file + # comparison a match. + + my $match_flag = ""; + + print("$$ \@_ in checkModuleMatch is: @_.\n") if $debug; + my ($type,$commit_object,$cvsacl_module) = @_; + + if ($type eq "file") { # Do exact file match of $commit_object + if ($commit_object eq $cvsacl_module) { + $match_flag = "file"; + } # Do dir match at beginning of $commit_object + } + elsif ($commit_object =~ /^$cvsacl_module\//) { + $match_flag = "dir"; + } + + if ($match_flag) { + print("$$ \$repository: $repository matches \$commit_object: $commit_object.\n") if $debug; + if (!$cvsacl_branches) { # empty branch pattern matches all + print("$$ blank \'cvsacl\' branch matches all commit files.\n") if $debug; + $repository_matches{$commit_object} = [$branch{$commit_object}, $cvsacl_module]; + print("$$ \$repository_matches{$commit_object} = [$branch{$commit_object}, $cvsacl_module].\n") if $debug; + } + else { # otherwise check branch hash table + @branch_list = split (/[\s,]+/,$cvsacl_branches); + print("$$ Branches from \'cvsacl\' record: ", join(", ",@branch_list),".\n") if $debug; + if (grep(/$branch{$commit_object}/, @branch_list)) { + $repository_matches{$commit_object} = [$branch{$commit_object}, $cvsacl_module]; + print("$$ \$repository_matches{$commit_object} = [$branch{$commit_object}, " . + "$cvsacl_module].\n") if $debug; + } + } + } + + } + + # ---------------------------------------------------------------------------- + # ------------------------------------------------------- check for file match + # ---------------------------------------------------------------------------- + sub printOptionalRestrictionMessage { + + # This subroutine optionally prints site-specific file restriction information + # whenever a restriction condition is met. If the file 'restrict_msg' does + # not exist, the routine immediately exits. If there is a 'restrict_msg' file + # then all the contents are printed at the end of the standard restriction + # message. + + # As seen from examining the definition of $restrictfile, the default filename + # is: $CVSROOT/CVSROOT/restrict_msg. + + open (RESTRICT, $restrictfile) || return; # It is ok for cvsacl file not to exist + while () { + chop; + # print out each line + print("**** $_\n"); + } + + } + + # ---------------------------------------------------------------------------- + # ---------------------------------------------------------- write log message + # ---------------------------------------------------------------------------- + sub write_restrictlog { + + # This subroutine iterates through the list of restricted entries and logs + # each one to the error logfile. + + # write each line in @text out separately + foreach $commitfile (keys %restricted_entries) { + $log_text = sprintf "Commit attempt by: %s for: %s on branch: %s", + $user_name, $commitfile, $branch{$commitfile}; + write_restrictlog_record($log_text); + } + + } + + # ---------------------------------------------------------------------------- + # ---------------------------------------------------------- write log message + # ---------------------------------------------------------------------------- + sub write_restrictlog_record { + + # This subroutine receives a scalar string and writes it out to the + # $restrictlog file as a separate line. Each line is prepended with the date + # and time in the format: "2004/01/30 12:00:00 ". + + $text = shift; + + # return quietly if there is a problem opening the log file. + open(FILE, ">>$restrictlog") || return; + + (@time) = localtime(); + + # write each line in @text out separately + $log_record = sprintf "%04d/%02d/%02d %02d:%02d:%02d %s.\n", + $time[5]+1900, $time[4]+1, $time[3], $time[2], $time[1], $time[0], $text; + print FILE $log_record; + print("$$ restrict_log record being written: $log_record to $restrictlog.\n") if $debug; + + close(FILE); + } Index: src/gnu/dist/cvs/contrib/log.in diff -c src/gnu/dist/cvs/contrib/log.in:1.1 src/gnu/dist/cvs/contrib/log.in:1.1.4.1 *** src/gnu/dist/cvs/contrib/log.in:1.1 Thu Nov 28 04:54:04 2002 --- src/gnu/dist/cvs/contrib/log.in Wed Jul 6 20:12:37 2005 *************** *** 1,6 **** ! #! @PERL@ # -*-Perl-*- ! # # XXX: FIXME: handle multiple '-f logfile' arguments # # XXX -- I HATE Perl! This *will* be re-written in shell/awk/sed soon! --- 1,24 ---- ! #! @PERL@ -T # -*-Perl-*- ! ! ############################################################################### ! ############################################################################### ! ############################################################################### ! # ! # THIS SCRIPT IS PROBABLY BROKEN. REMOVING THE -T SWITCH ON THE #! LINE ABOVE ! # WOULD FIX IT, BUT THIS IS INSECURE. WE RECOMMEND FIXING THE ERRORS WHICH THE ! # -T SWITCH WILL CAUSE PERL TO REPORT BEFORE RUNNING THIS SCRIPT FROM A CVS ! # SERVER TRIGGER. PLEASE SEND PATCHES CONTAINING THE CHANGES YOU FIND ! # NECESSARY TO RUN THIS SCRIPT WITH THE TAINT-CHECKING ENABLED BACK TO THE ! # MAILING LIST. ! # ! # For more on general Perl security and taint-checking, please try running the ! # `perldoc perlsec' command. ! # ! ############################################################################### ! ############################################################################### ! ############################################################################### ! # XXX: FIXME: handle multiple '-f logfile' arguments # # XXX -- I HATE Perl! This *will* be re-written in shell/awk/sed soon! Index: src/gnu/dist/cvs/contrib/log_accum.in diff -c src/gnu/dist/cvs/contrib/log_accum.in:1.2.2.1 src/gnu/dist/cvs/contrib/log_accum.in:1.2.2.2 *** src/gnu/dist/cvs/contrib/log_accum.in:1.2.2.1 Thu May 20 04:30:50 2004 --- src/gnu/dist/cvs/contrib/log_accum.in Wed Jul 6 20:12:37 2005 *************** *** 1,6 **** ! #! @PERL@ # -*-Perl-*- ! # # Perl filter to handle the log messages from the checkin of files in # a directory. This script will group the lists of files by log # message, and mail a single consolidated log message at the end of --- 1,24 ---- ! #! @PERL@ -T # -*-Perl-*- ! ! ############################################################################### ! ############################################################################### ! ############################################################################### ! # ! # THIS SCRIPT IS PROBABLY BROKEN. REMOVING THE -T SWITCH ON THE #! LINE ABOVE ! # WOULD FIX IT, BUT THIS IS INSECURE. WE RECOMMEND FIXING THE ERRORS WHICH THE ! # -T SWITCH WILL CAUSE PERL TO REPORT BEFORE RUNNING THIS SCRIPT FROM A CVS ! # SERVER TRIGGER. PLEASE SEND PATCHES CONTAINING THE CHANGES YOU FIND ! # NECESSARY TO RUN THIS SCRIPT WITH THE TAINT-CHECKING ENABLED BACK TO THE ! # MAILING LIST. ! # ! # For more on general Perl security and taint-checking, please try running the ! # `perldoc perlsec' command. ! # ! ############################################################################### ! ############################################################################### ! ############################################################################### ! # Perl filter to handle the log messages from the checkin of files in # a directory. This script will group the lists of files by log # message, and mail a single consolidated log message at the end of *************** *** 273,279 **** } $diff = "\n\n"; ! $vhost = @path[0]; if ($CVSWEB_PORT eq "80") { $cvsweb_base = "$CVSWEB_SCHEME://$vhost.$CVSWEB_DOMAIN/$CVSWEB_URI"; } --- 291,297 ---- } $diff = "\n\n"; ! $vhost = $path[0]; if ($CVSWEB_PORT eq "80") { $cvsweb_base = "$CVSWEB_SCHEME://$vhost.$CVSWEB_DOMAIN/$CVSWEB_URI"; } *************** *** 457,463 **** my $subj = &derive_subject_from_changes_file (); ! if ($EMULATE_LOCAL_MAIL_USER NE "") { $MAIL_FROM = "$cvs_user\@$EMULATE_LOCAL_MAIL_USER"; } --- 475,481 ---- my $subj = &derive_subject_from_changes_file (); ! if ($EMULATE_LOCAL_MAIL_USER ne "") { $MAIL_FROM = "$cvs_user\@$EMULATE_LOCAL_MAIL_USER"; } *************** *** 536,542 **** $cvs_user = $ENV{'USER'} || getlogin || (getpwuid($<))[0] || sprintf("uid#%d",$<); @files = process_argv(@ARGV); @path = split('/', $files[0]); - $repository = $path[0]; if ($#path == 0) { $dir = "."; } else { --- 554,559 ---- Index: src/gnu/dist/cvs/contrib/mfpipe.in diff -c src/gnu/dist/cvs/contrib/mfpipe.in:1.1 src/gnu/dist/cvs/contrib/mfpipe.in:1.1.4.1 *** src/gnu/dist/cvs/contrib/mfpipe.in:1.1 Thu Nov 28 04:54:05 2002 --- src/gnu/dist/cvs/contrib/mfpipe.in Wed Jul 6 20:12:37 2005 *************** *** 1,6 **** ! #! @PERL@ # -*-Perl-*- ! # # From: clyne@niwot.scd.ucar.EDU (John Clyne) # Date: Fri, 28 Feb 92 09:54:21 MST # --- 1,24 ---- ! #! @PERL@ -T # -*-Perl-*- ! ! ############################################################################### ! ############################################################################### ! ############################################################################### ! # ! # THIS SCRIPT IS PROBABLY BROKEN. REMOVING THE -T SWITCH ON THE #! LINE ABOVE ! # WOULD FIX IT, BUT THIS IS INSECURE. WE RECOMMEND FIXING THE ERRORS WHICH THE ! # -T SWITCH WILL CAUSE PERL TO REPORT BEFORE RUNNING THIS SCRIPT FROM A CVS ! # SERVER TRIGGER. PLEASE SEND PATCHES CONTAINING THE CHANGES YOU FIND ! # NECESSARY TO RUN THIS SCRIPT WITH THE TAINT-CHECKING ENABLED BACK TO THE ! # MAILING LIST. ! # ! # For more on general Perl security and taint-checking, please try running the ! # `perldoc perlsec' command. ! # ! ############################################################################### ! ############################################################################### ! ############################################################################### ! # From: clyne@niwot.scd.ucar.EDU (John Clyne) # Date: Fri, 28 Feb 92 09:54:21 MST # Index: src/gnu/dist/cvs/contrib/rcslock.in diff -c src/gnu/dist/cvs/contrib/rcslock.in:1.1 src/gnu/dist/cvs/contrib/rcslock.in:1.1.4.1 *** src/gnu/dist/cvs/contrib/rcslock.in:1.1 Thu Nov 28 04:54:06 2002 --- src/gnu/dist/cvs/contrib/rcslock.in Wed Jul 6 20:12:37 2005 *************** *** 1,6 **** ! #! @PERL@ # -*-Perl-*- # Author: John Rouillard (rouilj@cs.umb.edu) # Supported: Yeah right. (Well what do you expect for 2 hours work?) # Blame-to: rouilj@cs.umb.edu --- 1,24 ---- ! #! @PERL@ -T # -*-Perl-*- + ############################################################################### + ############################################################################### + ############################################################################### + # + # THIS SCRIPT IS PROBABLY BROKEN. REMOVING THE -T SWITCH ON THE #! LINE ABOVE + # WOULD FIX IT, BUT THIS IS INSECURE. WE RECOMMEND FIXING THE ERRORS WHICH THE + # -T SWITCH WILL CAUSE PERL TO REPORT BEFORE RUNNING THIS SCRIPT FROM A CVS + # SERVER TRIGGER. PLEASE SEND PATCHES CONTAINING THE CHANGES YOU FIND + # NECESSARY TO RUN THIS SCRIPT WITH THE TAINT-CHECKING ENABLED BACK TO THE + # MAILING LIST. + # + # For more on general Perl security and taint-checking, please try running the + # `perldoc perlsec' command. + # + ############################################################################### + ############################################################################### + ############################################################################### + # Author: John Rouillard (rouilj@cs.umb.edu) # Supported: Yeah right. (Well what do you expect for 2 hours work?) # Blame-to: rouilj@cs.umb.edu Index: src/gnu/dist/cvs/diff/ChangeLog diff -c src/gnu/dist/cvs/diff/ChangeLog:1.1.1.5.2.1 src/gnu/dist/cvs/diff/ChangeLog:1.1.1.5.2.2 *** src/gnu/dist/cvs/diff/ChangeLog:1.1.1.5.2.1 Thu May 20 04:30:50 2004 --- src/gnu/dist/cvs/diff/ChangeLog Wed Jul 6 20:12:37 2005 *************** *** 1,3 **** --- 1,7 ---- + 2004-11-05 Conrad T. Pino + + * libdiff.dep: Regenerated after complete rebuild. + 2004-05-15 Derek Price * libdiff.dsp: Header file list updated. Index: src/gnu/dist/cvs/diff/Makefile.in diff -c src/gnu/dist/cvs/diff/Makefile.in:1.1.1.4.2.1 src/gnu/dist/cvs/diff/Makefile.in:1.1.1.4.2.2 *** src/gnu/dist/cvs/diff/Makefile.in:1.1.1.4.2.1 Thu May 20 04:30:50 2004 --- src/gnu/dist/cvs/diff/Makefile.in Wed Jul 6 20:12:37 2005 *************** *** 1,8 **** ! # Makefile.in generated by automake 1.7.9 from Makefile.am. # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. --- 1,8 ---- ! # Makefile.in generated by automake 1.9.5 from Makefile.am. # @configure_input@ ! # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ! # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. *************** *** 14,19 **** --- 14,21 ---- @SET_MAKE@ + SOURCES = $(libdiff_a_SOURCES) + srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ *************** *** 21,27 **** pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 --- 23,28 ---- *************** *** 35,40 **** --- 36,74 ---- NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : + subdir = diff + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) + mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + CONFIG_HEADER = $(top_builddir)/config.h + CONFIG_CLEAN_FILES = + LIBRARIES = $(noinst_LIBRARIES) + AR = ar + ARFLAGS = cru + libdiff_a_AR = $(AR) $(ARFLAGS) + libdiff_a_LIBADD = + am_libdiff_a_OBJECTS = diff.$(OBJEXT) diff3.$(OBJEXT) \ + analyze.$(OBJEXT) cmpbuf.$(OBJEXT) io.$(OBJEXT) \ + context.$(OBJEXT) ed.$(OBJEXT) normal.$(OBJEXT) \ + ifdef.$(OBJEXT) util.$(OBJEXT) dir.$(OBJEXT) version.$(OBJEXT) \ + side.$(OBJEXT) + libdiff_a_OBJECTS = $(am_libdiff_a_OBJECTS) + DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) + LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ + SOURCES = $(libdiff_a_SOURCES) + DIST_SOURCES = $(libdiff_a_SOURCES) + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ *************** *** 104,109 **** --- 138,145 ---- am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ + am__tar = @am__tar@ + am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ datadir = @datadir@ *************** *** 117,122 **** --- 153,159 ---- libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ + mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ *************** *** 124,186 **** sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ - INCLUDES = -I$(top_srcdir)/lib - noinst_LIBRARIES = libdiff.a - libdiff_a_SOURCES = diff.c diff3.c analyze.c cmpbuf.c cmpbuf.h io.c \ context.c ed.c normal.c ifdef.c util.c dir.c version.c diff.h \ side.c system.h diffrun.h - EXTRA_DIST = ChangeLog build_diff.com diagmeet.note \ libdiff.dep libdiff.dsp libdiff.mak - subdir = diff - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs - CONFIG_HEADER = $(top_builddir)/config.h - CONFIG_CLEAN_FILES = - LIBRARIES = $(noinst_LIBRARIES) - - libdiff_a_AR = $(AR) cru - libdiff_a_LIBADD = - am_libdiff_a_OBJECTS = diff.$(OBJEXT) diff3.$(OBJEXT) analyze.$(OBJEXT) \ - cmpbuf.$(OBJEXT) io.$(OBJEXT) context.$(OBJEXT) ed.$(OBJEXT) \ - normal.$(OBJEXT) ifdef.$(OBJEXT) util.$(OBJEXT) dir.$(OBJEXT) \ - version.$(OBJEXT) side.$(OBJEXT) - libdiff_a_OBJECTS = $(am_libdiff_a_OBJECTS) - - DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) - depcomp = $(SHELL) $(top_srcdir)/depcomp - am__depfiles_maybe = depfiles - @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/analyze.Po ./$(DEPDIR)/cmpbuf.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/context.Po ./$(DEPDIR)/diff.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/diff3.Po ./$(DEPDIR)/dir.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/ed.Po ./$(DEPDIR)/ifdef.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/io.Po ./$(DEPDIR)/normal.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/side.Po ./$(DEPDIR)/util.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/version.Po - COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) - CCLD = $(CC) - LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ - DIST_SOURCES = $(libdiff_a_SOURCES) - DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am - SOURCES = $(libdiff_a_SOURCES) - all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu diff/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ! ! AR = ar clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) --- 161,208 ---- sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ INCLUDES = -I$(top_srcdir)/lib noinst_LIBRARIES = libdiff.a libdiff_a_SOURCES = diff.c diff3.c analyze.c cmpbuf.c cmpbuf.h io.c \ context.c ed.c normal.c ifdef.c util.c dir.c version.c diff.h \ side.c system.h diffrun.h EXTRA_DIST = ChangeLog build_diff.com diagmeet.note \ libdiff.dep libdiff.dsp libdiff.mak all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ! @for dep in $?; do \ ! case '$(am__configure_deps)' in \ ! *$$dep*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ! && exit 0; \ ! exit 1;; \ ! esac; \ ! done; \ ! echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu diff/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu diff/Makefile ! .PRECIOUS: Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! @case '$?' in \ ! *config.status*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ! *) \ ! echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ! esac; ! ! $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! ! $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) *************** *** 190,196 **** $(RANLIB) libdiff.a mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c --- 212,218 ---- $(RANLIB) libdiff.a mostlyclean-compile: ! -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c *************** *** 210,245 **** @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@ .c.o: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ ! @am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ ! @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ ! @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ ! @am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ ! @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ ! @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` uninstall-info-am: - ETAGS = etags - ETAGSFLAGS = - - CTAGS = ctags - CTAGSFLAGS = - - tags: TAGS - ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ --- 232,251 ---- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@ .c.o: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ *************** *** 248,253 **** --- 254,260 ---- $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique + tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) *************** *** 259,268 **** done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) --- 266,276 ---- done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ! test -n "$$unique" || unique=$$empty_fix; \ ! $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique; \ ! fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) *************** *** 285,294 **** distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - - top_distdir = .. - distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ --- 293,298 ---- *************** *** 302,308 **** dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ --- 306,312 ---- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ *************** *** 320,326 **** check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) - installdirs: install: install-am install-exec: install-exec-am --- 324,329 ---- *************** *** 341,347 **** clean-generic: distclean-generic: ! -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" --- 344,350 ---- clean-generic: distclean-generic: ! -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" *************** *** 360,365 **** --- 363,370 ---- dvi-am: + html: html-am + info: info-am info-am: *************** *** 395,407 **** .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ ! distclean-generic distclean-tags distdir dvi dvi-am info \ ! info-am install install-am install-data install-data-am \ ! install-exec install-exec-am install-info install-info-am \ ! install-man install-strip installcheck installcheck-am \ ! installdirs maintainer-clean maintainer-clean-generic \ ! mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ! ps ps-am tags uninstall uninstall-am uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 400,413 ---- .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ ! distclean-generic distclean-tags distdir dvi dvi-am html \ ! html-am info info-am install install-am install-data \ ! install-data-am install-exec install-exec-am install-info \ ! install-info-am install-man install-strip installcheck \ ! installcheck-am installdirs maintainer-clean \ ! maintainer-clean-generic mostlyclean mostlyclean-compile \ ! mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ ! uninstall-am uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. Index: src/gnu/dist/cvs/diff/libdiff.dep diff -c /dev/null src/gnu/dist/cvs/diff/libdiff.dep:1.1.1.2.4.1 *** /dev/null Mon Oct 31 02:21:51 2005 --- src/gnu/dist/cvs/diff/libdiff.dep Wed Jul 6 20:12:37 2005 *************** *** 0 **** --- 1,112 ---- + # Microsoft Developer Studio Generated Dependency File, included by libdiff.mak + + .\analyze.c : \ + "..\lib\regex.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\cmpbuf.h"\ + ".\diff.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\cmpbuf.c : \ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\cmpbuf.h"\ + ".\system.h"\ + + + .\context.c : \ + "..\lib\regex.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\diff.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\diff.c : \ + "..\lib\getopt.h"\ + "..\lib\regex.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\diff.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\diff3.c : \ + "..\lib\getopt.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\dir.c : \ + "..\lib\regex.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\diff.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\ed.c : \ + "..\lib\regex.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\diff.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\ifdef.c : \ + "..\lib\regex.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\diff.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\io.c : \ + "..\lib\regex.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\diff.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\normal.c : \ + "..\lib\regex.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\diff.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\side.c : \ + "..\lib\regex.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\diff.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\util.c : \ + "..\lib\regex.h"\ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\diff.h"\ + ".\diffrun.h"\ + ".\system.h"\ + + + .\version.c : \ + "..\windows-NT\config.h"\ + Index: src/gnu/dist/cvs/diff/libdiff.mak diff -c /dev/null src/gnu/dist/cvs/diff/libdiff.mak:1.1.1.1.8.1 *** /dev/null Mon Oct 31 02:21:51 2005 --- src/gnu/dist/cvs/diff/libdiff.mak Wed Jul 6 20:12:37 2005 *************** *** 0 **** --- 1,307 ---- + # Microsoft Developer Studio Generated NMAKE File, Based on libdiff.dsp + !IF "$(CFG)" == "" + CFG=libdiff - Win32 Debug + !MESSAGE No configuration specified. Defaulting to libdiff - Win32 Debug. + !ENDIF + + !IF "$(CFG)" != "libdiff - Win32 Release" && "$(CFG)" != "libdiff - Win32 Debug" + !MESSAGE Invalid configuration "$(CFG)" specified. + !MESSAGE You can specify a configuration when running NMAKE + !MESSAGE by defining the macro CFG on the command line. For example: + !MESSAGE + !MESSAGE NMAKE /f "libdiff.mak" CFG="libdiff - Win32 Debug" + !MESSAGE + !MESSAGE Possible choices for configuration are: + !MESSAGE + !MESSAGE "libdiff - Win32 Release" (based on "Win32 (x86) Static Library") + !MESSAGE "libdiff - Win32 Debug" (based on "Win32 (x86) Static Library") + !MESSAGE + !ERROR An invalid configuration is specified. + !ENDIF + + !IF "$(OS)" == "Windows_NT" + NULL= + !ELSE + NULL=nul + !ENDIF + + CPP=cl.exe + RSC=rc.exe + + !IF "$(CFG)" == "libdiff - Win32 Release" + + OUTDIR=.\WinRel + INTDIR=.\WinRel + # Begin Custom Macros + OutDir=.\WinRel + # End Custom Macros + + !IF "$(RECURSE)" == "0" + + ALL : "$(OUTDIR)\libdiff.lib" + + !ELSE + + ALL : "libcvs - Win32 Release" "$(OUTDIR)\libdiff.lib" + + !ENDIF + + !IF "$(RECURSE)" == "1" + CLEAN :"libcvs - Win32 ReleaseCLEAN" + !ELSE + CLEAN : + !ENDIF + -@erase "$(INTDIR)\analyze.obj" + -@erase "$(INTDIR)\cmpbuf.obj" + -@erase "$(INTDIR)\context.obj" + -@erase "$(INTDIR)\diff.obj" + -@erase "$(INTDIR)\diff3.obj" + -@erase "$(INTDIR)\dir.obj" + -@erase "$(INTDIR)\ed.obj" + -@erase "$(INTDIR)\ifdef.obj" + -@erase "$(INTDIR)\io.obj" + -@erase "$(INTDIR)\normal.obj" + -@erase "$(INTDIR)\side.obj" + -@erase "$(INTDIR)\util.obj" + -@erase "$(INTDIR)\vc60.idb" + -@erase "$(INTDIR)\version.obj" + -@erase "$(OUTDIR)\libdiff.lib" + + "$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + + CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\windows-NT" /I "..\lib" /D "_WINDOWS" /D "HAVE_TIME_H" /D "CLOSEDIR_VOID" /D "NDEBUG" /D "WIN32" /D "WANT_WIN_COMPILER_VERSION" /Fp"$(INTDIR)\libdiff.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c + BSC32=bscmake.exe + BSC32_FLAGS=/nologo /o"$(OUTDIR)\libdiff.bsc" + BSC32_SBRS= \ + + LIB32=link.exe -lib + LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libdiff.lib" + LIB32_OBJS= \ + "$(INTDIR)\analyze.obj" \ + "$(INTDIR)\cmpbuf.obj" \ + "$(INTDIR)\context.obj" \ + "$(INTDIR)\diff.obj" \ + "$(INTDIR)\diff3.obj" \ + "$(INTDIR)\dir.obj" \ + "$(INTDIR)\ed.obj" \ + "$(INTDIR)\ifdef.obj" \ + "$(INTDIR)\io.obj" \ + "$(INTDIR)\normal.obj" \ + "$(INTDIR)\side.obj" \ + "$(INTDIR)\util.obj" \ + "$(INTDIR)\version.obj" \ + "..\lib\WinRel\libcvs.lib" + + "$(OUTDIR)\libdiff.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) + $(LIB32) @<< + $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) + << + + !ELSEIF "$(CFG)" == "libdiff - Win32 Debug" + + OUTDIR=.\WinDebug + INTDIR=.\WinDebug + # Begin Custom Macros + OutDir=.\WinDebug + # End Custom Macros + + !IF "$(RECURSE)" == "0" + + ALL : "$(OUTDIR)\libdiff.lib" + + !ELSE + + ALL : "libcvs - Win32 Debug" "$(OUTDIR)\libdiff.lib" + + !ENDIF + + !IF "$(RECURSE)" == "1" + CLEAN :"libcvs - Win32 DebugCLEAN" + !ELSE + CLEAN : + !ENDIF + -@erase "$(INTDIR)\analyze.obj" + -@erase "$(INTDIR)\cmpbuf.obj" + -@erase "$(INTDIR)\context.obj" + -@erase "$(INTDIR)\diff.obj" + -@erase "$(INTDIR)\diff3.obj" + -@erase "$(INTDIR)\dir.obj" + -@erase "$(INTDIR)\ed.obj" + -@erase "$(INTDIR)\ifdef.obj" + -@erase "$(INTDIR)\io.obj" + -@erase "$(INTDIR)\normal.obj" + -@erase "$(INTDIR)\side.obj" + -@erase "$(INTDIR)\util.obj" + -@erase "$(INTDIR)\vc60.idb" + -@erase "$(INTDIR)\version.obj" + -@erase "$(OUTDIR)\libdiff.lib" + + "$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + + CPP_PROJ=/nologo /MLd /W3 /GX /Z7 /Od /I "..\windows-NT" /I "..\lib" /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /D "HAVE_TIME_H" /D "CLOSEDIR_VOID" /Fp"$(INTDIR)\libdiff.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c + BSC32=bscmake.exe + BSC32_FLAGS=/nologo /o"$(OUTDIR)\libdiff.bsc" + BSC32_SBRS= \ + + LIB32=link.exe -lib + LIB32_FLAGS=..\lib\WinDebug\libcvs.lib /nologo /out:"$(OUTDIR)\libdiff.lib" + LIB32_OBJS= \ + "$(INTDIR)\analyze.obj" \ + "$(INTDIR)\cmpbuf.obj" \ + "$(INTDIR)\context.obj" \ + "$(INTDIR)\diff.obj" \ + "$(INTDIR)\diff3.obj" \ + "$(INTDIR)\dir.obj" \ + "$(INTDIR)\ed.obj" \ + "$(INTDIR)\ifdef.obj" \ + "$(INTDIR)\io.obj" \ + "$(INTDIR)\normal.obj" \ + "$(INTDIR)\side.obj" \ + "$(INTDIR)\util.obj" \ + "$(INTDIR)\version.obj" \ + "..\lib\WinDebug\libcvs.lib" + + "$(OUTDIR)\libdiff.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) + $(LIB32) @<< + $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) + << + + !ENDIF + + .c{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + .cpp{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + .cxx{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + .c{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + .cpp{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + .cxx{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + + !IF "$(NO_EXTERNAL_DEPS)" != "1" + !IF EXISTS("libdiff.dep") + !INCLUDE "libdiff.dep" + !ELSE + !MESSAGE Warning: cannot find "libdiff.dep" + !ENDIF + !ENDIF + + + !IF "$(CFG)" == "libdiff - Win32 Release" || "$(CFG)" == "libdiff - Win32 Debug" + SOURCE=.\analyze.c + + "$(INTDIR)\analyze.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\cmpbuf.c + + "$(INTDIR)\cmpbuf.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\context.c + + "$(INTDIR)\context.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\diff.c + + "$(INTDIR)\diff.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\diff3.c + + "$(INTDIR)\diff3.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\dir.c + + "$(INTDIR)\dir.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\ed.c + + "$(INTDIR)\ed.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\ifdef.c + + "$(INTDIR)\ifdef.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\io.c + + "$(INTDIR)\io.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\normal.c + + "$(INTDIR)\normal.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\side.c + + "$(INTDIR)\side.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\util.c + + "$(INTDIR)\util.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\version.c + + "$(INTDIR)\version.obj" : $(SOURCE) "$(INTDIR)" + + + !IF "$(CFG)" == "libdiff - Win32 Release" + + "libcvs - Win32 Release" : + cd "..\lib" + $(MAKE) /$(MAKEFLAGS) /F ".\libcvs.mak" CFG="libcvs - Win32 Release" + cd "..\diff" + + "libcvs - Win32 ReleaseCLEAN" : + cd "..\lib" + $(MAKE) /$(MAKEFLAGS) /F ".\libcvs.mak" CFG="libcvs - Win32 Release" RECURSE=1 CLEAN + cd "..\diff" + + !ELSEIF "$(CFG)" == "libdiff - Win32 Debug" + + "libcvs - Win32 Debug" : + cd "..\lib" + $(MAKE) /$(MAKEFLAGS) /F ".\libcvs.mak" CFG="libcvs - Win32 Debug" + cd "..\diff" + + "libcvs - Win32 DebugCLEAN" : + cd "..\lib" + $(MAKE) /$(MAKEFLAGS) /F ".\libcvs.mak" CFG="libcvs - Win32 Debug" RECURSE=1 CLEAN + cd "..\diff" + + !ENDIF + + + !ENDIF + Index: src/gnu/dist/cvs/doc/ChangeLog diff -c src/gnu/dist/cvs/doc/ChangeLog:1.1.1.7.2.2 src/gnu/dist/cvs/doc/ChangeLog:1.1.1.7.2.3 *** src/gnu/dist/cvs/doc/ChangeLog:1.1.1.7.2.2 Fri Jul 23 08:03:02 2004 --- src/gnu/dist/cvs/doc/ChangeLog Wed Jul 6 20:12:37 2005 *************** *** 1,3 **** --- 1,49 ---- + 2005-04-14 Derek Price + + * cvs.texinfo (Administrative files): Add "Trigger Scripts" node to + the menu. + (Trigger Scripts, Trigger Script Security): New nodes. + (syntax): Move under Trigger scripts node. + (commit files, taginfo): Rewrite to reference Trigger Script node. + + 2005-04-06 Derek Price + + * Makefile.am (MAINTAINERCLEANFILES): Add cvs.1. + (cvs.1): Create intermediate file so that the original isn't emptied on + error. + + 2005-01-31 Derek Price + + * Makefile.am, cvs.man.header, cvs.texinfo: Update copyright notices. + + 2005-01-29 Derek Price + + * cvs.texinfo (log options): Note quirky interaction of log options. + (Suggestion from Dan Peterson .) + + 2004-10-29 Mark D. Baushke + + * cvs.texinfo (Common options): The -r TAG option works with + the cvs annotate command. + (Original patch from Ville Skytta .) + + 2004-09-25 Derek Price + + * mkman.in: Move to... + * mkman.pl: ...here. + * Makefile.am (cvs.1): mkman is in build dir, not src dir. + + 2004-07-17 Derek Price + + * cvs.texinfo (Update imports, import): Add notes on requirement that + release tags be unique. + (Original patch from Ilya N. Golubev .) + + 2004-06-10 Derek Price + + * cvs.texinfo (commit files): Remove reference to the obsolete -i + module option. + 2004-05-28 Derek Price * cvs.texinfo (Global options): Remove reference to global -l option. Index: src/gnu/dist/cvs/doc/Makefile.am diff -c src/gnu/dist/cvs/doc/Makefile.am:1.2.2.1 src/gnu/dist/cvs/doc/Makefile.am:1.2.2.2 *** src/gnu/dist/cvs/doc/Makefile.am:1.2.2.1 Thu May 20 04:30:50 2004 --- src/gnu/dist/cvs/doc/Makefile.am Wed Jul 6 20:12:37 2005 *************** *** 1,8 **** ## Process this file with automake to produce Makefile.in # Makefile for GNU CVS documentation (excluding man pages - see ../man). ! # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 1,10 ---- ## Process this file with automake to produce Makefile.in # Makefile for GNU CVS documentation (excluding man pages - see ../man). ! # ! # Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! # ! # Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! # and others. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by *************** *** 48,54 **** # These Automake generates MOSTLYCLEAN targets for PostScripts genersted from # TEXINFOS, but it shouldn't when those files are in EXTRA_DIST MAINTAINERCLEANFILES = \ ! $(PSS) doc: info ps .PHONY: doc --- 50,57 ---- # These Automake generates MOSTLYCLEAN targets for PostScripts genersted from # TEXINFOS, but it shouldn't when those files are in EXTRA_DIST MAINTAINERCLEANFILES = \ ! $(PSS) \ ! cvs.1 doc: info ps .PHONY: doc *************** *** 78,85 **** # Targets to build a man page from cvs.texinfo. cvs.1: @MAINTAINER_MODE_TRUE@ mkman cvs.man.header cvs.texinfo cvs.man.footer ! ./mkman $(srcdir)/cvs.man.header $(srcdir)/cvs.texinfo \ ! $(srcdir)/cvs.man.footer >$@ # texinfo based targets automake neglects to include SUFFIXES = .txt --- 81,90 ---- # Targets to build a man page from cvs.texinfo. cvs.1: @MAINTAINER_MODE_TRUE@ mkman cvs.man.header cvs.texinfo cvs.man.footer ! $(PERL) ./mkman $(srcdir)/cvs.man.header $(srcdir)/cvs.texinfo \ ! $(srcdir)/cvs.man.footer >cvs.tmp ! cp cvs.tmp $(srcdir)/$@ ! -@rm -f cvs.tmp # texinfo based targets automake neglects to include SUFFIXES = .txt Index: src/gnu/dist/cvs/doc/Makefile.in diff -c src/gnu/dist/cvs/doc/Makefile.in:1.1.1.5.2.1 src/gnu/dist/cvs/doc/Makefile.in:1.1.1.5.2.2 *** src/gnu/dist/cvs/doc/Makefile.in:1.1.1.5.2.1 Thu May 20 04:30:50 2004 --- src/gnu/dist/cvs/doc/Makefile.in Wed Jul 6 20:12:37 2005 *************** *** 1,8 **** ! # Makefile.in generated by automake 1.7.9 from Makefile.am. # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. --- 1,8 ---- ! # Makefile.in generated by automake 1.9.5 from Makefile.am. # @configure_input@ ! # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ! # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. *************** *** 15,23 **** @SET_MAKE@ # Makefile for GNU CVS documentation (excluding man pages - see ../man). ! # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 15,25 ---- @SET_MAKE@ # Makefile for GNU CVS documentation (excluding man pages - see ../man). ! # ! # Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! # ! # Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! # and others. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by *************** *** 28,34 **** # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. - srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ --- 30,35 ---- *************** *** 36,42 **** pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 --- 37,42 ---- *************** *** 50,55 **** --- 50,84 ---- NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : + subdir = doc + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/mkman.pl $(srcdir)/stamp-1 $(srcdir)/stamp-vti \ + $(srcdir)/version-client.texi $(srcdir)/version.texi ChangeLog \ + mdate-sh texinfo.tex + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) + mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + CONFIG_HEADER = $(top_builddir)/config.h + CONFIG_CLEAN_FILES = mkman + SOURCES = + DIST_SOURCES = + INFO_DEPS = $(srcdir)/cvs.info $(srcdir)/cvsclient.info + am__TEXINFO_TEX_DIR = $(srcdir) + DVIS = cvs.dvi cvsclient.dvi + HTMLS = cvs.html cvsclient.html + TEXINFOS = cvs.texinfo cvsclient.texi + TEXI2PDF = $(TEXI2DVI) --pdf --batch + MAKEINFOHTML = $(MAKEINFO) --html + AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) + DVIPS = dvips + am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" + man1dir = $(mandir)/man1 + NROFF = nroff + MANS = $(man_MANS) + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ *************** *** 119,124 **** --- 148,155 ---- am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ + am__tar = @am__tar@ + am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ datadir = @datadir@ *************** *** 132,137 **** --- 163,169 ---- libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ + mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ *************** *** 139,165 **** sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ - info_TEXINFOS = cvs.texinfo cvsclient.texi man_MANS = cvs.1 - PSS = \ cvs.ps \ cvs-paper.ps \ cvsclient.ps - PDFS = \ cvs.pdf \ cvs-paper.pdf \ cvsclient.pdf - TXTS = \ cvs.txt \ cvsclient.txt - EXTRA_DIST = \ $(PSS) \ .cvsignore \ --- 171,192 ---- *************** *** 171,177 **** cvs.man.header \ cvs.man.footer - MOSTLYCLEANFILES = \ $(TXTS) --- 198,203 ---- *************** *** 179,305 **** # These Automake generates MOSTLYCLEAN targets for PostScripts genersted from # TEXINFOS, but it shouldn't when those files are in EXTRA_DIST MAINTAINERCLEANFILES = \ ! $(PSS) # texinfo based targets automake neglects to include SUFFIXES = .txt - subdir = doc - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs - CONFIG_HEADER = $(top_builddir)/config.h - CONFIG_CLEAN_FILES = mkman - DIST_SOURCES = - am__TEXINFO_TEX_DIR = $(srcdir) - INFO_DEPS = cvs.info cvsclient.info - DVIS = cvs.dvi cvsclient.dvi - TEXINFOS = cvs.texinfo cvsclient.texi - - NROFF = nroff - MANS = $(man_MANS) - DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am mdate-sh \ - mkman.in stamp-1 stamp-vti texinfo.tex version-client.texi \ - version.texi all: all-am .SUFFIXES: ! .SUFFIXES: .txt .dvi .info .pdf .ps .texi .texinfo .txi ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ! mkman: $(top_builddir)/config.status mkman.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ .texinfo.info: ! @rm -f $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9] ! $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ ! -o $@ `test -f '$<' || echo '$(srcdir)/'`$< .texinfo.dvi: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ ! $(TEXI2DVI) `test -f '$<' || echo '$(srcdir)/'`$< .texinfo.pdf: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ ! $(TEXI2PDF) `test -f '$<' || echo '$(srcdir)/'`$< ! cvs.info: cvs.texinfo version.texi ! cvs.dvi: cvs.texinfo version.texi ! cvs.pdf: cvs.texinfo version.texi ! version.texi: @MAINTAINER_MODE_TRUE@ stamp-vti ! stamp-vti: cvs.texinfo $(top_srcdir)/configure @(dir=.; test -f ./cvs.texinfo || dir=$(srcdir); \ set `$(SHELL) $(srcdir)/mdate-sh $$dir/cvs.texinfo`; \ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ echo "@set VERSION $(VERSION)") > vti.tmp ! @cmp -s vti.tmp version.texi \ ! || (echo "Updating version.texi"; \ ! cp vti.tmp version.texi) -@rm -f vti.tmp ! @cp version.texi $@ mostlyclean-vti: -rm -f vti.tmp maintainer-clean-vti: ! @MAINTAINER_MODE_TRUE@ -rm -f stamp-vti version.texi .texi.info: ! @rm -f $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9] ! $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ ! -o $@ `test -f '$<' || echo '$(srcdir)/'`$< .texi.dvi: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ ! $(TEXI2DVI) `test -f '$<' || echo '$(srcdir)/'`$< .texi.pdf: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ ! $(TEXI2PDF) `test -f '$<' || echo '$(srcdir)/'`$< ! cvsclient.info: cvsclient.texi version-client.texi ! cvsclient.dvi: cvsclient.texi version-client.texi ! cvsclient.pdf: cvsclient.texi version-client.texi ! version-client.texi: @MAINTAINER_MODE_TRUE@ stamp-1 ! stamp-1: cvsclient.texi $(top_srcdir)/configure @(dir=.; test -f ./cvsclient.texi || dir=$(srcdir); \ set `$(SHELL) $(srcdir)/mdate-sh $$dir/cvsclient.texi`; \ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ echo "@set VERSION $(VERSION)") > 1.tmp ! @cmp -s 1.tmp version-client.texi \ ! || (echo "Updating version-client.texi"; \ ! cp 1.tmp version-client.texi) -@rm -f 1.tmp ! @cp version-client.texi $@ mostlyclean-1: -rm -f 1.tmp maintainer-clean-1: ! @MAINTAINER_MODE_TRUE@ -rm -f stamp-1 version-client.texi ! ! TEXI2PDF = $(TEXI2DVI) --pdf --batch ! DVIPS = dvips .dvi.ps: $(DVIPS) -o $@ $< uninstall-info-am: ! $(PRE_UNINSTALL) @if (install-info --version && \ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ ! echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$relfile"; \ ! install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$relfile; \ done; \ else :; fi @$(NORMAL_UNINSTALL) --- 205,397 ---- # These Automake generates MOSTLYCLEAN targets for PostScripts genersted from # TEXINFOS, but it shouldn't when those files are in EXTRA_DIST MAINTAINERCLEANFILES = \ ! $(PSS) \ ! cvs.1 # texinfo based targets automake neglects to include SUFFIXES = .txt all: all-am .SUFFIXES: ! .SUFFIXES: .txt .dvi .html .info .pdf .ps .texi .texinfo .txi ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ! @for dep in $?; do \ ! case '$(am__configure_deps)' in \ ! *$$dep*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ! && exit 0; \ ! exit 1;; \ ! esac; \ ! done; \ ! echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile ! .PRECIOUS: Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! @case '$?' in \ ! *config.status*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ! *) \ ! echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ! esac; ! ! $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! ! $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! mkman: $(top_builddir)/config.status $(srcdir)/mkman.pl cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ .texinfo.info: ! restore=: && backupdir="$(am__leading_dot)am$$$$" && \ ! am__cwd=`pwd` && cd $(srcdir) && \ ! rm -rf $$backupdir && mkdir $$backupdir && \ ! for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ ! if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ ! done; \ ! cd "$$am__cwd"; \ ! if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ ! -o $@ $<; \ ! then \ ! rc=0; \ ! cd $(srcdir); \ ! else \ ! rc=$$?; \ ! cd $(srcdir) && \ ! $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ ! fi; \ ! rm -rf $$backupdir; exit $$rc .texinfo.dvi: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ ! $(TEXI2DVI) $< .texinfo.pdf: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ ! $(TEXI2PDF) $< ! ! .texinfo.html: ! rm -rf $(@:.html=.htp) ! if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ ! -o $(@:.html=.htp) $<; \ ! then \ ! rm -rf $@; \ ! if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ ! mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ ! else \ ! if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ ! rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ ! exit 1; \ ! fi ! $(srcdir)/cvs.info: cvs.texinfo $(srcdir)/version.texi ! cvs.dvi: cvs.texinfo $(srcdir)/version.texi ! cvs.pdf: cvs.texinfo $(srcdir)/version.texi ! cvs.html: cvs.texinfo $(srcdir)/version.texi ! $(srcdir)/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/stamp-vti ! $(srcdir)/stamp-vti: cvs.texinfo $(top_srcdir)/configure @(dir=.; test -f ./cvs.texinfo || dir=$(srcdir); \ set `$(SHELL) $(srcdir)/mdate-sh $$dir/cvs.texinfo`; \ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ echo "@set VERSION $(VERSION)") > vti.tmp ! @cmp -s vti.tmp $(srcdir)/version.texi \ ! || (echo "Updating $(srcdir)/version.texi"; \ ! cp vti.tmp $(srcdir)/version.texi) -@rm -f vti.tmp ! @cp $(srcdir)/version.texi $@ mostlyclean-vti: -rm -f vti.tmp maintainer-clean-vti: ! @MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi .texi.info: ! restore=: && backupdir="$(am__leading_dot)am$$$$" && \ ! am__cwd=`pwd` && cd $(srcdir) && \ ! rm -rf $$backupdir && mkdir $$backupdir && \ ! for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ ! if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ ! done; \ ! cd "$$am__cwd"; \ ! if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ ! -o $@ $<; \ ! then \ ! rc=0; \ ! cd $(srcdir); \ ! else \ ! rc=$$?; \ ! cd $(srcdir) && \ ! $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ ! fi; \ ! rm -rf $$backupdir; exit $$rc .texi.dvi: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ ! $(TEXI2DVI) $< .texi.pdf: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ ! $(TEXI2PDF) $< ! ! .texi.html: ! rm -rf $(@:.html=.htp) ! if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ ! -o $(@:.html=.htp) $<; \ ! then \ ! rm -rf $@; \ ! if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ ! mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ ! else \ ! if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ ! rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ ! exit 1; \ ! fi ! $(srcdir)/cvsclient.info: cvsclient.texi $(srcdir)/version-client.texi ! cvsclient.dvi: cvsclient.texi $(srcdir)/version-client.texi ! cvsclient.pdf: cvsclient.texi $(srcdir)/version-client.texi ! cvsclient.html: cvsclient.texi $(srcdir)/version-client.texi ! $(srcdir)/version-client.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/stamp-1 ! $(srcdir)/stamp-1: cvsclient.texi $(top_srcdir)/configure @(dir=.; test -f ./cvsclient.texi || dir=$(srcdir); \ set `$(SHELL) $(srcdir)/mdate-sh $$dir/cvsclient.texi`; \ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ echo "@set VERSION $(VERSION)") > 1.tmp ! @cmp -s 1.tmp $(srcdir)/version-client.texi \ ! || (echo "Updating $(srcdir)/version-client.texi"; \ ! cp 1.tmp $(srcdir)/version-client.texi) -@rm -f 1.tmp ! @cp $(srcdir)/version-client.texi $@ mostlyclean-1: -rm -f 1.tmp maintainer-clean-1: ! @MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-1 $(srcdir)/version-client.texi .dvi.ps: $(DVIPS) -o $@ $< uninstall-info-am: ! @$(PRE_UNINSTALL) @if (install-info --version && \ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ ! echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ ! install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ done; \ else :; fi @$(NORMAL_UNINSTALL) *************** *** 307,321 **** for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ ! (if cd $(DESTDIR)$(infodir); then \ ! echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ else :; fi); \ done dist-info: $(INFO_DEPS) list='$(INFO_DEPS)'; \ for base in $$list; do \ if test -f $$base; then d=.; else d=$(srcdir); fi; \ for file in $$d/$$base*; do \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ --- 399,417 ---- for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ ! (if cd "$(DESTDIR)$(infodir)"; then \ ! echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ else :; fi); \ done dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; \ for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ if test -f $$base; then d=.; else d=$(srcdir); fi; \ for file in $$d/$$base*; do \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ *************** *** 325,337 **** done mostlyclean-aminfo: ! -rm -f cvs.aux cvs.cp cvs.cps cvs.fn cvs.fns cvs.ky cvs.kys cvs.log cvs.pg \ ! cvs.pgs cvs.tmp cvs.toc cvs.tp cvs.tps cvs.vr cvs.vrs cvs.dvi \ ! cvs.pdf cvs.ps cvsclient.aux cvsclient.cp cvsclient.cps \ ! cvsclient.fn cvsclient.fns cvsclient.ky cvsclient.kys \ ! cvsclient.log cvsclient.pg cvsclient.pgs cvsclient.tmp \ ! cvsclient.toc cvsclient.tp cvsclient.tps cvsclient.vr \ ! cvsclient.vrs cvsclient.dvi cvsclient.pdf cvsclient.ps maintainer-clean-aminfo: @list='$(INFO_DEPS)'; for i in $$list; do \ --- 421,434 ---- done mostlyclean-aminfo: ! -rm -rf cvs.aux cvs.cp cvs.cps cvs.fn cvs.fns cvs.ky cvs.kys cvs.log cvs.pg \ ! cvs.pgs cvs.tmp cvs.toc cvs.tp cvs.tps cvs.vr cvs.vrs \ ! cvs.dvi cvs.pdf cvs.ps cvs.html cvsclient.aux cvsclient.cp \ ! cvsclient.cps cvsclient.fn cvsclient.fns cvsclient.ky \ ! cvsclient.kys cvsclient.log cvsclient.pg cvsclient.pgs \ ! cvsclient.tmp cvsclient.toc cvsclient.tp cvsclient.tps \ ! cvsclient.vr cvsclient.vrs cvsclient.dvi cvsclient.pdf \ ! cvsclient.ps cvsclient.html maintainer-clean-aminfo: @list='$(INFO_DEPS)'; for i in $$list; do \ *************** *** 339,349 **** echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done - - man1dir = $(mandir)/man1 install-man1: $(man1_MANS) $(man_MANS) @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(man1dir) @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ --- 436,444 ---- echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done install-man1: $(man1_MANS) $(man_MANS) @$(NORMAL_INSTALL) ! test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)" @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ *************** *** 362,369 **** inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ ! $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ done uninstall-man1: @$(NORMAL_UNINSTALL) --- 457,464 ---- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ ! $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ done uninstall-man1: @$(NORMAL_UNINSTALL) *************** *** 383,390 **** inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ ! rm -f $(DESTDIR)$(man1dir)/$$inst; \ done tags: TAGS TAGS: --- 478,485 ---- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ ! rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ done tags: TAGS TAGS: *************** *** 392,401 **** ctags: CTAGS CTAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - - top_distdir = .. - distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ --- 487,492 ---- *************** *** 409,415 **** dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ --- 500,506 ---- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ *************** *** 430,438 **** check-am: all-am check: check-am all-am: Makefile $(INFO_DEPS) $(MANS) - installdirs: ! $(mkinstalldirs) $(DESTDIR)$(infodir) $(DESTDIR)$(man1dir) install: install-am install-exec: install-exec-am install-data: install-data-am --- 521,530 ---- check-am: all-am check: check-am all-am: Makefile $(INFO_DEPS) $(MANS) installdirs: ! for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)"; do \ ! test -z "$$dir" || $(mkdir_p) "$$dir"; \ ! done install: install-am install-exec: install-exec-am install-data: install-data-am *************** *** 453,459 **** clean-generic: distclean-generic: ! -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" --- 545,551 ---- clean-generic: distclean-generic: ! -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" *************** *** 467,476 **** -rm -f Makefile distclean-am: clean-am distclean-generic - dvi: dvi-am - dvi-am: $(DVIS) info: info-am info-am: $(INFO_DEPS) --- 559,570 ---- -rm -f Makefile distclean-am: clean-am distclean-generic dvi-am: $(DVIS) + html: html-am + + html-am: $(HTMLS) + info: info-am info-am: $(INFO_DEPS) *************** *** 483,499 **** install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(infodir) ! @list='$(INFO_DEPS)'; \ for file in $$list; do \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ if test -f $$ifile; then \ relfile=`echo "$$ifile" | sed 's|^.*/||'`; \ ! echo " $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile"; \ ! $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile; \ else : ; fi; \ done; \ done --- 577,597 ---- install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) ! test -z "$(infodir)" || $(mkdir_p) "$(DESTDIR)$(infodir)" ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! list='$(INFO_DEPS)'; \ for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ if test -f $$ifile; then \ relfile=`echo "$$ifile" | sed 's|^.*/||'`; \ ! echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \ ! $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \ else : ; fi; \ done; \ done *************** *** 503,510 **** list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ ! echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$relfile";\ ! install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$relfile || :;\ done; \ else : ; fi install-man: install-man1 --- 601,608 ---- list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ ! echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ ! install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ done; \ else : ; fi install-man: install-man1 *************** *** 535,550 **** uninstall-man: uninstall-man1 .PHONY: all all-am check check-am clean clean-generic dist-info \ ! distclean distclean-generic distdir dvi dvi-am info info-am \ ! install install-am install-data install-data-am install-exec \ ! install-exec-am install-info install-info-am install-man \ ! install-man1 install-strip installcheck installcheck-am \ ! installdirs maintainer-clean maintainer-clean-1 \ ! maintainer-clean-aminfo maintainer-clean-generic \ ! maintainer-clean-vti mostlyclean mostlyclean-1 \ ! mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \ ! pdf-am ps ps-am uninstall uninstall-am uninstall-info-am \ ! uninstall-man uninstall-man1 doc: info ps --- 633,648 ---- uninstall-man: uninstall-man1 .PHONY: all all-am check check-am clean clean-generic dist-info \ ! distclean distclean-generic distdir dvi dvi-am html html-am \ ! info info-am install install-am install-data install-data-am \ ! install-exec install-exec-am install-info install-info-am \ ! install-man install-man1 install-strip installcheck \ ! installcheck-am installdirs maintainer-clean \ ! maintainer-clean-1 maintainer-clean-aminfo \ ! maintainer-clean-generic maintainer-clean-vti mostlyclean \ ! mostlyclean-1 mostlyclean-aminfo mostlyclean-generic \ ! mostlyclean-vti pdf pdf-am ps ps-am uninstall uninstall-am \ ! uninstall-info-am uninstall-man uninstall-man1 doc: info ps *************** *** 575,582 **** # Targets to build a man page from cvs.texinfo. cvs.1: @MAINTAINER_MODE_TRUE@ mkman cvs.man.header cvs.texinfo cvs.man.footer ! ./mkman $(srcdir)/cvs.man.header $(srcdir)/cvs.texinfo \ ! $(srcdir)/cvs.man.footer >$@ .texinfo.txt: $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ --no-headers -o $@ `test -f '$<' || echo '$(srcdir)/'`$< --- 673,682 ---- # Targets to build a man page from cvs.texinfo. cvs.1: @MAINTAINER_MODE_TRUE@ mkman cvs.man.header cvs.texinfo cvs.man.footer ! $(PERL) ./mkman $(srcdir)/cvs.man.header $(srcdir)/cvs.texinfo \ ! $(srcdir)/cvs.man.footer >cvs.tmp ! cp cvs.tmp $(srcdir)/$@ ! -@rm -f cvs.tmp .texinfo.txt: $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ --no-headers -o $@ `test -f '$<' || echo '$(srcdir)/'`$< Index: src/gnu/dist/cvs/doc/cvs.1 diff -c src/gnu/dist/cvs/doc/cvs.1:1.1.2.2 src/gnu/dist/cvs/doc/cvs.1:1.1.2.3 *** src/gnu/dist/cvs/doc/cvs.1:1.1.2.2 Fri Jul 23 08:03:02 2004 --- src/gnu/dist/cvs/doc/cvs.1 Wed Jul 6 20:12:37 2005 *************** *** 2,10 **** .\" cvs.man.header, cvs.texinfo, & cvs.man.footer files. Please make changes .\" there. A full copyright & license notice may also be found in cvs.texinfo. .\" ! .\" Copyright 2004 The Free Software Foundation, ! .\" Derek R. Price, ! .\" & Ximbiot .\" .\" This documentation is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by --- 2,10 ---- .\" cvs.man.header, cvs.texinfo, & cvs.man.footer files. Please make changes .\" there. A full copyright & license notice may also be found in cvs.texinfo. .\" ! .\" Man page autogeneration, including this header file, is ! .\" Copyright 2004-2005 The Free Software Foundation, Inc., ! .\" Derek R. Price, & Ximbiot . .\" .\" This documentation is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by *************** *** 653,660 **** \fBNote: this is not the same as the overall \fBcvs -r\fB option, which you can specify to the left of a \fBcvs\fB command!\fR .SP ! \fB-r\fR is available with the \fBcheckout\fR, \fBcommit\fR, ! \fBdiff\fR, \fBhistory\fR, \fBexport\fR, \fBrdiff\fR, \fBrtag\fR, and \fBupdate\fR commands. .SP .IP "" 0 --- 653,660 ---- \fBNote: this is not the same as the overall \fBcvs -r\fB option, which you can specify to the left of a \fBcvs\fB command!\fR .SP ! \fB-r\fR is available with the \fBannotate\fR, \fBcheckout\fR, ! \fBcommit\fR, \fBdiff\fR, \fBhistory\fR, \fBexport\fR, \fBrdiff\fR, \fBrtag\fR, and \fBupdate\fR commands. .SP .IP "" 0 *************** *** 2807,2814 **** \fIrepository\fR is needed to identify the collection of source. \fIvendortag\fR is a tag for the entire branch (e.g., for 1.1.1). You must also specify at ! least one \fIreleasetag\fR to identify the files at ! the leaves created each time you execute \fBimport\fR. .SP Note that \fBimport\fR does \fInot\fR change the directory in which you invoke it. In particular, it --- 2807,2816 ---- \fIrepository\fR is needed to identify the collection of source. \fIvendortag\fR is a tag for the entire branch (e.g., for 1.1.1). You must also specify at ! least one \fIreleasetag\fR to uniquely identify the files at ! the leaves created each time you execute \fBimport\fR. The ! \fIreleasetag\fR should be new, not previously existing in the ! repository file, and uniquely identify the imported release, .SP Note that \fBimport\fR does \fInot\fR change the directory in which you invoke it. In particular, it *************** *** 2945,2951 **** .SH "log options" .SP By default, \fBlog\fR prints all information that is ! available. All other options restrict the output. .SP .IP "" 0 \fB-b\fR --- 2947,2958 ---- .SH "log options" .SP By default, \fBlog\fR prints all information that is ! available. All other options restrict the output. Note that the revision ! selection options (\fB-d\fR, \fB-r\fR, \fB-s\fR, and \fB-w\fR) have no ! effect, other than possibly causing a search for files in Attic directories, ! when used in conjunction with the options that restrict the output to only ! \fBlog\fR header fields (\fB-b\fR, \fB-h\fR, \fB-R\fR, and \fB-t\fR) ! unless the \fB-S\fR option is also specified. .SP .IP "" 0 \fB-b\fR Index: src/gnu/dist/cvs/doc/cvs.man.footer diff -c /dev/null src/gnu/dist/cvs/doc/cvs.man.footer:1.1.1.1.8.1 *** /dev/null Mon Oct 31 02:21:51 2005 --- src/gnu/dist/cvs/doc/cvs.man.footer Wed Jul 6 20:12:37 2005 *************** *** 0 **** --- 1,60 ---- + .SH "AUTHORS" + .TP + Dick Grune + Original author of the + .B cvs + shell script version posted to + .B comp.sources.unix + in the volume6 release of December, 1986. + Credited with much of the + .B cvs + conflict resolution algorithms. + .TP + Brian Berliner + Coder and designer of the + .B cvs + program itself in April, 1989, based on the original work done by Dick. + .TP + Jeff Polk + Helped Brian with the design of the + .B cvs + module and vendor branch support and author of the + .BR checkin ( 1 ) + shell script (the ancestor of \fBcvs import\fP). + .TP + Larry Jones, Derek R. Price, and Mark D. Baushke + Have helped maintain + .B cvs + for many years. + .TP + And many others too numerous to mention here. + .SH "SEE ALSO" + The most comprehensive manual for CVS is + Version Management with CVS by Per Cederqvist et al. Depending on + your system, you may be able to get it with the + .B info CVS + command or it may be available as cvs.pdf (Portable Document Format), + cvs.ps (PostScript), cvs.texinfo (Texinfo source), or cvs.html. + .SP + For CVS updates, more information on documentation, software related + to CVS, development of CVS, and more, see: + .in +1i + .SP + .PD 0 + .IP "" 4 + .B http://cvshome.org + .IP "" 4 + .B http://www.loria.fr/~molli/cvs-index.html + .in -1i + .SP + .BR ci ( 1 ), + .BR co ( 1 ), + .BR cvs ( 5 ), + .BR cvsbug ( 8 ), + .BR diff ( 1 ), + .BR grep ( 1 ), + .BR patch ( 1 ), + .BR rcs ( 1 ), + .BR rcsdiff ( 1 ), + .BR rcsmerge ( 1 ), + .BR rlog ( 1 ). Index: src/gnu/dist/cvs/doc/cvs.man.header diff -c /dev/null src/gnu/dist/cvs/doc/cvs.man.header:1.1.1.2.4.1 *** /dev/null Mon Oct 31 02:21:51 2005 --- src/gnu/dist/cvs/doc/cvs.man.header Wed Jul 6 20:12:37 2005 *************** *** 0 **** --- 1,61 ---- + .\" This is the man page for CVS. It is auto-generated from the + .\" cvs.man.header, cvs.texinfo, & cvs.man.footer files. Please make changes + .\" there. A full copyright & license notice may also be found in cvs.texinfo. + .\" + .\" Man page autogeneration, including this header file, is + .\" Copyright 2004-2005 The Free Software Foundation, Inc., + .\" Derek R. Price, & Ximbiot . + .\" + .\" This documentation is free software; you can redistribute it and/or modify + .\" it under the terms of the GNU General Public License as published by + .\" the Free Software Foundation; either version 2, or (at your option) + .\" any later version. + .\" + .\" This documentation is distributed in the hope that it will be useful, + .\" but WITHOUT ANY WARRANTY; without even the implied warranty of + .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + .\" GNU General Public License for more details. + .\" + .\" You should have received a copy of the GNU General Public License + .\" along with this documentation; if not, write to the Free Software + .\" Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + .de Id + .ds Rv \\$3 + .ds Dt \\$4 + .. + .TH CVS 1 "\*(Dt" + .\" Full space in nroff; half space in troff + .de SP + .if n .sp + .if t .sp .5 + .. + .\" quoted command + .de ` + .RB ` "\|\\$1\|" '\\$2 + .. + .SH "NAME" + cvs \- Concurrent Versions System + .SH "SYNOPSIS" + .TP + \fBcvs\fP [ \fIcvs_options\fP ] + .I cvs_command + [ + .I command_options + ] [ + .I command_args + ] + .SH "NOTE" + .IX "revision control system" "\fLcvs\fR" + .IX cvs "" "\fLcvs\fP \- concurrent versions system" + .IX "concurrent versions system \- \fLcvs\fP" + .IX "release control system" "cvs command" "" "\fLcvs\fP \- concurrent versions system" + .IX "source control system" "cvs command" "" "\fLcvs\fP \- concurrent versions system" + .IX revisions "cvs command" "" "\fLcvs\fP \- source control" + This manpage is a summary of some of the features of + \fBcvs\fP. It is auto-generated from an appendix of the CVS manual. + For more in-depth documentation, please consult the + Cederqvist manual (via the + .B info CVS + command or otherwise, + as described in the SEE ALSO section of this manpage). Cross-references + in this man page refer to nodes in the same. Index: src/gnu/dist/cvs/doc/cvs.texinfo diff -c src/gnu/dist/cvs/doc/cvs.texinfo:1.6.2.2 src/gnu/dist/cvs/doc/cvs.texinfo:1.6.2.3 *** src/gnu/dist/cvs/doc/cvs.texinfo:1.6.2.2 Fri Jul 23 08:03:02 2004 --- src/gnu/dist/cvs/doc/cvs.texinfo Wed Jul 6 20:12:37 2005 *************** *** 4,16 **** @macro copyleftnotice @noindent Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, ! 2001, 2002, 2003, 2004 Free Software Foundation, Inc. @multitable @columnfractions .12 .88 @item Portions ! @item @tab Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004 Derek R. Price, ! @item @tab Copyright @copyright{} 2002, 2003, 2004 Ximbiot @url{http://ximbiot.com}, @item @tab Copyright @copyright{} 1992, 1993, 1999 Signum Support AB, @item @tab and Copyright @copyright{} others. --- 4,17 ---- @macro copyleftnotice @noindent Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, ! 2001, 2002, 2003, 2004, 2005 ! Free Software Foundation, Inc. @multitable @columnfractions .12 .88 @item Portions ! @item @tab Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005 Derek R. Price, ! @item @tab Copyright @copyright{} 2002, 2003, 2004, 2005 Ximbiot @url{http://ximbiot.com}, @item @tab Copyright @copyright{} 1992, 1993, 1999 Signum Support AB, @item @tab and Copyright @copyright{} others. *************** *** 7198,7203 **** --- 7199,7207 ---- $ cvs import -m "Import of FSF v. 0.05" fsf/wdiff FSF_DIST WDIFF_0_05 @end example + @strong{WARNING: If you use a release tag that already exists in one of the + repository archives, files removed by an import may not be detected.} + For files that have not been modified locally, the newly created revision becomes the head revision. If you have made local changes, @code{import} will warn you that you must merge the changes *************** *** 8233,8240 **** @strong{Note: this is not the same as the overall @samp{cvs -r} option, which you can specify to the left of a @sc{cvs} command!} ! @samp{-r} is available with the @code{checkout}, @code{commit}, ! @code{diff}, @code{history}, @code{export}, @code{rdiff}, @code{rtag}, and @code{update} commands. @item -W --- 8237,8244 ---- @strong{Note: this is not the same as the overall @samp{cvs -r} option, which you can specify to the left of a @sc{cvs} command!} ! @samp{-r} is available with the @code{annotate}, @code{checkout}, ! @code{commit}, @code{diff}, @code{history}, @code{export}, @code{rdiff}, @code{rtag}, and @code{update} commands. @item -W *************** *** 10091,10098 **** @var{repository} is needed to identify the collection of source. @var{vendortag} is a tag for the entire branch (e.g., for 1.1.1). You must also specify at ! least one @var{releasetag} to identify the files at ! the leaves created each time you execute @code{import}. @c I'm not completely sure this belongs here. But @c we need to say it _somewhere_ reasonably obvious; it --- 10095,10104 ---- @var{repository} is needed to identify the collection of source. @var{vendortag} is a tag for the entire branch (e.g., for 1.1.1). You must also specify at ! least one @var{releasetag} to uniquely identify the files at ! the leaves created each time you execute @code{import}. The ! @var{releasetag} should be new, not previously existing in the ! repository file, and uniquely identify the imported release, @c I'm not completely sure this belongs here. But @c we need to say it _somewhere_ reasonably obvious; it *************** *** 10260,10266 **** @appendixsubsec log options By default, @code{log} prints all information that is ! available. All other options restrict the output. @table @code @item -b --- 10266,10277 ---- @appendixsubsec log options By default, @code{log} prints all information that is ! available. All other options restrict the output. Note that the revision ! selection options (@code{-d}, @code{-r}, @code{-s}, and @code{-w}) have no ! effect, other than possibly causing a search for files in Attic directories, ! when used in conjunction with the options that restrict the output to only ! @code{log} header fields (@code{-b}, @code{-h}, @code{-R}, and @code{-t}) ! unless the @code{-S} option is also specified. @table @code @item -b *************** *** 11853,11858 **** --- 11864,11871 ---- @menu * modules:: Defining modules * Wrappers:: Specify binary-ness based on file name + * Trigger Scripts:: Some notes on the commit support files and + taginfo, referenced below. * commit files:: The commit support files (commitinfo, verifymsg, editinfo, loginfo) * taginfo:: Verifying/Logging tags *************** *** 12349,12407 **** @c One catch--"cvs diff" will not invoke the wrappers @c (probably a CVS bug, although I haven't thought it out). ! @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ! @node commit files ! @appendixsec The commit support files ! @cindex Committing, administrative support files ! ! The @samp{-i} flag in the @file{modules} file can be ! used to run a certain program whenever files are ! committed (@pxref{modules}). The files described in ! this section provide other, more flexible, ways to run ! programs whenever something is committed. ! ! There are three kinds of programs that can be run on ! commit. They are specified in files in the repository, ! as described below. The following table summarizes the ! file names and the purpose of the corresponding ! programs. ! ! @table @file ! @item commitinfo ! The program is responsible for checking that the commit ! is allowed. If it exits with a non-zero exit status ! the commit will be aborted. ! ! @item verifymsg ! The specified program is used to evaluate the log message, ! and possibly verify that it contains all required ! fields. This is most useful in combination with the ! @file{rcsinfo} file, which can hold a log message ! template (@pxref{rcsinfo}). ! ! @item editinfo ! The specified program is used to edit the log message, ! and possibly verify that it contains all required ! fields. This is most useful in combination with the ! @file{rcsinfo} file, which can hold a log message ! template (@pxref{rcsinfo}). (obsolete) ! ! @item loginfo ! The specified program is called when the commit is ! complete. It receives the log message and some ! additional information and can store the log message in ! a file, or mail it to appropriate persons, or maybe ! post it to a local newsgroup, or@dots{} Your ! imagination is the limit! ! @end table @menu ! * syntax:: The common syntax ! * commitinfo:: Pre-commit checking ! * verifymsg:: How are log messages evaluated? ! * editinfo:: Specifying how log messages are created ! (obsolete) ! * loginfo:: Where should log messages be sent? @end menu @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . --- 12362,12387 ---- @c One catch--"cvs diff" will not invoke the wrappers @c (probably a CVS bug, although I haven't thought it out). ! @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! @node Trigger Scripts ! @appendixsec The Trigger Scripts ! @cindex Info files ! @cindex Trigger scripts ! ! Several of the administrative files support triggers, or the launching external ! scripts or programs at specific times before or after particular events. The ! individual files are discussed in the later sections, @ref{commit files} and ! @ref{taginfo}, but some of the common elements are discussed here. ! ! All the trigger scripts are launched in a copy of the user sandbox being ! committed, on the server, in client-server mode. In local mode, the scripts ! are actually launched directly from the user sandbox directory being committed. ! For most intents and purposes, the same scripts can be run in both locations ! without alteration. @menu ! * syntax:: The common syntax ! * Trigger Script Security:: Trigger script security @end menu @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . *************** *** 12466,12471 **** --- 12446,12523 ---- @c unambiguous but there is nothing like an example to @c confirm people's understanding of this sort of thing). + @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @node Trigger Script Security + @appendixsubsec Security and the Trigger Scripts + @cindex Info files, security + @cindex Trigger scripts, security + + Security is a huge subject, and implementing a secure system is a non-trivial + task. This section will barely touch on all the issues involved, but it is + well to note that, as with any script you will be allowing an untrusted + user to run on your server, there are measures you can take to help prevent + your trigger scripts from being abused. + + For instance, since the CVS trigger scripts all run in a copy of the user's + sandbox on the server, a naively coded Perl trigger script which attempts to + use a Perl module that is not installed on the system can be hijacked by any + user with commit access who is checking in a file with the correct name. Other + scripting languages may be vulnerable to similar hacks. + + One way to make a script more secure, at least with Perl, is to use scripts + which invoke the @code{-T}, or "taint-check" switch on their @code{#!} line. + In the most basic terms, this causes Perl to avoid running code that may have + come from an external source. Please run the @code{perldoc perlsec} command + for more on Perl security. Again, other languages may implement other security + verification hooks which look more or less like Perl's "taint-check" mechanism. + + @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @node commit files + @appendixsec The commit support files + @cindex Committing, administrative support files + + There are three kinds of trigger scripts (@pxref{Trigger Scripts}) that can be + run at various times during a commit. They are specified in files in the + repository, as described below. The following table summarizes the + file names and the purpose of the corresponding programs. + + @table @file + @item commitinfo + The program is responsible for checking that the commit + is allowed. If it exits with a non-zero exit status + the commit will be aborted. + + @item verifymsg + The specified program is used to evaluate the log message, + and possibly verify that it contains all required + fields. This is most useful in combination with the + @file{rcsinfo} file, which can hold a log message + template (@pxref{rcsinfo}). + + @item editinfo + The specified program is used to edit the log message, + and possibly verify that it contains all required + fields. This is most useful in combination with the + @file{rcsinfo} file, which can hold a log message + template (@pxref{rcsinfo}). (obsolete) + + @item loginfo + The specified program is called when the commit is + complete. It receives the log message and some + additional information and can store the log message in + a file, or mail it to appropriate persons, or maybe + post it to a local newsgroup, or@dots{} Your + imagination is the limit! + @end table + + @menu + * commitinfo:: Pre-commit checking + * verifymsg:: How are log messages evaluated? + * editinfo:: Specifying how log messages are created + (obsolete) + * loginfo:: Where should log messages be sent? + @end menu + @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @node commitinfo @appendixsubsec Commitinfo *************** *** 13046,13054 **** The @file{taginfo} file defines programs to execute when someone executes a @code{tag} or @code{rtag} command. The @file{taginfo} file has the standard form ! for administrative files (@pxref{syntax}), where each line is a regular expression ! followed by a command to execute. The arguments passed to the command are, in order, the @var{tagname}, @var{operation} (@code{add} for @code{tag}, @code{mov} for @code{tag -F}, and @code{del} for --- 13098,13106 ---- The @file{taginfo} file defines programs to execute when someone executes a @code{tag} or @code{rtag} command. The @file{taginfo} file has the standard form ! for trigger scripts (@pxref{Trigger Scripts}), where each line is a regular expression ! followed by a command to execute (@pxref{syntax}). The arguments passed to the command are, in order, the @var{tagname}, @var{operation} (@code{add} for @code{tag}, @code{mov} for @code{tag -F}, and @code{del} for Index: src/gnu/dist/cvs/doc/mkman.pl diff -c /dev/null src/gnu/dist/cvs/doc/mkman.pl:1.1.1.1.6.1 *** /dev/null Mon Oct 31 02:21:51 2005 --- src/gnu/dist/cvs/doc/mkman.pl Wed Jul 6 20:12:37 2005 *************** *** 0 **** --- 1,314 ---- + #! @PERL@ + # + # Generate a man page from sections of a Texinfo manual. + # + # Copyright 2004 The Free Software Foundation, + # Derek R. Price, + # & Ximbiot + # + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 2, or (at your option) + # any later version. + # + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software Foundation, + # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + + + # Need Perl 5.005 or greater for re 'eval'. + require 5.005; + + # The usual. + use strict; + use IO::File; + + + + ### + ### GLOBALS + ### + my $texi_num = 0; # Keep track of how many texinfo files have been encountered. + my @parent; # This needs to be global to be used inside of a regex later. + + + + ### + ### FUNCTIONS + ### + sub keyword_mode + { + my ($keyword, $file) = @_; + + return "\\fR" + if $keyword =~ /^(|r|t)$/; + return "\\fB" + if $keyword =~ /^(strong|sc|code|file|samp)$/; + return "\\fI" + if $keyword =~ /^(emph|var|dfn)$/; + die "no handler for keyword \`$keyword', found at line $. of file \`$file'\n"; + } + + + + # Return replacement for \@$keyword{$content}. + sub do_keyword + { + my ($file, $parent, $keyword, $content) = @_; + + return "see node \`$content\\(aq in the CVS manual" + if $keyword =~ /^(p?x)?ref$/; + return "\\fP\\fP$content" + if $keyword =~ /^splitrcskeyword$/; + + my $endmode = keyword_mode $parent; + my $startmode = keyword_mode $keyword, $file; + + return "$startmode$content$endmode"; + } + + + + ### + ### MAIN + ### + for my $file (@ARGV) + { + my $fh = new IO::File "< $file" + or die "Failed to open file \`$file': $!"; + + if ($file !~ /\.(texinfo|texi|txi)$/) + { + print stderr "Passing \`$file' through unprocessed.\n"; + # Just cat any file that doesn't look like a Texinfo source. + while (my $line = $fh->getline) + { + print $line; + } + next; + } + + print stderr "Processing \`$file'.\n"; + $texi_num++; + my $gotone = 0; + my $inblank = 0; + my $indent = 0; + my $inexample = 0; + my $inmenu = 0; + my $intable = 0; + my $last_header = ""; + my @table_headers; + my @table_footers; + my $table_header = ""; + my $table_footer = ""; + my $last; + while ($_ = $fh->getline) + { + if (!$gotone && /^\@c ----- START MAN $texi_num -----$/) + { + $gotone = 1; + next; + } + + # Skip ahead until our man section. + next unless $gotone; + + # If we find the end tag we are done. + last if /^\@c ----- END MAN $texi_num -----$/; + + # Need to do this everywhere. i.e., before we print example + # lines, since literal back slashes can appear there too. + s/\\/\\\\/g; + s/^\./\\&./; + s/([\s])\./$1\\&./; + s/'/\\(aq/g; + s/`/\\`/g; + s/(? (?:[^{}]|(?<=\@)[{}])*) # Non-braces without backtracking + | + (??{ $nk }) # Nested keywords + )*) + \} + (?{ pop (@parent) }) # Lose track of the current keyword. + /x; + + @parent = (""); + while (s/$nk/do_keyword $file, $parent[$#parent], $1, $2/e) + { + # Do nothing except replace our last-replacement + # tracker - the replacement regex above is handling + # everything else. + @parent = (""); + } + s/$nk/do_keyword $file, $parent[$#parent], $1, $2/ge; + + if (/\@\w+\{/) + { + # If there is still an opening keyword left, we need to + # find the close bracket. Set $last to append the next + # line in the next pass. + $last = $_; + next; + } + + # Finally, unprotect texinfo special characters. + s/\@://g; + s/\@([{}])/$1/g; + + # Verify we haven't left commands unprocessed. + die "Unprocessed command at line $. of file \`$file': " + . ($1 ? "$1\n" : "\n") + if /^(?>(?:[^\@]|\@\@)*)\@(\w+|.|$)/; + + # Unprotect @@. + s/\@\@/\@/g; + + # And print whatever's left. + print $_; + } + } Index: src/gnu/dist/cvs/doc/stamp-1 diff -c src/gnu/dist/cvs/doc/stamp-1:1.3.2.2 src/gnu/dist/cvs/doc/stamp-1:1.3.2.3 *** src/gnu/dist/cvs/doc/stamp-1:1.3.2.2 Fri Jul 23 08:03:02 2004 --- src/gnu/dist/cvs/doc/stamp-1 Wed Jul 6 20:12:37 2005 *************** *** 1,4 **** ! @set UPDATED 3 February 2004 ! @set UPDATED-MONTH February 2004 ! @set EDITION 1.11.17 ! @set VERSION 1.11.17 --- 1,4 ---- ! @set UPDATED 11 November 2004 ! @set UPDATED-MONTH November 2004 ! @set EDITION 1.11.20 ! @set VERSION 1.11.20 Index: src/gnu/dist/cvs/doc/stamp-vti diff -c src/gnu/dist/cvs/doc/stamp-vti:1.3.2.2 src/gnu/dist/cvs/doc/stamp-vti:1.3.2.3 *** src/gnu/dist/cvs/doc/stamp-vti:1.3.2.2 Fri Jul 23 08:03:02 2004 --- src/gnu/dist/cvs/doc/stamp-vti Wed Jul 6 20:12:37 2005 *************** *** 1,4 **** ! @set UPDATED 27 May 2004 ! @set UPDATED-MONTH May 2004 ! @set EDITION 1.11.17 ! @set VERSION 1.11.17 --- 1,4 ---- ! @set UPDATED 14 April 2005 ! @set UPDATED-MONTH April 2005 ! @set EDITION 1.11.20 ! @set VERSION 1.11.20 Index: src/gnu/dist/cvs/doc/version-client.texi diff -c src/gnu/dist/cvs/doc/version-client.texi:1.3.2.2 src/gnu/dist/cvs/doc/version-client.texi:1.3.2.3 *** src/gnu/dist/cvs/doc/version-client.texi:1.3.2.2 Fri Jul 23 08:03:02 2004 --- src/gnu/dist/cvs/doc/version-client.texi Wed Jul 6 20:12:37 2005 *************** *** 1,4 **** ! @set UPDATED 3 February 2004 ! @set UPDATED-MONTH February 2004 ! @set EDITION 1.11.17 ! @set VERSION 1.11.17 --- 1,4 ---- ! @set UPDATED 11 November 2004 ! @set UPDATED-MONTH November 2004 ! @set EDITION 1.11.20 ! @set VERSION 1.11.20 Index: src/gnu/dist/cvs/doc/version.texi diff -c src/gnu/dist/cvs/doc/version.texi:1.3.2.2 src/gnu/dist/cvs/doc/version.texi:1.3.2.3 *** src/gnu/dist/cvs/doc/version.texi:1.3.2.2 Fri Jul 23 08:03:03 2004 --- src/gnu/dist/cvs/doc/version.texi Wed Jul 6 20:12:37 2005 *************** *** 1,4 **** ! @set UPDATED 27 May 2004 ! @set UPDATED-MONTH May 2004 ! @set EDITION 1.11.17 ! @set VERSION 1.11.17 --- 1,4 ---- ! @set UPDATED 14 April 2005 ! @set UPDATED-MONTH April 2005 ! @set EDITION 1.11.20 ! @set VERSION 1.11.20 Index: src/gnu/dist/cvs/lib/ChangeLog diff -c src/gnu/dist/cvs/lib/ChangeLog:1.1.1.6.2.2 src/gnu/dist/cvs/lib/ChangeLog:1.1.1.6.2.3 *** src/gnu/dist/cvs/lib/ChangeLog:1.1.1.6.2.2 Fri Jul 23 08:03:03 2004 --- src/gnu/dist/cvs/lib/ChangeLog Wed Jul 6 20:12:37 2005 *************** *** 1,3 **** --- 1,43 ---- + 2005-04-15 Derek Price + + * Makefile.am (EXTRA_DIST): Add test-getdate.sh. + + 2005-03-23 Derek Price + + * Makefile.am (TESTS, MOSTLYCLEANFILES, check_PROGRAMS, EXTRA_DIST, + getdate_SOURCES, getdate_CPPFLAGS): Add getdate testing cruft. + * test-getdate.sh: New file. + * .cvsignore: Ignore getdate executable. + + 2005-03-23 Larry Jones + + * getdate.c: Remove absolute paths from #line directives. + + 2005-03-04 Jim Hyslop + + * xtime.h: added include guards to fix compile errors on IRIX 5.3 + (Patch from Georg Schwarz .) + + 2005-02-08 Derek Price + + * fncase.c (OSX_filename_classes): Mac OSX doesn't need \ mapped to /. + * system.h (FOLD_FN_CASE): Clarify comment. + + 2005-01-31 Derek Price + + * Makefile.am: Update copyright notices. + + 2004-10-05 Derek Price + + * regex.c: Back out my change from 2004-04-07 as possibly suppressing + useful warnings. + + 2004-10-05 Mark D. Baushke + + * regex.c (re_comp): Cast gettext return value to char * to + avoid warning in !ENABLE_NLS case. Patch imported from GNULIB. + (Problem report from Martin Neitzel .) + 2004-05-28 Derek Price * xsize.h: New file from GNULIB. Index: src/gnu/dist/cvs/lib/Makefile.am diff -c src/gnu/dist/cvs/lib/Makefile.am:1.2.2.2 src/gnu/dist/cvs/lib/Makefile.am:1.2.2.3 *** src/gnu/dist/cvs/lib/Makefile.am:1.2.2.2 Fri Jul 23 08:03:03 2004 --- src/gnu/dist/cvs/lib/Makefile.am Wed Jul 6 20:12:37 2005 *************** *** 1,8 **** ## Process this file with automake to produce Makefile.in # Makefile for library files used by GNU CVS. ! # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 1,10 ---- ## Process this file with automake to produce Makefile.in # Makefile for library files used by GNU CVS. ! # ! # Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! # ! # Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! # and others. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by *************** *** 85,91 **** ChangeLog.fsf \ build_lib.com \ libcvs.dep libcvs.dsp libcvs.mak \ ! xgssapi.h # For the xsize module from GNULIB. libcvs_a_SOURCES += xsize.h --- 87,109 ---- ChangeLog.fsf \ build_lib.com \ libcvs.dep libcvs.dsp libcvs.mak \ ! xgssapi.h \ ! test-getdate.sh ! ! TESTS = ! MOSTLYCLEANFILES = ! check_PROGRAMS = ! ! # Test GNULIB getdate module. ! TESTS += test-getdate.sh ! MOSTLYCLEANFILES += getdate-expected getdate-got getdate.diff ! # Program required by test-getdate.sh for testing getdate.y. ! check_PROGRAMS += getdate ! EXTRA_DIST += $(check_PROGRAMS) ! getdate_SOURCES = getdate.y ! getdate_CPPFLAGS = -DTEST ! ##getdate_LDADD = \ ! ## $(noinst_LIBRARIES) # For the xsize module from GNULIB. libcvs_a_SOURCES += xsize.h Index: src/gnu/dist/cvs/lib/Makefile.in diff -c src/gnu/dist/cvs/lib/Makefile.in:1.1.1.4.2.2 src/gnu/dist/cvs/lib/Makefile.in:1.1.1.4.2.3 *** src/gnu/dist/cvs/lib/Makefile.in:1.1.1.4.2.2 Fri Jul 23 08:03:03 2004 --- src/gnu/dist/cvs/lib/Makefile.in Wed Jul 6 20:12:37 2005 *************** *** 1,8 **** ! # Makefile.in generated by automake 1.7.9 from Makefile.am. # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. --- 1,8 ---- ! # Makefile.in generated by automake 1.9.5 from Makefile.am. # @configure_input@ ! # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ! # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. *************** *** 15,23 **** @SET_MAKE@ # Makefile for library files used by GNU CVS. ! # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 15,25 ---- @SET_MAKE@ # Makefile for library files used by GNU CVS. ! # ! # Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! # ! # Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! # and others. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by *************** *** 29,34 **** --- 31,38 ---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. + SOURCES = $(libcvs_a_SOURCES) $(getdate_SOURCES) + srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ *************** *** 36,42 **** pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 --- 40,45 ---- *************** *** 50,55 **** --- 53,101 ---- NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : + check_PROGRAMS = getdate$(EXEEXT) + subdir = lib + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/fnmatch.h.in ChangeLog dup2.c fncase.c fnmatch.c \ + fnmatch.h.in ftruncate.c getdate.c gethostname.c memmove.c \ + mkdir.c rename.c strerror.c strstr.c strtoul.c valloc.c \ + waitpid.c + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) + mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + CONFIG_HEADER = $(top_builddir)/config.h + CONFIG_CLEAN_FILES = fnmatch.h + LIBRARIES = $(noinst_LIBRARIES) + AR = ar + ARFLAGS = cru + libcvs_a_AR = $(AR) $(ARFLAGS) + libcvs_a_DEPENDENCIES = @LIBOBJS@ + am_libcvs_a_OBJECTS = argmatch.$(OBJEXT) getdate.$(OBJEXT) \ + getline.$(OBJEXT) getopt.$(OBJEXT) getopt1.$(OBJEXT) \ + getpass.$(OBJEXT) md5.$(OBJEXT) regex.$(OBJEXT) \ + savecwd.$(OBJEXT) sighandle.$(OBJEXT) stripslash.$(OBJEXT) \ + xgetwd.$(OBJEXT) yesno.$(OBJEXT) + libcvs_a_OBJECTS = $(am_libcvs_a_OBJECTS) + am_getdate_OBJECTS = getdate-getdate.$(OBJEXT) + getdate_OBJECTS = $(am_getdate_OBJECTS) + getdate_LDADD = $(LDADD) + DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) + LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ + YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) + YLWRAP = $(top_srcdir)/ylwrap + SOURCES = $(libcvs_a_SOURCES) $(getdate_SOURCES) + DIST_SOURCES = $(libcvs_a_SOURCES) $(getdate_SOURCES) + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ *************** *** 119,124 **** --- 165,172 ---- am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ + am__tar = @am__tar@ + am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ datadir = @datadir@ *************** *** 132,137 **** --- 180,186 ---- libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ + mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ *************** *** 153,159 **** # # $(includeopt) is CVS specific and set by configure INCLUDES = -I$(top_srcdir)/src $(includeopt) - noinst_LIBRARIES = libcvs.a # Always use CVS's regular expression matcher regex.o, because of --- 202,207 ---- *************** *** 168,263 **** # matching?) # For the xsize module from GNULIB. ! libcvs_a_SOURCES = \ ! argmatch.c \ ! getdate.y \ ! getline.c \ ! getopt.c \ ! getopt1.c \ ! getpass.c \ ! md5.c \ ! regex.c \ ! savecwd.c \ ! sighandle.c \ ! stripslash.c \ ! xgetwd.c \ ! yesno.c \ ! getline.h \ ! getopt.h \ ! getpagesize.h \ ! md5.h \ ! regex.h \ ! savecwd.h \ ! system.h \ ! wait.h \ ! xselect.h \ ! xtime.h\ ! xsize.h libcvs_a_LIBADD = @LIBOBJS@ ! ! EXTRA_DIST = \ ! .cvsignore \ ! ChangeLog.fsf \ ! build_lib.com \ ! libcvs.dep libcvs.dsp libcvs.mak \ ! xgssapi.h ! ! subdir = lib ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ! mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LIBRARIES = $(noinst_LIBRARIES) ! ! libcvs_a_AR = $(AR) cru ! libcvs_a_DEPENDENCIES = @LIBOBJS@ ! am_libcvs_a_OBJECTS = argmatch.$(OBJEXT) getdate.$(OBJEXT) \ ! getline.$(OBJEXT) getopt.$(OBJEXT) getopt1.$(OBJEXT) \ ! getpass.$(OBJEXT) md5.$(OBJEXT) regex.$(OBJEXT) \ ! savecwd.$(OBJEXT) sighandle.$(OBJEXT) stripslash.$(OBJEXT) \ ! xgetwd.$(OBJEXT) yesno.$(OBJEXT) ! libcvs_a_OBJECTS = $(am_libcvs_a_OBJECTS) ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = $(SHELL) $(top_srcdir)/depcomp ! am__depfiles_maybe = depfiles ! @AMDEP_TRUE@DEP_FILES = $(DEPDIR)/dup2.Po $(DEPDIR)/fncase.Po \ ! @AMDEP_TRUE@ $(DEPDIR)/fnmatch.Po $(DEPDIR)/fnmatch.h.in \ ! @AMDEP_TRUE@ $(DEPDIR)/ftruncate.Po $(DEPDIR)/gethostname.Po \ ! @AMDEP_TRUE@ $(DEPDIR)/memmove.Po $(DEPDIR)/mkdir.Po \ ! @AMDEP_TRUE@ $(DEPDIR)/rename.Po $(DEPDIR)/strerror.Po \ ! @AMDEP_TRUE@ $(DEPDIR)/strstr.Po $(DEPDIR)/strtoul.Po \ ! @AMDEP_TRUE@ $(DEPDIR)/valloc.Po $(DEPDIR)/waitpid.Po \ ! @AMDEP_TRUE@ ./$(DEPDIR)/argmatch.Po ./$(DEPDIR)/getdate.Po \ ! @AMDEP_TRUE@ ./$(DEPDIR)/getline.Po ./$(DEPDIR)/getopt.Po \ ! @AMDEP_TRUE@ ./$(DEPDIR)/getopt1.Po ./$(DEPDIR)/getpass.Po \ ! @AMDEP_TRUE@ ./$(DEPDIR)/md5.Po ./$(DEPDIR)/regex.Po \ ! @AMDEP_TRUE@ ./$(DEPDIR)/savecwd.Po ./$(DEPDIR)/sighandle.Po \ ! @AMDEP_TRUE@ ./$(DEPDIR)/stripslash.Po ./$(DEPDIR)/xgetwd.Po \ ! @AMDEP_TRUE@ ./$(DEPDIR)/yesno.Po ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! CCLD = $(CC) ! LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) ! DIST_SOURCES = $(libcvs_a_SOURCES) ! DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am dup2.c \ ! fncase.c fnmatch.c fnmatch.h.in ftruncate.c getdate.c \ ! gethostname.c memmove.c mkdir.c rename.c strerror.c strstr.c \ ! strtoul.c valloc.c waitpid.c ! SOURCES = $(libcvs_a_SOURCES) ! all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj .y ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ! ! AR = ar clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) --- 216,268 ---- # matching?) # For the xsize module from GNULIB. ! libcvs_a_SOURCES = argmatch.c getdate.y getline.c getopt.c getopt1.c \ ! getpass.c md5.c regex.c savecwd.c sighandle.c stripslash.c \ ! xgetwd.c yesno.c getline.h getopt.h getpagesize.h md5.h \ ! regex.h savecwd.h system.h wait.h xselect.h xtime.h xsize.h libcvs_a_LIBADD = @LIBOBJS@ ! EXTRA_DIST = .cvsignore ChangeLog.fsf build_lib.com libcvs.dep \ ! libcvs.dsp libcvs.mak xgssapi.h test-getdate.sh \ ! $(check_PROGRAMS) ! ! # Test GNULIB getdate module. ! TESTS = test-getdate.sh ! MOSTLYCLEANFILES = getdate-expected getdate-got getdate.diff ! getdate_SOURCES = getdate.y ! getdate_CPPFLAGS = -DTEST all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj .y ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ! @for dep in $?; do \ ! case '$(am__configure_deps)' in \ ! *$$dep*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ! && exit 0; \ ! exit 1;; \ ! esac; \ ! done; \ ! echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/Makefile ! .PRECIOUS: Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! @case '$?' in \ ! *config.status*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ! *) \ ! echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ! esac; ! ! $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! ! $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) *************** *** 266,273 **** $(libcvs_a_AR) libcvs.a $(libcvs_a_OBJECTS) $(libcvs_a_LIBADD) $(RANLIB) libcvs.a mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c --- 271,284 ---- $(libcvs_a_AR) libcvs.a $(libcvs_a_OBJECTS) $(libcvs_a_LIBADD) $(RANLIB) libcvs.a + clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) + getdate$(EXEEXT): $(getdate_OBJECTS) $(getdate_DEPENDENCIES) + @rm -f getdate$(EXEEXT) + $(LINK) $(getdate_LDFLAGS) $(getdate_OBJECTS) $(getdate_LDADD) $(LIBS) + mostlyclean-compile: ! -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c *************** *** 287,292 **** --- 298,304 ---- @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/valloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/waitpid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/argmatch.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdate-getdate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getline.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ *************** *** 301,356 **** @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yesno.Po@am__quote@ .c.o: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ ! @am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ ! @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ ! @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ ! @am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ ! @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ ! @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` .y.c: ! $(YACCCOMPILE) `test -f '$<' || echo '$(srcdir)/'`$< ! if test -f y.tab.h; then \ ! to=`echo "$*_H" | sed \ ! -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ ! -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ ! sed "/^#/ s/Y_TAB_H/$$to/g" y.tab.h >$*.ht; \ ! rm -f y.tab.h; \ ! if cmp -s $*.ht $*.h; then \ ! rm -f $*.ht ;\ ! else \ ! mv $*.ht $*.h; \ ! fi; \ ! fi ! if test -f y.output; then \ ! mv y.output $*.output; \ ! fi ! sed '/^#/ s|y\.tab\.c|$@|' y.tab.c >$@t && mv $@t $@ ! rm -f y.tab.c uninstall-info-am: - ETAGS = etags - ETAGSFLAGS = - - CTAGS = ctags - CTAGSFLAGS = - - tags: TAGS - ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ --- 313,349 ---- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yesno.Po@am__quote@ .c.o: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` ! ! getdate-getdate.o: getdate.c ! @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(getdate_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT getdate-getdate.o -MD -MP -MF "$(DEPDIR)/getdate-getdate.Tpo" -c -o getdate-getdate.o `test -f 'getdate.c' || echo '$(srcdir)/'`getdate.c; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/getdate-getdate.Tpo" "$(DEPDIR)/getdate-getdate.Po"; else rm -f "$(DEPDIR)/getdate-getdate.Tpo"; exit 1; fi ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='getdate.c' object='getdate-getdate.o' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(getdate_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o getdate-getdate.o `test -f 'getdate.c' || echo '$(srcdir)/'`getdate.c ! ! getdate-getdate.obj: getdate.c ! @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(getdate_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT getdate-getdate.obj -MD -MP -MF "$(DEPDIR)/getdate-getdate.Tpo" -c -o getdate-getdate.obj `if test -f 'getdate.c'; then $(CYGPATH_W) 'getdate.c'; else $(CYGPATH_W) '$(srcdir)/getdate.c'; fi`; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/getdate-getdate.Tpo" "$(DEPDIR)/getdate-getdate.Po"; else rm -f "$(DEPDIR)/getdate-getdate.Tpo"; exit 1; fi ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='getdate.c' object='getdate-getdate.obj' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(getdate_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o getdate-getdate.obj `if test -f 'getdate.c'; then $(CYGPATH_W) 'getdate.c'; else $(CYGPATH_W) '$(srcdir)/getdate.c'; fi` .y.c: ! $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ *************** *** 359,364 **** --- 352,358 ---- $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique + tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) *************** *** 370,379 **** done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) --- 364,374 ---- done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ! test -n "$$unique" || unique=$$empty_fix; \ ! $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique; \ ! fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) *************** *** 396,405 **** distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ --- 391,469 ---- distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -z "$$skipped" || echo "$$skipped"; \ ! test -z "$$report" || echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ *************** *** 413,419 **** dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ --- 477,483 ---- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ *************** *** 429,437 **** fi; \ done check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) - installdirs: install: install-am install-exec: install-exec-am --- 493,502 ---- fi; \ done check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LIBRARIES) installdirs: install: install-am install-exec: install-exec-am *************** *** 448,458 **** `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: ! -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" --- 513,524 ---- `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: distclean-generic: ! -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" *************** *** 460,466 **** -rm -f getdate.c clean: clean-am ! clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf $(DEPDIR) ./$(DEPDIR) --- 526,533 ---- -rm -f getdate.c clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-noinstLIBRARIES \ ! mostlyclean-am distclean: distclean-am -rm -rf $(DEPDIR) ./$(DEPDIR) *************** *** 472,477 **** --- 539,546 ---- dvi-am: + html: html-am + info: info-am info-am: *************** *** 505,520 **** uninstall-am: uninstall-info-am ! .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ! clean-noinstLIBRARIES ctags distclean distclean-compile \ ! distclean-generic distclean-local distclean-tags distdir dvi \ ! dvi-am info info-am install install-am install-data \ ! install-data-am install-exec install-exec-am install-info \ ! install-info-am install-man install-strip installcheck \ ! installcheck-am installdirs maintainer-clean \ ! maintainer-clean-generic mostlyclean mostlyclean-compile \ ! mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ ! uninstall-am uninstall-info-am # Until Automake gets its act together --- 574,589 ---- uninstall-am: uninstall-info-am ! .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ ! clean-checkPROGRAMS clean-generic clean-noinstLIBRARIES ctags \ ! distclean distclean-compile distclean-generic distclean-local \ ! distclean-tags distdir dvi dvi-am html html-am info info-am \ ! install install-am install-data install-data-am install-exec \ ! install-exec-am install-info install-info-am install-man \ ! install-strip installcheck installcheck-am installdirs \ ! maintainer-clean maintainer-clean-generic mostlyclean \ ! mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ ! tags uninstall uninstall-am uninstall-info-am # Until Automake gets its act together Index: src/gnu/dist/cvs/lib/fncase.c diff -c src/gnu/dist/cvs/lib/fncase.c:1.1.1.2 src/gnu/dist/cvs/lib/fncase.c:1.1.1.2.2.1 *** src/gnu/dist/cvs/lib/fncase.c:1.1.1.2 Wed Dec 10 05:58:24 2003 --- src/gnu/dist/cvs/lib/fncase.c Wed Jul 6 20:12:37 2005 *************** *** 104,110 **** 0x40,0x61,0x62,0x63, 0x64,0x65,0x66,0x67, 0x68,0x69,0x6a,0x6b, 0x6c,0x6d,0x6e,0x6f, 0x70,0x71,0x72,0x73, 0x74,0x75,0x76,0x77, ! 0x78,0x79,0x7a,0x5b, 0x2f,0x5d,0x5e,0x5f, 0x60,0x61,0x62,0x63, 0x64,0x65,0x66,0x67, 0x68,0x69,0x6a,0x6b, 0x6c,0x6d,0x6e,0x6f, 0x70,0x71,0x72,0x73, 0x74,0x75,0x76,0x77, --- 104,110 ---- 0x40,0x61,0x62,0x63, 0x64,0x65,0x66,0x67, 0x68,0x69,0x6a,0x6b, 0x6c,0x6d,0x6e,0x6f, 0x70,0x71,0x72,0x73, 0x74,0x75,0x76,0x77, ! 0x78,0x79,0x7a,0x5b, 0x5c,0x5d,0x5e,0x5f, 0x60,0x61,0x62,0x63, 0x64,0x65,0x66,0x67, 0x68,0x69,0x6a,0x6b, 0x6c,0x6d,0x6e,0x6f, 0x70,0x71,0x72,0x73, 0x74,0x75,0x76,0x77, Index: src/gnu/dist/cvs/lib/libcvs.dep diff -c /dev/null src/gnu/dist/cvs/lib/libcvs.dep:1.1.1.1.8.1 *** /dev/null Mon Oct 31 02:21:51 2005 --- src/gnu/dist/cvs/lib/libcvs.dep Wed Jul 6 20:12:37 2005 *************** *** 0 **** --- 1,92 ---- + # Microsoft Developer Studio Generated Dependency File, included by libcvs.mak + + .\argmatch.c : \ + "..\windows-NT\config.h"\ + + + .\fncase.c : \ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\system.h"\ + ".\xtime.h"\ + + + .\fnmatch.c : \ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\fnmatch.h"\ + ".\system.h"\ + ".\xtime.h"\ + + + .\getdate.c : \ + "..\windows-NT\config.h"\ + ".\xtime.h"\ + + + .\getline.c : \ + "..\windows-NT\config.h"\ + ".\getline.h"\ + + + .\getopt.c : \ + "..\windows-NT\config.h"\ + ".\getopt.h"\ + + + .\getopt1.c : \ + "..\windows-NT\config.h"\ + ".\getopt.h"\ + + + .\md5.c : \ + "..\windows-NT\config.h"\ + ".\md5.h"\ + + + .\regex.c : \ + "..\windows-NT\config.h"\ + ".\regex.h"\ + + + .\savecwd.c : \ + "..\windows-NT\config.h"\ + ".\savecwd.h"\ + + + .\sighandle.c : \ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\system.h"\ + ".\xtime.h"\ + + + .\stripslash.c : \ + "..\windows-NT\config.h"\ + + + .\valloc.c : \ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\getpagesize.h"\ + ".\system.h"\ + ".\xtime.h"\ + + + .\xgetwd.c : \ + "..\windows-NT\config.h"\ + "..\windows-NT\ndir.h"\ + ".\system.h"\ + ".\xtime.h"\ + + + .\yesno.c : \ + "..\windows-NT\config.h"\ + + + !IF "$(CFG)" == "libcvs - Win32 Release" + + !ELSEIF "$(CFG)" == "libcvs - Win32 Debug" + + !ENDIF + Index: src/gnu/dist/cvs/lib/libcvs.dsp diff -c /dev/null src/gnu/dist/cvs/lib/libcvs.dsp:1.1.1.1.8.1 *** /dev/null Mon Oct 31 02:21:51 2005 --- src/gnu/dist/cvs/lib/libcvs.dsp Wed Jul 6 20:12:37 2005 *************** *** 0 **** --- 1,223 ---- + # Microsoft Developer Studio Project File - Name="libcvs" - Package Owner=<4> + # Microsoft Developer Studio Generated Build File, Format Version 6.00 + # ** DO NOT EDIT ** + + # TARGTYPE "Win32 (x86) Static Library" 0x0104 + + CFG=libcvs - Win32 Debug + !MESSAGE This is not a valid makefile. To build this project using NMAKE, + !MESSAGE use the Export Makefile command and run + !MESSAGE + !MESSAGE NMAKE /f "libcvs.mak". + !MESSAGE + !MESSAGE You can specify a configuration when running NMAKE + !MESSAGE by defining the macro CFG on the command line. For example: + !MESSAGE + !MESSAGE NMAKE /f "libcvs.mak" CFG="libcvs - Win32 Debug" + !MESSAGE + !MESSAGE Possible choices for configuration are: + !MESSAGE + !MESSAGE "libcvs - Win32 Release" (based on "Win32 (x86) Static Library") + !MESSAGE "libcvs - Win32 Debug" (based on "Win32 (x86) Static Library") + !MESSAGE + + # Begin Project + # PROP AllowPerConfigDependencies 0 + # PROP Scc_ProjName "" + # PROP Scc_LocalPath "" + CPP=cl.exe + RSC=rc.exe + + !IF "$(CFG)" == "libcvs - Win32 Release" + + # PROP BASE Use_MFC 0 + # PROP BASE Use_Debug_Libraries 0 + # PROP BASE Output_Dir "WinRel" + # PROP BASE Intermediate_Dir "WinRel" + # PROP BASE Target_Dir "" + # PROP Use_MFC 0 + # PROP Use_Debug_Libraries 0 + # PROP Output_Dir "WinRel" + # PROP Intermediate_Dir "WinRel" + # PROP Target_Dir "" + # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c + # ADD CPP /nologo /W3 /GX /O2 /I "..\windows-NT" /I "." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /YX /FD /c + # ADD BASE RSC /l 0x409 /d "NDEBUG" + # ADD RSC /l 0x409 /d "NDEBUG" + BSC32=bscmake.exe + # ADD BASE BSC32 /nologo + # ADD BSC32 /nologo + LIB32=link.exe -lib + # ADD BASE LIB32 /nologo + # ADD LIB32 /nologo + + !ELSEIF "$(CFG)" == "libcvs - Win32 Debug" + + # PROP BASE Use_MFC 0 + # PROP BASE Use_Debug_Libraries 1 + # PROP BASE Output_Dir "WinDebug" + # PROP BASE Intermediate_Dir "WinDebug" + # PROP BASE Target_Dir "" + # PROP Use_MFC 0 + # PROP Use_Debug_Libraries 1 + # PROP Output_Dir "WinDebug" + # PROP Intermediate_Dir "WinDebug" + # PROP Target_Dir "" + # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c + # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\windows-NT" /I "." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /YX /FD /GZ /c + # ADD BASE RSC /l 0x409 /d "_DEBUG" + # ADD RSC /l 0x409 /d "_DEBUG" + BSC32=bscmake.exe + # ADD BASE BSC32 /nologo + # ADD BSC32 /nologo + LIB32=link.exe -lib + # ADD BASE LIB32 /nologo + # ADD LIB32 /nologo + + !ENDIF + + # Begin Target + + # Name "libcvs - Win32 Release" + # Name "libcvs - Win32 Debug" + # Begin Group "Source Files" + + # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" + # Begin Source File + + SOURCE=.\argmatch.c + # End Source File + # Begin Source File + + SOURCE=.\fncase.c + # End Source File + # Begin Source File + + SOURCE=.\fnmatch.c + # End Source File + # Begin Source File + + SOURCE=.\getdate.c + # End Source File + # Begin Source File + + SOURCE=.\getline.c + # End Source File + # Begin Source File + + SOURCE=.\getopt.c + # End Source File + # Begin Source File + + SOURCE=.\getopt1.c + # End Source File + # Begin Source File + + SOURCE=.\md5.c + # End Source File + # Begin Source File + + SOURCE=.\regex.c + # End Source File + # Begin Source File + + SOURCE=.\savecwd.c + # End Source File + # Begin Source File + + SOURCE=.\sighandle.c + # End Source File + # Begin Source File + + SOURCE=.\stripslash.c + # End Source File + # Begin Source File + + SOURCE=.\valloc.c + # End Source File + # Begin Source File + + SOURCE=.\xgetwd.c + # End Source File + # Begin Source File + + SOURCE=.\yesno.c + # End Source File + # End Group + # Begin Group "Header Files" + + # PROP Default_Filter "h;hpp;hxx;hm;inl" + # Begin Source File + + SOURCE="..\windows-NT\config.h" + # End Source File + # Begin Source File + + SOURCE=.\fnmatch.h + # End Source File + # Begin Source File + + SOURCE=.\fnmatch.h.in + + !IF "$(CFG)" == "libcvs - Win32 Release" + + # Begin Custom Build + InputPath=.\fnmatch.h.in + + ".\fnmatch.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy .\fnmatch.h.in .\fnmatch.h + + # End Custom Build + + !ELSEIF "$(CFG)" == "libcvs - Win32 Debug" + + # Begin Custom Build + InputPath=.\fnmatch.h.in + + ".\fnmatch.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy .\fnmatch.h.in .\fnmatch.h + + # End Custom Build + + !ENDIF + + # End Source File + # Begin Source File + + SOURCE=.\getline.h + # End Source File + # Begin Source File + + SOURCE=.\getopt.h + # End Source File + # Begin Source File + + SOURCE=.\getpagesize.h + # End Source File + # Begin Source File + + SOURCE=.\md5.h + # End Source File + # Begin Source File + + SOURCE="..\windows-NT\ndir.h" + # End Source File + # Begin Source File + + SOURCE=.\regex.h + # End Source File + # Begin Source File + + SOURCE=.\savecwd.h + # End Source File + # Begin Source File + + SOURCE=.\system.h + # End Source File + # Begin Source File + + SOURCE=.\xtime.h + # End Source File + # End Group + # End Target + # End Project Index: src/gnu/dist/cvs/lib/libcvs.mak diff -c /dev/null src/gnu/dist/cvs/lib/libcvs.mak:1.1.1.1.8.1 *** /dev/null Mon Oct 31 02:21:51 2005 --- src/gnu/dist/cvs/lib/libcvs.mak Wed Jul 6 20:12:37 2005 *************** *** 0 **** --- 1,303 ---- + # Microsoft Developer Studio Generated NMAKE File, Based on libcvs.dsp + !IF "$(CFG)" == "" + CFG=libcvs - Win32 Debug + !MESSAGE No configuration specified. Defaulting to libcvs - Win32 Debug. + !ENDIF + + !IF "$(CFG)" != "libcvs - Win32 Release" && "$(CFG)" != "libcvs - Win32 Debug" + !MESSAGE Invalid configuration "$(CFG)" specified. + !MESSAGE You can specify a configuration when running NMAKE + !MESSAGE by defining the macro CFG on the command line. For example: + !MESSAGE + !MESSAGE NMAKE /f "libcvs.mak" CFG="libcvs - Win32 Debug" + !MESSAGE + !MESSAGE Possible choices for configuration are: + !MESSAGE + !MESSAGE "libcvs - Win32 Release" (based on "Win32 (x86) Static Library") + !MESSAGE "libcvs - Win32 Debug" (based on "Win32 (x86) Static Library") + !MESSAGE + !ERROR An invalid configuration is specified. + !ENDIF + + !IF "$(OS)" == "Windows_NT" + NULL= + !ELSE + NULL=nul + !ENDIF + + CPP=cl.exe + RSC=rc.exe + + !IF "$(CFG)" == "libcvs - Win32 Release" + + OUTDIR=.\WinRel + INTDIR=.\WinRel + # Begin Custom Macros + OutDir=.\WinRel + # End Custom Macros + + ALL : ".\fnmatch.h" "$(OUTDIR)\libcvs.lib" + + + CLEAN : + -@erase "$(INTDIR)\argmatch.obj" + -@erase "$(INTDIR)\fncase.obj" + -@erase "$(INTDIR)\fnmatch.obj" + -@erase "$(INTDIR)\getdate.obj" + -@erase "$(INTDIR)\getline.obj" + -@erase "$(INTDIR)\getopt.obj" + -@erase "$(INTDIR)\getopt1.obj" + -@erase "$(INTDIR)\md5.obj" + -@erase "$(INTDIR)\regex.obj" + -@erase "$(INTDIR)\savecwd.obj" + -@erase "$(INTDIR)\sighandle.obj" + -@erase "$(INTDIR)\stripslash.obj" + -@erase "$(INTDIR)\valloc.obj" + -@erase "$(INTDIR)\vc60.idb" + -@erase "$(INTDIR)\xgetwd.obj" + -@erase "$(INTDIR)\yesno.obj" + -@erase "$(OUTDIR)\libcvs.lib" + -@erase ".\fnmatch.h" + + "$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + + CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\windows-NT" /I "." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /Fp"$(INTDIR)\libcvs.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c + BSC32=bscmake.exe + BSC32_FLAGS=/nologo /o"$(OUTDIR)\libcvs.bsc" + BSC32_SBRS= \ + + LIB32=link.exe -lib + LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libcvs.lib" + LIB32_OBJS= \ + "$(INTDIR)\argmatch.obj" \ + "$(INTDIR)\fncase.obj" \ + "$(INTDIR)\fnmatch.obj" \ + "$(INTDIR)\getdate.obj" \ + "$(INTDIR)\getline.obj" \ + "$(INTDIR)\getopt.obj" \ + "$(INTDIR)\getopt1.obj" \ + "$(INTDIR)\md5.obj" \ + "$(INTDIR)\regex.obj" \ + "$(INTDIR)\savecwd.obj" \ + "$(INTDIR)\sighandle.obj" \ + "$(INTDIR)\stripslash.obj" \ + "$(INTDIR)\valloc.obj" \ + "$(INTDIR)\xgetwd.obj" \ + "$(INTDIR)\yesno.obj" + + "$(OUTDIR)\libcvs.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) + $(LIB32) @<< + $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) + << + + !ELSEIF "$(CFG)" == "libcvs - Win32 Debug" + + OUTDIR=.\WinDebug + INTDIR=.\WinDebug + # Begin Custom Macros + OutDir=.\WinDebug + # End Custom Macros + + ALL : "$(OUTDIR)\libcvs.lib" + + + CLEAN : + -@erase "$(INTDIR)\argmatch.obj" + -@erase "$(INTDIR)\fncase.obj" + -@erase "$(INTDIR)\fnmatch.obj" + -@erase "$(INTDIR)\getdate.obj" + -@erase "$(INTDIR)\getline.obj" + -@erase "$(INTDIR)\getopt.obj" + -@erase "$(INTDIR)\getopt1.obj" + -@erase "$(INTDIR)\md5.obj" + -@erase "$(INTDIR)\regex.obj" + -@erase "$(INTDIR)\savecwd.obj" + -@erase "$(INTDIR)\sighandle.obj" + -@erase "$(INTDIR)\stripslash.obj" + -@erase "$(INTDIR)\valloc.obj" + -@erase "$(INTDIR)\vc60.idb" + -@erase "$(INTDIR)\vc60.pdb" + -@erase "$(INTDIR)\xgetwd.obj" + -@erase "$(INTDIR)\yesno.obj" + -@erase "$(OUTDIR)\libcvs.lib" + + "$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + + CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "..\windows-NT" /I "." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /Fp"$(INTDIR)\libcvs.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c + BSC32=bscmake.exe + BSC32_FLAGS=/nologo /o"$(OUTDIR)\libcvs.bsc" + BSC32_SBRS= \ + + LIB32=link.exe -lib + LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libcvs.lib" + LIB32_OBJS= \ + "$(INTDIR)\argmatch.obj" \ + "$(INTDIR)\fncase.obj" \ + "$(INTDIR)\fnmatch.obj" \ + "$(INTDIR)\getdate.obj" \ + "$(INTDIR)\getline.obj" \ + "$(INTDIR)\getopt.obj" \ + "$(INTDIR)\getopt1.obj" \ + "$(INTDIR)\md5.obj" \ + "$(INTDIR)\regex.obj" \ + "$(INTDIR)\savecwd.obj" \ + "$(INTDIR)\sighandle.obj" \ + "$(INTDIR)\stripslash.obj" \ + "$(INTDIR)\valloc.obj" \ + "$(INTDIR)\xgetwd.obj" \ + "$(INTDIR)\yesno.obj" + + "$(OUTDIR)\libcvs.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) + $(LIB32) @<< + $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) + << + + !ENDIF + + .c{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + .cpp{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + .cxx{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + .c{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + .cpp{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + .cxx{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< + << + + + !IF "$(NO_EXTERNAL_DEPS)" != "1" + !IF EXISTS("libcvs.dep") + !INCLUDE "libcvs.dep" + !ELSE + !MESSAGE Warning: cannot find "libcvs.dep" + !ENDIF + !ENDIF + + + !IF "$(CFG)" == "libcvs - Win32 Release" || "$(CFG)" == "libcvs - Win32 Debug" + SOURCE=.\argmatch.c + + "$(INTDIR)\argmatch.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\fncase.c + + "$(INTDIR)\fncase.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\fnmatch.c + + "$(INTDIR)\fnmatch.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\getdate.c + + "$(INTDIR)\getdate.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\getline.c + + "$(INTDIR)\getline.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\getopt.c + + "$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\getopt1.c + + "$(INTDIR)\getopt1.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\md5.c + + "$(INTDIR)\md5.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\regex.c + + "$(INTDIR)\regex.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\savecwd.c + + "$(INTDIR)\savecwd.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\sighandle.c + + "$(INTDIR)\sighandle.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\stripslash.c + + "$(INTDIR)\stripslash.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\valloc.c + + "$(INTDIR)\valloc.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\xgetwd.c + + "$(INTDIR)\xgetwd.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\yesno.c + + "$(INTDIR)\yesno.obj" : $(SOURCE) "$(INTDIR)" + + + SOURCE=.\fnmatch.h.in + + !IF "$(CFG)" == "libcvs - Win32 Release" + + InputPath=.\fnmatch.h.in + + ".\fnmatch.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + <handler)(sig); this = this->next; } return; --- 155,164 ---- this = SIG_handlers[sig]; while (this != (struct SIG_hlist *) NULL) { ! /* handler may free this (and thus clobber this->next) */ ! struct SIG_hlist *current = this; this = this->next; + (*current->handler)(sig); } return; Index: src/gnu/dist/cvs/lib/system.h diff -c src/gnu/dist/cvs/lib/system.h:1.1.1.5.2.1 src/gnu/dist/cvs/lib/system.h:1.1.1.5.2.2 *** src/gnu/dist/cvs/lib/system.h:1.1.1.5.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/lib/system.h Wed Jul 6 20:12:38 2005 *************** *** 491,505 **** Windows NT, you can use either / or \. */ # define ISDIRSEP(c) (FOLD_FN_CHAR(c) == '/') # define ISABSOLUTE(s) (ISDIRSEP(s[0]) || FOLD_FN_CHAR(s[0]) >= 'a' && FOLD_FN_CHAR(s[0]) <= 'z' && s[1] == ':' && ISDIRSEP(s[2])) ! # else /* ! WOE32 */ ! /* As far as I know, just Macintosh OS X can make it here, ! * but since the OS X fold just folds a-z into A-Z or visa-versa, I'm just ! * allowing it to be used for any case insensitive system which we aren't ! * yet making other specific folds or exceptions for (basically, anything ! * case insensitive other than Windows, where \ and C:\ style absolute paths ! * also need to be accounted for). ! * ! * Under Mac OS X, filenames are case-insensitive. */ # define FOLD_FN_CHAR(c) (OSX_filename_classes[(unsigned char) (c)]) extern unsigned char OSX_filename_classes[]; --- 491,504 ---- Windows NT, you can use either / or \. */ # define ISDIRSEP(c) (FOLD_FN_CHAR(c) == '/') # define ISABSOLUTE(s) (ISDIRSEP(s[0]) || FOLD_FN_CHAR(s[0]) >= 'a' && FOLD_FN_CHAR(s[0]) <= 'z' && s[1] == ':' && ISDIRSEP(s[2])) ! # else /* !__CYGWIN32__ && !WOE32 */ ! /* As far as I know, only Macintosh OS X & VMS make it here, but any ! * platform defining FILENAMES_CASE_INSENSITIVE which isn't WOE32 or ! * piggy-backing the same could, in theory. Since the OS X fold just folds ! * A-Z into a-z, I'm just allowing it to be used for any case insensitive ! * system which we aren't yet making other specific folds or exceptions for. ! * WOE32 needs its own class since \ and C:\ style absolute paths also need ! * to be accounted for. */ # define FOLD_FN_CHAR(c) (OSX_filename_classes[(unsigned char) (c)]) extern unsigned char OSX_filename_classes[]; Index: src/gnu/dist/cvs/lib/test-getdate.sh diff -c /dev/null src/gnu/dist/cvs/lib/test-getdate.sh:1.1.1.1.6.1 *** /dev/null Mon Oct 31 02:21:52 2005 --- src/gnu/dist/cvs/lib/test-getdate.sh Wed Jul 6 20:12:38 2005 *************** *** 0 **** --- 1,127 ---- + #! /bin/sh + + # Test that a getdate executable meets its specification. + # + # Copyright (C) 2004 Free Software Foundation, Inc. + # + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 2, or (at your option) + # any later version. + # + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software Foundation, + # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + # Why are these dates tested? + # + # February 29, 2003 + # Is not a leap year - should be invalid. + # + # 2004-12-40 + # Make sure get_date does not "roll" date forward to January 9th. Some + # versions have been known to do this. + # + # Dec-5-1972 + # This is my birthday. :) + # + # 3/29/1974 + # 1996/05/12 13:57:45 + # Because. + # + # 12-05-12 + # This will be my 40th birthday. Ouch. :) + # + # 05/12/96 + # Because. + # + # third tuesday in March, 2078 + # Wanted this to work. + # + # 1969-12-32 2:00:00 UTC + # 1970-01-01 2:00:00 UTC + # 1969-12-32 2:00:00 +0400 + # 1970-01-01 2:00:00 +0400 + # 1969-12-32 2:00:00 -0400 + # 1970-01-01 2:00:00 -0400 + # Playing near the UNIX Epoch boundry condition to make sure date rolling + # is also disabled there. + # + # 1996-12-12 1 month + # Test a relative date. + # + # Tue Jan 19 03:14:07 2038 +0000 + # For machines with 31-bit time_t, any date past this date will be an + # invalid date. So, any test date with a value greater than this + # time is not portable. + # + # Feb. 29, 2096 4 years + # 4 years from this date is _not_ a leap year, so Feb. 29th does not exist. + # + # Feb. 29, 2096 8 years + # 8 years from this date is a leap year, so Feb. 29th does exist, + # but on many hosts with 32-bit time_t types time, this test will + # fail. So, this is not a portable test. + # + + TZ=UTC0; export TZ + + cat >getdate-expected < Bad format - couldn't convert. + > Bad format - couldn't convert. + > Bad format - couldn't convert. + > Fri Mar 29 00:00:00 1974 + > Sun May 12 13:57:45 1996 + > Sat May 12 00:00:00 2012 + > Sun May 12 00:00:00 1996 + > Bad format - couldn't convert. + > Bad format - couldn't convert. + > Thu Jan 1 02:00:00 1970 + > Bad format - couldn't convert. + > Bad format - couldn't convert. + > Bad format - couldn't convert. + > Thu Jan 1 06:00:00 1970 + > Sun Jan 12 00:00:00 1997 + > + EOF + + ./getdate >getdate-got <>getdate-got + + if cmp getdate-expected getdate-got >getdate.cmp; then :; else + LOGFILE=`pwd`/getdate.log + cat getdate.cmp >${LOGFILE} + echo "** expected: " >>${LOGFILE} + cat getdate-expected >>${LOGFILE} + echo "** got: " >>${LOGFILE} + cat getdate-got >>${LOGFILE} + echo "FAIL: getdate" | tee -a ${LOGFILE} + echo "Failed! See ${LOGFILE} for more!" >&2 + exit 1 + fi + + rm getdate-expected getdate-got getdate.cmp + exit 0 Index: src/gnu/dist/cvs/lib/xtime.h diff -c src/gnu/dist/cvs/lib/xtime.h:1.1 src/gnu/dist/cvs/lib/xtime.h:1.1.4.1 *** src/gnu/dist/cvs/lib/xtime.h:1.1 Thu Nov 28 04:55:34 2002 --- src/gnu/dist/cvs/lib/xtime.h Wed Jul 6 20:12:38 2005 *************** *** 11,16 **** --- 11,18 ---- /* This file simply performs the include magic necessary for using time * functions */ + #ifndef XTIME_HEADER_INCLUDED + #define XTIME_HEADER_INCLUDED #ifdef vms # include *************** *** 55,57 **** --- 57,61 ---- # endif /* !defined(HAVE_FTIME) && !defined(HAVE_TIMEZONE) */ #endif /* !vms */ + + #endif /* !XTIME_HEADER_INCLUDED */ Index: src/gnu/dist/cvs/man/ChangeLog diff -c src/gnu/dist/cvs/man/ChangeLog:1.1.1.5.2.1 src/gnu/dist/cvs/man/ChangeLog:1.1.1.5.2.2 *** src/gnu/dist/cvs/man/ChangeLog:1.1.1.5.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/man/ChangeLog Wed Jul 6 20:12:38 2005 *************** *** 1,3 **** --- 1,7 ---- + 2005-01-31 Derek Price + + * Makefile.am: Update copyright notices. + 2004-04-30 Derek Price First pass at closing issue #3 from cvshome.org. Index: src/gnu/dist/cvs/man/Makefile.am diff -c src/gnu/dist/cvs/man/Makefile.am:1.2.2.1 src/gnu/dist/cvs/man/Makefile.am:1.2.2.2 *** src/gnu/dist/cvs/man/Makefile.am:1.2.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/man/Makefile.am Wed Jul 6 20:12:38 2005 *************** *** 1,8 **** ## Process this file with automake to produce Makefile.in # Makefile.am for GNU CVS man pages. ! # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 1,10 ---- ## Process this file with automake to produce Makefile.in # Makefile.am for GNU CVS man pages. ! # ! # Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! # ! # Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! # and others. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by Index: src/gnu/dist/cvs/man/Makefile.in diff -c src/gnu/dist/cvs/man/Makefile.in:1.1.1.5.2.1 src/gnu/dist/cvs/man/Makefile.in:1.1.1.5.2.2 *** src/gnu/dist/cvs/man/Makefile.in:1.1.1.5.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/man/Makefile.in Wed Jul 6 20:12:38 2005 *************** *** 1,8 **** ! # Makefile.in generated by automake 1.7.9 from Makefile.am. # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. --- 1,8 ---- ! # Makefile.in generated by automake 1.9.5 from Makefile.am. # @configure_input@ ! # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ! # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. *************** *** 15,23 **** @SET_MAKE@ # Makefile.am for GNU CVS man pages. ! # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 15,25 ---- @SET_MAKE@ # Makefile.am for GNU CVS man pages. ! # ! # Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! # ! # Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! # and others. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by *************** *** 28,34 **** # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. - srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ --- 30,35 ---- *************** *** 36,42 **** pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 --- 37,42 ---- *************** *** 50,55 **** --- 50,73 ---- NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : + subdir = man + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) + mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + CONFIG_HEADER = $(top_builddir)/config.h + CONFIG_CLEAN_FILES = + SOURCES = + DIST_SOURCES = + man5dir = $(mandir)/man5 + am__installdirs = "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" + man8dir = $(mandir)/man8 + NROFF = nroff + MANS = $(man_MANS) + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ *************** *** 119,124 **** --- 137,144 ---- am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ + am__tar = @am__tar@ + am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ datadir = @datadir@ *************** *** 132,137 **** --- 152,158 ---- libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ + mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ *************** *** 139,174 **** sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ - man_MANS = cvs.5 cvsbug.8 EXTRA_DIST = \ .cvsignore \ $(man_MANS) - subdir = man - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs - CONFIG_HEADER = $(top_builddir)/config.h - CONFIG_CLEAN_FILES = - DIST_SOURCES = - - NROFF = nroff - MANS = $(man_MANS) - DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am all: all-am .SUFFIXES: ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu man/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: - - man5dir = $(mandir)/man5 install-man5: $(man5_MANS) $(man_MANS) @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(man5dir) @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ --- 160,206 ---- sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ man_MANS = cvs.5 cvsbug.8 EXTRA_DIST = \ .cvsignore \ $(man_MANS) all: all-am .SUFFIXES: ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ! @for dep in $?; do \ ! case '$(am__configure_deps)' in \ ! *$$dep*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ! && exit 0; \ ! exit 1;; \ ! esac; \ ! done; \ ! echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu man/Makefile ! .PRECIOUS: Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! @case '$?' in \ ! *config.status*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ! *) \ ! echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ! esac; ! ! $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! ! $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh uninstall-info-am: install-man5: $(man5_MANS) $(man_MANS) @$(NORMAL_INSTALL) ! test -z "$(man5dir)" || $(mkdir_p) "$(DESTDIR)$(man5dir)" @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ *************** *** 187,194 **** inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst"; \ ! $(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst; \ done uninstall-man5: @$(NORMAL_UNINSTALL) --- 219,226 ---- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ ! $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst"; \ done uninstall-man5: @$(NORMAL_UNINSTALL) *************** *** 208,221 **** inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " rm -f $(DESTDIR)$(man5dir)/$$inst"; \ ! rm -f $(DESTDIR)$(man5dir)/$$inst; \ done - - man8dir = $(mandir)/man8 install-man8: $(man8_MANS) $(man_MANS) @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(man8dir) @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ --- 240,251 ---- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " rm -f '$(DESTDIR)$(man5dir)/$$inst'"; \ ! rm -f "$(DESTDIR)$(man5dir)/$$inst"; \ done install-man8: $(man8_MANS) $(man_MANS) @$(NORMAL_INSTALL) ! test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)" @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ *************** *** 234,241 **** inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \ ! $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \ done uninstall-man8: @$(NORMAL_UNINSTALL) --- 264,271 ---- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ ! $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \ done uninstall-man8: @$(NORMAL_UNINSTALL) *************** *** 255,262 **** inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \ ! rm -f $(DESTDIR)$(man8dir)/$$inst; \ done tags: TAGS TAGS: --- 285,292 ---- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ ! echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \ ! rm -f "$(DESTDIR)$(man8dir)/$$inst"; \ done tags: TAGS TAGS: *************** *** 264,273 **** ctags: CTAGS CTAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - - top_distdir = .. - distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ --- 294,299 ---- *************** *** 281,287 **** dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ --- 307,313 ---- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ *************** *** 299,307 **** check-am: all-am check: check-am all-am: Makefile $(MANS) - installdirs: ! $(mkinstalldirs) $(DESTDIR)$(man5dir) $(DESTDIR)$(man8dir) install: install-am install-exec: install-exec-am install-data: install-data-am --- 325,334 ---- check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: ! for dir in "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"; do \ ! test -z "$$dir" || $(mkdir_p) "$$dir"; \ ! done install: install-am install-exec: install-exec-am install-data: install-data-am *************** *** 321,327 **** clean-generic: distclean-generic: ! -rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" --- 348,354 ---- clean-generic: distclean-generic: ! -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" *************** *** 338,343 **** --- 365,372 ---- dvi-am: + html: html-am + info: info-am info-am: *************** *** 373,380 **** uninstall-man: uninstall-man5 uninstall-man8 .PHONY: all all-am check check-am clean clean-generic distclean \ ! distclean-generic distdir dvi dvi-am info info-am install \ ! install-am install-data install-data-am install-exec \ install-exec-am install-info install-info-am install-man \ install-man5 install-man8 install-strip installcheck \ installcheck-am installdirs maintainer-clean \ --- 402,409 ---- uninstall-man: uninstall-man5 uninstall-man8 .PHONY: all all-am check check-am clean clean-generic distclean \ ! distclean-generic distdir dvi dvi-am html html-am info info-am \ ! install install-am install-data install-data-am install-exec \ install-exec-am install-info install-info-am install-man \ install-man5 install-man8 install-strip installcheck \ installcheck-am installdirs maintainer-clean \ Index: src/gnu/dist/cvs/src/ChangeLog diff -c src/gnu/dist/cvs/src/ChangeLog:1.1.1.7.2.2 src/gnu/dist/cvs/src/ChangeLog:1.1.1.7.2.3 *** src/gnu/dist/cvs/src/ChangeLog:1.1.1.7.2.2 Fri Jul 23 08:03:03 2004 --- src/gnu/dist/cvs/src/ChangeLog Wed Jul 6 20:12:38 2005 *************** *** 1,3 **** --- 1,484 ---- + 2005-03-17 Derek Price + + * login.c (password_entry_parseline): Avoid using uninitialized + variable. + * rcs.c (RCS_deltas): Avoid buffer overflow. + (RCS_checkout): Avoid using uninitialized loglen. + * patch.c (patch_fileproc): Free original pointer, not one that may + have been incremented. + (Thanks to report from Alen Zukich .) + + 2005-03-17 Derek Price + + * commit.c (checkaddfile): Avoid dereferencing a NULL pointer in + response to a rare error. + * admin.c (admin_fileproc), log.c (log_expand_revlist), mkmodules.c + (checkout_file), rcs.c (RCS_getdate, RCS_deltas, RCS_findlock_or_tip, + RCS_tag2rev): Avoid dereferencing NULL pointer. + (Thanks to report from Alen Zukich .) + + 2005-03-17 Derek Price + + * rcs.c (RCS_reparsercsfile): Avoid memory leak. + (Thanks to report from Alen Zukich .) + + 2005-03-17 Derek Price + + * log.c (log_expand_revlist): Suppress message and not error handling + when really_quiet. + + 2005-03-17 Derek Price + + * client.c (call_in_directory): Put function call after var decls. + + 2005-03-16 Derek Price + + * client.c (call_in_directory), commit.c (commit_filesdoneproc), log.c + (log_expand_revlist, log_version), logmsg.c (logfile_write), modules + (my_module), no_diff.c (No_Difference), parseinfo.c (Parse_Info), rcs.c + (RCS_deltas, RCS_checkin, RCS_addbranch, do_locks, do_symbols), + rcscmds.c (RCS_merge), root.c (parse_cvsroot, normalize_cvsroot), + update.c (merge_file): Verify assumptions via assertions. + (Thanks to (probably) incorrect reports from Alen Zukich + .) + + 2005-03-16 Derek Price + + * server.c (create_adm_p, serve_entry), tag.c (rtag_proc): Avoid memory + leaks. + (Thanks to report from Alen Zukich .) + + 2005-03-15 Mark D. Baushke + + * history.c (select_hrec): Avoid possible memory leak. + + 2005-03-15 Derek Price + + * patch.c (patch_proc): Avoid memory leak. + (Thanks to report from Alen Zukich .) + + 2005-03-11 Mark D. Baushke + + * modules.c (my_module): Protect against free (NULL) code path. + + 2005-03-11 Derek Price + + * annotate.c (rannotate_proc), fileattr.c (fileattr_write), rcs.c + (RCS_deltas), server.c (check_repository_password), update.c (update): + Avoid memory leaks. + (Thanks to report from Alen Zukich .) + + 2005-03-09 Derek Price + + * add.c (add, add_directory), buffer.c (allocate_buffer_datas), + client.c (update_entries), commit.c (checkaddfile), entries.c + (Entries_Open), fileattr.c (fileattr_read), ignore.c (ign_add), + import.c (import), main.c (main), parseinfo.c (parse_config), rcs.c + (RCS_reparsercsfile, RCS_getbranchpoint, RCS_checkout, + RCS_delete_revs, apply_rcs_changes): Avoid memory leaks. + (Thanks to report from Alen Zukich .) + + * hardlink.c, hardlink.h: Avoid compiling entire contents of these + files w/o preserve permissions support. + + 2005-03-09 Mark D. Baushke + + * history.c (history, save_file): Cleanup the API to match the + comments. + + 2005-02-27 Jim Meyering + + * login.c (password_entry_operation): Exit nonzero when + failing to close a just-appended-to .cvspass file. + + 2005-02-26 Larry Jones + + * release.c (release): Remove unneeded code. + + 2005-02-22 Derek Price + + * edit.c: Load watch settings before setting new ones with + `cvs watch on/off'. + (Original patch from Jim Hyslop .) + + * sanity.sh (watch6): New tests for same. + (Outline from Jim Hyslop .) + + 2005-02-21 Mark D. Baushke + + * import.c (import): Avoid using assert with side effects it may + be configured away using NDEBUG. + (Patch from Frank Hemer .) + + 2005-02-08 Derek Price + + * build_src.com: Build stack.c on VMS. + (Suggestion from Piet Schuermans .) + + 2005-02-01 Larry Jones + + * log.c (log_fileproc, log_expand_revlist): Add support for BASE tag. + * sanity.sh (log): New tests for above. + + 2005-01-31 Derek Price + + * main.c: Update year in copyright notice to match GNU standards. + * sanity.sh (version-1): Update to match. + + 2005-01-31 Derek Price + + * main.c: Rephrase --version message. + * sanity.sh (version-1): Update to match. + + 2005-01-31 Derek Price + + * Makefile.am, add.c, admin.c, annotate.c, checkin.c, checkout.c, + classify.c, commit.c, create_adm.c, cvs.h, cvsrc.c, diff.c, entries.c, + find_names.c, hash.c, hash.h, history.h, import.c, lock.c, log.c, + login.c, logmsg.c, main.c, mkmodules.c, modules.c, myndbm.c, no_diff.c, + parseinfo.c, patch.c, rcs.c, rcs.h, rcscmds.c, recurse.c, remove.c, + repos.c, root.c, root.h, server.h, stack.c, stack.h, status.c, subr.c, + tag.c, update.c, vers_ts.c, version.c: Update copyright notices. + + 2005-01-29 Derek Price + + * log.c (log_usage): Add note about using -S with revision info + supression and selection. + (Suggestion from Dan Peterson .) + + 2004-12-19 Larry Jones + + * expand_path.c (expand_path): Rewrite using offsets instead of + pointers to simplify and avoid reallocation bugs. + (Inspired by Jeremy Bopp .) + + 2004-12-09 Derek Price + + * sanity.sh (tests): Add modules7. + + 2004-12-09 Derek Price + + * sanity.sh (modules7): New test group. + (Based on a patch from Mark D. Baushke , based on a + report from Richard Verhoeven .) + + 2004-11-18 Mark D. Baushke + + * checkout.c (checkout_proc): Passing the repository to + tag_check_valid seems to stop the assertion failure in recurse.c + do_recursion. + * sanity.sh (basic2-21a): Removed. + (basic2-21b): Fixed. + + 2004-11-17 Mark D. Baushke + + * sanity.sh (basic2-21a): The val-tags file should have + at least 'rtagged-by-head y' in it. + (basic2-21b): New test showing a cvs bug when val-tags + is not properly updated. + (Report from "John Elgin" .) + + 2004-11-17 Mark D. Baushke + + * client.c (handle_m, handle_e): Winsock is returning + SOCK_ERRNO == WSAENOTSOCK for select() problems and not + setting errno. Do not bother with printing an error from a + select() that is not returning an non-zero errno. + (Report from Conrad T. Pino .) + + 2004-11-10 Derek Price + + * sanity.sh: Maintain pass/skip/warn status and output at end. + (usage): Note new functionality of -e. + (warn): New function. + (verify_tmp_empty): Warn instead of failing. Delete turds if warn() + doesn't exit. + + 2004-11-10 Derek Price + + * sanity.sh (verify_tmp_empty): New function. + (dotest_internal_*): Call verify_tmp_empty as needed. + + 2004-11-09 Mark D. Baushke + + * sanity.sh: Backport find_tool changes from 1.12.9.1. + (SEARCHPATH): New list of PATH directories to search. + (Which): Use $SEARCHPATH. Support -a switch. + (badtools,set_bad_tool,is_bad_tool): Keep track of tools that do + not work for us. + (version_test): Obtain the version of tools under test if + possible. + (tool_find): Rewrite. API changed to allow a list of + tests to be used against a list of possible command names found on + the SEARCHPATH. + (id_tool_test): Check that 'id -u' and 'id -un' work. + (expr_tooltest1): Check for NextStep 3.3 expr bug. + (expr_tooltest2): Check for SunOS expr multi-line pattern bug. + (expr_create_bar): Create a test file for expr testing. + (expr_tooltest3): Use it and test for big multi-line identity + matches. + (expr_set_ENDANCHOR): Find and set the right value for ENDANCHOR. + (expr_set_DOTSTAR): Find and set the right value for DOTSTAR. + (expr_tooltest_DOTSTAR): Ensure that DOTSTAR works with big + matches. + (tr_tooltest1): Verify that tr handles NUL bytes. + (awk_tooltest1): Verify that awk the BEGIN clause works properly. + (awk_tooltest2): Verify that print %c format item works properly. + + 2004-11-02 Mark D. Baushke + + * filesubr.c (MAXSIZE): New macro. + (xreadlink): Ensure initial buffer size does not exceed MAXSIZE. + Avoid cast. If readlink fails with buffer size just under MAXSIZE, + try again with MAXSIZE. + + 2004-11-02 Mark D. Baushke + + * filesubr.c (xreadlink): AIX and HP-UX readlink() returns ERANGE + when there is not enough room in the buffer. + + 2004-11-01 Derek Price + + * sanity.sh (rcslib): Fix typo in path. + + 2004-11-01 Derek Price + + * sanity.sh (rcslib): Test a link to a path longer than 128 + characters. + + 2004-10-29 Derek Price + + * filesubr.c (xreadlink): Make sure allocation is tried once at the + maximum buffer size. Protect against overflow. + + 2004-10-29 Mark D. Baushke + + * filesubr.c (SIZE_MAX, SSIZE_MAX): Use #include "xsize.h" instead. + (xreadlink): Use xrealloc instead of xmalloc/free. + + 2004-10-29 Mark D. Baushke + + * filesubr.c (SIZE_MAX, SSIZE_MAX): New constants. + (xreadlink): Deal with symlinks longer than 127 bytes. + (Problem reported as issue 190 by Gottfried Ganssauge + .) + + 2004-10-28 Mark D. Baushke + + * release.c (release): Allow builds of cvs with --disable-server + --disable-client both used for local installation configuration. + * root.c (Name_Root): Ditto. + * update.c (checkout_file): Ditto. + (Problem reported by Jean Olivier Caron .) + + 2004-10-27 Mark D. Baushke + + * cvs.h (RCS_FLAGS_USETIME): New flag. + * rcs.c (RCS_checkin): Add citime argument. + * rcs.h (RCS_checkin): Ditto. + * checkin.c (Checkin): Pass new RCS_checkin argument. + * commit.c (remove_file, checkaddfile): Ditto. + * import.c (add_rev): Ditto. + + * sanity.sh (tagdate): Delete tagdate-19b as an incorrect test. + + 2004-10-27 Mark D. Baushke + + * sanity.sh (tagdate): Provide more output. + + 2004-10-26 Mark D. Baushke + + * commit.c (checkaddfile): Create a dead version for a new file + added to a branch. Fixes FIXCVS for tagdate tests. + * sanity.sh (tagdate): Update to expect correct results. + (death2, branch-after-import, join, ignore-on-branch): Ditto. + + 2004-10-26 Derek Price + + * client.c (connect_to_gserver): Avoid truncating error messages from + the GSSAPI server. + (Report from Dan Peterson .) + + 2004-10-26 Derek Price + + * sanity.sh (import-quirks): Test an even branch number. + + 2004-10-25 Derek Price + + * import.c (import): Repair regex for regressions introduced in last + commit. + * sanity.sh (import-quirks): Test a few branch numbers import shouldn't + have a problem with. + + 2004-10-25 Derek Price + + * import.c (import): Anchor and simplify branch verification regex. + * sanity.sh (import-quirks): Test another pattern that should fail. + + 2004-10-25 Mark D. Baushke + + * sanity.sh (tagdate): Added some additional tests and FIXCVS + comments for dealing properly with a 'cvs add' of a file to + a branch that already exists on the mainline. + (Problem reported by Renny Barrett .) + + * sanity.sh (getrlogdate): New shell function. + (tagdate-{13,14,16}): Use it to avoid 'sleep 60' by using + the exact 1.1.4.1 timestamp for tagdate-14 and tagdate-16. + + 2004-10-22 Mark D. Baushke + + * sanity.sh (tagdate): Fix typo. + + 2004-10-19 Derek Price + + * add.c (add): Avoid attempting to resurrect a dead rev 1.1. + * sanity.sh (resurrection): Add test for the above. + (Report from Dan Peterson .) + + 2004-10-14 Derek Price + + * import.c (import): Verify branch specifications more thoroughly. + * sanity.sh (importb): Adapt to new error message. + (import-quirks): New test. + + 2004-10-04 Derek Price + + * cvs.h (CVSROOT_DFLT): Undef rather than defining to NULL. + * main.c (main): Untangle parsing of CVSROOT, eliminating several + variables in the process. Simplify xmalloc/sprintf with asnprintf. + + 2004-10-01 Mark D. Baushke + + * main.c (main): Initialize CVSroot before it is used. + (Report and patch by Martin Neitzel .) + * sanity.sh (status): Test it. + + 2004-09-25 Mark D. Baushke + + * sanity.sh (parseroot2): Correct two test names. Restore CVSROOT. + + * sanity.sh (parseroot2): Expand dokeep inline. + + 2004-09-24 Derek Price + + * sanity.sh (tests): Add parseroot2. + + 2004-09-24 Derek Price + + * sanity.sh (parseroot2): New test for root parsing consistency. + (Original patch from Alexander Taler .) + + * cvs.h (Name_Root, free_cvsroot_t, parse_cvsroot, local_cvsroot, + Create_Root, root_allow_add, root_allow_free, root_allow_ok): Move + these protos to... + * root.h: ...here. + * client.c (arg_should_not_be_sent_to_server), recurse.c + (start_recusrion, do_recursion): Use new Name_Root API. + * main.c (current_root): Remove global. + (set_root_directory): Set current_parsed_root directly. + (main): Use new Name_Root API. Restore deletion of root directories + list. + * root.c (Name_Root): Return a parsed cvsroot_t rather than a string. + + 2004-09-23 Derek Price + + * sanity.sh (depends_on_ssh, sshstdio): Don't use skip() to skip + remote-only tests. + + 2004-09-23 Mark D. Baushke + + * server.c (cvs_output, cvs_output_binary): fflush (stderr) + here to avoid problems with 'cvs status 2>&1'. + (Report by Frank Hemer .) + + 2004-09-23 Derek Price + + * sanity.sh (crerepos, sshstdio): Minor modifications to make use of + the new depends_on_?sh API. + + 2004-09-23 Derek Price + + * sanity.sh: Accept new -e option to interpret non-fatal calls to skip + as errors. + (skip, depends_on_rsh, depends_on_ssh): New functions. + + 2004-09-12 Mark D. Baushke + + * rcs.c (RCS_checkout): Allow noexec to do checkouts when + server_active is true. + * sanity.sh (join7): Test above change (fixes a FIXCVS). + + 2004-09-08 Mark D. Baushke + + * sanity.sh (join7): Fix if-then-else conditional. + + * server.c (server_updated): Deal with cvs -n update -jt1 -jt2 + "protocol error: uncounted data discarded" problem. + * sanity.sh (join7): New test for this case. + + 2004-08-24 Derek Price + + * recurse.c (start_recursion): Don't shorten //. to / (use //). + + 2004-08-24 Derek Price + + * recurse.c (start_recursion): Strip trailing CWD indirections on + repository. + * sanity.sh (rstar-toplevel): Update to account for new behavior. + (Report from Dan Peterson .) + + 2004-08-24 Mark D. Baushke + + * recurse.c (do_recursion): Correct test for calling + server_pause_check to occur when locktype != CVS_LOCK_WRITE. + (Patch suggested by Ian Lance Taylor + in bug#198). + + 2004-08-24 Derek Price + + * rcs.c (translate_symtag): Prevent infinite loop. + * tag.c (tag_check_valid): Check tag syntax before searching for tags. + * sanity.sh (tag-space): Some tests for the above. + (Report from Dan Peterson .) + + 2004-08-24 Mark D. Baushke + + * ignore.c (ignore_directory): Include the terminating NUL + character in the directory name comparison to avoid matching + substrings of directories by accident. + (Report and suggested fix from James E Wilson + .) + * sanity.sh (modules4): Add some more tests testing the above + change. + + 2004-08-17 Mark D. Baushke + + * sanity.sh (sshstdio): Fix comment typo plus gratuitous + reformatting. + + * client.c (handle_m): Workaround to deal with stdio getting put + into non-blocking via redirection of stderr and interaction with + ssh on some platforms. On those boxes, stdio can put stdout + unexpectedly into non-blocking mode which may lead to fwrite() or + fflush() failing with EAGAIN, but cvs not checking for the error. + (Patch suggested by Frank Hemer .) + + * client.c (handle_e): Similar fix for stderr. + * sanity.sh (sshstdio): New test for non-blocking stdio via ssh. + + 2004-08-11 Derek Price + + * sanity.sh (basicc): Work around a problem in Linux 2.2 & Bash 2.05b + which prevents a `cd ..' from a deleted directory from working. + (Original patch from Matthew Ogilvie .) + + 2004-06-22 Derek Price + + * wrapper.c: Add explicit "void" return type to "wrap_clean_fmt_str" + definition. + (Patch from Conrad T. Pino .) + 2004-06-09 Derek Price * commit.c, filesubr.c, history.c, server.c, wrapper.c: Various *************** *** 531,537 **** * tag.c (tag_fileproc): Ditto. * update.c (checkout_file): Ditto. * server.c (server_updated): Do not buf_free (filebuf) here. ! 2004-02-13 Larry Jones * rcs.c (locate_rcs): Remove unused variables. --- 1012,1018 ---- * tag.c (tag_fileproc): Ditto. * update.c (checkout_file): Ditto. * server.c (server_updated): Do not buf_free (filebuf) here. ! 2004-02-13 Larry Jones * rcs.c (locate_rcs): Remove unused variables. *************** *** 749,755 **** "Protocol error: uncounted data discarded" messages in some circumstances. (Problem reported by "Jim.Hyslop" .) ! 2003-12-03 Derek Price * sanity.sh (recase-8csss): rename to... --- 1230,1236 ---- "Protocol error: uncounted data discarded" messages in some circumstances. (Problem reported by "Jim.Hyslop" .) ! 2003-12-03 Derek Price * sanity.sh (recase-8csss): rename to... *************** *** 945,951 **** CVSROOT files being in the way since the client skips destination validity checks since it should be rare that a client is running in client/server mode on the server and CVS has no current way to ! check if it is running on the server. (check_repository-3): Test renamed to checkout_repository-3. (dottedroot): New test to check that a CVSROOT with a "." in the name will work. --- 1426,1432 ---- CVSROOT files being in the way since the client skips destination validity checks since it should be rare that a client is running in client/server mode on the server and CVS has no current way to ! check if it is running on the server. (check_repository-3): Test renamed to checkout_repository-3. (dottedroot): New test to check that a CVSROOT with a "." in the name will work. *************** *** 1005,1011 **** 2003-10-25 Mark D. Baushke * sanity.sh (parseroot): Perform this test in a subdirectory. ! It should avoid problems on case-insensitive systems where CVSROOT and cvsroot are the same directory (eg, MacOS X). 2003-10-24 Derek Price --- 1486,1492 ---- 2003-10-25 Mark D. Baushke * sanity.sh (parseroot): Perform this test in a subdirectory. ! It should avoid problems on case-insensitive systems where CVSROOT and cvsroot are the same directory (eg, MacOS X). 2003-10-24 Derek Price *************** *** 1025,1031 **** * sanity.sh (join6): New testcase for above. (Suggested by Paul Edwards, from somewhere in Australia.) (import): Fix collateral damage. ! 2003-10-23 Derek Price * sanity.sh (fail): Refer the user to the `TESTS' and `check.log' files --- 1506,1512 ---- * sanity.sh (join6): New testcase for above. (Suggested by Paul Edwards, from somewhere in Australia.) (import): Fix collateral damage. ! 2003-10-23 Derek Price * sanity.sh (fail): Refer the user to the `TESTS' and `check.log' files *************** *** 1046,1052 **** exists. (Reported by Rodolfo Schulz de Lima .) * sanity.sh (admin): Test these changes. ! 2003-10-17 Mark D. Baushke * admin.c (admin_fileproc): Force tag match on admin --- 1527,1533 ---- exists. (Reported by Rodolfo Schulz de Lima .) * sanity.sh (admin): Test these changes. ! 2003-10-17 Mark D. Baushke * admin.c (admin_fileproc): Force tag match on admin *************** *** 1653,1659 **** rtag' as various parts of cvs "know" how to automatically branch files (eg: cvs add). Trying to remember state is getting "Too Hard (TM)") * sanity.sh (branches3): Test the CVS_LOCAL_BRANCH_NUM feature. ! 2003-03-04 Derek Price * history.c (history_write): Remove unneeded O_CREAT in the call to --- 2134,2140 ---- rtag' as various parts of cvs "know" how to automatically branch files (eg: cvs add). Trying to remember state is getting "Too Hard (TM)") * sanity.sh (branches3): Test the CVS_LOCAL_BRANCH_NUM feature. ! 2003-03-04 Derek Price * history.c (history_write): Remove unneeded O_CREAT in the call to *************** *** 1708,1714 **** This bug was discovered and fixed for FreeBSD cvs. See v 1.21 of ! for more information. * sanity.sh (rcs4): Tests for same. (Patch from Mark D. Baushke .) --- 2189,2195 ---- This bug was discovered and fixed for FreeBSD cvs. See v 1.21 of ! for more information. * sanity.sh (rcs4): Tests for same. (Patch from Mark D. Baushke .) Index: src/gnu/dist/cvs/src/Makefile.am diff -c src/gnu/dist/cvs/src/Makefile.am:1.2.2.1 src/gnu/dist/cvs/src/Makefile.am:1.2.2.2 *** src/gnu/dist/cvs/src/Makefile.am:1.2.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/src/Makefile.am Wed Jul 6 20:12:38 2005 *************** *** 1,8 **** ## Process this file with automake to produce Makefile.in # Makefile for GNU CVS program. ! # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 1,10 ---- ## Process this file with automake to produce Makefile.in # Makefile for GNU CVS program. ! # ! # Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! # ! # Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! # and others. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by Index: src/gnu/dist/cvs/src/Makefile.in diff -c src/gnu/dist/cvs/src/Makefile.in:1.1.1.5.2.1 src/gnu/dist/cvs/src/Makefile.in:1.1.1.5.2.2 *** src/gnu/dist/cvs/src/Makefile.in:1.1.1.5.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/src/Makefile.in Wed Jul 6 20:12:38 2005 *************** *** 1,8 **** ! # Makefile.in generated by automake 1.7.9 from Makefile.am. # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. --- 1,8 ---- ! # Makefile.in generated by automake 1.9.5 from Makefile.am. # @configure_input@ ! # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ! # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. *************** *** 15,23 **** @SET_MAKE@ # Makefile for GNU CVS program. ! # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 15,25 ---- @SET_MAKE@ # Makefile for GNU CVS program. ! # ! # Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! # ! # Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! # and others. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by *************** *** 29,34 **** --- 31,39 ---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. + + SOURCES = $(cvs_SOURCES) + srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ *************** *** 36,42 **** pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. - am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 --- 41,46 ---- *************** *** 50,55 **** --- 54,108 ---- NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : + bin_PROGRAMS = cvs$(EXEEXT) + subdir = src + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/cvsbug.in ChangeLog + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) + mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + CONFIG_HEADER = $(top_builddir)/config.h + CONFIG_CLEAN_FILES = cvsbug + am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" + binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) + PROGRAMS = $(bin_PROGRAMS) + am_cvs_OBJECTS = add.$(OBJEXT) admin.$(OBJEXT) annotate.$(OBJEXT) \ + buffer.$(OBJEXT) checkin.$(OBJEXT) checkout.$(OBJEXT) \ + classify.$(OBJEXT) client.$(OBJEXT) commit.$(OBJEXT) \ + create_adm.$(OBJEXT) cvsrc.$(OBJEXT) diff.$(OBJEXT) \ + edit.$(OBJEXT) entries.$(OBJEXT) error.$(OBJEXT) \ + expand_path.$(OBJEXT) fileattr.$(OBJEXT) filesubr.$(OBJEXT) \ + find_names.$(OBJEXT) hardlink.$(OBJEXT) hash.$(OBJEXT) \ + history.$(OBJEXT) ignore.$(OBJEXT) import.$(OBJEXT) \ + lock.$(OBJEXT) log.$(OBJEXT) login.$(OBJEXT) logmsg.$(OBJEXT) \ + main.$(OBJEXT) mkmodules.$(OBJEXT) modules.$(OBJEXT) \ + myndbm.$(OBJEXT) no_diff.$(OBJEXT) parseinfo.$(OBJEXT) \ + patch.$(OBJEXT) rcs.$(OBJEXT) rcscmds.$(OBJEXT) \ + recurse.$(OBJEXT) release.$(OBJEXT) remove.$(OBJEXT) \ + repos.$(OBJEXT) root.$(OBJEXT) run.$(OBJEXT) \ + scramble.$(OBJEXT) server.$(OBJEXT) stack.$(OBJEXT) \ + status.$(OBJEXT) subr.$(OBJEXT) tag.$(OBJEXT) update.$(OBJEXT) \ + version.$(OBJEXT) vers_ts.$(OBJEXT) watch.$(OBJEXT) \ + wrapper.$(OBJEXT) zlib.$(OBJEXT) + cvs_OBJECTS = $(am_cvs_OBJECTS) + cvs_DEPENDENCIES = ../diff/libdiff.a ../lib/libcvs.a ../zlib/libz.a + binSCRIPT_INSTALL = $(INSTALL_SCRIPT) + SCRIPTS = $(bin_SCRIPTS) + DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) + depcomp = $(SHELL) $(top_srcdir)/depcomp + am__depfiles_maybe = depfiles + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) + LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ + SOURCES = $(cvs_SOURCES) + DIST_SOURCES = $(cvs_SOURCES) + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ *************** *** 105,111 **** ROFF = @ROFF@ SENDMAIL = @SENDMAIL@ SET_MAKE = @SET_MAKE@ - SHELL = /bin/sh STRIP = @STRIP@ TEXI2DVI = @TEXI2DVI@ --- 158,163 ---- *************** *** 120,125 **** --- 172,179 ---- am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ + am__tar = @am__tar@ + am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ datadir = @datadir@ *************** *** 133,138 **** --- 187,193 ---- libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ + mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ *************** *** 147,154 **** # try and remove naming ocnflicts and fix Automake to allow particular includes # to be attached only to particular object files. Short term fix is either or. INCLUDES = -I$(top_srcdir)/lib -I$(top_srcdir)/diff -I$(top_srcdir)/zlib $(includeopt) - - bin_PROGRAMS = cvs bin_SCRIPTS = cvsbug # The cvs executable --- 202,207 ---- *************** *** 224,230 **** update.h \ watch.h - cvs_LDADD = \ ../diff/libdiff.a \ ../lib/libcvs.a \ --- 277,282 ---- *************** *** 245,343 **** build_src.com \ sanity.sh - subdir = src - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs - CONFIG_HEADER = $(top_builddir)/config.h - CONFIG_CLEAN_FILES = cvsbug - bin_PROGRAMS = cvs$(EXEEXT) - PROGRAMS = $(bin_PROGRAMS) - - am_cvs_OBJECTS = add.$(OBJEXT) admin.$(OBJEXT) annotate.$(OBJEXT) \ - buffer.$(OBJEXT) checkin.$(OBJEXT) checkout.$(OBJEXT) \ - classify.$(OBJEXT) client.$(OBJEXT) commit.$(OBJEXT) \ - create_adm.$(OBJEXT) cvsrc.$(OBJEXT) diff.$(OBJEXT) \ - edit.$(OBJEXT) entries.$(OBJEXT) error.$(OBJEXT) \ - expand_path.$(OBJEXT) fileattr.$(OBJEXT) filesubr.$(OBJEXT) \ - find_names.$(OBJEXT) hardlink.$(OBJEXT) hash.$(OBJEXT) \ - history.$(OBJEXT) ignore.$(OBJEXT) import.$(OBJEXT) \ - lock.$(OBJEXT) log.$(OBJEXT) login.$(OBJEXT) logmsg.$(OBJEXT) \ - main.$(OBJEXT) mkmodules.$(OBJEXT) modules.$(OBJEXT) \ - myndbm.$(OBJEXT) no_diff.$(OBJEXT) parseinfo.$(OBJEXT) \ - patch.$(OBJEXT) rcs.$(OBJEXT) rcscmds.$(OBJEXT) \ - recurse.$(OBJEXT) release.$(OBJEXT) remove.$(OBJEXT) \ - repos.$(OBJEXT) root.$(OBJEXT) run.$(OBJEXT) scramble.$(OBJEXT) \ - server.$(OBJEXT) stack.$(OBJEXT) status.$(OBJEXT) \ - subr.$(OBJEXT) tag.$(OBJEXT) update.$(OBJEXT) version.$(OBJEXT) \ - vers_ts.$(OBJEXT) watch.$(OBJEXT) wrapper.$(OBJEXT) \ - zlib.$(OBJEXT) - cvs_OBJECTS = $(am_cvs_OBJECTS) - cvs_DEPENDENCIES = ../diff/libdiff.a ../lib/libcvs.a ../zlib/libz.a - cvs_LDFLAGS = - SCRIPTS = $(bin_SCRIPTS) - - - DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) - depcomp = $(SHELL) $(top_srcdir)/depcomp - am__depfiles_maybe = depfiles - @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/add.Po ./$(DEPDIR)/admin.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/annotate.Po ./$(DEPDIR)/buffer.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/checkin.Po ./$(DEPDIR)/checkout.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/classify.Po ./$(DEPDIR)/client.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/commit.Po ./$(DEPDIR)/create_adm.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/cvsrc.Po ./$(DEPDIR)/diff.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/edit.Po ./$(DEPDIR)/entries.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/error.Po ./$(DEPDIR)/expand_path.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/fileattr.Po ./$(DEPDIR)/filesubr.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/find_names.Po ./$(DEPDIR)/hardlink.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/hash.Po ./$(DEPDIR)/history.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/ignore.Po ./$(DEPDIR)/import.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/lock.Po ./$(DEPDIR)/log.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/login.Po ./$(DEPDIR)/logmsg.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/main.Po ./$(DEPDIR)/mkmodules.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/modules.Po ./$(DEPDIR)/myndbm.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/no_diff.Po ./$(DEPDIR)/parseinfo.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/patch.Po ./$(DEPDIR)/rcs.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/rcscmds.Po ./$(DEPDIR)/recurse.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/release.Po ./$(DEPDIR)/remove.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/repos.Po ./$(DEPDIR)/root.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/run.Po ./$(DEPDIR)/scramble.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/server.Po ./$(DEPDIR)/stack.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/status.Po ./$(DEPDIR)/subr.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/tag.Po ./$(DEPDIR)/update.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/vers_ts.Po ./$(DEPDIR)/version.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/watch.Po ./$(DEPDIR)/wrapper.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/zlib.Po - COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) - CCLD = $(CC) - LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ - DIST_SOURCES = $(cvs_SOURCES) - DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am cvsbug.in - SOURCES = $(cvs_SOURCES) - all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ! cvsbug: $(top_builddir)/config.status cvsbug.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ ! echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ ! $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ else :; fi; \ done --- 297,347 ---- build_src.com \ sanity.sh all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ! @for dep in $?; do \ ! case '$(am__configure_deps)' in \ ! *$$dep*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ! && exit 0; \ ! exit 1;; \ ! esac; \ ! done; \ ! echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile ! .PRECIOUS: Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! @case '$?' in \ ! *config.status*) \ ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ! *) \ ! echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ! esac; ! ! $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! ! $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ! cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ! cvsbug: $(top_builddir)/config.status $(srcdir)/cvsbug.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) ! test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ ! echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ ! $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done *************** *** 345,352 **** @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ ! echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ ! rm -f $(DESTDIR)$(bindir)/$$f; \ done clean-binPROGRAMS: --- 349,356 ---- @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ ! echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ ! rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: *************** *** 354,369 **** cvs$(EXEEXT): $(cvs_OBJECTS) $(cvs_DEPENDENCIES) @rm -f cvs$(EXEEXT) $(LINK) $(cvs_LDFLAGS) $(cvs_OBJECTS) $(cvs_LDADD) $(LIBS) - binSCRIPT_INSTALL = $(INSTALL_SCRIPT) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_SCRIPTS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f $$d$$p; then \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ ! echo " $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f"; \ ! $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f; \ else :; fi; \ done --- 358,372 ---- cvs$(EXEEXT): $(cvs_OBJECTS) $(cvs_DEPENDENCIES) @rm -f cvs$(EXEEXT) $(LINK) $(cvs_LDFLAGS) $(cvs_OBJECTS) $(cvs_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) ! test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_SCRIPTS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f $$d$$p; then \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ ! echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ ! $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ else :; fi; \ done *************** *** 371,382 **** @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; for p in $$list; do \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ ! echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ ! rm -f $(DESTDIR)$(bindir)/$$f; \ done mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c --- 374,385 ---- @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; for p in $$list; do \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ ! echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ ! rm -f "$(DESTDIR)$(bindir)/$$f"; \ done mostlyclean-compile: ! -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c *************** *** 438,473 **** @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zlib.Po@am__quote@ .c.o: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ ! @am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ ! @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ ! @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ ! @am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ ! @am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ ! @am__fastdepCC_TRUE@ fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` uninstall-info-am: - ETAGS = etags - ETAGSFLAGS = - - CTAGS = ctags - CTAGSFLAGS = - - tags: TAGS - ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ --- 441,460 ---- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zlib.Po@am__quote@ .c.o: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: ! @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ ! @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ! @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ! @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ *************** *** 476,481 **** --- 463,469 ---- $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique + tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) *************** *** 487,496 **** done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) --- 475,485 ---- done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ! test -n "$$unique" || unique=$$empty_fix; \ ! $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique; \ ! fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) *************** *** 513,522 **** distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - - top_distdir = .. - distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ --- 502,507 ---- *************** *** 530,536 **** dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ --- 515,521 ---- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ ! $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ *************** *** 549,557 **** $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) - installdirs: ! $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(bindir) install: install-am install-exec: install-exec-am install-data: install-data-am --- 534,543 ---- $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: ! for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ ! test -z "$$dir" || $(mkdir_p) "$$dir"; \ ! done install: install-am install-exec: install-exec-am install-data: install-data-am *************** *** 571,577 **** clean-generic: distclean-generic: ! -rm -f $(CONFIG_CLEAN_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: --- 557,563 ---- clean-generic: distclean-generic: ! -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: *************** *** 591,596 **** --- 577,584 ---- dvi-am: + html: html-am + info: info-am info-am: *************** *** 628,641 **** .PHONY: CTAGS GTAGS all all-am check check-am check-local clean \ clean-binPROGRAMS clean-generic ctags distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ ! dvi-am info info-am install install-am install-binPROGRAMS \ ! install-binSCRIPTS install-data install-data-am install-exec \ ! install-exec-am install-info install-info-am install-man \ ! install-strip installcheck installcheck-am installdirs \ ! maintainer-clean maintainer-clean-generic mostlyclean \ ! mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ ! tags uninstall uninstall-am uninstall-binPROGRAMS \ ! uninstall-binSCRIPTS uninstall-info-am check-local: localcheck remotecheck --- 616,630 ---- .PHONY: CTAGS GTAGS all all-am check check-am check-local clean \ clean-binPROGRAMS clean-generic ctags distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ ! dvi-am html html-am info info-am install install-am \ ! install-binPROGRAMS install-binSCRIPTS install-data \ ! install-data-am install-exec install-exec-am install-info \ ! install-info-am install-man install-strip installcheck \ ! installcheck-am installdirs maintainer-clean \ ! maintainer-clean-generic mostlyclean mostlyclean-compile \ ! mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ ! uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS \ ! uninstall-info-am check-local: localcheck remotecheck Index: src/gnu/dist/cvs/src/add.c diff -c src/gnu/dist/cvs/src/add.c:1.1.1.5.2.1 src/gnu/dist/cvs/src/add.c:1.1.1.5.2.2 *** src/gnu/dist/cvs/src/add.c:1.1.1.5.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/src/add.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 75,86 **** switch (c) { case 'k': ! if (options) ! free (options); options = RCS_check_kflag (optarg); break; case 'm': message = xstrdup (optarg); break; case '?': --- 80,91 ---- switch (c) { case 'k': ! if (options) free (options); options = RCS_check_kflag (optarg); break; case 'm': + if (message) free (message); message = xstrdup (optarg); break; case '?': *************** *** 469,475 **** char *prev = previous_rev (vers->srcfile, vers->vn_rcs); int status; ! assert (prev != NULL); if (!quiet) error (0, 0, "Resurrecting file `%s' from revision %s.", --- 474,498 ---- char *prev = previous_rev (vers->srcfile, vers->vn_rcs); int status; ! if (prev == NULL) ! { ! /* There is no previous revision. Either: ! * ! * * Revision 1.1 was dead, as when a file was ! * inititially added on a branch, ! * ! * or ! * ! * * All previous revisions have been deleted. ! * For instance, via `admin -o'. ! */ ! if (!really_quiet) ! error (0, 0, ! "File `%s' has no previous revision to resurrect.", ! finfo.fullname); ! free (prev); ! goto skip_this_file; ! } if (!quiet) error (0, 0, "Resurrecting file `%s' from revision %s.", *************** *** 665,670 **** --- 688,695 ---- server_checked_in (finfo.file, finfo.update_dir, repository); #endif } + + skip_this_file: free (repository); Entries_Close (entries); *************** *** 865,870 **** --- 890,896 ---- if (restore_cwd (&cwd, NULL)) error_exit (); free_cwd (&cwd); + if (message) free (message); if (rcsdir != NULL) free (rcsdir); return 0; Index: src/gnu/dist/cvs/src/admin.c diff -c src/gnu/dist/cvs/src/admin.c:1.1.1.5.2.1 src/gnu/dist/cvs/src/admin.c:1.1.1.5.2.2 *** src/gnu/dist/cvs/src/admin.c:1.1.1.5.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/src/admin.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 23,34 **** --- 28,43 ---- static const char *const admin_usage[] = { "Usage: %s %s [options] files...\n", + #ifndef CVS_ADMIN_LIMITED "\t-a users Append (comma-separated) user names to access list.\n", "\t-A file Append another file's access list.\n", "\t-b[rev] Set default branch (highest branch on trunk if omitted).\n", + #endif "\t-c string Set comment leader.\n", + #ifndef CVS_ADMIN_LIMITED "\t-e[users] Remove (comma-separated) user names from access list\n", "\t (all names if omitted).\n", + #endif "\t-I Run interactively.\n", "\t-k subst Set keyword substitution mode:\n", "\t kv (Default) Substitute keyword and value.\n", *************** *** 37,46 **** --- 46,58 ---- "\t o Preserve original string.\n", "\t b Like o, but mark file as binary.\n", "\t v Substitute value only.\n", + #ifndef CVS_ADMIN_LIMITED "\t-l[rev] Lock revision (latest revision on branch,\n", "\t latest revision on trunk if omitted).\n", "\t-L Set strict locking.\n", + #endif "\t-m rev:msg Replace revision's log message.\n", + #ifndef CVS_ADMIN_LIMITED "\t-n tag[:[rev]] Tag branch or revision. If :rev is omitted,\n", "\t delete the tag; if rev is omitted, tag the latest\n", "\t revision on the default branch.\n", *************** *** 53,66 **** --- 65,83 ---- "\t :rev rev and previous revisions on the same branch.\n", "\t ::rev Before rev on the same branch.\n", "\t rev Just rev.\n", + #endif "\t-q Run quietly.\n", + #ifndef CVS_ADMIN_LIMITED "\t-s state[:rev] Set revision state (latest revision on branch,\n", "\t latest revision on trunk if omitted).\n", + #endif "\t-t[file] Get descriptive text from file (stdin if omitted).\n", "\t-t-string Set descriptive text.\n", + #ifndef CVS_ADMIN_LIMITED "\t-u[rev] Unlock the revision (latest revision on branch,\n", "\t latest revision on trunk if omitted).\n", "\t-U Unset strict locking.\n", + #endif "(Specify the --help global option for a list of other help options)\n", NULL }; *************** *** 105,110 **** --- 122,132 ---- int ac; char **av; int av_alloc; + + /* This contains a printable version of the command line used + * for logging + */ + char *cmdline; }; /* Add an argument. OPT is the option letter, e.g. 'a'. ARG is the *************** *** 139,158 **** dat->av[dat->ac++] = newelt; } ! int ! admin (argc, argv) int argc; char **argv; { ! int err; ! #ifdef CVS_ADMIN_GROUP struct group *grp; struct group *getgrnam(); #endif struct admin_data admin_data; int c; int i; ! int only_k_option; if (argc <= 1) usage (admin_usage); --- 161,273 ---- dat->av[dat->ac++] = newelt; } ! static size_t ! wescape(dst, src) ! char *dst; ! const char *src; ! { ! const unsigned char *s = src; ! char *d = dst; ! for (; *s; s++) { ! if (!isprint(*s) || isspace(*s) || *s == '|') { ! *d++ = '\\'; ! *d++ = ((*s >> 6) & 3) + '0'; ! *d++ = ((*s >> 3) & 7) + '0'; ! *d++ = ((*s >> 0) & 7) + '0'; ! } else { ! *d++ = *s; ! } ! } ! *d = '\0'; ! return d - dst; ! } ! ! static char * ! makecmdline(argc, argv) int argc; char **argv; { ! size_t clen = 1024, wlen = 1024, len, cpos = 0, i; ! char *cmd = xmalloc(clen); ! char *word = xmalloc(wlen); ! ! for (i = 0; i < argc; i++) { ! char *arg = (strncmp(argv[i], "cvs ", 4) == 0) ? argv[i] + 4 : argv[i]; ! len = strlen(arg); ! if (len * 4 < wlen) { ! wlen += len * 4; ! word = xrealloc(word, wlen); ! } ! len = wescape(word, arg); ! if (clen - cpos < len + 2) { ! clen += len + 2; ! cmd = xrealloc(cmd, clen); ! } ! memcpy(&cmd[cpos], word, len); ! cpos += len; ! cmd[cpos++] = ' '; ! } ! if (cpos != 0) ! cmd[cpos - 1] = '\0'; ! else ! cmd[cpos] = '\0'; ! free(word); ! return cmd; ! } ! ! int ! admin_group_member() ! { struct group *grp; struct group *getgrnam(); + int i; + + if (CVS_admin_group == NULL) + return 1; + + if ((grp = getgrnam(CVS_admin_group)) == NULL) + return 0; + + { + #ifdef HAVE_GETGROUPS + gid_t *grps; + int n; + + /* get number of auxiliary groups */ + n = getgroups (0, NULL); + if (n < 0) + error (1, errno, "unable to get number of auxiliary groups"); + grps = (gid_t *) xmalloc((n + 1) * sizeof *grps); + n = getgroups (n, grps); + if (n < 0) + error (1, errno, "unable to get list of auxiliary groups"); + grps[n] = getgid(); + for (i = 0; i <= n; i++) + if (grps[i] == grp->gr_gid) break; + free (grps); + if (i > n) + return 0; + #else + char *me = getcaller(); + char **grnam; + + for (grnam = grp->gr_mem; *grnam; grnam++) + if (strcmp (*grnam, me) == 0) break; + if (!*grnam && getgid() != grp->gr_gid) + return 0; #endif + } + } + int + admin (argc, argv) + int argc; + char **argv; + { + int err; struct admin_data admin_data; int c; int i; ! int only_limited_options = 1; if (argc <= 1) usage (admin_usage); *************** *** 160,176 **** wrap_setup (); memset (&admin_data, 0, sizeof admin_data); /* TODO: get rid of `-' switch notation in admin_data. For example, admin_data->branch should be not `-bfoo' but simply `foo'. */ optind = 0; - only_k_option = 1; while ((c = getopt (argc, argv, "+ib::c:a:A:e::l::u::LUn:N:m:o:s:t::IqxV:k:")) != -1) { ! if (c != 'k' && c != 'q') ! only_k_option = 0; switch (c) { --- 275,291 ---- wrap_setup (); memset (&admin_data, 0, sizeof admin_data); + admin_data.cmdline = makecmdline (argc, argv); /* TODO: get rid of `-' switch notation in admin_data. For example, admin_data->branch should be not `-bfoo' but simply `foo'. */ optind = 0; while ((c = getopt (argc, argv, "+ib::c:a:A:e::l::u::LUn:N:m:o:s:t::IqxV:k:")) != -1) { ! if (CVS_admin_options == NULL || strchr(CVS_admin_options, c) == NULL) ! only_limited_options = 0; switch (c) { *************** *** 183,188 **** --- 298,304 ---- goto usage_error; case 'b': + if (admin_data.branch != NULL) { error (0, 0, "duplicate 'b' option"); *************** *** 375,427 **** argc -= optind; argv += optind; - #ifdef CVS_ADMIN_GROUP - /* The use of `cvs admin -k' is unrestricted. However, any other - option is restricted if the group CVS_ADMIN_GROUP exists on the - server. */ if ( # ifdef CLIENT_SUPPORT /* This is only "secure" on the server, since the user could edit the * RCS file on a local host, but some people like this kind of * check anyhow. The alternative would be to check only when * (server_active) rather than when not on the client. */ !current_parsed_root->isremote && # endif /* CLIENT_SUPPORT */ ! !only_k_option ! && (grp = getgrnam(CVS_ADMIN_GROUP)) != NULL) ! { ! #ifdef HAVE_GETGROUPS ! gid_t *grps; ! int n; ! ! /* get number of auxiliary groups */ ! n = getgroups (0, NULL); ! if (n < 0) ! error (1, errno, "unable to get number of auxiliary groups"); ! grps = (gid_t *) xmalloc((n + 1) * sizeof *grps); ! n = getgroups (n, grps); ! if (n < 0) ! error (1, errno, "unable to get list of auxiliary groups"); ! grps[n] = getgid(); ! for (i = 0; i <= n; i++) ! if (grps[i] == grp->gr_gid) break; ! free (grps); ! if (i > n) ! error (1, 0, "usage is restricted to members of the group %s", ! CVS_ADMIN_GROUP); ! #else ! char *me = getcaller(); ! char **grnam; ! ! for (grnam = grp->gr_mem; *grnam; grnam++) ! if (strcmp (*grnam, me) == 0) break; ! if (!*grnam && getgid() != grp->gr_gid) ! error (1, 0, "usage is restricted to members of the group %s", ! CVS_ADMIN_GROUP); ! #endif ! } ! #endif /* defined CVS_ADMIN_GROUP */ for (i = 0; i < admin_data.ac; ++i) { --- 491,511 ---- argc -= optind; argv += optind; if ( # ifdef CLIENT_SUPPORT + # ifndef SETXID_SUPPORT /* This is only "secure" on the server, since the user could edit the * RCS file on a local host, but some people like this kind of * check anyhow. The alternative would be to check only when * (server_active) rather than when not on the client. */ !current_parsed_root->isremote && + # endif # endif /* CLIENT_SUPPORT */ ! !only_limited_options && ! !admin_group_member()) ! error (1, 0, "usage is restricted to members of the group %s", ! CVS_admin_group); for (i = 0; i < admin_data.ac; ++i) { *************** *** 525,530 **** --- 609,616 ---- Lock_Cleanup (); return_it: + if (admin_data.cmdline != NULL) + free (admin_data.cmdline); if (admin_data.branch != NULL) free (admin_data.branch); if (admin_data.comment != NULL) *************** *** 569,574 **** --- 655,662 ---- goto exitfunc; } + history_write ('X', finfo->update_dir, admin_data->cmdline, finfo->file, + finfo->repository); rcs = vers->srcfile; if (rcs == NULL) { *************** *** 816,821 **** --- 904,916 ---- { tag = xstrdup (arg + 2); rev = RCS_head (rcs); + if (!rev) + { + error (0, 0, "No head revision in archive file `%s'.", + rcs->path); + status = 1; + continue; + } } else { Index: src/gnu/dist/cvs/src/annotate.c diff -c src/gnu/dist/cvs/src/annotate.c:1.2.2.1 src/gnu/dist/cvs/src/annotate.c:1.2.2.2 *** src/gnu/dist/cvs/src/annotate.c:1.2.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/src/annotate.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 221,226 **** --- 226,232 ---- { error (0, errno, "cannot chdir to %s", repository); free (repository); + free (where); return (1); } /* End section which is identical to patch_proc. */ Index: src/gnu/dist/cvs/src/buffer.c diff -c src/gnu/dist/cvs/src/buffer.c:1.4.2.1 src/gnu/dist/cvs/src/buffer.c:1.4.2.2 *** src/gnu/dist/cvs/src/buffer.c:1.4.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/src/buffer.c Wed Jul 6 20:12:38 2005 *************** *** 110,120 **** /* Allocate buffer_data structures in blocks of 16. */ #define ALLOC_COUNT (16) ! alc = ((struct buffer_data *) ! xmalloc (ALLOC_COUNT * sizeof (struct buffer_data))); space = (char *) valloc (ALLOC_COUNT * BUFFER_DATA_SIZE); ! if (alc == NULL || space == NULL) return; for (i = 0; i < ALLOC_COUNT; i++, alc++, space += BUFFER_DATA_SIZE) { alc->next = free_buffer_data; --- 110,122 ---- /* Allocate buffer_data structures in blocks of 16. */ #define ALLOC_COUNT (16) ! alc = xmalloc (ALLOC_COUNT * sizeof (struct buffer_data)); space = (char *) valloc (ALLOC_COUNT * BUFFER_DATA_SIZE); ! if (!space) ! { ! free (alc); return; + } for (i = 0; i < ALLOC_COUNT; i++, alc++, space += BUFFER_DATA_SIZE) { alc->next = free_buffer_data; Index: src/gnu/dist/cvs/src/build_src.com diff -c src/gnu/dist/cvs/src/build_src.com:1.1.1.2 src/gnu/dist/cvs/src/build_src.com:1.1.1.2.2.1 *** src/gnu/dist/cvs/src/build_src.com:1.1.1.2 Thu Nov 28 04:55:05 2002 --- src/gnu/dist/cvs/src/build_src.com Wed Jul 6 20:12:38 2005 *************** *** 44,49 **** --- 44,50 ---- $ CC run.c $ CC scramble.c $ CC server.c + $ CC stack.c $ CC status.c $ CC subr.c $ CC tag.c *************** *** 62,68 **** no_diff.obj,- parseinfo.obj,patch.obj,rcs.obj,rcscmds.obj,recurse.obj,release.obj,- remove.obj,repos.obj,root.obj,run.obj,scramble.obj,server.obj,- ! status.obj,- subr.obj,tag.obj,update.obj,version.obj,vers_ts.obj,watch.obj,wrapper.obj,- zlib.obj $ link/nodeb/exe=cvs.exe main.obj,cvslib.olb/lib,[-.vms]openvmslib.olb/lib,- --- 63,69 ---- no_diff.obj,- parseinfo.obj,patch.obj,rcs.obj,rcscmds.obj,recurse.obj,release.obj,- remove.obj,repos.obj,root.obj,run.obj,scramble.obj,server.obj,- ! stack.obj,status.obj,- subr.obj,tag.obj,update.obj,version.obj,vers_ts.obj,watch.obj,wrapper.obj,- zlib.obj $ link/nodeb/exe=cvs.exe main.obj,cvslib.olb/lib,[-.vms]openvmslib.olb/lib,- Index: src/gnu/dist/cvs/src/checkin.c diff -c src/gnu/dist/cvs/src/checkin.c:1.1.1.2.2.1 src/gnu/dist/cvs/src/checkin.c:1.1.1.2.2.2 *** src/gnu/dist/cvs/src/checkin.c:1.1.1.2.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/src/checkin.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 60,66 **** */ assert (finfo->rcs != NULL); ! switch (RCS_checkin (finfo->rcs, finfo->file, message, rev, RCS_FLAGS_KEEPFILE)) { case 0: /* everything normal */ --- 65,71 ---- */ assert (finfo->rcs != NULL); ! switch (RCS_checkin (finfo->rcs, finfo->file, message, rev, 0, RCS_FLAGS_KEEPFILE)) { case 0: /* everything normal */ Index: src/gnu/dist/cvs/src/checkout.c diff -c src/gnu/dist/cvs/src/checkout.c:1.6.2.1 src/gnu/dist/cvs/src/checkout.c:1.6.2.2 *** src/gnu/dist/cvs/src/checkout.c:1.6.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/src/checkout.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 1053,1059 **** which = W_REPOS; if (tag != NULL && !tag_validated) { ! tag_check_valid (tag, argc - 1, argv + 1, 0, aflag, NULL); tag_validated = 1; } } --- 1058,1065 ---- which = W_REPOS; if (tag != NULL && !tag_validated) { ! tag_check_valid (tag, argc - 1, argv + 1, 0, aflag, ! repository); tag_validated = 1; } } Index: src/gnu/dist/cvs/src/classify.c diff -c src/gnu/dist/cvs/src/classify.c:1.1.1.3.2.1 src/gnu/dist/cvs/src/classify.c:1.1.1.3.2.2 *** src/gnu/dist/cvs/src/classify.c:1.1.1.3.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/src/classify.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/client.c diff -c src/gnu/dist/cvs/src/client.c:1.17.2.1 src/gnu/dist/cvs/src/client.c:1.17.2.2 *** src/gnu/dist/cvs/src/client.c:1.17.2.1 Thu May 20 04:30:51 2004 --- src/gnu/dist/cvs/src/client.c Wed Jul 6 20:12:38 2005 *************** *** 221,227 **** /* Try to decide whether we should send arg to the server by checking the contents of the corresponding CVSADM directory. */ { ! char *t, *this_root; /* Calculate "dirname arg" */ for (t = arg + strlen (arg) - 1; t >= arg; t--) --- 221,228 ---- /* Try to decide whether we should send arg to the server by checking the contents of the corresponding CVSADM directory. */ { ! char *t, *root_string; ! cvsroot_t *this_root = NULL; /* Calculate "dirname arg" */ for (t = arg + strlen (arg) - 1; t >= arg; t--) *************** *** 251,275 **** /* Since we didn't find it in the list, check the CVSADM files on disk. */ this_root = Name_Root (arg, (char *) NULL); *t = c; } else { /* We're at the beginning of the string. Look at the CVSADM files in cwd. */ ! this_root = (CVSroot_cmdline ? xstrdup(CVSroot_cmdline) ! : Name_Root ((char *) NULL, (char *) NULL)); } /* Now check the value for root. */ ! if (this_root && current_parsed_root ! && (strcmp (this_root, current_parsed_root->original) != 0)) { /* Don't send this, since the CVSROOTs don't match. */ ! free (this_root); return 1; } ! free (this_root); } /* OK, let's send it. */ --- 252,282 ---- /* Since we didn't find it in the list, check the CVSADM files on disk. */ this_root = Name_Root (arg, (char *) NULL); + root_string = this_root->original; *t = c; } else { /* We're at the beginning of the string. Look at the CVSADM files in cwd. */ ! if (CVSroot_cmdline) ! root_string = CVSroot_cmdline; ! else ! { ! this_root = Name_Root ((char *) NULL, (char *) NULL); ! root_string = this_root->original; ! } } /* Now check the value for root. */ ! if (root_string && current_parsed_root ! && (strcmp (root_string, current_parsed_root->original) != 0)) { /* Don't send this, since the CVSROOTs don't match. */ ! if (this_root) free_cvsroot_t (this_root); return 1; } ! if (this_root) free_cvsroot_t (this_root); } /* OK, let's send it. */ *************** *** 1113,1118 **** --- 1120,1127 ---- int reposdirname_absolute; int newdir = 0; + assert (pathname); + reposname = NULL; read_line (&reposname); assert (reposname != NULL); *************** *** 1219,1224 **** --- 1228,1238 ---- newdir = 1; + /* If toplevel_repos doesn't have at least one character, then the + * reference to r[-1] below could be out of bounds. + */ + assert (*toplevel_repos); + repo = xmalloc (strlen (toplevel_repos) + 10); strcpy (repo, toplevel_repos); *************** *** 1928,1934 **** #ifdef USE_VMS_FILENAMES /* A VMS rename of "blah.dat" to "foo" to implies a destination of "foo.dat" which is unfortinate for CVS */ ! sprintf (temp_filename, "%s_new_", filename); #else #ifdef _POSIX_NO_TRUNC sprintf (temp_filename, ".new.%.9s", filename); --- 1942,1948 ---- #ifdef USE_VMS_FILENAMES /* A VMS rename of "blah.dat" to "foo" to implies a destination of "foo.dat" which is unfortinate for CVS */ ! sprintf (temp_filename, "%s_new_", filename); #else #ifdef _POSIX_NO_TRUNC sprintf (temp_filename, ".new.%.9s", filename); *************** *** 1981,1986 **** --- 1995,2002 ---- entirely possible that future files will not have the same problem. */ error (0, errno, "cannot write %s", short_pathname); + free (temp_filename); + free (buf); goto discard_file_and_return; } *************** *** 3068,3073 **** --- 3084,3092 ---- char *args; int len; { + fd_set wfds; + int s; + /* In the case where stdout and stderr point to the same place, fflushing stderr will make output happen in the correct order. Often stderr will be line-buffered and this won't be needed, *************** *** 3075,3080 **** --- 3094,3105 ---- based on being confused between default buffering between stdout and stderr. But I'm not sure). */ fflush (stderr); + FD_ZERO (&wfds); + FD_SET (STDOUT_FILENO, &wfds); + errno = 0; + s = select (STDOUT_FILENO+1, NULL, &wfds, NULL, NULL); + if (s < 1 && errno != 0) + perror ("cannot write to stdout"); fwrite (args, len, sizeof (*args), stdout); putc ('\n', stdout); } *************** *** 3122,3130 **** --- 3147,3170 ---- char *args; int len; { + fd_set wfds; + int s; + /* In the case where stdout and stderr point to the same place, fflushing stdout will make output happen in the correct order. */ fflush (stdout); + FD_ZERO (&wfds); + FD_SET (STDERR_FILENO, &wfds); + errno = 0; + s = select (STDERR_FILENO+1, NULL, &wfds, NULL, NULL); + /* + * If stderr has problems, then adding a call to + * perror ("cannot write to stderr") + * will not work. So, try to write a message on stdout and + * terminate cvs. + */ + if (s < 1 && errno != 0) + fperrmsg (stdout, 1, errno, "cannot write to stderr"); fwrite (args, len, sizeof (*args), stderr); putc ('\n', stderr); } *************** *** 4249,4255 **** if (need > sizeof buf) { ! int got; /* This usually means that the server sent us an error message. Read it byte by byte and print it out. --- 4289,4296 ---- if (need > sizeof buf) { ! ssize_t got; ! size_t total; /* This usually means that the server sent us an error message. Read it byte by byte and print it out. *************** *** 4258,4270 **** want to do this to work with older servers. */ buf[0] = cbuf[0]; buf[1] = cbuf[1]; ! got = recv (sock, buf + 2, sizeof buf - 2, 0); ! if (got < 0) ! error (1, 0, "recv() from server %s: %s", ! root->hostname, SOCK_STRERROR (SOCK_ERRNO)); ! buf[got + 2] = '\0'; ! if (buf[got + 1] == '\n') ! buf[got + 1] = '\0'; error (1, 0, "error from server %s: %s", root->hostname, buf); } --- 4299,4317 ---- want to do this to work with older servers. */ buf[0] = cbuf[0]; buf[1] = cbuf[1]; ! total = 2; ! while (got = recv (sock, buf + total, sizeof buf - total, 0)) ! { ! if (got < 0) ! error (1, 0, "recv() from server %s: %s", ! root->hostname, SOCK_STRERROR (SOCK_ERRNO)); ! total += got; ! if (strrchr (buf + total - got, '\n')) ! break; ! } ! buf[total] = '\0'; ! if (buf[total - 1] == '\n') ! buf[total - 1] = '\0'; error (1, 0, "error from server %s: %s", root->hostname, buf); } Index: src/gnu/dist/cvs/src/commit.c diff -c src/gnu/dist/cvs/src/commit.c:1.11.2.2 src/gnu/dist/cvs/src/commit.c:1.11.2.3 *** src/gnu/dist/cvs/src/commit.c:1.11.2.2 Fri Jul 23 08:03:03 2004 --- src/gnu/dist/cvs/src/commit.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 1477,1482 **** --- 1482,1489 ---- Node *p; List *ulist; + assert (repository); + p = findnode (mulist, update_dir); if (p == NULL) return err; *************** *** 1755,1761 **** if (corev != NULL) free (corev); ! retcode = RCS_checkin (finfo->rcs, finfo->file, message, rev, RCS_FLAGS_DEAD | RCS_FLAGS_QUIET); if (retcode != 0) { --- 1762,1768 ---- if (corev != NULL) free (corev); ! retcode = RCS_checkin (finfo->rcs, finfo->file, message, rev, 0, RCS_FLAGS_DEAD | RCS_FLAGS_QUIET); if (retcode != 0) { *************** *** 2122,2134 **** /* commit a dead revision. */ (void) sprintf (tmp, "file %s was initially added on branch %s.", file, tag); ! retcode = RCS_checkin (rcs, NULL, tmp, NULL, RCS_FLAGS_DEAD | RCS_FLAGS_QUIET); free (tmp); if (retcode != 0) { error (retcode == -1 ? 1 : 0, retcode == -1 ? errno : 0, "could not create initial dead revision %s", rcs->path); goto out; } --- 2129,2142 ---- /* commit a dead revision. */ (void) sprintf (tmp, "file %s was initially added on branch %s.", file, tag); ! retcode = RCS_checkin (rcs, NULL, tmp, NULL, 0, RCS_FLAGS_DEAD | RCS_FLAGS_QUIET); free (tmp); if (retcode != 0) { error (retcode == -1 ? 1 : 0, retcode == -1 ? errno : 0, "could not create initial dead revision %s", rcs->path); + free (fname); goto out; } *************** *** 2162,2173 **** --- 2170,2194 ---- char *head; char *magicrev; int retcode; + time_t headtime = -1; + char *revnum, *tmp; + FILE *fp; + time_t t = -1; + struct tm *ct; fixbranch (rcs, sbranch); head = RCS_getversion (rcs, NULL, NULL, 0, (int *) NULL); + if (!head) + error (1, 0, "No head revision in archive file `%s'.", + rcs->path); magicrev = RCS_magicrev (rcs, head); + /* If this is not a new branch, then we will want a dead + version created before this one. */ + if (!newfile) + headtime = RCS_getrevtime (rcs, head, 0, 0); + retcode = RCS_settag (rcs, tag, magicrev); RCS_rewrite (rcs, NULL, NULL); *************** *** 2180,2185 **** --- 2201,2269 ---- "could not stub branch %s for %s", tag, rcs->path); goto out; } + /* We need to add a dead version here to avoid -rtag -Dtime + checkout problems between when the head version was + created and now. */ + if (!newfile && headtime != -1) + { + /* move the new file out of the way. */ + fname = xmalloc (strlen (file) + sizeof (CVSADM) + + sizeof (CVSPREFIX) + 10); + (void) sprintf (fname, "%s/%s%s", CVSADM, CVSPREFIX, file); + rename_file (file, fname); + + /* Create empty FILE. Can't use copy_file with a DEVNULL + argument -- copy_file now ignores device files. */ + fp = fopen (file, "w"); + if (fp == NULL) + error (1, errno, "cannot open %s for writing", file); + if (fclose (fp) < 0) + error (0, errno, "cannot close %s", file); + + /* As we will be hacking the delta date, put the time + this was added into the log message. */ + t = time(NULL); + ct = gmtime(&t); + tmp = xmalloc (strlen (file) + strlen (tag) + 80); + + (void) sprintf (tmp, + "file %s was added on branch %s on %d-%02d-%02d %02d:%02d:%02d +0000", + file, tag, + ct->tm_year + (ct->tm_year < 100 ? 0 : 1900), + ct->tm_mon + 1, ct->tm_mday, + ct->tm_hour, ct->tm_min, ct->tm_sec); + + /* commit a dead revision. */ + revnum = RCS_whatbranch (rcs, tag); + retcode = RCS_checkin (rcs, NULL, tmp, revnum, headtime, + RCS_FLAGS_DEAD | + RCS_FLAGS_QUIET | + RCS_FLAGS_USETIME); + free (revnum); + free (tmp); + + if (retcode != 0) + { + error (retcode == -1 ? 1 : 0, retcode == -1 ? errno : 0, + "could not created dead stub %s for %s", tag, + rcs->path); + goto out; + } + + /* put the new file back where it was */ + rename_file (fname, file); + free (fname); + + /* double-check that the file was written correctly */ + freercsnode (&rcs); + rcs = RCS_parse (file, repository); + if (rcs == NULL) + { + error (0, 0, "could not read %s", rcs->path); + goto out; + } + *rcsnode = rcs; + } } else { Index: src/gnu/dist/cvs/src/create_adm.c diff -c src/gnu/dist/cvs/src/create_adm.c:1.1.1.4.2.1 src/gnu/dist/cvs/src/create_adm.c:1.1.1.4.2.2 *** src/gnu/dist/cvs/src/create_adm.c:1.1.1.4.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/create_adm.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/cvs.h diff -c src/gnu/dist/cvs/src/cvs.h:1.10.2.2 src/gnu/dist/cvs/src/cvs.h:1.10.2.3 *** src/gnu/dist/cvs/src/cvs.h:1.10.2.2 Fri Jul 23 08:03:03 2004 --- src/gnu/dist/cvs/src/cvs.h Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS kit. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS kit. *************** *** 274,280 **** #define EDITOR3_ENV "EDITOR" /* which editor to use */ #define CVSROOT_ENV "CVSROOT" /* source directory root */ ! #define CVSROOT_DFLT NULL /* No dflt; must set for checkout */ #define IGNORE_ENV "CVSIGNORE" /* More files to ignore */ #define WRAPPER_ENV "CVSWRAPPERS" /* name of the wrapper file */ --- 279,288 ---- #define EDITOR3_ENV "EDITOR" /* which editor to use */ #define CVSROOT_ENV "CVSROOT" /* source directory root */ ! /* Define CVSROOT_DFLT to a fallback value for CVSROOT. ! * ! #undef CVSROOT_DFL ! */ #define IGNORE_ENV "CVSIGNORE" /* More files to ignore */ #define WRAPPER_ENV "CVSWRAPPERS" /* name of the wrapper file */ *************** *** 377,384 **** extern int cvswrite; extern mode_t cvsumask; extern char *RCS_citag; ! ! /* This global variable holds the global -d option. It is NULL if -d was not used, which means that we must get the CVSroot information --- 385,393 ---- extern int cvswrite; extern mode_t cvsumask; extern char *RCS_citag; ! extern char *CVS_admin_group; ! extern char *CVS_admin_options; ! extern int admin_group_member PROTO((void)); /* This global variable holds the global -d option. It is NULL if -d was not used, which means that we must get the CVSroot information *************** *** 425,430 **** --- 434,440 ---- #define RCS_FLAGS_QUIET 4 #define RCS_FLAGS_MODTIME 8 #define RCS_FLAGS_KEEPFILE 16 + #define RCS_FLAGS_USETIME 32 extern int RCS_exec_rcsdiff PROTO ((RCSNode *rcsfile, const char *opts, const char *options, *************** *** 458,472 **** const char *Short_Repository PROTO((const char *repository)); void Sanitize_Repository_Name PROTO((char *repository)); - char *Name_Root PROTO((char *dir, char *update_dir)); - void free_cvsroot_t PROTO((cvsroot_t *root_in)); - cvsroot_t *parse_cvsroot PROTO((const char *root)); - cvsroot_t *local_cvsroot PROTO((const char *dir)); - void Create_Root PROTO((const char *dir, const char *rootdir)); - void root_allow_add PROTO ((char *)); - void root_allow_free PROTO ((void)); - int root_allow_ok PROTO ((char *)); - char *previous_rev PROTO ((RCSNode *rcs, const char *rev)); char *gca PROTO ((const char *rev1, const char *rev2)); extern void check_numeric PROTO ((const char *, int, char **)); --- 468,473 ---- Index: src/gnu/dist/cvs/src/cvsbug.in diff -c src/gnu/dist/cvs/src/cvsbug.in:1.2 src/gnu/dist/cvs/src/cvsbug.in:1.2.2.1 *** src/gnu/dist/cvs/src/cvsbug.in:1.2 Wed Dec 10 06:09:52 2003 --- src/gnu/dist/cvs/src/cvsbug.in Thu Aug 25 15:15:29 2005 *************** *** 109,122 **** /usr/bin/ypcat passwd 2>/dev/null | cat - /etc/passwd | grep "^$LOGNAME:" | cut -f5 -d':' | sed -e 's/,.*//' > $TEMP ORIGINATOR="`cat $TEMP`" ! rm -f $TEMP fi fi if [ "$ORIGINATOR" = "" ]; then grep "^$LOGNAME:" /etc/passwd | cut -f5 -d':' | sed -e 's/,.*//' > $TEMP ORIGINATOR="`cat $TEMP`" ! rm -f $TEMP fi if [ -n "$ORGANIZATION" ]; then --- 109,122 ---- /usr/bin/ypcat passwd 2>/dev/null | cat - /etc/passwd | grep "^$LOGNAME:" | cut -f5 -d':' | sed -e 's/,.*//' > $TEMP ORIGINATOR="`cat $TEMP`" ! >$TEMP fi fi if [ "$ORIGINATOR" = "" ]; then grep "^$LOGNAME:" /etc/passwd | cut -f5 -d':' | sed -e 's/,.*//' > $TEMP ORIGINATOR="`cat $TEMP`" ! >$TEMP fi if [ -n "$ORGANIZATION" ]; then Index: src/gnu/dist/cvs/src/cvsrc.c diff -c src/gnu/dist/cvs/src/cvsrc.c:1.1.1.2.2.1 src/gnu/dist/cvs/src/cvsrc.c:1.1.1.2.2.2 *** src/gnu/dist/cvs/src/cvsrc.c:1.1.1.2.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/cvsrc.c Wed Jul 6 20:12:38 2005 *************** *** 1,5 **** /* ! * Copyright (c) 1993 david d zuhn * * Written by david d `zoo' zuhn while at Cygnus Support * --- 1,10 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1993 david d zuhn * * Written by david d `zoo' zuhn while at Cygnus Support * Index: src/gnu/dist/cvs/src/diff.c diff -c src/gnu/dist/cvs/src/diff.c:1.4.2.1 src/gnu/dist/cvs/src/diff.c:1.4.2.2 *** src/gnu/dist/cvs/src/diff.c:1.4.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/diff.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/edit.c diff -c src/gnu/dist/cvs/src/edit.c:1.4.2.1 src/gnu/dist/cvs/src/edit.c:1.4.2.2 *** src/gnu/dist/cvs/src/edit.c:1.4.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/edit.c Wed Jul 6 20:12:38 2005 *************** *** 32,37 **** --- 32,38 ---- void *callerdat; struct file_info *finfo; { + fileattr_get0 (finfo->file, "_watched"); fileattr_set (finfo->file, "_watched", turning_on ? "" : NULL); return 0; } *************** *** 50,56 **** --- 51,60 ---- List *entries; { if (setting_default) + { + fileattr_get0 (NULL, "_watched"); fileattr_set (NULL, "_watched", turning_on ? "" : NULL); + } return err; } Index: src/gnu/dist/cvs/src/entries.c diff -c src/gnu/dist/cvs/src/entries.c:1.5.2.1 src/gnu/dist/cvs/src/entries.c:1.5.2.2 *** src/gnu/dist/cvs/src/entries.c:1.5.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/entries.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 537,542 **** --- 542,548 ---- break; default: /* Ignore unrecognized commands. */ + Entnode_Destroy (ent); break; } } Index: src/gnu/dist/cvs/src/expand_path.c diff -c src/gnu/dist/cvs/src/expand_path.c:1.1.1.3.2.1 src/gnu/dist/cvs/src/expand_path.c:1.1.1.3.2.2 *** src/gnu/dist/cvs/src/expand_path.c:1.1.1.3.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/expand_path.c Wed Jul 6 20:12:38 2005 *************** *** 97,112 **** const char *file; int line; { ! const char *s; ! char *d; char *mybuf = NULL; size_t mybuf_size = 0; char *buf = NULL; size_t buf_size = 0; - size_t doff; - char *result; /* Sorry this routine is so ugly; it is a head-on collision --- 97,110 ---- const char *file; int line; { ! size_t s, d, p; ! char *e; char *mybuf = NULL; size_t mybuf_size = 0; char *buf = NULL; size_t buf_size = 0; char *result; /* Sorry this routine is so ugly; it is a head-on collision *************** *** 117,198 **** thusly. */ /* First copy from NAME to MYBUF, expanding $ as we go. */ ! s = name; ! d = mybuf; ! doff = d - mybuf; ! expand_string (&mybuf, &mybuf_size, doff + 1); ! d = mybuf + doff; ! while ((*d++ = *s)) { ! if (*s++ == '$') { ! char *p = d; ! char *e; ! int flag = (*s == '{'); ! ! doff = d - mybuf; ! expand_string (&mybuf, &mybuf_size, doff + 1); ! d = mybuf + doff; ! for (; (*d++ = *s); s++) { ! if (flag ! ? *s =='}' ! : isalnum ((unsigned char) *s) == 0 && *s != '_') ! break; ! doff = d - mybuf; ! expand_string (&mybuf, &mybuf_size, doff + 1); ! d = mybuf + doff; } ! *--d = '\0'; ! e = expand_variable (&p[flag], file, line); ! ! if (e) { ! doff = d - mybuf; ! expand_string (&mybuf, &mybuf_size, doff + 1); ! d = mybuf + doff; ! for (d = &p[-1]; (*d++ = *e++);) { ! doff = d - mybuf; ! expand_string (&mybuf, &mybuf_size, doff + 1); ! d = mybuf + doff; } ! --d; ! if (flag && *s) ! s++; } else /* expand_variable has already printed an error message. */ goto error_exit; } ! doff = d - mybuf; ! expand_string (&mybuf, &mybuf_size, doff + 1); ! d = mybuf + doff; ! } ! doff = d - mybuf; ! expand_string (&mybuf, &mybuf_size, doff + 1); ! d = mybuf + doff; ! *d = '\0'; /* Then copy from MYBUF to BUF, expanding ~. */ ! s = mybuf; ! d = buf; /* If you don't want ~username ~/ to be expanded simply remove * This entire if statement including the else portion */ ! if (*s++ == '~') { ! char *t; ! char *p, *pstart; ! pstart = p = xstrdup (s); ! if (*pstart=='/' || *pstart==0) ! t = get_homedir (); else { #ifdef GETPWNAM_MISSING - for (; *p!='/' && *p; p++) - ; - *p = 0; if (line != 0) error (0, 0, "%s:%d:tilde expansion not supported on this system", --- 115,188 ---- thusly. */ /* First copy from NAME to MYBUF, expanding $ as we go. */ ! s = d = 0; ! while (name[s] != '\0') { ! if (name[s] == '$') { ! p = d; ! if (name[++s] == '{') { ! while (name[++s] != '}' && name[s] != '\0') ! { ! expand_string (&mybuf, &mybuf_size, p + 1); ! mybuf[p++] = name[s]; ! } ! if (name[s] == '}') ++s; } ! else { ! while (isalnum ((unsigned char) name[s]) || name[s] == '_') { ! expand_string (&mybuf, &mybuf_size, p + 1); ! mybuf[p++] = name[s++]; } ! } ! expand_string (&mybuf, &mybuf_size, p + 1); ! mybuf[p] = '\0'; ! e = expand_variable (mybuf + d, file, line); ! ! if (e) ! { ! p = strlen(e); ! expand_string (&mybuf, &mybuf_size, d + p); ! memcpy(mybuf + d, e, p); ! d += p; } else /* expand_variable has already printed an error message. */ goto error_exit; } ! else ! { ! expand_string (&mybuf, &mybuf_size, d + 1); ! mybuf[d++] = name[s++]; ! } ! } ! expand_string (&mybuf, &mybuf_size, d + 1); ! mybuf[d++] = '\0'; /* Then copy from MYBUF to BUF, expanding ~. */ ! s = d = 0; /* If you don't want ~username ~/ to be expanded simply remove * This entire if statement including the else portion */ ! if (mybuf[s] == '~') { ! p = d; ! while (mybuf[++s] != '/' && mybuf[s] != '\0') ! { ! expand_string (&buf, &buf_size, p + 1); ! buf[p++] = name[s]; ! } ! expand_string (&buf, &buf_size, p + 1); ! buf[p] = '\0'; ! ! if (p == d) ! e = get_homedir (); else { #ifdef GETPWNAM_MISSING if (line != 0) error (0, 0, "%s:%d:tilde expansion not supported on this system", *************** *** 203,256 **** return NULL; #else struct passwd *ps; ! for (; *p!='/' && *p; p++) ! ; ! *p = 0; ! ps = getpwnam (pstart); if (ps == 0) { if (line != 0) error (0, 0, "%s:%d: no such user %s", ! file, line, pstart); else ! error (0, 0, "%s: no such user %s", file, pstart); return NULL; } ! t = ps->pw_dir; #endif } ! if (t == NULL) error (1, 0, "cannot find home directory"); ! doff = d - buf; ! expand_string (&buf, &buf_size, doff + 1); ! d = buf + doff; ! while ((*d++ = *t++)) ! { ! doff = d - buf; ! expand_string (&buf, &buf_size, doff + 1); ! d = buf + doff; ! } ! --d; ! s+=p-pstart; ! free (pstart); ! } ! else ! --s; ! /* Kill up to here */ ! doff = d - buf; ! expand_string (&buf, &buf_size, doff + 1); ! d = buf + doff; ! while ((*d++ = *s++)) ! { ! doff = d - buf; ! expand_string (&buf, &buf_size, doff + 1); ! d = buf + doff; ! } ! doff = d - buf; ! expand_string (&buf, &buf_size, doff + 1); ! d = buf + doff; ! *d = '\0'; /* OK, buf contains the value we want to return. Clean up and return it. */ --- 193,223 ---- return NULL; #else struct passwd *ps; ! ps = getpwnam (buf + d); if (ps == 0) { if (line != 0) error (0, 0, "%s:%d: no such user %s", ! file, line, buf + d); else ! error (0, 0, "%s: no such user %s", file, buf + d); return NULL; } ! e = ps->pw_dir; #endif } ! if (e == NULL) error (1, 0, "cannot find home directory"); ! p = strlen(e); ! expand_string (&buf, &buf_size, d + p); ! memcpy(buf + d, e, p); ! d += p; ! } ! /* Kill up to here */ ! p = strlen(mybuf + s) + 1; ! expand_string (&buf, &buf_size, d + p); ! memcpy(buf + d, mybuf + s, p); /* OK, buf contains the value we want to return. Clean up and return it. */ Index: src/gnu/dist/cvs/src/fileattr.c diff -c src/gnu/dist/cvs/src/fileattr.c:1.1.1.2.4.1 src/gnu/dist/cvs/src/fileattr.c:1.1.1.2.4.2 *** src/gnu/dist/cvs/src/fileattr.c:1.1.1.2.4.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/fileattr.c Wed Jul 6 20:12:38 2005 *************** *** 139,144 **** --- 139,145 ---- "file attribute database corruption: tab missing in %s", fname); ++p; + if (fileattr_default_attrs) free (fileattr_default_attrs); fileattr_default_attrs = xstrdup (p); } else *************** *** 589,594 **** --- 590,596 ---- { error (0, errno, "cannot make directory %s", repname); (void) umask (omask); + free (fname); free (repname); return; } *************** *** 600,605 **** --- 602,608 ---- { error (0, errno, "cannot write %s", fname); (void) umask (omask); + free (fname); return; } } Index: src/gnu/dist/cvs/src/filesubr.c diff -c src/gnu/dist/cvs/src/filesubr.c:1.4.2.2 src/gnu/dist/cvs/src/filesubr.c:1.4.2.3 *** src/gnu/dist/cvs/src/filesubr.c:1.4.2.2 Fri Jul 23 08:03:03 2004 --- src/gnu/dist/cvs/src/filesubr.c Wed Jul 6 20:12:38 2005 *************** *** 20,25 **** --- 20,27 ---- #include #include "cvs.h" + #include "xsize.h" + static int deep_remove_dir PROTO((const char *path)); /* *************** *** 898,928 **** * This function exits with a fatal error if it fails to read the link for * any reason. */ char * xreadlink (link) const char *link; { char *file = NULL; ! int buflen = 128; ! int link_name_len; ! /* Get the name of the file to which `from' is linked. ! FIXME: what portability issues arise here? Are readlink & ! ENAMETOOLONG defined on all systems? -twp */ ! do { file = xrealloc (file, buflen); ! link_name_len = readlink (link, file, buflen - 1); ! buflen *= 2; ! } ! while (link_name_len < 0 && errno == ENAMETOOLONG); ! if (link_name_len < 0) ! error (1, errno, "cannot readlink %s", link); ! file[link_name_len] = '\0'; ! return file; } #endif /* HAVE_READLINK */ --- 900,947 ---- * This function exits with a fatal error if it fails to read the link for * any reason. */ + #define MAXSIZE (SIZE_MAX < SSIZE_MAX ? SIZE_MAX : SSIZE_MAX) + char * xreadlink (link) const char *link; { char *file = NULL; ! size_t buflen = 128; ! /* Get the name of the file to which `from' is linked. */ ! while (1) { + ssize_t r; + size_t link_name_len; + file = xrealloc (file, buflen); ! r = readlink (link, file, buflen); ! link_name_len = r; ! if (r < 0 ! #ifdef ERANGE ! /* AIX 4 and HP-UX report ERANGE if the buffer is too small. */ ! && errno != ERANGE ! #endif ! ) ! error (1, errno, "cannot readlink %s", link); ! /* If there is space for the NUL byte, set it and return. */ ! if (r >= 0 && link_name_len < buflen) ! { ! file[link_name_len] = '\0'; ! return file; ! } ! if (buflen <= MAXSIZE / 2) ! buflen *= 2; ! else if (buflen < MAXSIZE) ! buflen = MAXSIZE; ! else ! /* Our buffer cannot grow any bigger. */ ! error (1, ENAMETOOLONG, "cannot readlink %s", link); ! } } #endif /* HAVE_READLINK */ Index: src/gnu/dist/cvs/src/find_names.c diff -c src/gnu/dist/cvs/src/find_names.c:1.2.2.1 src/gnu/dist/cvs/src/find_names.c:1.2.2.2 *** src/gnu/dist/cvs/src/find_names.c:1.2.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/find_names.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/hardlink.c diff -c src/gnu/dist/cvs/src/hardlink.c:1.1.1.1.4.1 src/gnu/dist/cvs/src/hardlink.c:1.1.1.1.4.2 *** src/gnu/dist/cvs/src/hardlink.c:1.1.1.1.4.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/hardlink.c Wed Jul 6 20:12:38 2005 *************** *** 11,17 **** /* Collect and manage hardlink info associated with a particular file. */ #include "cvs.h" ! #include "hardlink.h" /* The structure currently used to manage hardlink info is a list. Therefore, most of the functions which manipulate hardlink data --- 11,19 ---- /* Collect and manage hardlink info associated with a particular file. */ #include "cvs.h" ! ! #ifdef PRESERVE_PERMISSIONS_SUPPORT ! # include "hardlink.h" /* The structure currently used to manage hardlink info is a list. Therefore, most of the functions which manipulate hardlink data *************** *** 302,305 **** return 0; } ! --- 304,307 ---- return 0; } ! #endif /* PRESERVE_PERMISSIONS_SUPPORT */ Index: src/gnu/dist/cvs/src/hardlink.h diff -c src/gnu/dist/cvs/src/hardlink.h:1.1.1.1 src/gnu/dist/cvs/src/hardlink.h:1.1.1.1.4.1 *** src/gnu/dist/cvs/src/hardlink.h:1.1.1.1 Mon Sep 4 21:46:13 2000 --- src/gnu/dist/cvs/src/hardlink.h Wed Jul 6 20:12:38 2005 *************** *** 17,22 **** --- 17,23 ---- when files are being checked out or updated. It is used only when hardlinked files are being checked out. */ + #ifdef PRESERVE_PERMISSIONS_SUPPORT struct hardlink_info { Ctype status; /* as returned from Classify_File() */ *************** *** 31,33 **** --- 32,35 ---- List *list_linked_files_on_disk PROTO ((char *)); int compare_linkage_lists PROTO ((List *, List *)); int find_checkedout_proc PROTO ((Node *, void *)); + #endif /* PRESERVE_PERMISSIONS_SUPPORT */ Index: src/gnu/dist/cvs/src/hash.c diff -c src/gnu/dist/cvs/src/hash.c:1.1.1.3.2.1 src/gnu/dist/cvs/src/hash.c:1.1.1.3.2.2 *** src/gnu/dist/cvs/src/hash.c:1.1.1.3.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/hash.c Wed Jul 6 20:12:38 2005 *************** *** 1,5 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,10 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/hash.h diff -c src/gnu/dist/cvs/src/hash.h:1.1.1.2.4.1 src/gnu/dist/cvs/src/hash.h:1.1.1.2.4.2 *** src/gnu/dist/cvs/src/hash.h:1.1.1.2.4.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/hash.h Wed Jul 6 20:12:38 2005 *************** *** 1,5 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,10 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/history.c diff -c src/gnu/dist/cvs/src/history.c:1.6.2.2 src/gnu/dist/cvs/src/history.c:1.6.2.3 *** src/gnu/dist/cvs/src/history.c:1.6.2.2 Fri Jul 23 08:03:03 2004 --- src/gnu/dist/cvs/src/history.c Wed Jul 6 20:12:38 2005 *************** *** 27,32 **** --- 27,33 ---- * M "Commit" cmd - "Modified" file. * A "Commit" cmd - "Added" file. * R "Commit" cmd - "Removed" file. + * X "Admin" cmd. * * date is a fixed length 8-char hex representation of a Unix time_t. * [Starting here, variable fields are delimited by '|' chars.] *************** *** 236,242 **** static time_t tz_seconds_east_of_GMT; static char *tz_name = "+0000"; ! char *logHistory = ALL_HISTORY_REC_TYPES; /* -r, -t, or -b options, malloc'd. These are "" if the option in question is not specified or is overridden by another option. The --- 237,243 ---- static time_t tz_seconds_east_of_GMT; static char *tz_name = "+0000"; ! char *logHistory; /* -r, -t, or -b options, malloc'd. These are "" if the option in question is not specified or is overridden by another option. The *************** *** 442,448 **** backto = xstrdup (optarg); break; case 'f': /* For specified file */ ! save_file ("", optarg, (char *) NULL); break; case 'm': /* Full module report */ if (!module_report++) report_count++; --- 443,449 ---- backto = xstrdup (optarg); break; case 'f': /* For specified file */ ! save_file (NULL, optarg, NULL); break; case 'm': /* Full module report */ if (!module_report++) report_count++; *************** *** 451,457 **** save_module (optarg); break; case 'p': /* For specified directory */ ! save_file (optarg, "", (char *) NULL); break; case 'r': /* Since specified Tag/Rev */ if (since_date || *since_tag || *backto) --- 452,458 ---- save_module (optarg); break; case 'p': /* For specified directory */ ! save_file (optarg, NULL, NULL); break; case 'r': /* Since specified Tag/Rev */ if (since_date || *since_tag || *backto) *************** *** 534,540 **** argc -= optind; argv += optind; for (i = 0; i < argc; i++) ! save_file ("", argv[i], (char *) NULL); /* ================ Now analyze the arguments a bit */ --- 535,541 ---- argc -= optind; argv += optind; for (i = 0; i < argc; i++) ! save_file (NULL, argv[i], NULL); /* ================ Now analyze the arguments a bit */ *************** *** 952,958 **** file_list = xrealloc (file_list, xtimes (file_max, sizeof (*fl))); } fl = &file_list[file_count++]; ! fl->l_file = cp = xmalloc (strlen (dir) + strlen (name) + 2); fl->l_module = module; if (dir && *dir) --- 953,961 ---- file_list = xrealloc (file_list, xtimes (file_max, sizeof (*fl))); } fl = &file_list[file_count++]; ! fl->l_file = cp = xmalloc (dir ? strlen (dir) : 0 ! + name ? strlen (name) : 0 ! + 2); fl->l_module = module; if (dir && *dir) *************** *** 1393,1398 **** --- 1396,1403 ---- if (within (cp, cp2)) { hr->mod = fl->l_module; + if (cmpfile != NULL) + free (cmpfile); break; } if (cmpfile != NULL) Index: src/gnu/dist/cvs/src/history.h diff -c src/gnu/dist/cvs/src/history.h:1.1 src/gnu/dist/cvs/src/history.h:1.1.4.1 *** src/gnu/dist/cvs/src/history.h:1.1 Wed Dec 10 05:58:19 2003 --- src/gnu/dist/cvs/src/history.h Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 2003, Derek Price, Ximbiot , ! * and the Free Software Foundation * * You may distribute under the terms of the GNU General Public License * as specified in the README file that comes with the CVS source --- 1,8 ---- /* ! * Copyright (C) 2003-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 2003-2005 Derek Price, Ximbiot , ! * and others. * * You may distribute under the terms of the GNU General Public License * as specified in the README file that comes with the CVS source *************** *** 10,13 **** * with other portions of CVS. */ ! #define ALL_HISTORY_REC_TYPES "TOEFWUPCGMAR" --- 12,15 ---- * with other portions of CVS. */ ! #define ALL_HISTORY_REC_TYPES "TOEFWUPCGMARX" Index: src/gnu/dist/cvs/src/ignore.c diff -c src/gnu/dist/cvs/src/ignore.c:1.5.2.1 src/gnu/dist/cvs/src/ignore.c:1.5.2.2 *** src/gnu/dist/cvs/src/ignore.c:1.5.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/ignore.c Wed Jul 6 20:12:38 2005 *************** *** 241,250 **** free (ign_list[i]); ign_hold = -1; } ! s_ign_list = (char **) xmalloc (ign_count * sizeof (char *)); ! for (i = 0; i < ign_count; i++) ! s_ign_list[i] = ign_list[i]; ! s_ign_count = ign_count; ign_count = 1; /* Always ignore the "CVS" directory. */ ign_list[0] = xstrdup ("CVS"); --- 241,265 ---- free (ign_list[i]); ign_hold = -1; } ! if (s_ign_list) ! { ! /* Don't save the ignore list twice - if there are two ! * bangs in a local .cvsignore file then we don't want to ! * save the new list the first bang created. ! * ! * We still need to free the "new" ignore list. ! */ ! for (i = 0; i < ign_count; i++) ! free (ign_list[i]); ! } ! else ! { ! /* Save the ignore list for later. */ ! s_ign_list = xmalloc (ign_count * sizeof (char *)); ! for (i = 0; i < ign_count; i++) ! s_ign_list[i] = ign_list[i]; ! s_ign_count = ign_count; ! } ign_count = 1; /* Always ignore the "CVS" directory. */ ign_list[0] = xstrdup ("CVS"); *************** *** 335,341 **** i = dir_ign_current; while (i--) { ! if (strncmp (name, dir_ign_list[i], strlen (dir_ign_list[i])) == 0) return 1; } --- 350,356 ---- i = dir_ign_current; while (i--) { ! if (strncmp (name, dir_ign_list[i], strlen (dir_ign_list[i])+1) == 0) return 1; } Index: src/gnu/dist/cvs/src/import.c diff -c src/gnu/dist/cvs/src/import.c:1.1.1.5.2.1 src/gnu/dist/cvs/src/import.c:1.1.1.5.2.2 *** src/gnu/dist/cvs/src/import.c:1.1.1.5.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/import.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 117,122 **** --- 122,128 ---- #else use_editor = 0; #endif + if (message) free (message); message = xstrdup(optarg); break; case 'I': *************** *** 212,222 **** * support branching to a single level, so the specified vendor branch * must only have two dots in it (like "1.1.1"). */ ! for (cp = vbranch; *cp != '\0'; cp++) ! if (!isdigit ((unsigned char) *cp) && *cp != '.') ! error (1, 0, "%s is not a numeric branch", vbranch); ! if (numdots (vbranch) != 2) ! error (1, 0, "Only branches with two dots are supported: %s", vbranch); vhead = xstrdup (vbranch); cp = strrchr (vhead, '.'); *cp = '\0'; --- 218,239 ---- * support branching to a single level, so the specified vendor branch * must only have two dots in it (like "1.1.1"). */ ! { ! regex_t pat; ! int ret = regcomp (&pat, "^[1-9][0-9]*\\.[1-9][0-9]*\\.[1-9][0-9]*$", ! REG_EXTENDED); ! assert (!ret); ! if (regexec (&pat, vbranch, 0, NULL, 0)) ! { ! error (1, 0, ! "Only numeric branch specifications with two dots are\n" ! "supported by import, not `%s'. For example: `1.1.1'.", ! vbranch); ! } ! regfree (&pat); ! } ! ! /* Set vhead to the branch's parent. */ vhead = xstrdup (vbranch); cp = strrchr (vhead, '.'); *cp = '\0'; *************** *** 748,754 **** tocvsPath = wrap_tocvs_process_file (vfile); status = RCS_checkin (rcs, tocvsPath == NULL ? vfile : tocvsPath, ! message, vbranch, (RCS_FLAGS_QUIET | RCS_FLAGS_KEEPFILE | (use_file_modtime ? RCS_FLAGS_MODTIME : 0))); ierrno = errno; --- 765,771 ---- tocvsPath = wrap_tocvs_process_file (vfile); status = RCS_checkin (rcs, tocvsPath == NULL ? vfile : tocvsPath, ! message, vbranch, 0, (RCS_FLAGS_QUIET | RCS_FLAGS_KEEPFILE | (use_file_modtime ? RCS_FLAGS_MODTIME : 0))); ierrno = errno; Index: src/gnu/dist/cvs/src/lock.c diff -c src/gnu/dist/cvs/src/lock.c:1.8.2.1 src/gnu/dist/cvs/src/lock.c:1.8.2.2 *** src/gnu/dist/cvs/src/lock.c:1.8.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/lock.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/log.c diff -c src/gnu/dist/cvs/src/log.c:1.1.1.5.2.1 src/gnu/dist/cvs/src/log.c:1.1.1.5.2.2 *** src/gnu/dist/cvs/src/log.c:1.1.1.5.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/log.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 13,18 **** --- 18,24 ---- */ #include "cvs.h" + #include /* This structure holds information parsed from the -r option. */ *************** *** 123,129 **** static struct option_revlist *log_parse_revlist PROTO ((const char *)); static void log_parse_date PROTO ((struct log_data *, const char *)); static void log_parse_list PROTO ((List **, const char *)); ! static struct revlist *log_expand_revlist PROTO ((RCSNode *, struct option_revlist *, int)); static void log_free_revlist PROTO ((struct revlist *)); --- 129,135 ---- static struct option_revlist *log_parse_revlist PROTO ((const char *)); static void log_parse_date PROTO ((struct log_data *, const char *)); static void log_parse_list PROTO ((List **, const char *)); ! static struct revlist *log_expand_revlist PROTO ((RCSNode *, char *, struct option_revlist *, int)); static void log_free_revlist PROTO ((struct revlist *)); *************** *** 150,161 **** "Usage: %s %s [-lRhtNb] [-r[revisions]] [-d dates] [-s states]\n", " [-w[logins]] [files...]\n", "\t-l\tLocal directory only, no recursion.\n", ! "\t-R\tOnly print name of RCS file.\n", "\t-h\tOnly print header.\n", "\t-t\tOnly print header and descriptive text.\n", "\t-N\tDo not list tags.\n", ! "\t-S\tDo not print name/header if no revisions selected.\n", ! "\t-b\tOnly list revisions on the default branch.\n", "\t-r[revisions]\tA comma-separated list of revisions to print:\n", "\t rev1:rev2 Between rev1 and rev2, including rev1 and rev2.\n", "\t rev1::rev2 Between rev1 and rev2, excluding rev1.\n", --- 156,169 ---- "Usage: %s %s [-lRhtNb] [-r[revisions]] [-d dates] [-s states]\n", " [-w[logins]] [files...]\n", "\t-l\tLocal directory only, no recursion.\n", ! "\t-b\tOnly list revisions on the default branch.\n", "\t-h\tOnly print header.\n", + "\t-R\tOnly print name of RCS file.\n", "\t-t\tOnly print header and descriptive text.\n", "\t-N\tDo not list tags.\n", ! "\t-S\tDo not print name/header if no revisions selected. -d, -r,\n", ! "\t\t-s, & -w have little effect in conjunction with -b, -h, -R, and\n", ! "\t\t-t without this option.\n", "\t-r[revisions]\tA comma-separated list of revisions to print:\n", "\t rev1:rev2 Between rev1 and rev2, including rev1 and rev2.\n", "\t rev1::rev2 Between rev1 and rev2, excluding rev1.\n", *************** *** 808,828 **** { struct log_data *log_data = (struct log_data *) callerdat; Node *p; int selrev = -1; RCSNode *rcsfile; char buf[50]; struct revlist *revlist = NULL; struct log_data_and_rcs log_data_and_rcs; ! if ((rcsfile = finfo->rcs) == NULL) { /* no rcs file. What *do* we know about this file? */ ! p = findnode (finfo->entries, finfo->file); ! if (p != NULL) { ! Entnode *e = p->data; ! ! if (e->version[0] == '0' && e->version[1] == '\0') { if (!really_quiet) error (0, 0, "%s has been added, but not committed", --- 816,845 ---- { struct log_data *log_data = (struct log_data *) callerdat; Node *p; + char *baserev; int selrev = -1; RCSNode *rcsfile; char buf[50]; struct revlist *revlist = NULL; struct log_data_and_rcs log_data_and_rcs; ! rcsfile = finfo->rcs; ! p = findnode (finfo->entries, finfo->file); ! if (p != NULL) ! { ! Entnode *e = p->data; ! baserev = e->version; ! if (baserev[0] == '-') ++baserev; ! } ! else ! baserev = NULL; ! ! if (rcsfile == NULL) { /* no rcs file. What *do* we know about this file? */ ! if (baserev != NULL) { ! if (baserev[0] == '0' && baserev[1] == '\0') { if (!really_quiet) error (0, 0, "%s has been added, but not committed", *************** *** 845,851 **** /* Turn any symbolic revisions in the revision list into numeric revisions. */ ! revlist = log_expand_revlist (rcsfile, log_data->revlist, log_data->default_branch); if (log_data->sup_header || (!log_data->header && !log_data->long_header)) --- 862,868 ---- /* Turn any symbolic revisions in the revision list into numeric revisions. */ ! revlist = log_expand_revlist (rcsfile, baserev, log_data->revlist, log_data->default_branch); if (log_data->sup_header || (!log_data->header && !log_data->long_header)) *************** *** 1035,1042 **** * Expand any symbolic revisions. */ static struct revlist * ! log_expand_revlist (rcs, revlist, default_branch) RCSNode *rcs; struct option_revlist *revlist; int default_branch; { --- 1052,1060 ---- * Expand any symbolic revisions. */ static struct revlist * ! log_expand_revlist (rcs, baserev, revlist, default_branch) RCSNode *rcs; + char *baserev; struct option_revlist *revlist; int default_branch; { *************** *** 1057,1064 **** /* If both first and last are NULL, it means that we want just the head of the default branch, which is RCS_head. */ nr->first = RCS_head (rcs); ! nr->last = xstrdup (nr->first); ! nr->fields = numdots (nr->first) + 1; } else if (r->branchhead) { --- 1075,1093 ---- /* If both first and last are NULL, it means that we want just the head of the default branch, which is RCS_head. */ nr->first = RCS_head (rcs); ! if (!nr->first) ! { ! if (!really_quiet) ! error (0, 0, "No head revision in archive `%s'.", ! rcs->path); ! nr->last = NULL; ! nr->fields = 0; ! } ! else ! { ! nr->last = xstrdup (nr->first); ! nr->fields = numdots (nr->first) + 1; ! } } else if (r->branchhead) { *************** *** 1078,1087 **** free (branch); } } ! if (nr->first == NULL && !really_quiet) { ! error (0, 0, "warning: no branch `%s' in `%s'", ! r->first, rcs->path); nr->last = NULL; nr->fields = 0; } --- 1107,1117 ---- free (branch); } } ! if (!nr->first) { ! if (!really_quiet) ! error (0, 0, "warning: no branch `%s' in `%s'", ! r->first, rcs->path); nr->last = NULL; nr->fields = 0; } *************** *** 1097,1103 **** nr->first = xstrdup (r->first); else { ! if (RCS_nodeisbranch (rcs, r->first)) nr->first = RCS_whatbranch (rcs, r->first); else nr->first = RCS_gettag (rcs, r->first, 1, (int *) NULL); --- 1127,1135 ---- nr->first = xstrdup (r->first); else { ! if (baserev && strcmp (r->first, TAG_BASE) == 0) ! nr->first = xstrdup (baserev); ! else if (RCS_nodeisbranch (rcs, r->first)) nr->first = RCS_whatbranch (rcs, r->first); else nr->first = RCS_gettag (rcs, r->first, 1, (int *) NULL); *************** *** 1115,1121 **** nr->last = xstrdup (r->last); else { ! if (RCS_nodeisbranch (rcs, r->last)) nr->last = RCS_whatbranch (rcs, r->last); else nr->last = RCS_gettag (rcs, r->last, 1, (int *) NULL); --- 1147,1155 ---- nr->last = xstrdup (r->last); else { ! if (baserev && strcmp (r->last, TAG_BASE) == 0) ! nr->last = xstrdup (baserev); ! else if (RCS_nodeisbranch (rcs, r->last)) nr->last = RCS_whatbranch (rcs, r->last); else nr->last = RCS_gettag (rcs, r->last, 1, (int *) NULL); *************** *** 1141,1146 **** --- 1175,1181 ---- nr->first = xstrdup (nr->last); cp = strrchr (nr->first, '.'); + assert (cp); strcpy (cp + 1, "0"); } } *************** *** 1155,1160 **** --- 1190,1196 ---- char *cp; cp = strrchr (nr->last, '.'); + assert (cp); *cp = '\0'; } } *************** *** 1254,1260 **** --- 1290,1298 ---- char *cp; nr->first = xstrdup (rcs->head); + assert (nr->first); cp = strrchr (nr->first, '.'); + assert (cp); *cp = '\0'; } nr->last = xstrdup (nr->first); *************** *** 1642,1647 **** --- 1680,1686 ---- if (padd != NULL) { + assert (pdel); cvs_output (" lines: +", 0); cvs_output (padd->data, 0); cvs_output (" -", 2); Index: src/gnu/dist/cvs/src/login.c diff -c src/gnu/dist/cvs/src/login.c:1.1.1.5.2.1 src/gnu/dist/cvs/src/login.c:1.1.1.5.2.2 *** src/gnu/dist/cvs/src/login.c:1.1.1.5.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/login.c Wed Jul 6 20:12:38 2005 *************** *** 1,5 **** /* ! * Copyright (c) 1995, Cyclic Software, Bloomington, IN, USA * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with CVS. --- 1,10 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (c) 1995, Cyclic Software, Bloomington, IN, USA * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with CVS. *************** *** 114,120 **** if (isspace(*(linebuf + 1))) /* special case since strtoul ignores leading white space */ ! entry_version = 0; else entry_version = strtoul (linebuf + 1, &q, 10); --- 119,125 ---- if (isspace(*(linebuf + 1))) /* special case since strtoul ignores leading white space */ ! q = linebuf + 1; else entry_version = strtoul (linebuf + 1, &q, 10); *************** *** 455,461 **** if (fprintf (fp, "/1 %s %s\n", cvsroot_canonical, newpassword) == EOF) error (1, errno, "cannot write %s", passfile); if (fclose (fp) < 0) ! error (0, errno, "cannot close %s", passfile); } /* Utter, total, raving paranoia, I know. */ --- 460,466 ---- if (fprintf (fp, "/1 %s %s\n", cvsroot_canonical, newpassword) == EOF) error (1, errno, "cannot write %s", passfile); if (fclose (fp) < 0) ! error (1, errno, "cannot close %s", passfile); } /* Utter, total, raving paranoia, I know. */ Index: src/gnu/dist/cvs/src/logmsg.c diff -c src/gnu/dist/cvs/src/logmsg.c:1.8.2.1 src/gnu/dist/cvs/src/logmsg.c:1.8.2.2 *** src/gnu/dist/cvs/src/logmsg.c:1.8.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/logmsg.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 758,763 **** --- 763,770 ---- char *fmt_percent; /* the location of the percent sign that starts the format string. */ + assert (repository); + /* The user may specify a format string as part of the filter. Originally, `%s' was the only valid string. The string that was substituted for it was: Index: src/gnu/dist/cvs/src/main.c diff -c src/gnu/dist/cvs/src/main.c:1.9.2.1 src/gnu/dist/cvs/src/main.c:1.9.2.2 *** src/gnu/dist/cvs/src/main.c:1.9.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/main.c Wed Jul 6 20:12:38 2005 *************** *** 1,9 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * ! * You may distribute under the terms of the GNU General Public License ! * as specified in the README file that comes with the CVS source distribution. * * This is the main C driver for the CVS system. * --- 1,14 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner ! * ! * You may distribute under the terms of the GNU General Public License ! * as specified in the README file that comes with the CVS source distribution. * * This is the main C driver for the CVS system. * *************** *** 51,56 **** --- 56,63 ---- mode_t cvsumask = UMASK_DFLT; char *RCS_citag = NULL; + char *CVS_admin_group = NULL; + char *CVS_admin_options = NULL; const char *cvsDir = "CVS"; char *CurDir; *************** *** 66,80 **** values in CVS/Root files, we maintain a list of them. */ List *root_directories = NULL; - /* We step through the above values. This variable is set to reflect - * the currently active value. - * - * Now static. FIXME - this variable should be removable (well, localizable) - * with a little more work. - */ - static char *current_root = NULL; - - static const struct cmd { char *fullname; /* Full name of the function (e.g. "commit") */ --- 73,78 ---- *************** *** 277,285 **** Node *p; void *ignored; { ! if (current_root == NULL && p->data == NULL) { ! current_root = p->key; return 1; } return 0; --- 275,283 ---- Node *p; void *ignored; { ! if (current_parsed_root == NULL && p->data != NULL) { ! current_parsed_root = p->data; return 1; } return 0; *************** *** 403,414 **** int argc; char **argv; { ! char *CVSroot = CVSROOT_DFLT; char *cp, *end; const struct cmd *cm; int c, err = 0; ! int tmpdir_update_env, cvs_update_env; ! int free_CVSroot = 0; int free_Editor = 0; int free_Tmpdir = 0; --- 401,412 ---- int argc; char **argv; { ! cvsroot_t *CVSroot_parsed = NULL; ! int cvsroot_update_env = 1; char *cp, *end; const struct cmd *cm; int c, err = 0; ! int tmpdir_update_env; int free_Editor = 0; int free_Tmpdir = 0; *************** *** 458,464 **** * Query the environment variables up-front, so that * they can be overridden by command line arguments */ - cvs_update_env = 0; tmpdir_update_env = *Tmpdir; /* TMPDIR_DFLT must be set */ if ((cp = getenv (TMPDIR_ENV)) != NULL) { --- 456,461 ---- *************** *** 471,481 **** Editor = cp; else if ((cp = getenv (EDITOR3_ENV)) != NULL) Editor = cp; - if ((cp = getenv (CVSROOT_ENV)) != NULL) - { - CVSroot = cp; - cvs_update_env = 0; /* it's already there */ - } if (getenv (CVSREAD_ENV) != NULL) cvswrite = 0; --- 468,473 ---- *************** *** 555,562 **** version (0, (char **) NULL); (void) fputs ("\n", stdout); (void) fputs ("\ ! Copyright (c) 1989-2004 Brian Berliner, david d `zoo' zuhn, \n\ ! Jeff Polk, and other authors\n", stdout); (void) fputs ("\n", stdout); (void) fputs ("CVS may be copied only under the terms of the GNU General Public License,\n", stdout); (void) fputs ("a copy of which can be found with the CVS distribution kit.\n", stdout); --- 547,558 ---- version (0, (char **) NULL); (void) fputs ("\n", stdout); (void) fputs ("\ ! Copyright (C) 2005 Free Software Foundation, Inc.\n\ ! \n\ ! Senior active maintainers include Larry Jones, Derek R. Price,\n\ ! and Mark D. Baushke. Please see the AUTHORS and README files from the CVS\n\ ! distribution kit for a complete list of contributors and copyrights.\n", ! stdout); (void) fputs ("\n", stdout); (void) fputs ("CVS may be copied only under the terms of the GNU General Public License,\n", stdout); (void) fputs ("a copy of which can be found with the CVS distribution kit.\n", stdout); *************** *** 574,584 **** --- 570,582 ---- either new or old CVS. */ break; case 'T': + if (free_Tmpdir) free (Tmpdir); Tmpdir = xstrdup (optarg); free_Tmpdir = 1; tmpdir_update_env = 1; /* need to update environment */ break; case 'e': + if (free_Editor) free (Editor); Editor = xstrdup (optarg); free_Editor = 1; break; *************** *** 586,596 **** if (CVSroot_cmdline != NULL) free (CVSroot_cmdline); CVSroot_cmdline = xstrdup (optarg); - if (free_CVSroot) - free (CVSroot); - CVSroot = xstrdup (optarg); - free_CVSroot = 1; - cvs_update_env = 1; /* need to update environment */ break; case 'H': help = 1; --- 584,589 ---- *************** *** 755,761 **** --- 748,757 ---- } if (Tmpdir == NULL || Tmpdir[0] == '\0') + { + if (free_Tmpdir) free (Tmpdir); Tmpdir = "/tmp"; + } #ifdef HAVE_PUTENV if (tmpdir_update_env) *************** *** 805,870 **** #ifdef SERVER_SUPPORT /* Fiddling with CVSROOT doesn't make sense if we're running ! in server mode, since the client will send the repository ! directory after the connection is made. */ ! if (!server_active) #endif { ! char *CVSADM_Root; ! ! /* See if we are able to find a 'better' value for CVSroot ! in the CVSADM_ROOT directory. */ ! ! CVSADM_Root = NULL; ! ! /* "cvs import" shouldn't check CVS/Root; in general it ! ignores CVS directories and CVS/Root is likely to ! specify a different repository than the one we are ! importing to. */ ! ! if (!(cm->attr & CVS_CMD_IGNORE_ADMROOT) ! ! /* -d overrides CVS/Root, so don't give an error if the ! latter points to a nonexistent repository. */ ! && CVSroot_cmdline == NULL) { ! CVSADM_Root = Name_Root((char *) NULL, (char *) NULL); } ! if (CVSADM_Root != NULL) { ! if (CVSroot == NULL || !cvs_update_env) { ! CVSroot = CVSADM_Root; ! cvs_update_env = 1; /* need to update environment */ } } /* Now we've reconciled CVSROOT from the command line, the CVS/Root file, and the environment variable. Do the last sanity checks on the variable. */ ! ! if (! CVSroot) { error (0, 0, "No CVSROOT specified! Please use the `-d' option"); error (1, 0, "or set the %s environment variable.", CVSROOT_ENV); } - - if (! *CVSroot) - { - error (0, 0, - "CVSROOT is set but empty! Make sure that the"); - error (0, 0, - "specification of CVSROOT is valid, either via the"); - error (0, 0, - "`-d' option, the %s environment variable, or the", - CVSROOT_ENV); - error (1, 0, - "CVS/Root file (if any)."); - } } /* Here begins the big loop over unique cvsroot values. We --- 801,866 ---- #ifdef SERVER_SUPPORT /* Fiddling with CVSROOT doesn't make sense if we're running ! * in server mode, since the client will send the repository ! * directory after the connection is made. ! */ if (!server_active) #endif { ! /* First check if a root was set via the command line. */ ! if (CVSroot_cmdline) { ! if (!(CVSroot_parsed = parse_cvsroot (CVSroot_cmdline))) ! error (1, 0, "Bad CVSROOT: `%s'.", CVSroot_cmdline); } ! /* See if we are able to find a 'better' value for CVSroot ! * in the CVSADM_ROOT directory. ! * ! * "cvs import" shouldn't check CVS/Root; in general it ! * ignores CVS directories and CVS/Root is likely to ! * specify a different repository than the one we are ! * importing to, but if this is not import and no root was ! * specified on the command line, set the root from the ! * CVS/Root file. ! */ ! if (!CVSroot_parsed ! && !(cm->attr & CVS_CMD_IGNORE_ADMROOT) ! ) ! CVSroot_parsed = Name_Root (NULL, NULL); ! ! /* Now, if there is no root on the command line and we didn't find ! * one in a file, set it via the $CVSROOT env var. ! */ ! if (!CVSroot_parsed) { ! char *tmp = getenv (CVSROOT_ENV); ! if (tmp) { ! if (!(CVSroot_parsed = parse_cvsroot (tmp))) ! error (1, 0, "Bad CVSROOT: `%s'.", tmp); ! cvsroot_update_env = 0; } } + #ifdef CVSROOT_DFLT + if (!CVSroot_parsed) + { + if (!(CVSroot_parsed = parse_cvsroot (CVSROOT_DFLT))) + error (1, 0, "Bad CVSROOT: `%s'.", CVSROOT_DFLT); + } + #endif /* CVSROOT_DFLT */ + /* Now we've reconciled CVSROOT from the command line, the CVS/Root file, and the environment variable. Do the last sanity checks on the variable. */ ! if (!CVSroot_parsed) { error (0, 0, "No CVSROOT specified! Please use the `-d' option"); error (1, 0, "or set the %s environment variable.", CVSROOT_ENV); } } /* Here begins the big loop over unique cvsroot values. We *************** *** 876,894 **** root_directories = getlist (); /* Prime it. */ ! if (CVSroot != NULL) { Node *n; n = getnode (); n->type = NT_UNKNOWN; ! n->key = xstrdup (CVSroot); ! n->data = NULL; if (addnode (root_directories, n)) error (1, 0, "cannot add initial CVSROOT %s", n->key); } ! assert (current_root == NULL); /* If we're running the server, we want to execute this main loop once and only once (we won't be serving multiple roots --- 872,890 ---- root_directories = getlist (); /* Prime it. */ ! if (CVSroot_parsed) { Node *n; n = getnode (); n->type = NT_UNKNOWN; ! n->key = xstrdup (CVSroot_parsed->original); ! n->data = CVSroot_parsed; if (addnode (root_directories, n)) error (1, 0, "cannot add initial CVSROOT %s", n->key); } ! assert (current_parsed_root == NULL); /* If we're running the server, we want to execute this main loop once and only once (we won't be serving multiple roots *************** *** 915,928 **** variable. Parse it to see if we're supposed to do remote accesses or use a special access method. */ - if (current_parsed_root != NULL) - free_cvsroot_t (current_parsed_root); - if ((current_parsed_root = parse_cvsroot (current_root)) == NULL) - error (1, 0, "Bad CVSROOT: `%s'.", current_root); - if (trace) fprintf (stderr, "%s-> main loop with CVSROOT=%s\n", ! CLIENT_SERVER_STR, current_root); /* * Check to see if the repository exists. --- 911,919 ---- variable. Parse it to see if we're supposed to do remote accesses or use a special access method. */ if (trace) fprintf (stderr, "%s-> main loop with CVSROOT=%s\n", ! CLIENT_SERVER_STR, current_parsed_root->original); /* * Check to see if the repository exists. *************** *** 935,965 **** int save_errno; path = xmalloc (strlen (current_parsed_root->directory) ! + sizeof (CVSROOTADM) ! + 2); ! (void) sprintf (path, "%s/%s", current_parsed_root->directory, CVSROOTADM); if (!isaccessible (path, R_OK | X_OK)) { save_errno = errno; ! /* If this is "cvs init", the root need not exist yet. */ ! if (strcmp (cvs_cmd_name, "init") != 0) ! { error (1, save_errno, "%s", path); } - } free (path); } #ifdef HAVE_PUTENV ! /* Update the CVSROOT environment variable if necessary. */ ! /* FIXME (njc): should we always set this with the CVSROOT from the command line? */ ! if (cvs_update_env) { static char *prev; char *env; ! env = xmalloc (strlen (CVSROOT_ENV) + strlen (CVSroot) ! + 1 + 1); ! (void) sprintf (env, "%s=%s", CVSROOT_ENV, CVSroot); (void) putenv (env); /* do not free env yet, as putenv has control of it */ /* but do free the previous value, if any */ --- 926,958 ---- int save_errno; path = xmalloc (strlen (current_parsed_root->directory) ! + strlen (CVSROOTADM) + 2); ! sprintf (path, "%s/%s", current_parsed_root->directory, ! CVSROOTADM); if (!isaccessible (path, R_OK | X_OK)) { save_errno = errno; ! /* If this is "cvs init", the root need not exist yet. ! */ ! if (strcmp (cvs_cmd_name, "init")) error (1, save_errno, "%s", path); } free (path); } #ifdef HAVE_PUTENV ! /* Update the CVSROOT environment variable. */ ! if (cvsroot_update_env) { static char *prev; char *env; ! size_t dummy; ! ! env = xmalloc (strlen (CVSROOT_ENV) ! + strlen (current_parsed_root->original) ! + 2); ! sprintf (env, "%s=%s", CVSROOT_ENV, ! current_parsed_root->original); (void) putenv (env); /* do not free env yet, as putenv has control of it */ /* but do free the previous value, if any */ *************** *** 1011,1031 **** err = (*(cm->func)) (argc, argv); /* Mark this root directory as done. When the server is ! active, current_root will be NULL -- don't try and remove it from the list. */ ! if (current_root != NULL) { ! Node *n = findnode (root_directories, current_root); assert (n != NULL); ! n->data = (void *) 1; ! current_root = NULL; } - - #if 0 - /* This will not work yet, since it tries to free (void *) 1. */ - dellist (&root_directories); - #endif #ifdef SERVER_SUPPORT if (server_active) --- 1004,1024 ---- err = (*(cm->func)) (argc, argv); /* Mark this root directory as done. When the server is ! active, our list will be empty -- don't try and remove it from the list. */ ! #ifdef SERVER_SUPPORT ! if (!server_active) ! #endif /* SERVER_SUPPORT */ { ! Node *n = findnode (root_directories, ! current_parsed_root->original); assert (n != NULL); ! assert (n->data != NULL); ! free_cvsroot_t (n->data); ! n->data = NULL; ! current_parsed_root = NULL; } #ifdef SERVER_SUPPORT if (server_active) *************** *** 1036,1041 **** --- 1029,1035 ---- #endif } /* end of loop for cvsroot values */ + dellist (&root_directories); } /* end of stuff that gets done if the user DOESN'T ask for help */ Lock_Cleanup (); *************** *** 1047,1054 **** free ((char *)program_path); if (CVSroot_cmdline != NULL) free (CVSroot_cmdline); - if (free_CVSroot) - free (CVSroot); if (free_Editor) free (Editor); if (free_Tmpdir) --- 1041,1046 ---- Index: src/gnu/dist/cvs/src/mkmodules.c diff -c src/gnu/dist/cvs/src/mkmodules.c:1.5.2.1 src/gnu/dist/cvs/src/mkmodules.c:1.5.2.2 *** src/gnu/dist/cvs/src/mkmodules.c:1.5.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/mkmodules.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS kit. */ --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS kit. */ *************** *** 579,585 **** --- 584,600 ---- free (rcs); return (1); } + rcsnode = RCS_parsercsfile (rcs); + if (!rcsnode) + { + /* Probably not necessary (?); RCS_parsercsfile already printed a + message. */ + error (0, 0, "Failed to parse `%s'.", rcs); + free (rcs); + return 1; + } + retcode = RCS_checkout (rcsnode, NULL, NULL, NULL, NULL, temp, (RCSCHECKOUTPROC) NULL, (void *) NULL); if (retcode != 0) *************** *** 859,864 **** --- 874,883 ---- umask (cvsumask); + if (!admin_group_member()) + error (1, 0, "usage is restricted to members of the group %s", + CVS_admin_group); + if (argc == -1 || argc > 1) usage (init_usage); Index: src/gnu/dist/cvs/src/modules.c diff -c src/gnu/dist/cvs/src/modules.c:1.3.2.1 src/gnu/dist/cvs/src/modules.c:1.3.2.2 *** src/gnu/dist/cvs/src/modules.c:1.3.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/modules.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License * as specified in the README file that comes with the CVS source --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License * as specified in the README file that comes with the CVS source *************** *** 371,376 **** --- 376,382 ---- /* mwhere gets just the module name */ mwhere = xstrdup (mname); mfile = cp + 1; + assert (strlen (mfile)); /* put the / back in mname */ *cp = '/'; *************** *** 745,751 **** RUN_NORMAL | RUN_UNSETXID); free (expanded_path); } ! free (real_prog); } } --- 751,757 ---- RUN_NORMAL | RUN_UNSETXID); free (expanded_path); } ! if (real_prog) free (real_prog); } } Index: src/gnu/dist/cvs/src/myndbm.c diff -c src/gnu/dist/cvs/src/myndbm.c:1.1.1.5.2.1 src/gnu/dist/cvs/src/myndbm.c:1.1.1.5.2.2 *** src/gnu/dist/cvs/src/myndbm.c:1.1.1.5.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/myndbm.c Wed Jul 6 20:12:38 2005 *************** *** 1,5 **** /* ! * Copyright (c) 1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/no_diff.c diff -c src/gnu/dist/cvs/src/no_diff.c:1.1.1.2.2.1 src/gnu/dist/cvs/src/no_diff.c:1.1.1.2.2.2 *** src/gnu/dist/cvs/src/no_diff.c:1.1.1.2.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/no_diff.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 15,20 **** --- 20,26 ---- */ #include "cvs.h" + #include int No_Difference (finfo, vers) *************** *** 71,76 **** --- 77,83 ---- /* update the entdata pointer in the vers_ts structure */ p = findnode (finfo->entries, finfo->file); + assert (p); vers->entdata = p->data; ret = 0; Index: src/gnu/dist/cvs/src/parseinfo.c diff -c src/gnu/dist/cvs/src/parseinfo.c:1.6.2.1 src/gnu/dist/cvs/src/parseinfo.c:1.6.2.2 *** src/gnu/dist/cvs/src/parseinfo.c:1.6.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/parseinfo.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 9,14 **** --- 14,20 ---- #include "cvs.h" #include "getline.h" #include + #include "history.h" extern char *logHistory; *************** *** 40,45 **** --- 46,53 ---- const char *srepos; const char *regex_err; + assert (repository); + if (current_parsed_root == NULL) { /* XXX - should be error maybe? */ *************** *** 270,277 **** value, currently at least. */ error (0, errno, "cannot open %s", infopath); } ! free (infopath); ! return 0; } while (getline (&line, &line_allocated, fp_info) >= 0) --- 278,284 ---- value, currently at least. */ error (0, errno, "cannot open %s", infopath); } ! goto set_defaults_and_return; } while (getline (&line, &line_allocated, fp_info) >= 0) *************** *** 352,362 **** } else if (strcmp (line, "tag") == 0) { RCS_citag = xstrdup(p); ! if (RCS_citag == NULL) { ! error (0, 0, "%s: no memory for local tag '%s'", ! infopath, p); ! goto error_return; ! } } else if (strcmp (line, "PreservePermissions") == 0) { --- 359,370 ---- } else if (strcmp (line, "tag") == 0) { RCS_citag = xstrdup(p); ! } ! else if (strcmp (line, "AdminGroup") == 0) { ! CVS_admin_group = xstrdup(p); ! } ! else if (strcmp (line, "AdminOptions") == 0) { ! CVS_admin_options = xstrdup(p); } else if (strcmp (line, "PreservePermissions") == 0) { *************** *** 403,410 **** { if (strcmp (p, "all") != 0) { ! logHistory=xmalloc(strlen (p) + 1); ! strcpy (logHistory, p); } } else if (strcmp (line, "RereadLogAfterVerify") == 0) --- 411,418 ---- { if (strcmp (p, "all") != 0) { ! if (logHistory) free (logHistory); ! logHistory = xstrdup (p); } } else if (strcmp (line, "RereadLogAfterVerify") == 0) *************** *** 444,455 **** --- 452,468 ---- error (0, errno, "cannot close %s", infopath); goto error_return; } + set_defaults_and_return: + if (!logHistory) + logHistory = xstrdup (ALL_HISTORY_REC_TYPES); free (infopath); if (line != NULL) free (line); return 0; error_return: + if (!logHistory) + logHistory = xstrdup (ALL_HISTORY_REC_TYPES); if (infopath != NULL) free (infopath); if (line != NULL) Index: src/gnu/dist/cvs/src/patch.c diff -c src/gnu/dist/cvs/src/patch.c:1.3.2.1 src/gnu/dist/cvs/src/patch.c:1.3.2.2 *** src/gnu/dist/cvs/src/patch.c:1.3.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/patch.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 338,343 **** --- 343,349 ---- { error (0, errno, "cannot chdir to %s", repository); free (repository); + free (where); return 1; } *************** *** 385,390 **** --- 391,397 ---- struct utimbuf t; char *vers_tag, *vers_head; char *rcs = NULL; + char *rcs_orig = NULL; RCSNode *rcsfile; FILE *fp1, *fp2, *fp3; int ret = 0; *************** *** 415,421 **** if ((rcsfile->flags & VALID) && (rcsfile->flags & INATTIC)) isattic = 1; ! rcs = xmalloc (strlen (finfo->file) + sizeof (RCSEXT) + 5); (void) sprintf (rcs, "%s%s", finfo->file, RCSEXT); /* if vers_head is NULL, may have been removed from the release */ --- 422,428 ---- if ((rcsfile->flags & VALID) && (rcsfile->flags & INATTIC)) isattic = 1; ! rcs_orig = rcs = xmalloc (strlen (finfo->file) + sizeof (RCSEXT) + 5); (void) sprintf (rcs, "%s%s", finfo->file, RCSEXT); /* if vers_head is NULL, may have been removed from the release */ *************** *** 757,764 **** free (vers_tag); if (vers_head != NULL) free (vers_head); ! if (rcs != NULL) ! free (rcs); return ret; } --- 764,771 ---- free (vers_tag); if (vers_head != NULL) free (vers_head); ! if (rcs_orig) ! free (rcs_orig); return ret; } Index: src/gnu/dist/cvs/src/rcs.c diff -c src/gnu/dist/cvs/src/rcs.c:1.12.2.1 src/gnu/dist/cvs/src/rcs.c:1.12.2.2 *** src/gnu/dist/cvs/src/rcs.c:1.12.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/rcs.c Wed Jul 6 20:12:38 2005 *************** *** 1,5 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 495,502 **** RCS_addaccess expects nothing but spaces. FIXME: It would be easy and more efficient to change RCS_addaccess. */ ! rdata->access = rcsbuf_valcopy (&rcsbuf, value, 1, ! (size_t *) NULL); } continue; } --- 501,513 ---- RCS_addaccess expects nothing but spaces. FIXME: It would be easy and more efficient to change RCS_addaccess. */ ! if (rdata->access) ! { ! error (0, 0, ! "Duplicate `access' keyword found in RCS file."); ! free (rdata->access); ! } ! rdata->access = rcsbuf_valcopy (&rcsbuf, value, 1, NULL); } continue; } *************** *** 506,513 **** if (STREQ (key, "locks")) { if (value != NULL) ! rdata->locks_data = rcsbuf_valcopy (&rcsbuf, value, 0, ! (size_t *) NULL); if (! rcsbuf_getkey (&rcsbuf, &key, &value)) { error (1, 0, "premature end of file reading %s", rcsfile); --- 517,531 ---- if (STREQ (key, "locks")) { if (value != NULL) ! { ! if (rdata->locks_data) ! { ! error (0, 0, ! "Duplicate `locks' keyword found in RCS file."); ! free (rdata->locks_data); ! } ! rdata->locks_data = rcsbuf_valcopy (&rcsbuf, value, 0, NULL); ! } if (! rcsbuf_getkey (&rcsbuf, &key, &value)) { error (1, 0, "premature end of file reading %s", rcsfile); *************** *** 524,531 **** if (STREQ (RCSSYMBOLS, key)) { if (value != NULL) ! rdata->symbols_data = rcsbuf_valcopy (&rcsbuf, value, 0, ! (size_t *) NULL); continue; } --- 542,557 ---- if (STREQ (RCSSYMBOLS, key)) { if (value != NULL) ! { ! if (rdata->symbols_data) ! { ! error (0, 0, ! "Duplicate `%s' keyword found in RCS file.", ! RCSSYMBOLS); ! free (rdata->symbols_data); ! } ! rdata->symbols_data = rcsbuf_valcopy (&rcsbuf, value, 0, NULL); ! } continue; } *************** *** 549,556 **** if (STREQ (key, "comment")) { ! rdata->comment = rcsbuf_valcopy (&rcsbuf, value, 0, ! (size_t *) NULL); continue; } if (rdata->other == NULL) --- 575,588 ---- if (STREQ (key, "comment")) { ! if (rdata->comment) ! { ! error (0, 0, ! "warning: duplicate key `%s' in RCS file `%s'", ! key, rcsfile); ! free (rdata->comment); ! } ! rdata->comment = rcsbuf_valcopy (&rcsbuf, value, 0, NULL); continue; } if (rdata->other == NULL) *************** *** 2072,2077 **** --- 2104,2111 ---- char *cp = val; char *tag, *rev; + assert (cp); + for (;;) { /* skip leading whitespace */ *************** *** 2114,2119 **** --- 2148,2155 ---- char *cp = val; char *user, *rev; + assert (cp); + for (;;) { /* skip leading whitespace */ *************** *** 2298,2303 **** --- 2334,2345 ---- * the 0 in some other position -- */ pa = strrchr (rev, '.'); + if (!pa) + /* This might happen, for instance, if an RCS file only contained + * revisions 2.x and higher, and REV == "1". + */ + error (1, 0, "revision `%s' does not exist", tag); + pb = xmalloc (strlen (rev) + 3); *pa++ = 0; (void) sprintf (pb, "%s.%d.%s", rev, RCS_MAGIC_BRANCH, pa); *************** *** 2872,2879 **** vp = findnode (rcs->versions, branch); if (vp == NULL) ! { error (0, 0, "%s: can't find branch point %s", rcs->path, target); return NULL; } rev = vp->data; --- 2914,2922 ---- vp = findnode (rcs->versions, branch); if (vp == NULL) ! { error (0, 0, "%s: can't find branch point %s", rcs->path, target); + free (branch); return NULL; } rev = vp->data; *************** *** 3024,3031 **** if (retval != NULL) return (retval); ! if (!force_tag_match || ! (vers != NULL && RCS_datecmp (vers->date, date) <= 0)) return xstrdup (vers->version); else return NULL; --- 3067,3073 ---- if (retval != NULL) return (retval); ! if (vers && (!force_tag_match || RCS_datecmp (vers->date, date) <= 0)) return xstrdup (vers->version); else return NULL; *************** *** 3276,3282 **** if (rcs->symbols_data != NULL) { size_t len; ! char *cp; /* Look through the RCS symbols information. This is like do_symbols, but we don't add the information to a list. In --- 3318,3324 ---- if (rcs->symbols_data != NULL) { size_t len; ! char *cp, *last; /* Look through the RCS symbols information. This is like do_symbols, but we don't add the information to a list. In *************** *** 3285,3292 **** --- 3327,3342 ---- len = strlen (tag); cp = rcs->symbols_data; + /* Keeping track of LAST below isn't strictly necessary, now that tags + * should be parsed for validity before they are accepted, but tags + * with spaces used to cause the code below to loop indefintely, so + * I have corrected for that. Now, in the event that I missed + * something, the server cannot be hung. -DRP + */ + last = NULL; while ((cp = strchr (cp, tag[0])) != NULL) { + if (cp == last) break; if ((cp == rcs->symbols_data || whitespace (cp[-1])) && strncmp (cp, tag, len) == 0 && cp[len] == ':') *************** *** 3309,3314 **** --- 3359,3365 ---- ++cp; if (*cp == '\0') break; + last = cp; } } *************** *** 4111,4117 **** size_t len; int free_value = 0; char *log = NULL; ! size_t loglen; Node *vp = NULL; #ifdef PRESERVE_PERMISSIONS_SUPPORT uid_t rcs_owner = (uid_t) -1; --- 4162,4168 ---- size_t len; int free_value = 0; char *log = NULL; ! size_t loglen = 0; Node *vp = NULL; #ifdef PRESERVE_PERMISSIONS_SUPPORT uid_t rcs_owner = (uid_t) -1; *************** *** 4144,4150 **** assert (rev == NULL || isdigit ((unsigned char) *rev)); ! if (noexec && workfile != NULL) return 0; assert (sout == RUN_TTY || workfile == NULL); --- 4195,4205 ---- assert (rev == NULL || isdigit ((unsigned char) *rev)); ! if (noexec ! #ifdef SERVER_SUPPORT ! && !server_active ! #endif ! && workfile != NULL) return 0; assert (sout == RUN_TTY || workfile == NULL); *************** *** 4177,4183 **** --- 4232,4246 ---- while (rcsbuf_getkey (&rcsbuf, &key, &value)) { if (STREQ (key, "log")) + { + if (log) + { + error (0, 0, + "Duplicate log keyword found for head revision in RCS file."); + free (log); + } log = rcsbuf_valcopy (&rcsbuf, value, 0, &loglen); + } else if (STREQ (key, "text")) { gothead = 1; *************** *** 4723,4728 **** --- 4786,4798 ---- that in other ways if at all anyway (e.g. rcslock.pl). */ p = findnode (rcs->versions, RCS_getbranch (rcs, rcs->branch, 0)); + if (!p) + { + error (0, 0, "RCS file `%s' does not contain its default revision.", + rcs->path); + return NULL; + } + return p->data; } *************** *** 4836,4841 **** --- 4906,4913 ---- Node *marker; RCSVers *branchnode; + assert (branch); + /* Append to end by default. */ marker = NULL; *************** *** 4954,4964 **** or zero for success. */ int ! RCS_checkin (rcs, workfile_in, message, rev, flags) RCSNode *rcs; const char *workfile_in; const char *message; const char *rev; int flags; { RCSVers *delta, *commitpt; --- 5026,5037 ---- or zero for success. */ int ! RCS_checkin (rcs, workfile_in, message, rev, citime, flags) RCSNode *rcs; const char *workfile_in; const char *message; const char *rev; + time_t citime; int flags; { RCSVers *delta, *commitpt; *************** *** 4987,4992 **** --- 5060,5066 ---- { char *p; int extlen = strlen (RCSEXT); + assert (rcs->path); workfile = xstrdup (last_component (rcs->path)); p = workfile + (strlen (workfile) - extlen); assert (strncmp (p, RCSEXT, extlen) == 0); *************** *** 5021,5026 **** --- 5095,5102 ---- } modtime = ws.st_mtime; } + else if (flags & RCS_FLAGS_USETIME) + modtime = citime; else (void) time (&modtime); ftm = gmtime (&modtime); *************** *** 5563,5569 **** --- 5639,5651 ---- freedeltatext (dtext); if (status != 0) + { + /* If delta has not been added to a List, then freeing the Node key + * won't free delta->version. + */ + if (delta->version) free (delta->version); free_rcsvers_contents (delta); + } return status; } *************** *** 6265,6271 **** /* A range consisting of a branch number means the latest revision on that branch. */ if (RCS_isbranch (rcs, rev1) && STREQ (rev1, rev2)) ! rev1 = rev2 = RCS_getbranch (rcs, rev1, 0); else { /* Make sure REV1 and REV2 are ordered correctly (in the --- 6347,6358 ---- /* A range consisting of a branch number means the latest revision on that branch. */ if (RCS_isbranch (rcs, rev1) && STREQ (rev1, rev2)) ! { ! char *tmp = RCS_getbranch (rcs, rev1, 0); ! free (rev1); ! free (rev2); ! rev1 = rev2 = tmp; ! } else { /* Make sure REV1 and REV2 are ordered correctly (in the *************** *** 6658,6664 **** delrev_done: if (rev1 != NULL) free (rev1); ! if (rev2 != NULL) free (rev2); if (branchpoint != NULL) free (branchpoint); --- 6745,6751 ---- delrev_done: if (rev1 != NULL) free (rev1); ! if (rev2 && rev2 != rev1) free (rev2); if (branchpoint != NULL) free (branchpoint); *************** *** 7019,7024 **** --- 7106,7112 ---- }; struct deltafrag *dfhead; struct deltafrag *df; + int err; dfhead = NULL; for (p = diffbuf; p != NULL && p < diffbuf + difflen; ) *************** *** 7084,7116 **** } } for (df = dfhead; df != NULL;) { unsigned int ln; ! switch (df->type) ! { ! case FRAG_ADD: ! if (! linevector_add (lines, df->new_lines, df->len, addvers, ! df->pos)) ! return 0; ! break; ! case FRAG_DELETE: ! if (df->pos > lines->nlines ! || df->pos + df->nlines > lines->nlines) ! return 0; ! if (delvers != NULL) ! for (ln = df->pos; ln < df->pos + df->nlines; ++ln) ! lines->vector[ln]->vers = delvers; ! linevector_delete (lines, df->pos, df->nlines); ! break; ! } df = df->next; free (dfhead); dfhead = df; } ! return 1; } /* Apply an RCS change text to a buffer. The function name starts --- 7172,7210 ---- } } + err = 0; for (df = dfhead; df != NULL;) { unsigned int ln; ! /* Once an error is encountered, just free the rest of the list and ! * return. ! */ ! if (!err) ! switch (df->type) ! { ! case FRAG_ADD: ! if (! linevector_add (lines, df->new_lines, df->len, addvers, ! df->pos)) ! err = 1; ! break; ! case FRAG_DELETE: ! if (df->pos > lines->nlines ! || df->pos + df->nlines > lines->nlines) ! return 0; ! if (delvers != NULL) ! for (ln = df->pos; ln < df->pos + df->nlines; ++ln) ! lines->vector[ln]->vers = delvers; ! linevector_delete (lines, df->pos, df->nlines); ! break; ! } ! df = df->next; free (dfhead); dfhead = df; } ! return !err; } /* Apply an RCS change text to a buffer. The function name starts *************** *** 7228,7239 **** --- 7322,7337 ---- struct linevector trunklines; int foundhead; + assert (version); + if (fp == NULL) { rcsbuf_cache_open (rcs, rcs->delta_pos, &fp, &rcsbuf_local); rcsbuf = &rcsbuf_local; } + if (log) *log = NULL; + ishead = 1; vers = NULL; prev_vers = NULL; *************** *** 7304,7309 **** --- 7402,7413 ---- && STREQ (key, "log") && STREQ (branchversion, version)) { + if (*log != NULL) + { + error (0, 0, "Duplicate `log' keyword in RCS file (`%s').", + rcs->path); + free (*log); + } *log = rcsbuf_valcopy (rcsbuf, value, 0, loglen); } *************** *** 7385,7390 **** --- 7489,7497 ---- if (vers->branches == NULL) error (1, 0, "missing expected branches in %s", rcs->path); + if (!cpversion) + error (1, 0, "Invalid revision number in `%s'.", + rcs->path); *cpversion = '.'; ++cpversion; cpversion = strchr (cpversion, '.'); *************** *** 7429,7435 **** for (ln = 0; ln < headlines.nlines; ++ln) { ! char buf[80]; /* Period which separates year from month in date. */ char *ym; /* Period which separates month from day in date. */ --- 7536,7542 ---- for (ln = 0; ln < headlines.nlines; ++ln) { ! char *buf; /* Period which separates year from month in date. */ char *ym; /* Period which separates month from day in date. */ *************** *** 7440,7449 **** --- 7547,7558 ---- if (prvers == NULL) prvers = vers; + buf = xmalloc (strlen (prvers->version) + 24); sprintf (buf, "%-12s (%-8.8s ", prvers->version, prvers->author); cvs_output (buf, 0); + free (buf); /* Now output the date. */ ym = strchr (prvers->date, '.'); Index: src/gnu/dist/cvs/src/rcs.h diff -c src/gnu/dist/cvs/src/rcs.h:1.1.1.4.2.1 src/gnu/dist/cvs/src/rcs.h:1.1.1.4.2.2 *** src/gnu/dist/cvs/src/rcs.h:1.1.1.4.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/rcs.h Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 224,230 **** int RCS_checkout PROTO ((RCSNode *, const char *, const char *, const char *, const char *, const char *, RCSCHECKOUTPROC, void *)); int RCS_checkin PROTO ((RCSNode *rcs, const char *workfile, ! const char *message, const char *rev, int flags)); int RCS_cmp_file PROTO((RCSNode *, const char *, char **, const char *, const char *, const char *)); int RCS_settag PROTO ((RCSNode *, const char *, const char *)); --- 229,236 ---- int RCS_checkout PROTO ((RCSNode *, const char *, const char *, const char *, const char *, const char *, RCSCHECKOUTPROC, void *)); int RCS_checkin PROTO ((RCSNode *rcs, const char *workfile, ! const char *message, const char *rev, time_t citime, ! int flags)); int RCS_cmp_file PROTO((RCSNode *, const char *, char **, const char *, const char *, const char *)); int RCS_settag PROTO ((RCSNode *, const char *, const char *)); Index: src/gnu/dist/cvs/src/rcscmds.c diff -c src/gnu/dist/cvs/src/rcscmds.c:1.1.1.4.2.1 src/gnu/dist/cvs/src/rcscmds.c:1.1.1.4.2.2 *** src/gnu/dist/cvs/src/rcscmds.c:1.1.1.4.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/rcscmds.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 262,267 **** --- 267,273 ---- symbolic). */ xrev1 = RCS_gettag (rcs, rev1, 0, NULL); xrev2 = RCS_gettag (rcs, rev2, 0, NULL); + assert (xrev1 && xrev2); /* Check out chosen revisions. The error message when RCS_checkout fails is not very informative -- it is taken verbatim from RCS 5.7, Index: src/gnu/dist/cvs/src/recurse.c diff -c src/gnu/dist/cvs/src/recurse.c:1.8.2.1 src/gnu/dist/cvs/src/recurse.c:1.8.2.2 *** src/gnu/dist/cvs/src/recurse.c:1.8.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/recurse.c Wed Jul 6 20:12:38 2005 *************** *** 1,5 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 134,139 **** --- 140,164 ---- frame.aflag = aflag; frame.locktype = locktype; frame.dosrcs = dosrcs; + + /* If our repository_in has a trailing "/.", remove it before storing it + * for do_recursion(). + * + * FIXME: This is somewhat of a hack in the sense that many of our callers + * painstakingly compute and add the trailing '.' we now remove. + */ + while (repository_in && strlen (repository_in) >= 2 + && repository_in[strlen (repository_in) - 2] == '/' + && repository_in[strlen (repository_in) - 1] == '.') + { + /* Beware the case where the string is exactly "/." or "//.". + * Paths with a leading "//" are special on some early UNIXes. + */ + if (strlen (repository_in) == 2 || strlen (repository_in) == 3) + repository_in[strlen (repository_in) - 1] = '\0'; + else + repository_in[strlen (repository_in) - 2] = '\0'; + } frame.repository = repository_in; expand_wild (argc, argv, &argc, &argv); *************** *** 171,191 **** && CVSroot_cmdline == NULL && current_parsed_root->isremote) { ! char *root = Name_Root (NULL, update_dir); ! if (root && strcmp (root, current_parsed_root->original) != 0) ! /* We're skipping this directory because it is for ! a different root. Therefore, we just want to ! do the subdirectories only. Processing files would ! cause a working directory from one repository to be ! processed against a different repository, which could ! cause all kinds of spurious conflicts and such. ! ! Question: what about the case of "cvs update foo" ! where we process foo/bar and not foo itself? That ! seems to be handled somewhere (else) but why should ! it be a separate case? Needs investigation... */ ! just_subdirs = 1; ! free (root); } #endif --- 196,219 ---- && CVSroot_cmdline == NULL && current_parsed_root->isremote) { ! cvsroot_t *root = Name_Root (NULL, update_dir); ! if (root) ! { ! if (strcmp (root->original, current_parsed_root->original)) ! /* We're skipping this directory because it is for ! * a different root. Therefore, we just want to ! * do the subdirectories only. Processing files would ! * cause a working directory from one repository to be ! * processed against a different repository, which could ! * cause all kinds of spurious conflicts and such. ! * ! * Question: what about the case of "cvs update foo" ! * where we process foo/bar and not foo itself? That ! * seems to be handled somewhere (else) but why should ! * it be a separate case? Needs investigation... */ ! just_subdirs = 1; ! free_cvsroot_t (root); ! } } #endif *************** *** 599,624 **** #endif ) { ! char *this_root = Name_Root ((char *) NULL, update_dir); if (this_root != NULL) { ! if (findnode (root_directories, this_root) == NULL) { /* Add it to our list. */ Node *n = getnode (); n->type = NT_UNKNOWN; ! n->key = xstrdup (this_root); if (addnode (root_directories, n)) ! error (1, 0, "cannot add new CVSROOT %s", this_root); ! ! } ! ! process_this_directory = ! (strcmp (current_parsed_root->original, this_root) == 0); ! free (this_root); } } --- 627,656 ---- #endif ) { ! cvsroot_t *this_root = Name_Root ((char *) NULL, update_dir); if (this_root != NULL) { ! if (findnode (root_directories, this_root->original)) ! { ! process_this_directory = !strcmp (current_parsed_root->original, ! this_root->original); ! free_cvsroot_t (this_root); ! } ! else { /* Add it to our list. */ Node *n = getnode (); n->type = NT_UNKNOWN; ! n->key = xstrdup (this_root->original); ! n->data = this_root; if (addnode (root_directories, n)) ! error (1, 0, "cannot add new CVSROOT %s", ! this_root->original); ! process_this_directory = 0; ! } } } *************** *** 1047,1071 **** #endif ) { ! char *this_root = Name_Root (dir, update_dir); if (this_root != NULL) { ! if (findnode (root_directories, this_root) == NULL) { /* Add it to our list. */ Node *n = getnode (); n->type = NT_UNKNOWN; ! n->key = xstrdup (this_root); if (addnode (root_directories, n)) ! error (1, 0, "cannot add new CVSROOT %s", this_root); } - - process_this_directory = (strcmp (current_parsed_root->original, this_root) == 0); - - free (this_root); } } --- 1079,1108 ---- #endif ) { ! cvsroot_t *this_root = Name_Root (dir, update_dir); if (this_root != NULL) { ! if (findnode (root_directories, this_root->original)) ! { ! process_this_directory = !strcmp (current_parsed_root->original, ! this_root->original); ! free_cvsroot_t (this_root); ! } ! else { /* Add it to our list. */ Node *n = getnode (); n->type = NT_UNKNOWN; ! n->key = xstrdup (this_root->original); ! n->data = this_root; if (addnode (root_directories, n)) ! error (1, 0, "cannot add new CVSROOT %s", ! this_root->original); + process_this_directory = 0; } } } Index: src/gnu/dist/cvs/src/release.c diff -c src/gnu/dist/cvs/src/release.c:1.1.1.2.2.1 src/gnu/dist/cvs/src/release.c:1.1.1.2.2.2 *** src/gnu/dist/cvs/src/release.c:1.1.1.2.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/release.c Wed Jul 6 20:12:38 2005 *************** *** 67,73 **** { FILE *fp; int i, c; - char *repository; char *line = NULL; size_t line_allocated = 0; char *update_cmd; --- 67,72 ---- *************** *** 124,131 **** --- 123,134 ---- + 1 + 3 + 3 + 16 + 1); sprintf (update_cmd, "%s %s%s-n -q -d %s update", program_path, + #if defined (CLIENT_SUPPORT) || defined (SERVER_SUPPORT) cvsauthenticate ? "-a " : "", cvsencrypt ? "-x " : "", + #else + "", "", + #endif current_parsed_root->original); #ifdef CLIENT_SUPPORT *************** *** 173,180 **** continue; } - repository = Name_Repository ((char *) NULL, (char *) NULL); - if (!really_quiet) { int line_length; --- 176,181 ---- *************** *** 207,213 **** if ((pclose (fp)) != 0) { error (0, 0, "unable to release `%s'", thisarg); - free (repository); if (restore_cwd (&cwd, NULL)) error_exit (); continue; --- 208,213 ---- *************** *** 222,228 **** { (void) fprintf (stderr, "** `%s' aborted by user choice.\n", cvs_cmd_name); - free (repository); if (restore_cwd (&cwd, NULL)) error_exit (); continue; --- 222,227 ---- *************** *** 236,242 **** CVS/Entries file in the wrong directory. See release-17 through release-23. */ - free (repository); if (restore_cwd (&cwd, NULL)) exit (EXIT_FAILURE); --- 235,240 ---- Index: src/gnu/dist/cvs/src/remove.c diff -c src/gnu/dist/cvs/src/remove.c:1.4.2.1 src/gnu/dist/cvs/src/remove.c:1.4.2.2 *** src/gnu/dist/cvs/src/remove.c:1.4.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/remove.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/repos.c diff -c src/gnu/dist/cvs/src/repos.c:1.4.2.1 src/gnu/dist/cvs/src/repos.c:1.4.2.2 *** src/gnu/dist/cvs/src/repos.c:1.4.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/repos.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/root.c diff -c src/gnu/dist/cvs/src/root.c:1.4.2.1 src/gnu/dist/cvs/src/root.c:1.4.2.2 *** src/gnu/dist/cvs/src/root.c:1.4.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/root.c Wed Jul 6 20:12:38 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Mark D. Baushke ! * Copyright (c) 2002, Derek R. Price * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,10 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Poritons Copyright (c) 1992, Mark D. Baushke * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 11,16 **** --- 15,21 ---- */ #include "cvs.h" + #include #include "getline.h" /* Printable names for things in the current_parsed_root->method enum variable. *************** *** 23,35 **** #ifndef DEBUG ! char * Name_Root (dir, update_dir) ! char *dir; ! char *update_dir; { FILE *fpin; ! char *ret, *xupdate_dir; char *root = NULL; size_t root_allocated = 0; char *tmp; --- 28,41 ---- #ifndef DEBUG ! cvsroot_t * Name_Root (dir, update_dir) ! const char *dir; ! const char *update_dir; { FILE *fpin; ! cvsroot_t *ret; ! const char *xupdate_dir; char *root = NULL; size_t root_allocated = 0; char *tmp; *************** *** 85,91 **** goto out; } fclose (fpin); ! cp = root + (len - 1); if (*cp == '\n') *cp = '\0'; /* strip the newline */ --- 91,97 ---- goto out; } fclose (fpin); ! cp = root + len - 1; if (*cp == '\n') *cp = '\0'; /* strip the newline */ *************** *** 94,136 **** * absolute pathname or specify a remote server. */ ! if ( ! #ifdef CLIENT_SUPPORT ! (strchr (root, ':') == NULL) && ! #endif ! ! isabsolute (root)) { error (0, 0, "in directory %s:", xupdate_dir); error (0, 0, ! "ignoring %s because it does not contain an absolute pathname.", CVSADM_ROOT); - ret = NULL; goto out; } #ifdef CLIENT_SUPPORT ! if ((strchr (root, ':') == NULL) && !isdir (root)) ! #else /* ! CLIENT_SUPPORT */ ! if (!isdir (root)) ! #endif /* CLIENT_SUPPORT */ { error (0, 0, "in directory %s:", xupdate_dir); error (0, 0, "ignoring %s because it specifies a non-existent repository %s", CVSADM_ROOT, root); ret = NULL; goto out; } ! /* allocate space to return and fill it in */ ! strip_trailing_slashes (root); ! ret = xstrdup (root); out: free (cvsadm); free (tmp); if (root != NULL) free (root); ! return (ret); } --- 100,137 ---- * absolute pathname or specify a remote server. */ ! ret = parse_cvsroot (root); ! if (ret == NULL) { error (0, 0, "in directory %s:", xupdate_dir); error (0, 0, ! "ignoring %s because it does not contain a valid root.", CVSADM_ROOT); goto out; } + if ( #ifdef CLIENT_SUPPORT ! !ret->isremote && ! #endif ! !isdir (ret->directory)) { error (0, 0, "in directory %s:", xupdate_dir); error (0, 0, "ignoring %s because it specifies a non-existent repository %s", CVSADM_ROOT, root); + free_cvsroot_t (ret); ret = NULL; goto out; } ! out: free (cvsadm); free (tmp); if (root != NULL) free (root); ! return ret; } *************** *** 371,376 **** --- 372,379 ---- int check_hostname, no_port, no_password; #endif /* CLIENT_SUPPORT */ + assert (root_in); + /* allocate some space */ newroot = new_cvsroot_t(); *************** *** 738,743 **** --- 741,748 ---- char *p, *hostname, *username; char port_s[64]; + assert (root && root->hostname && root->directory); + /* get the appropriate port string */ sprintf (port_s, "%d", get_cvs_port_number (root)); Index: src/gnu/dist/cvs/src/root.h diff -c src/gnu/dist/cvs/src/root.h:1.2.2.1 src/gnu/dist/cvs/src/root.h:1.2.2.2 *** src/gnu/dist/cvs/src/root.h:1.2.2.1 Thu May 20 04:30:52 2004 --- src/gnu/dist/cvs/src/root.h Wed Jul 6 20:12:38 2005 *************** *** 1,7 **** /* ! * Copyright (c) 2001, Derek Price and others ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS kit. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS kit. *************** *** 40,42 **** --- 44,55 ---- unsigned char isremote; /* Nonzero if we are doing remote access. */ #endif /* CLIENT_SUPPORT */ } cvsroot_t; + + cvsroot_t *Name_Root PROTO((const char *dir, const char *update_dir)); + void free_cvsroot_t PROTO((cvsroot_t *root_in)); + cvsroot_t *parse_cvsroot PROTO((const char *root)); + cvsroot_t *local_cvsroot PROTO((const char *dir)); + void Create_Root PROTO((const char *dir, const char *rootdir)); + void root_allow_add PROTO ((char *)); + void root_allow_free PROTO ((void)); + int root_allow_ok PROTO ((char *)); Index: src/gnu/dist/cvs/src/sanity.sh diff -c src/gnu/dist/cvs/src/sanity.sh:1.1.1.6.2.2 src/gnu/dist/cvs/src/sanity.sh:1.1.1.6.2.3 *** src/gnu/dist/cvs/src/sanity.sh:1.1.1.6.2.2 Fri Jul 23 08:03:03 2004 --- src/gnu/dist/cvs/src/sanity.sh Wed Jul 6 20:12:38 2005 *************** *** 22,28 **** usage () { echo "Usage: `basename $0` --help" ! echo "Usage: `basename $0` [-klr] [-f FROM-TEST] [-h HOSTNAME] CVS-TO-TEST [TESTS-TO-RUN...]" } exit_usage () --- 22,28 ---- usage () { echo "Usage: `basename $0` --help" ! echo "Usage: `basename $0` [-eklr] [-f FROM-TEST] [-h HOSTNAME] CVS-TO-TEST [TESTS-TO-RUN...]" } exit_usage () *************** *** 36,44 **** usage echo echo "-H|--help display this text" ! echo "-l|--link-root" ! echo " test CVS using a symlink to a real CVSROOT" ! echo "-r|--remote test remote instead of local cvs" echo "-h HOSTNAME Use :ext:HOSTNAME to run remote tests rather than" echo " :fork:. Implies --remote and assumes that \$TESTDIR" echo " resolves to the same directory on both the client and" --- 36,47 ---- usage echo echo "-H|--help display this text" ! echo "-e|--skipfail Treat tests that would otherwise be nonfatally skipped" ! echo " for reasons like missing tools as failures, exiting" ! echo " with an error message. Also treat warnings as" ! echo " failures." ! echo "-f FROM-TEST run TESTS-TO-RUN, skipping all tests in the list before" ! echo " FROM-TEST" echo "-h HOSTNAME Use :ext:HOSTNAME to run remote tests rather than" echo " :fork:. Implies --remote and assumes that \$TESTDIR" echo " resolves to the same directory on both the client and" *************** *** 46,53 **** echo "-k|--keep try to keep directories created by individual tests" echo " around, exiting after the first test which supports" echo " --keep" ! echo "-f FROM-TEST run TESTS-TO-RUN, skipping all tests in the list before" ! echo " FROM-TEST" echo echo "CVS-TO-TEST the path to the CVS executable to be tested" echo "TESTS-TO-RUN the names of the tests to run (defaults to all tests)" --- 49,57 ---- echo "-k|--keep try to keep directories created by individual tests" echo " around, exiting after the first test which supports" echo " --keep" ! echo "-l|--link-root" ! echo " test CVS using a symlink to a real CVSROOT" ! echo "-r|--remote test remote instead of local cvs" echo echo "CVS-TO-TEST the path to the CVS executable to be tested" echo "TESTS-TO-RUN the names of the tests to run (defaults to all tests)" *************** *** 71,76 **** --- 75,88 ---- export LC_ALL + # + # Initialize the test counts. + # + passed=0 + skipped=0 + warnings=0 + + # # read our options *************** *** 80,86 **** keep=false linkroot=false remote=false ! while getopts f:h:Hklr-: option ; do # convert the long opts to short opts if test x$option = x-; then case "$OPTARG" in --- 92,99 ---- keep=false linkroot=false remote=false ! skipfail=false ! while getopts ef:h:Hklr-: option ; do # convert the long opts to short opts if test x$option = x-; then case "$OPTARG" in *************** *** 100,111 **** --- 113,131 ---- option=k; OPTARG= ;; + s|sk|ski|skip|skipf|skipfa|skipfai|skipfail) + option=e + OPTARG= + ;; *) option=\? OPTARG= esac fi case "$option" in + e) + skipfail=: + ;; f) fromtest="$OPTARG" ;; *************** *** 211,221 **** # than diff does DATE="[a-zA-Z]* [a-zA-Z]* [ 1-3][0-9] [0-9:]* [0-9]*" # On cygwin32, we may not have /bin/sh. if test -r /bin/sh; then TESTSHELL="/bin/sh" else ! TESTSHELL=`type -p sh 2>/dev/null` if test ! -r "$TESTSHELL"; then TESTSHELL="/bin/sh" fi --- 231,271 ---- # than diff does DATE="[a-zA-Z]* [a-zA-Z]* [ 1-3][0-9] [0-9:]* [0-9]*" + # Which directories should Which and find_tool search for executables? + SEARCHPATH=$PATH:/usr/local/bin:/usr/contrib/bin:/usr/contrib:/usr/gnu/bin:/local/bin:/local/gnu/bin:/gnu/bin:/sw/bin:/usr/pkg/bin + + # Do not assume that `type -p cmd` is portable + # Usage: Which [-a] [-x|-f|-r] prog [$SEARCHPATH:/with/directories:/to/search] + Which() { + # Optional first argument for file type, defaults to -x. + # Second argument is the file or directory to be found. + # Third argument is the PATH to search. + # By default, print only the first file that matches, + # -a will cause all matches to be printed. + notevery=: + if [ "x$1" = "x-a" ]; then notevery=false; shift; fi + case "$1" in + -*) t=$1; shift ;; + *) t=-x ;; + esac + case "$1" in + # FIXME: Someday this may need to be fixed + # to deal better with C:\some\path\to\ssh values... + /*) test $t $1 && echo $1 ;; + *) for d in `IFS=:; echo ${2-$SEARCHPATH}` + do + test $t $d/$1 && { echo $d/$1; if $notevery; then break; fi; } + done + ;; + esac + } + + # On cygwin32, we may not have /bin/sh. if test -r /bin/sh; then TESTSHELL="/bin/sh" else ! TESTSHELL=`Which -f sh` if test ! -r "$TESTSHELL"; then TESTSHELL="/bin/sh" fi *************** *** 245,250 **** --- 295,306 ---- # which makes for a lot of failed `tail -f' attempts. touch check.log + # Workaround any X11Forwarding by ssh. Otherwise this text: + # Warning: No xauth data; using fake authentication data for X11 forwarding. + # has been known to end up in the test results below + # causing the test to fail. + [ -n "$DISPLAY" ] && unset DISPLAY + # The default value of /tmp/cvs-sanity for TESTDIR is dubious, # because it loses if two people/scripts try to run the tests # at the same time. Some possible solutions: *************** *** 326,365 **** : ${ID=id} : ${TR=tr} find_tool () { ! GLOCS="`echo $PATH | sed 's/:/ /g'` /usr/local/bin /usr/contrib/bin /usr/gnu/bin /local/bin /local/gnu/bin /gnu/bin" TOOL="" ! for path in $GLOCS ; do ! if test -x $path/g$1 ; then ! RES="`$path/g$1 --version /dev/null`" ! if test "X$RES" != "X--version" && test "X$RES" != "X" ; then ! TOOL=$path/g$1 ! break fi ! fi ! if test -x $path/$1 ; then ! RES="`$path/$1 --version /dev/null`" ! if test "X$RES" != "X--version" && test "X$RES" != "X" ; then ! TOOL=$path/$1 ! break fi fi done ! if test -z "$TOOL"; then ! : else ! echo "Notice: The default version of \`$1' is defective, using" >&2 ! echo "\`$TOOL' instead." >&2 fi - echo "$TOOL" } # You can't run CVS as root; print a nice error message here instead # of somewhere later, after making a mess. - # - # FIXME - find_tool() finds the 'gid' from GNU id-utils if I pull 'id' out of - # my path. for pass in false :; do case "`$ID -u 2>/dev/null`" in "0") --- 382,484 ---- : ${ID=id} : ${TR=tr} + # Keep track of tools that are found, but do NOT work as we hope + # in order to avoid them in future + badtools= + set_bad_tool () + { + badtools=$badtools:$1 + } + is_bad_tool () + { + case ":$badtools:" in *:$1:*) return 0 ;; *) return 1 ; esac + } + + version_test () + { + vercmd=$1 + verbad=: + if RES=`$vercmd --version &1`; then + if test "X$RES" != "X--version" && test "X$RES" != "X" ; then + echo "$RES" + verbad=false + fi + fi + if $verbad; then + echo "The command \`$vercmd' does not support the --version option." + fi + # It does not really matter that --version is not supported + return 0 + } + + # Try to find a tool that satisfies all of the tests. + # Usage: list:of:colon:separated:alternatives test1 test2 test3 test4... + # Example: find_tool awk:gawk:nawk awk_tooltest1 awk_tooltest2 find_tool () { ! default_TOOL=$1 ! echo find_tool: ${1+"$@"} >>$LOGFILE ! cmds="`IFS=:; echo $1`"; shift; tooltests="${1+$@}" ! if test -z "$tooltests"; then tooltests=version_test; fi ! clist=; for cmd in $cmds; do clist="$clist `Which -a $cmd`"; done ! # Make sure the default tool is just the first real command name ! for default_TOOL in $clist `IFS=:; echo $default_TOOL`; do break; done TOOL="" ! for trytool in $clist ; do ! pass=: ! for tooltest in $tooltests; do ! result=`eval $tooltest $trytool` ! rc=$? ! echo "Running $tooltest $trytool" >>$LOGFILE ! if test -n "$result"; then ! echo "$result" >>$LOGFILE fi ! if test "$rc" = "0"; then ! echo "PASS: $tooltest $trytool" >>$LOGFILE ! elif test "$rc" = "77"; then ! echo "MARGINAL: $tooltest $trytool; rc=$rc" >>$LOGFILE ! TOOL=$trytool ! pass=false ! else ! set_bad_tool $trytool ! echo "FAIL: $tooltest $trytool; rc=$rc" >>$LOGFILE ! pass=false fi + done + if $pass; then + echo $trytool + return 0 fi done ! if test -n "$TOOL"; then ! echo "Notice: The default version of \`$default_TOOL' is defective." >>$LOGFILE ! echo "using \`$TOOL' and hoping for the best." >>$LOGFILE ! echo "Notice: The default version of \`$default_TOOL' is defective." >&2 ! echo "using \`$TOOL' and hoping for the best." >&2 ! echo $TOOL else ! echo $default_TOOL fi } + id_tool_test () + { + id=$1 + if $id -u >/dev/null 2>&1 && $id -un >/dev/null 2>&1; then + return 0 + else + echo "Running these tests requires an \`id' program that understands the" + echo "-u and -n flags. Make sure that such an id (GNU, or many but not" + echo "all vendor-supplied versions) is in your path." + return 1 + fi + } + + ID=`find_tool id version_test id_tool_test` + echo "Using ID=$ID" >>$LOGFILE + # You can't run CVS as root; print a nice error message here instead # of somewhere later, after making a mess. for pass in false :; do case "`$ID -u 2>/dev/null`" in "0") *************** *** 367,384 **** exit 1 ;; - "") - if $pass; then :; else - ID=`find_tool id` - fi - if $pass || test -z "$ID" ; then - echo "Running these tests requires an \`id' program that understands the" >&2 - echo "-u and -n flags. Make sure that such an id (GNU, or many but not" >&2 - echo "all vendor-supplied versions) is in your path." >&2 - exit 1 - fi - ;; - *) break ;; --- 486,491 ---- *************** *** 386,448 **** done # Cause NextStep 3.3 users to lose in a more graceful fashion. ! if $EXPR 'abc def' : 'abc def' >/dev/null; then ! : good, it works else ! EXPR=`find_tool expr` ! if test -z "$EXPR" ; then ! echo 'Running these tests requires an "expr" program that can handle' >&2 ! echo 'multi-line patterns. Make sure that such an expr (GNU, or many but' >&2 ! echo 'not all vendor-supplied versions) is in your path.' >&2 ! exit 1 ! fi fi # Warn SunOS, SysVr3.2, etc., users that they may be partially losing # if we can't find a GNU expr to ease their troubles... ! if $EXPR 'a b' : 'a c' >/dev/null; then ! EXPR=`find_tool expr` ! if test -z "$EXPR" ; then ! echo 'Warning: you are using a version of expr that does not correctly' ! echo 'match multi-line patterns. Some tests may spuriously pass or fail.' ! echo 'You may wish to make sure GNU expr is in your path.' ! EXPR=expr ! fi else ! : good, it works fi ! # More SunOS lossage... echo 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' >${TESTDIR}/foo cat ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo >${TESTDIR}/bar cat ${TESTDIR}/bar ${TESTDIR}/bar ${TESTDIR}/bar ${TESTDIR}/bar >${TESTDIR}/foo cat ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo >${TESTDIR}/bar ! if $EXPR "`cat ${TESTDIR}/bar`" : "`cat ${TESTDIR}/bar`" >/dev/null; then : good, it works else ! EXPR=`find_tool expr` ! if test -z "$EXPR" ; then ! echo 'Warning: you are using a version of expr that does not correctly' ! echo 'match large patterns. Some tests may spuriously pass or fail.' ! echo 'You may wish to make sure GNU expr is in your path.' ! EXPR=expr ! fi fi ! if $EXPR "`cat ${TESTDIR}/bar`x" : "`cat ${TESTDIR}/bar`y" >/dev/null; then ! EXPR=`find_tool expr` ! if test -z "$EXPR" ; then ! echo 'Warning: you are using a version of expr that does not correctly' ! echo 'match large patterns. Some tests may spuriously pass or fail.' ! echo 'You may wish to make sure GNU expr is in your path.' ! EXPR=expr ! fi ! else ! : good, it works fi # That we should have to do this is total bogosity, but GNU expr # version 1.9.4-1.12 uses the emacs definition of "$" instead of the unix --- 493,562 ---- done # Cause NextStep 3.3 users to lose in a more graceful fashion. ! expr_tooltest1 () ! { ! expr=$1 ! if $expr 'abc def' : 'abc def' >/dev/null; then ! # good, it works ! return 0 else ! echo 'Running these tests requires an "expr" program that can handle' ! echo 'multi-line patterns. Make sure that such an expr (GNU, or many but' ! echo 'not all vendor-supplied versions) is in your path.' ! return 1 fi + } # Warn SunOS, SysVr3.2, etc., users that they may be partially losing # if we can't find a GNU expr to ease their troubles... ! expr_tooltest2 () ! { ! expr=$1 ! if $expr 'a b' : 'a c' >/dev/null; then ! echo 'Warning: you are using a version of expr that does not correctly' ! echo 'match multi-line patterns. Some tests may spuriously pass or fail.' ! echo 'You may wish to make sure GNU expr is in your path.' ! return 1 else ! return 0 fi + } ! expr_create_bar () ! { echo 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' >${TESTDIR}/foo cat ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo >${TESTDIR}/bar cat ${TESTDIR}/bar ${TESTDIR}/bar ${TESTDIR}/bar ${TESTDIR}/bar >${TESTDIR}/foo cat ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo ${TESTDIR}/foo >${TESTDIR}/bar ! rm -f ${TESTDIR}/foo ! } ! ! expr_tooltest3 () ! { ! expr=$1 ! # More SunOS lossage... ! test ! -f ${TESTDIR}/bar && expr_create_bar ! if $expr "`cat ${TESTDIR}/bar`" : "`cat ${TESTDIR}/bar`" >/dev/null; then : good, it works else ! echo 'Warning: you are using a version of expr that does not correctly' ! echo 'match large patterns. Some tests may spuriously pass or fail.' ! echo 'You may wish to make sure GNU expr is in your path.' ! return 1 fi ! if $expr "`cat ${TESTDIR}/bar`x" : "`cat ${TESTDIR}/bar`y" >/dev/null; then ! echo 'Warning: you are using a version of expr that does not correctly' ! echo 'match large patterns. Some tests may spuriously pass or fail.' ! echo 'You may wish to make sure GNU expr is in your path.' ! return 1 fi + # good, it works + return 0 + } # That we should have to do this is total bogosity, but GNU expr # version 1.9.4-1.12 uses the emacs definition of "$" instead of the unix *************** *** 450,459 **** # next release of GNU expr after 1.12 (but we still have to cater to the old # ones for some time because they are in many linux distributions). ENDANCHOR="$" ! if $EXPR 'abc def' : 'abc$' >/dev/null; then ENDANCHOR='\'\' fi # Work around another GNU expr (version 1.10-1.12) bug/incompatibility. # "." doesn't appear to match a newline (it does with SunOS 4.1.3 expr). --- 564,581 ---- # next release of GNU expr after 1.12 (but we still have to cater to the old # ones for some time because they are in many linux distributions). ENDANCHOR="$" ! expr_set_ENDANCHOR () ! { ! expr=$1 ! ENDANCHOR="$" ! if $expr 'abc def' : 'abc$' >/dev/null; then ENDANCHOR='\'\' + echo "Notice: An ENDANCHOR of dollar does not work." + echo "Using a workaround for GNU expr versions 1.9.4 thru 1.12" fi + return 0 + } # Work around another GNU expr (version 1.10-1.12) bug/incompatibility. # "." doesn't appear to match a newline (it does with SunOS 4.1.3 expr). *************** *** 464,491 **** # next release of GNU expr after 1.12 (but we still have to cater to the old # ones for some time because they are in many linux distributions). DOTSTAR='.*' ! if $EXPR 'abc def' : "a${DOTSTAR}f" >/dev/null; then : good, it works else DOTSTAR='\(.\| \)*' fi # Now that we have DOTSTAR, make sure it works with big matches ! if $EXPR "`cat ${TESTDIR}/bar`" : "${DOTSTAR}xyzABC${DOTSTAR}$" >/dev/null; then ! : good, it works else ! EXPR=`find_tool expr` ! if test -z "$EXPR" ; then ! echo 'Warning: you are using a version of expr that does not correctly' ! echo 'match large patterns. Some tests may spuriously pass or fail.' ! echo 'You may wish to make sure GNU expr is in your path.' ! EXPR=expr ! fi fi ! rm -f ${TESTDIR}/foo ${TESTDIR}/bar # Work around yet another GNU expr (version 1.10) bug/incompatibility. # "+" is a special character, yet for unix expr (e.g. SunOS 4.1.3) --- 586,638 ---- # next release of GNU expr after 1.12 (but we still have to cater to the old # ones for some time because they are in many linux distributions). DOTSTAR='.*' ! expr_set_DOTSTAR () ! { ! expr=$1 ! DOTSTAR='.*' ! if $expr 'abc def' : "a${DOTSTAR}f" >/dev/null; then : good, it works else DOTSTAR='\(.\| \)*' + echo "Notice: DOTSTAR changed from sane \`.*' value to \`$DOTSTAR\`" + echo "to workaround GNU expr version 1.10 thru 1.12 bug where \`.'" + echo "does not match a newline." fi + return 0 + } # Now that we have DOTSTAR, make sure it works with big matches ! expr_tooltest_DOTSTAR () ! { ! expr=$1 ! test ! -f ${TESTDIR}/bar && expr_create_bar ! if $expr "`cat ${TESTDIR}/bar`" : "${DOTSTAR}xyzABC${DOTSTAR}$" >/dev/null; then ! # good, it works ! return 0 else ! echo 'Warning: you are using a version of expr that does not correctly' ! echo 'match large patterns. Some tests may spuriously pass or fail.' ! echo 'You may wish to make sure GNU expr is in your path.' ! return 77 fi + } + + EXPR=`find_tool ${EXPR}:gexpr \ + version_test expr_tooltest1 expr_tooltest2 expr_tooltest3 \ + expr_set_ENDANCHOR expr_set_DOTSTAR expr_tooltest_DOTSTAR` + + # Set the ENDANCHOR and DOTSTAR for the chosen expr version. + expr_set_ENDANCHOR ${EXPR} >/dev/null + expr_tooltest_DOTSTAR ${EXPR} >/dev/null + + echo "Using EXPR=$EXPR" >>$LOGFILE + echo "Using ENDANCHOR=$ENDANCHOR" >>$LOGFILE + echo "Using DOTSTAR=$DOTSTAR" >>$LOGFILE ! # Cleanup ! rm -f ${TESTDIR}/bar # Work around yet another GNU expr (version 1.10) bug/incompatibility. # "+" is a special character, yet for unix expr (e.g. SunOS 4.1.3) *************** *** 520,540 **** fi # now make sure that tr works on NULs ! if $EXPR `echo "123" | ${TR} '2' '\0'` : "123" >/dev/null 2>&1; then ! TR=`find_tool tr` ! if test -z "$TR" ; then ! echo 'Warning: you are using a version of tr which does not correctly' ! echo 'handle NUL bytes. Some tests may spuriously pass or fail.' ! echo 'You may wish to make sure GNU tr is in your path.' ! TR=tr ! fi else ! : good, it works fi pass () { echo "PASS: $1" >>${LOGFILE} } fail () --- 667,801 ---- fi # now make sure that tr works on NULs ! tr_tooltest1 () ! { ! tr=$1 ! if $EXPR `echo "123" | $tr '2' '\0'` : "123" >/dev/null 2>&1; then ! echo 'Warning: you are using a version of tr which does not correctly' ! echo 'handle NUL bytes. Some tests may spuriously pass or fail.' ! echo 'You may wish to make sure GNU tr is in your path.' ! return 77 ! fi ! # good, it works ! return 0 ! } ! ! TR=`find_tool ${TR}:gtr version_test tr_tooltest1` ! echo "Using TR=$TR" >>$LOGFILE ! ! # Awk testing ! ! awk_tooltest1 () ! { ! awk=$1 ! $awk 'BEGIN {printf("one\ntwo\nthree\nfour\nfive\nsix")}' abc ! if $EXPR "`cat abc`" : \ ! 'one ! two ! three ! four ! five ! six'; then ! rm abc ! return 0 else ! rm abc ! echo "Notice: awk BEGIN clause or printf is not be working properly." ! return 1 fi + } + + # Format item %c check + awk_tooltest2 () + { + awk=$1 + $awk 'BEGIN { printf "%c%c%c", 2, 3, 4 }' abc + if $EXPR "`cat abc`" : "123" ; then + : good, found it + else + echo "Notice: awk format %c string may not be working properly." + rm abc + return 77 + fi + rm abc + return 0 + } + + AWK=`find_tool gawk:nawk:awk version_test awk_tooltest1 awk_tooltest2` + echo "Using AWK=$AWK" >>$LOGFILE + + # Test that $1 works as a remote shell. If so, set $host, $CVS_RSH, & + # $save_CVS_RSH to match and return 0. Otherwise, set $skipreason and return + # 77. + depends_on_rsh () + { + host=${remotehost-"`hostname`"} + result=`$1 $host 'echo test'` + rc=$? + if test $? != 0 || test "x$result" != "xtest"; then + skipreason="\`$1 $host' failed rc=$rc result=$result" + return 77 + fi + + save_CVS_RSH=$CVS_RSH + CVS_RSH=$1; export CVS_RSH + return 0 + } + + # Find a usable SSH. When a usable ssh is found, set $host, $CVS_RSH, and + # $save_CVS_RSH and return 0. Otherwise, set $skipreason and return 77. + depends_on_ssh () + { + case "$CVS_RSH" in + *ssh*|*putty*) + tryssh=`Which $CVS_RSH` + if [ ! -n "$tryssh" ]; then + skipreason="Unable to find CVS_RSH=$CVS_RSH executable" + return 77 + elif [ ! -x "$tryssh" ]; then + skipreason="Unable to execute $tryssh program" + return 77 + fi + ;; + *) + # Look in the user's PATH for "ssh" + tryssh=`Which ssh` + if test ! -r "$tryssh"; then + skipreason="Unable to find ssh program" + return 77 + fi + ;; + esac + + depends_on_rsh "$tryssh" + return $? + } pass () { echo "PASS: $1" >>${LOGFILE} + passed=`expr $passed + 1` + } + + skip () + { + if $skipfail; then + fail "$1${2+ ($2)}" + else + echo "SKIP: $1${2+ ($2)}" >>$LOGFILE + fi + skipped=`expr $skipped + 1` + } + + warn () + { + if $skipfail; then + fail "$1${2+ ($2)}" + else + echo "WARNING: $1${2+ ($2)}" >>$LOGFILE + fi + warnings=`expr $warnings + 1` } fail () *************** *** 545,550 **** --- 806,833 ---- exit 1 } + verify_tmp_empty () + { + # Test our temp directory for cvs-serv* directories and cvsXXXXXX temp + # files. We would like to not leave any behind. + if $remote && ls $TMPDIR/cvs-serv* >/dev/null 2>&1; then + # A true value means ls found files/directories with these names. + # Give the server some time to finish, then retry. + sleep 1 + if ls $TMPDIR/cvs-serv* >/dev/null 2>&1; then + warn "$1" "Found cvs-serv* directories in $TMPDIR." + # The above will exit if $skipfail + rm -rf $TMPDIR/cvs-serv* + fi + fi + if ls $TMPDIR/cvs?????? >/dev/null 2>&1; then + # A true value means ls found files/directories with these names. + warn "$1" "Found cvsXXXXXX temp files in $TMPDIR." + # The above will exit if $skipfail + rm -f ls $TMPDIR/cvs?????? + fi + } + # See dotest and dotest_fail for explanation (this is the parts # of the implementation common to the two). dotest_internal () *************** *** 562,575 **** --- 845,861 ---- # surely use a somewhat non-specific pattern). cat ${TESTDIR}/dotest.tmp >>${LOGFILE} pass "$1" + verify_tmp_empty "$1" # expr can't distinguish between "zero characters matched" and "no match", # so special-case it. elif test -z "$3" && test ! -s ${TESTDIR}/dotest.tmp; then pass "$1" + verify_tmp_empty "$1" elif test x"$4" != x; then if $EXPR "`cat ${TESTDIR}/dotest.tmp`" : "$4${ENDANCHOR}" >/dev/null; then cat ${TESTDIR}/dotest.tmp >>${LOGFILE} pass "$1" + verify_tmp_empty "$1" else echo "** expected: " >>${LOGFILE} echo "$3" >>${LOGFILE} *************** *** 644,660 **** --- 930,949 ---- fail "$1" else pass "$1" + verify_tmp_empty "$1" fi else echo "$3" > ${TESTDIR}/dotest.exp if dotest_line_by_line "$1" "$2"; then pass "$1" + verify_tmp_empty "$1" else if test x"$4" != x; then mv ${TESTDIR}/dotest.exp ${TESTDIR}/dotest.ex1 echo "$4" > ${TESTDIR}/dotest.exp if dotest_line_by_line "$1" "$2"; then pass "$1" + verify_tmp_empty "$1" else mv ${TESTDIR}/dotest.exp ${TESTDIR}/dotest.ex2 echo "** expected: " >>${LOGFILE} *************** *** 716,721 **** --- 1005,1011 ---- cat >${TESTDIR}/dotest.exp if cmp ${TESTDIR}/dotest.exp ${TESTDIR}/dotest.tmp >/dev/null 2>&1; then pass "$1" + verify_tmp_empty "$1" else echo "** expected: " >>${LOGFILE} cat ${TESTDIR}/dotest.exp >>${LOGFILE} *************** *** 754,759 **** --- 1044,1062 ---- dotest_internal "$@" } + # A function for fetching the timestamp of a revison of a file + getrlogdate () { + ${testcvs} -n rlog -N ${1+"$@"} | + while read token value; do + case "$token" in + date:) + echo $value | sed "s,;.*,," + break; + ;; + esac + done + } + # Avoid picking up any stray .cvsrc, etc., from the user running the tests mkdir home HOME=${TESTDIR}/home; export HOME *************** *** 773,802 **** if test x"$*" = x; then # Basic/miscellaneous functionality tests="version basica basicb basicc basic1 deep basic2" ! tests="${tests} parseroot files spacefiles commit-readonly" tests="${tests} commit-add-missing" tests="${tests} status" # Branching, tagging, removing, adding, multiple directories tests="${tests} rdiff rdiff-short" tests="${tests} rdiff2 diff diffnl death death2" tests="${tests} rm-update-message rmadd rmadd2 rmadd3 resurrection" ! tests="${tests} dirs dirs2 branches branches2 tagc tagf" tests="${tests} rcslib multibranch import importb importc import-CVS" tests="${tests} update-p import-after-initial branch-after-import" ! tests="${tests} join join2 join3 join4 join5 join6" tests="${tests} join-readonly-conflict join-admin join-admin-2" tests="${tests} join-rm" tests="${tests} new newb conflicts conflicts2 conflicts3" tests="${tests} clean" # Checking out various places (modules, checkout -d, &c) tests="${tests} modules modules2 modules3 modules4 modules5 modules6" ! tests="${tests} mkmodules co-d" tests="${tests} cvsadm emptydir abspath abspath2 toplevel toplevel2" tests="${tests} rstar-toplevel trailingslashes checkout_repository" # Log messages, error messages. tests="${tests} mflag editor errmsg1 errmsg2 adderrmsg opterrmsg" # Watches, binary files, history browsing, &c. ! tests="${tests} devcom devcom2 devcom3 watch4 watch5" tests="${tests} unedit-without-baserev" tests="${tests} ignore ignore-on-branch binfiles binfiles2 binfiles3" tests="${tests} mcopy binwrap binwrap2" --- 1076,1106 ---- if test x"$*" = x; then # Basic/miscellaneous functionality tests="version basica basicb basicc basic1 deep basic2" ! tests="${tests} parseroot parseroot2 files spacefiles commit-readonly" tests="${tests} commit-add-missing" tests="${tests} status" # Branching, tagging, removing, adding, multiple directories tests="${tests} rdiff rdiff-short" tests="${tests} rdiff2 diff diffnl death death2" tests="${tests} rm-update-message rmadd rmadd2 rmadd3 resurrection" ! tests="${tests} dirs dirs2 branches branches2 tagc tagf tag-space" tests="${tests} rcslib multibranch import importb importc import-CVS" + tests="$tests import-quirks" tests="${tests} update-p import-after-initial branch-after-import" ! tests="${tests} join join2 join3 join4 join5 join6 join7" tests="${tests} join-readonly-conflict join-admin join-admin-2" tests="${tests} join-rm" tests="${tests} new newb conflicts conflicts2 conflicts3" tests="${tests} clean" # Checking out various places (modules, checkout -d, &c) tests="${tests} modules modules2 modules3 modules4 modules5 modules6" ! tests="${tests} modules7 mkmodules co-d" tests="${tests} cvsadm emptydir abspath abspath2 toplevel toplevel2" tests="${tests} rstar-toplevel trailingslashes checkout_repository" # Log messages, error messages. tests="${tests} mflag editor errmsg1 errmsg2 adderrmsg opterrmsg" # Watches, binary files, history browsing, &c. ! tests="${tests} devcom devcom2 devcom3 watch4 watch5 watch6" tests="${tests} unedit-without-baserev" tests="${tests} ignore ignore-on-branch binfiles binfiles2 binfiles3" tests="${tests} mcopy binwrap binwrap2" *************** *** 805,810 **** --- 1109,1115 ---- # Repository Storage (RCS file format, CVS lock files, creating # a repository without "cvs init", &c). tests="${tests} crerepos rcs rcs2 rcs3 lockfiles backuprecover" + tests="${tests} sshstdio" # More history browsing, &c. tests="${tests} history" tests="${tests} big modes modes2 modes3 stamps" *************** *** 1766,1773 **** ' Concurrent Versions System (CVS) [0-9.]*.* ! Copyright (c) [-0-9]* Brian Berliner, david d .zoo. zuhn, ! Jeff Polk, and other authors CVS may be copied only under the terms of the GNU General Public License, a copy of which can be found with the CVS distribution kit. --- 2071,2081 ---- ' Concurrent Versions System (CVS) [0-9.]*.* ! Copyright (C) [0-9]* Free Software Foundation, Inc. ! ! Senior active maintainers include Larry Jones, Derek R. Price, ! and Mark D. Baushke. Please see the AUTHORS and README files from the CVS ! distribution kit for a complete list of contributors and copyrights. CVS may be copied only under the terms of the GNU General Public License, a copy of which can be found with the CVS distribution kit. *************** *** 2381,2387 **** # On Linux 2.2 systems, the cwd may be gone, so we recreate it # to allow basicc-11 to actually happen if test ! -d ../first-dir; then ! cd .. mkdir ./first-dir cd ./first-dir fi --- 2689,2696 ---- # On Linux 2.2 systems, the cwd may be gone, so we recreate it # to allow basicc-11 to actually happen if test ! -d ../first-dir; then ! # Apparently `cd ..' doesn't work with Linux 2.2 & Bash 2.05b. ! cd $TESTDIR/1 mkdir ./first-dir cd ./first-dir fi *************** *** 2389,2396 **** "" "${PROG} release: deletion of directory \./\. failed: .*" dotest basicc-11a "test -d ../second-dir" "" ! cd .. ! cd .. mkdir 2; cd 2 dotest basicc-12 "${testcvs} -Q co ." "" --- 2698,2704 ---- "" "${PROG} release: deletion of directory \./\. failed: .*" dotest basicc-11a "test -d ../second-dir" "" ! cd ../.. mkdir 2; cd 2 dotest basicc-12 "${testcvs} -Q co ." "" *************** *** 3433,3439 **** "${PROG} rtag: Tagging first-dir ${PROG} rtag: Tagging first-dir/dir1 ${PROG} rtag: Tagging first-dir/dir1/dir2" ! # tag by tag dotest basic2-22 "${testcvs} rtag -r rtagged-by-head rtagged-by-tag first-dir" \ "${PROG} rtag: Tagging first-dir --- 3741,3757 ---- "${PROG} rtag: Tagging first-dir ${PROG} rtag: Tagging first-dir/dir1 ${PROG} rtag: Tagging first-dir/dir1/dir2" ! # The next test used to cause an assert failure ! # something like: ! # cvs: ./recurse.c:667: do_recursion: Assertion `repository != ((void *)0)' failed. ! dotest basic2-21b "${testcvs} co -p -r rtagged-by-head first-dir/file6" \ ! "=================================================================== ! Checking out first-dir/file6 ! RCS: $CVSROOT_DIRNAME/first-dir/file6,v ! VERS: 1\.2 ! \*\*\*\*\*\*\*\*\*\*\*\*\*\*\* ! file6 ! file6" # tag by tag dotest basic2-22 "${testcvs} rtag -r rtagged-by-head rtagged-by-tag first-dir" \ "${PROG} rtag: Tagging first-dir *************** *** 3772,3777 **** --- 4090,4097 ---- rm -r 1 ;; + + files) # Test of how we specify files on the command line # (recurse.c and that sort of thing). Vaguely similar to *************** *** 4086,4091 **** --- 4406,4426 ---- Sticky Date: (none) Sticky Options: (none)" + # Check that there are no problems just using CVS/Root too. + save_CVSROOT=$CVSROOT + unset CVSROOT + dotest status-3a "${testcvs} status tfile" \ + "=================================================================== + File: tfile Status: Locally Modified + + Working revision: 1\.2.* + Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/tfile,v + Sticky Tag: (none) + Sticky Date: (none) + Sticky Options: (none)" + CVSROOT=$save_CVSROOT + export CVSROOT + # FIXCVS: # Update is supposed to re-Register() the file when it # finds resolved conflicts: *************** *** 5248,5254 **** dotest death2-16 "${testcvs} -q commit -m add" \ "Checking in file2; ${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2 ! new revision: 1\.1\.2\.1; previous revision: 1\.1 done" # Add a new file on the branch. --- 5583,5589 ---- dotest death2-16 "${testcvs} -q commit -m add" \ "Checking in file2; ${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2 ! new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1 done" # Add a new file on the branch. *************** *** 5860,5867 **** dotest resurrection-init5 "$testcvs -Q rm -f file1" ! # The first test is that `cvs add' will resurrect a file before it ! # has been committed. dotest_sort resurrection-1 "$testcvs add file1" \ "U file1 $PROG add: file1, version 1\.1, resurrected" --- 6195,6202 ---- dotest resurrection-init5 "$testcvs -Q rm -f file1" ! # The first test is that `cvs add' will resurrect a file before its ! # removal has been committed. dotest_sort resurrection-1 "$testcvs add file1" \ "U file1 $PROG add: file1, version 1\.1, resurrected" *************** *** 5909,5914 **** --- 6244,6267 ---- $CVSROOT_DIRNAME/first-dir/file1,v <-- file1 new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1 done" + + # The next few tests verify that an attempted resurrection of a file + # with no previous revision on the trunk fails. + touch file2 + dotest resurrection-9 "$testcvs -Q add file2" + dotest resurrection-10 "$testcvs -Q ci -mnew-file2" \ + "RCS file: $CVSROOT_DIRNAME/first-dir/Attic/file2,v + done + Checking in file2; + $CVSROOT_DIRNAME/first-dir/Attic/file2,v <-- file2 + new revision: 1\.1\.2\.1; previous revision: 1\.1 + done" + dotest resurrection-11 "$testcvs -Q up -A" + + # This command once caused an assertion failure. + dotest resurrection-12 "$testcvs add file2" \ + "$PROG add: File \`file2' has no previous revision to resurrect\." + if $keep; then echo Keeping $TESTDIR and exiting due to --keep exit 0 *************** *** 7009,7014 **** --- 7362,7521 ---- rm -rf ${CVSROOT_DIRNAME}/first-dir ;; + tag-space) + # Test tags with spaces in the names. + # + # Prior to releases 1.11.18 & 1.12.10, some commands used with + # tags with spaces in the names could hang CVS. + + # Setup; check in first-dir/file1 + mkdir 1; cd 1 + dotest tag-space-init-1 "$testcvs -q co -l ." + mkdir first-dir + dotest tag-space-init-2 "$testcvs add first-dir" \ + "Directory $CVSROOT_DIRNAME/first-dir added to the repository" + cd first-dir + touch file1 + dotest tag-space-init-3 "$testcvs add file1" \ + "$PROG add: scheduling file \`file1' for addition + $PROG add: use '$PROG commit' to add this file permanently" + dotest tag-space-init-4 "$testcvs -Q ci -m add" \ + "RCS file: $CVSROOT_DIRNAME/first-dir/file1,v + done + Checking in file1; + $CVSROOT_DIRNAME/first-dir/file1,v <-- file1 + initial revision: 1\.1 + done" + + # Reportedly, the following two tags make it past WinCVS. + dotest_fail tag-space-1 "$testcvs tag ' spacetag '" \ + "$PROG \[tag aborted\]: tag \` spacetag ' must start with a letter" + dotest_fail tag-space-2 "$testcvs tag 'spacetag '" \ + "$PROG \[tag aborted\]: tag \`spacetag ' has non-visible graphic characters" + + if $remote; then + # Verify that this isn't a client check. + dotest tag-space-3 "$testcvs server" \ + "E $PROG \[tag aborted\]: tag \` spacetag ' must start with a letter + error " <>fileX ! ! # Writes actually cause symlinks to be resolved. ! dotest rcslib-long-symlink-3 "$testcvs -q ci -mwrite-it" \ ! "Checking in fileX; ! $CVSROOT_DIRNAME/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/123456789012345678901234567890/file1,v <-- fileX ! new revision: 1\.5; previous revision: 1\.4 ! done" if $keep; then echo Keeping ${TESTDIR} and exiting due to --keep exit 0 fi + cd .. # Must remove the symlink first. Samba doesn't appear to show # broken symlink across the SMB share, and rm -rf by itself # will remove file1,v first and leave file2,v a broken link and the *************** *** 7353,7362 **** # rcslib-symlink-3j works fine, but the next one doesn't unless run # remotely under Cygwin and using a TESTDIR on a Samba share. if test -n "$remotehost"; then ! $CVS_RSH $remotehost "rm -f ${CVSROOT_DIRNAME}/first-dir/file2,v" fi ! rm -rf ${CVSROOT_DIRNAME}/first-dir ! rm -r first-dir 2 ;; multibranch) --- 7904,7915 ---- # rcslib-symlink-3j works fine, but the next one doesn't unless run # remotely under Cygwin and using a TESTDIR on a Samba share. if test -n "$remotehost"; then ! $CVS_RSH $remotehost \ ! "rm -f $CVSROOT_DIRNAME/first-dir/file2,v $CVSROOT_DIRNAME/second-dir/fileX,v" fi ! rm -rf $CVSROOT_DIRNAME/first-dir $CVSROOT_DIRNAME/second-dir \ ! $CVSROOT_DIRNAME/123456789012345678901234567890 ! rm -r first-dir second-dir 2 ;; multibranch) *************** *** 7457,7462 **** --- 8010,8016 ---- # head -- intended to test vendor branches and HEAD, # although it doesn't really do it yet. # import-CVS -- refuse to import directories named "CVS". + # import-quirks -- short tests of import quirks. # import mkdir import-dir ; cd import-dir *************** *** 7717,7723 **** echo 'my own stuff' >mine2.c dotest_fail importb-3 \ "${testcvs} import -m add -b 1 second-dir dummy really_dumb_y" \ ! "${PROG} \[[a-z]* aborted\]: Only branches with two dots are supported: 1" : when we implement main-branch import, should be \ "N second-dir/mine1\.c N second-dir/mine2\.c --- 8271,8278 ---- echo 'my own stuff' >mine2.c dotest_fail importb-3 \ "${testcvs} import -m add -b 1 second-dir dummy really_dumb_y" \ ! "$PROG \[import aborted\]: Only numeric branch specifications with two dots are ! supported by import, not \`1'\. For example: \`1\.1\.1'\." : when we implement main-branch import, should be \ "N second-dir/mine1\.c N second-dir/mine2\.c *************** *** 7935,7940 **** --- 8490,8561 ---- rm -rf $CVSROOT_DIRNAME/import-CVS ;; + + + import-quirks) + # Short tests of quirky import behavior. + # + # For a list of other import tests with short descriptions, see the + # comment header of the "import" test. + mkdir import-quirks + cd import-quirks + touch file1 file2 file3 + + # CVS prior to 1.11.18 and 1.12.10 used to happily import to + # "branch 1.1", creating RCS archives with revisions like, + # "1.1..1". That double-dot is *not* a typo. + dotest_fail import-quirks-1 \ + "$testcvs import -b1.1. -mbad-bad-bad import-quirks VB RT" \ + "$PROG \[import aborted\]: Only numeric branch specifications with two dots are + supported by import, not \`1\.1\.'\. For example: \`1\.1\.1'\." + + dotest_fail import-quirks-2 \ + "$testcvs import -b1.1.1.. -mbad-bad-bad import-quirks VB RT" \ + "$PROG \[import aborted\]: Only numeric branch specifications with two dots are + supported by import, not \`1\.1\.1\.\.'\. For example: \`1\.1\.1'\." + + # Try a few odd numbers. This is hardly comprehensive. + dotest_sort import-quirks-2 \ + "$testcvs import -b10.10.101 -mthis-ones-ok import-quirks-2 VB RT" \ + " + + N import-quirks-2/file1 + N import-quirks-2/file2 + N import-quirks-2/file3 + No conflicts created by this import" + + dotest_sort import-quirks-3 \ + "$testcvs import -b2345678901.2345678901.2345678901 -mthis-ones-ok import-quirks-3 VB RT" \ + " + + N import-quirks-3/file1 + N import-quirks-3/file2 + N import-quirks-3/file3 + No conflicts created by this import" + + dotest_sort import-quirks-4 \ + "$testcvs import -b1.1.2 -mthis-ones-ok import-quirks-4 VB RT" \ + " + + N import-quirks-4/file1 + N import-quirks-4/file2 + N import-quirks-4/file3 + No conflicts created by this import" + + if $keep; then + echo Keeping $TESTDIR and exiting due to --keep + exit 0 + fi + + cd .. + rm -r import-quirks + rm -rf $CVSROOT_DIRNAME/import-quirks-2 \ + $CVSROOT_DIRNAME/import-quirks-3 \ + $CVSROOT_DIRNAME/import-quirks-4 + ;; + + + import-after-initial) # Properly handle the case in which the first version of a # file is created by a regular cvs add and commit, and there *************** *** 8041,8047 **** "${testcvs} commit -m cvs-add file2" \ "Checking in file2; ${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2 ! new revision: 1\.1\.1\.1\.2\.1; previous revision: 1\.1\.1\.1 done" if $keep; then --- 8662,8668 ---- "${testcvs} commit -m cvs-add file2" \ "Checking in file2; ${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2 ! new revision: 1\.1\.1\.1\.2\.2; previous revision: 1\.1\.1\.1\.2\.1 done" if $keep; then *************** *** 8337,8343 **** done Checking in file2; ${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2 ! new revision: 1\.1\.2\.1; previous revision: 1\.1 done Removing file3; ${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3 --- 8958,8964 ---- done Checking in file2; ${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2 ! new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1 done Removing file3; ${CVSROOT_DIRNAME}/first-dir/file3,v <-- file3 *************** *** 8424,8431 **** U first-dir/file2 RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v retrieving revision 1\.1 ! retrieving revision 1\.1\.2\.1 ! Merging differences between 1\.1 and 1\.1\.2\.1 into file2 U first-dir/file3 ${PROG} checkout: scheduling first-dir/file3 for removal U first-dir/file4 --- 9045,9052 ---- U first-dir/file2 RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v retrieving revision 1\.1 ! retrieving revision 1\.1\.2\.2 ! Merging differences between 1\.1 and 1\.1\.2\.2 into file2 U first-dir/file3 ${PROG} checkout: scheduling first-dir/file3 for removal U first-dir/file4 *************** *** 8459,8466 **** "U file1 RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v retrieving revision 1\.1 ! retrieving revision 1\.1\.2\.1 ! Merging differences between 1\.1 and 1\.1\.2\.1 into file2 ${PROG} update: scheduling file3 for removal M file4 ${PROG} update: file file4 is locally modified, but has been removed in revision branch --- 9080,9087 ---- "U file1 RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v retrieving revision 1\.1 ! retrieving revision 1\.1\.2\.2 ! Merging differences between 1\.1 and 1\.1\.2\.2 into file2 ${PROG} update: scheduling file3 for removal M file4 ${PROG} update: file file4 is locally modified, but has been removed in revision branch *************** *** 8498,8505 **** "U file1 RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v retrieving revision 1.1 ! retrieving revision 1.1.2.1 ! Merging differences between 1.1 and 1.1.2.1 into file2 ${PROG} update: scheduling file3 for removal ${PROG} update: file file4 has been modified, but has been removed in revision branch U file8 --- 9119,9126 ---- "U file1 RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v retrieving revision 1.1 ! retrieving revision 1.1.2.2 ! Merging differences between 1.1 and 1.1.2.2 into file2 ${PROG} update: scheduling file3 for removal ${PROG} update: file file4 has been modified, but has been removed in revision branch U file8 *************** *** 8532,8539 **** U file2 RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v retrieving revision 1\.1 ! retrieving revision 1\.1\.2\.1 ! Merging differences between 1\.1 and 1\.1\.2\.1 into file2 U file3 ${PROG} update: scheduling file3 for removal U file4 --- 9153,9160 ---- U file2 RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v retrieving revision 1\.1 ! retrieving revision 1\.1\.2\.2 ! Merging differences between 1\.1 and 1\.1\.2\.2 into file2 U file3 ${PROG} update: scheduling file3 for removal U file4 *************** *** 9335,9340 **** --- 9956,10021 ---- rm -rf ${CVSROOT_DIRNAME}/join6 ;; + join7) + # This test deals with joins that happen with the -n switch + mkdir join7; cd join7 + mkdir impdir; cd impdir + echo aaa >temp.txt + echo bbb >>temp.txt + echo ccc >>temp.txt + dotest join7-1 \ + "${testcvs} -Q import -minitial join7 vendor vers-1" \ + "" + cd .. + dotest join7-2 "${testcvs} -Q co join7" "" + cd join7 + echo ddd >> temp.txt + dotest join7-3 "${testcvs} -Q ci -madded-line temp.txt" \ + "Checking in temp.txt; + $CVSROOT_DIRNAME/join7/temp.txt,v <-- temp.txt + new revision: 1\.2; previous revision: 1\.1 + done" + cd ../impdir + echo aaaa >temp.txt + echo bbbb >>temp.txt + echo ccc >>temp.txt + echo eee >>temp.txt + dotest join7-4 \ + "${testcvs} -Q import -minitial join7 vendor vers-2" \ + "" + cd ../join7 + dotest join7-5 \ + "${testcvs} -n update -jvers-1 -jvers-2 temp.txt" \ + "RCS file: $CVSROOT_DIRNAME/join7/temp.txt,v + retrieving revision 1\.1\.1\.1 + retrieving revision 1\.1\.1\.2 + Merging differences between 1\.1\.1\.1 and 1\.1\.1\.2 into temp.txt + rcsmerge: warning: conflicts during merge" + touch temp.txt + dotest join7-6 "${testcvs} -n update -jvers-1 -jvers-2 temp.txt" \ + "RCS file: $CVSROOT_DIRNAME/join7/temp.txt,v + retrieving revision 1\.1\.1\.1 + retrieving revision 1\.1\.1\.2 + Merging differences between 1\.1\.1\.1 and 1\.1\.1\.2 into temp.txt + rcsmerge: warning: conflicts during merge" \ + "RCS file: $CVSROOT_DIRNAME/join7/temp.txt,v + retrieving revision 1\.1\.1\.1 + retrieving revision 1\.1\.1\.2 + Merging differences between 1\.1\.1\.1 and 1\.1\.1\.2 into temp.txt + rcsmerge: warning: conflicts during merge" + + if $keep; then + echo Keeping ${TESTDIR} and exiting due to --keep + exit 0 + fi + + cd ../.. + rm -r join7 + rm -rf $CVSROOT_DIRNAME/join7 + ;; + + + join-readonly-conflict) # Previously, only tests 1 & 11 were being tested. I added the # intermediate dotest's to try and diagnose a different failure *************** *** 11430,11438 **** "Directory ${CVSROOT_DIRNAME}/first-dir added to the repository" cd first-dir ! mkdir subdir ! dotest modules4-3 "${testcvs} add subdir" \ ! "Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository" echo file1 > file1 dotest modules4-4 "${testcvs} add file1" \ --- 12111,12120 ---- "Directory ${CVSROOT_DIRNAME}/first-dir added to the repository" cd first-dir ! mkdir subdir subdir_long ! dotest modules4-3 "${testcvs} add subdir subdir_long" \ ! "Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository ! Directory ${CVSROOT_DIRNAME}/first-dir/subdir_long added to the repository" echo file1 > file1 dotest modules4-4 "${testcvs} add file1" \ *************** *** 11444,11450 **** "${PROG}"' add: scheduling file `subdir/file2'\'' for addition '"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently' ! dotest modules4-6 "${testcvs} -q ci -m add-it" \ "RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v done Checking in file1; --- 12126,12137 ---- "${PROG}"' add: scheduling file `subdir/file2'\'' for addition '"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently' ! echo file3 > subdir_long/file3 ! dotest modules4-6 "${testcvs} add subdir_long/file3" \ ! "${PROG}"' add: scheduling file `subdir_long/file3'\'' for addition ! '"${PROG}"' add: use .'"${PROG}"' commit. to add this file permanently' ! ! dotest modules4-7 "${testcvs} -q ci -m add-it" \ "RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v done Checking in file1; *************** *** 11456,11474 **** Checking in subdir/file2; ${CVSROOT_DIRNAME}/first-dir/subdir/file2,v <-- file2 initial revision: 1\.1 done" cd .. ! dotest modules4-7 "${testcvs} -q update -d CVSROOT" \ "U CVSROOT${DOTSTAR}" cd CVSROOT cat >modules <modules < file1 + dotest modules7-2 "$testcvs -Q add file1" + dotest modules7-3 "$testcvs -Q ci -mnew file1" \ + "RCS file: $CVSROOT_DIRNAME/one/file1,v + done + Checking in file1; + $CVSROOT_DIRNAME/one/file1,v <-- file1 + initial revision: 1\.1 + done" + dotest modules7-4 "$testcvs -Q tag mytag file1" + cd ../CVSROOT + echo 'all -a zero one' > modules + dotest modules7-5 "$testcvs -Q ci -mall-module" \ + "Checking in modules; + $CVSROOT_DIRNAME/CVSROOT/modules,v <-- modules + new revision: [0-9.]*; previous revision: [0-9.]* + done + $PROG commit: Rebuilding administrative file database" + cd ../.. + mkdir myexport + cd myexport + # FIXCVS: The export should NOT be aborted here + dotest_fail modules7-6 "$testcvs export -rmytag all" \ + "$PROG \[export aborted\]: no such tag mytag" + cd .. + rm -fr myexport + mkdir myexport + cd myexport + # FIXCVS: Workaround is to have mytag listed in val-tags + echo 'mytag y' > $CVSROOT_DIRNAME/CVSROOT/val-tags + dotest modules7-7 "$testcvs export -rmytag all" \ + "$PROG export: Updating zero + $PROG export: Updating one + U one/file1" + dotest modules7-8 'cat one/file1' 'file1 contents' + + if $keep; then + echo Keeping $TESTDIR and exiting due to --keep + exit 0 + fi + + # cleanup + cd ../top/CVSROOT + echo "# empty modules file" >modules + dotest modules7-cleanup-1 "$testcvs -Q ci -mempty-modules" \ + "Checking in modules; + $CVSROOT_DIRNAME/CVSROOT/modules,v <-- modules + new revision: [0-9.]*; previous revision: [0-9.]* + done + $PROG commit: Rebuilding administrative file database" + cd ../../.. + rm -fr modules7 + rm -rf $CVSROOT_DIRNAME/zero $CVSROOT_DIRNAME/one + ;; + + mkmodules) # When a file listed in checkoutlist doesn't exist, cvs-1.10.4 # would fail to remove the CVSROOT/.#[0-9]* temporary file it *************** *** 13893,13906 **** rstar-toplevel) ! # FIXCVS: ! # This test confirms a bug that exists in the r* commands currently ! # when run against the top-level project. # ! # The assertion failure is something like: # do_recursion: Assertion \`strstr (repository, \"/\./\") == ((void \*)0)' failed\..*" ! dotest_fail rstar-toplevel-1 "$testcvs rlog ." \ ! "${DOTSTAR}ssertion.*failed${DOTSTAR}" "${DOTSTAR}failed assertion${DOTSTAR}" if $keep; then echo Keeping ${TESTDIR} and exiting due to --keep --- 14681,14694 ---- rstar-toplevel) ! # This test used to confirm a bug that existed in the r* commands ! # run against the top-level project prior to CVS 1.11.18 & 1.12.10. # ! # The assertion failure was something like: # do_recursion: Assertion \`strstr (repository, \"/\./\") == ((void \*)0)' failed\..*" ! dotest rstar-toplevel-1 "$testcvs -q rlog ." \ ! " ! RCS file: $CVSROOT_DIRNAME/CVSROOT$DOTSTAR" if $keep; then echo Keeping ${TESTDIR} and exiting due to --keep *************** *** 15183,15188 **** --- 15971,16064 ---- rm -rf ${CVSROOT_DIRNAME}/first-dir ;; + + + watch6) + # Check that `cvs watch on' does not reset the fileattr file. + mkdir watch6; cd watch6 + + dotest watch6-setup-1 "$testcvs -Q co -ldtop ." + cd top + mkdir watch6 + dotest watch6-setup-2 "$testcvs -Q add watch6" + + cd .. + dotest watch6-setup-3 "$testcvs -Q co watch6" + cd watch6 + + mkdir subdir + dotest watch6-setup-4 "$testcvs -Q add subdir" + cd subdir + + # START watch add/remove sequence + dotest watch6-1 "$testcvs -Q watch add" + dotest watch6-2 \ + "grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null" + + dotest watch6-3 "$testcvs watch on" + dotest watch6-4 \ + "grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null" + dotest watch6-5 \ + "grep '_watched' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null" + + dotest watch6-6 "$testcvs watch off" + dotest watch6-7 \ + "grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null" + dotest_fail watch6-8 \ + "grep '_watched' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null" + + dotest watch6-9 "$testcvs watch remove" + dotest_fail watch6-10 \ + "test -d $CVSROOT_DIRNAME/test-directory/subdir/CVS" + dotest_fail watch6-11 \ + "test -f $CVSROOT_DIRNAME/test-directory/subdir/CVS/fileattr" + # END watch add/remove sequence + + echo Hi there >afile + dotest watch6-12 "$testcvs -Q add afile" + dotest watch6-13 "$testcvs ci -m 'A file' afile" \ + "RCS file: $CVSROOT_DIRNAME/watch6/subdir/afile,v + done + Checking in afile; + $CVSROOT_DIRNAME/watch6/subdir/afile,v <-- afile + initial revision: 1\.1 + done" + + # START watch add/remove sequence + dotest watch6-14 "$testcvs -Q watch add" + dotest watch6-15 \ + "grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null" + + dotest watch6-16 "$testcvs watch on" + dotest watch6-17 \ + "grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null" + dotest watch6-18 \ + "grep '_watched' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null" + + dotest watch6-19 "$testcvs watch off" + dotest watch6-20 \ + "grep '_watchers' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null" + dotest_fail watch6-21 \ + "grep '_watched' $CVSROOT_DIRNAME/watch6/subdir/CVS/fileattr >/dev/null" + + dotest watch6-22 "$testcvs watch remove" + dotest_fail watch6-23 \ + "test -d $CVSROOT_DIRNAME/test-directory/subdir/CVS" + dotest_fail watch6-24 \ + "test -f $CVSROOT_DIRNAME/test-directory/subdir/CVS/fileattr" + # END watch add/remove sequence + + if $keep; then + echo Keeping $TESTDIR and exiting due to --keep + exit 0 + fi + cd ../../.. + rm -r watch6 + rm -rf $CVSROOT_DIRNAME/watch6 + ;; + + + unedit-without-baserev) mkdir 1; cd 1 module=x *************** *** 15465,15471 **** dotest ignore-on-branch-5 "$testcvs -q ci -mbranch file2" \ "Checking in file2; $CVSROOT_DIRNAME/ignore-on-branch/file2,v <-- file2 ! new revision: 1\.1\.2\.1; previous revision: 1\.1 done" dotest ignore-on-branch-6 "$testcvs -q up -rbranch2" \ "${PROG} update: file2 is no longer in the repository" --- 16341,16347 ---- dotest ignore-on-branch-5 "$testcvs -q ci -mbranch file2" \ "Checking in file2; $CVSROOT_DIRNAME/ignore-on-branch/file2,v <-- file2 ! new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1 done" dotest ignore-on-branch-6 "$testcvs -q up -rbranch2" \ "${PROG} update: file2 is no longer in the repository" *************** *** 17594,17599 **** --- 18470,18497 ---- ${log_rev2} ${log_trailer}" + # Test BASE pseudotag + dotest log-23 "${testcvs} log -rBASE file1" \ + "${log_header1} + ${log_tags1} + ${log_keyword} + total revisions: 5; selected revisions: 1 + description: + ${log_rev2b} + ${log_trailer}" + + dotest log-24 "${testcvs} -q up -r1.2 file1" "[UP] file1" + dotest log-25 "${testcvs} log -rBASE file1" \ + "${log_header1} + ${log_tags1} + ${log_keyword} + total revisions: 5; selected revisions: 1 + description: + ${log_rev2} + ${log_trailer}" + + dotest log-26 "${testcvs} -q up -rbranch file1" "[UP] file1" + # Now the same tests but with rlog dotest log-r11 "${testcvs} rlog first-dir/file1" \ *************** *** 17817,17822 **** --- 18715,18740 ---- ${log_rev2} ${log_trailer}" + # Test BASE pseudotag + dotest log-r23 "${testcvs} rlog -rBASE first-dir/file1" \ + "${PROG} rlog: warning: no revision .BASE. in .${CVSROOT_DIRNAME}/first-dir/file1,v. + ${rlog_header1} + ${log_tags1} + ${log_keyword} + total revisions: 5; selected revisions: 0 + description: + ${log_trailer}" + + dotest log-r24 "${testcvs} -q up -r1.2 file1" "[UP] file1" + dotest log-r25 "${testcvs} rlog -rBASE first-dir/file1" \ + "${PROG} rlog: warning: no revision .BASE. in .${CVSROOT_DIRNAME}/first-dir/file1,v. + ${rlog_header1} + ${log_tags1} + ${log_keyword} + total revisions: 5; selected revisions: 0 + description: + ${log_trailer}" + # Test when head is dead dotest log-d0 "${testcvs} -q up -A" \ *************** *** 18585,18608 **** # local. if $remote; then # For remote, just create the repository. We don't yet do # the various other tests above for remote but that should be # changed. mkdir crerepos mkdir crerepos/CVSROOT ! # Use :ext: rather than :fork:. Most of the tests use :fork:, ! # so we want to make sure that we test :ext: _somewhere_. ! ! # Maybe a bit dubious in the sense that people need to ! # have rsh working to run the tests, but at least it ! # isn't inetd :-). Might want to think harder about this - ! # maybe try :ext:, and if it fails, print a (single, nice) ! # message and fall back to :fork:. Maybe testing :ext: ! # with our own CVS_RSH rather than worrying about a system one ! # would do the trick. ! ! # Make sure server ignores real ${HOME}/.cvsrc: cat >$TESTDIR/cvs-setHome <$TESTDIR/cvs-setHome <&2 ! exit 1 ! fi ! else # First, if the repository doesn't exist at all... --- 19529,19535 ---- # Note that we set CVS_SERVER at the beginning. CVS_SERVER=$TESTDIR/cvs-setHome; export CVS_SERVER ! CREREPOS_ROOT=:ext:$host$TESTDIR/crerepos else # First, if the repository doesn't exist at all... *************** *** 19892,19897 **** --- 20795,20928 ---- rm -rf ${CVSROOT_DIRNAME}/first-dir ;; + + + sshstdio) + # CVS_RSH=ssh can have a problem with a non-blocking stdio + # in some cases. So, this test is all about testing :ext: + # with CVS_RSH=ssh. The problem is that not all machines + # will necessarily have ssh available, so be prepared to + # skip this test. + + # Are we able to run find and use an ssh? + if $remote; then :; else + continue + fi + + depends_on_ssh + if test $? -eq 77; then + skip sshstdio "$skipreason" + continue + fi + + SSHSTDIO_ROOT=:ext:$host$CVSROOT_DIRNAME + + mkdir sshstdio; cd sshstdio + dotest sshstdio-1 "$testcvs -d $SSHSTDIO_ROOT -q co -l ." + mkdir first-dir + dotest sshstdio-2 "$testcvs add first-dir" \ + "Directory $CVSROOT_DIRNAME/first-dir added to the repository" + cd first-dir + a='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + c='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + # Generate 1024 lines of $a + cnt=0 + echo $a > aaa + while [ $cnt -lt 5 ] ; do + cnt=`expr $cnt + 1` ; + mv aaa aaa.old + cat aaa.old aaa.old aaa.old aaa.old > aaa + done + dotest sshstdio-3 "$testcvs -q add aaa" \ + "$PROG add: use .$PROG commit. to add this file permanently" + dotest sshstdio-4 "$testcvs -q ci -mcreate aaa" \ + "RCS file: $CVSROOT_DIRNAME/first-dir/aaa,v + done + Checking in aaa; + $CVSROOT_DIRNAME/first-dir/aaa,v <-- aaa + initial revision: 1\.1 + done" + # replace lines 1, 512, 513, 1024 with $c + sed 510q < aaa > aaa.old + (echo $c; cat aaa.old; echo $c; \ + echo $c; cat aaa.old; echo $c) > aaa + dotest sshstdio-5 "$testcvs -q ci -mmodify-it aaa" \ + "Checking in aaa; + $CVSROOT_DIRNAME/first-dir/aaa,v <-- aaa + new revision: 1\.2; previous revision: 1\.1 + done" + cat > wrapper.sh <&1 < /dev/null | cat + EOF + chmod +x wrapper.sh + ./wrapper.sh \ + $testcvs -z5 -Q diff --side-by-side -W 500 -r 1.1 -r 1.2 \ + aaa > wrapper.dif + + $testcvs -z5 -Q diff --side-by-side -W 500 -r 1.1 -r 1.2 \ + aaa > good.dif + + dotest sshstdio-6 "cmp wrapper.dif good.dif" + + if $keep; then + echo Keeping $TESTDIR and exiting due to --keep + exit 0 + fi + + cd ../.. + CVS_RSH=$save_CVS_RSH; export CVS_RSH + rm -r sshstdio + rm -rf $CVSROOT_DIRNAME/first-dir + ;; + + + + parseroot2) + # Test some :ext: roots for consistancy. + if $remote; then :; else + continue + fi + + depends_on_rsh "$CVS_RSH" + if test $? -eq 77; then + skip parseroot2 "$skipreason" + continue + fi + + # Test checking out and subsequently updating with some different + # CVSROOTs. + + # A standard case, hostname:dirname. + mkdir parseroot2; cd parseroot2 + save_CVSROOT=$CVSROOT + CVSROOT=$host:$CVSROOT_DIRNAME + dotest parseroot2-1 "$testcvs -Q co CVSROOT" + cd CVSROOT + dotest parseroot2-2 "$testcvs -Q up" + cd .. + + # A degenerate remote case, just the server name and the directory + # name, with no :'s to help parsing. It can be mistaken for a + # relative directory name. + rm -r CVSROOT + CVSROOT=$host$CVSROOT_DIRNAME + dotest parseroot2-3 "$testcvs -Q co CVSROOT" + cd CVSROOT + dotest parseroot2-4 "$testcvs -Q up" + + if $keep; then + echo Keeping $TESTDIR and exiting due to --keep + exit 0 + fi + + cd ../.. + CVSROOT=$save_CVSROOT + rm -r parseroot2 + ;; + + + history) # CVSROOT/history tests: # history: various "cvs history" invocations *************** *** 21744,21749 **** --- 22775,22782 ---- # for checkout and update as well. # mkdir 1; cd 1 + save_TZ=$TZ + TZ=UTC; export TZ dotest tagdate-1 "${testcvs} -q co -l ." '' mkdir first-dir dotest tagdate-2 "${testcvs} add first-dir" \ *************** *** 21761,21766 **** --- 22794,22801 ---- ${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1 initial revision: 1\.1 done" + date_T1=`getrlogdate -r1.1 first-dir/file1` + dotest tagdate-5 "${testcvs} -q tag -b br1" "T file1" dotest tagdate-6 "${testcvs} -q tag -b br2" "T file1" echo trunk-2 >file1 *************** *** 21769,21774 **** --- 22804,22811 ---- ${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1 new revision: 1\.2; previous revision: 1\.1 done" + date_T2=`getrlogdate -r1.2 first-dir/file1` + # We are testing -r -D where br1 is a (magic) branch without # any revisions. First the case where br2 doesn't have any # revisions either: *************** *** 21780,21785 **** --- 22817,22823 ---- ${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1 new revision: 1\.1\.4\.1; previous revision: 1\.1 done" + date_T3=`getrlogdate -r1.1.4.1 first-dir/file1` # Then the case where br2 does have revisions: dotest tagdate-11 "${testcvs} -q update -p -r br1 -D now" "trunk-1" *************** *** 21789,21822 **** "${PROG} \[update aborted\]: argument to join may not contain a date specifier without a tag" # And check export - # Wish some shorter sleep interval would suffice, but I need to - # guarantee that the point in time specified by the argument to -D - # in tagdate-14 and tagdate-16 - # falls in the space of time between commits to br2 and I - # figure 60 seconds is probably a large enough range to - # account for most network file system delays and such... - # as it stands, it takes between 1 and 2 seconds between - # calling CVS on my machine and the -D argument being used to - # recall the file revision and this timing will certainly vary - # by several seconds between machines - dependant on CPUspeeds, - # I/O speeds, load, etc. - sleep 60 - echo br2-2 >file1 dotest tagdate-13 "${testcvs} -q ci -m modify-2-on-br2" \ "Checking in file1; ${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1 new revision: 1\.1\.4\.2; previous revision: 1\.1\.4\.1 done" cd ../.. ! mkdir 2; cd ! dotest tagdate-14 "${testcvs} -q export -r br2 -D'1 minute ago' first-dir" \ "[UP] first-dir/file1" dotest tagdate-15 "cat first-dir/file1" "br2-1" # Now for annotate cd ../1/first-dir ! dotest tagdate-16 "${testcvs} annotate -rbr2 -D'1 minute ago'" \ " Annotations for file1 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\* --- 22827,22849 ---- "${PROG} \[update aborted\]: argument to join may not contain a date specifier without a tag" # And check export echo br2-2 >file1 dotest tagdate-13 "${testcvs} -q ci -m modify-2-on-br2" \ "Checking in file1; ${CVSROOT_DIRNAME}/first-dir/file1,v <-- file1 new revision: 1\.1\.4\.2; previous revision: 1\.1\.4\.1 done" + date_T4=`getrlogdate -r1.1.4.2 first-dir/file1` + cd ../.. ! mkdir 2; cd 2 ! dotest tagdate-14 "${testcvs} -q export -r br2 -D'$date_T3' first-dir" \ "[UP] first-dir/file1" dotest tagdate-15 "cat first-dir/file1" "br2-1" # Now for annotate cd ../1/first-dir ! dotest tagdate-16 "${testcvs} annotate -rbr2 -D'$date_T3'" \ " Annotations for file1 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\* *************** *** 21828,21840 **** \*\*\*\*\*\*\*\*\*\*\*\*\*\*\* 1\.1\.4\.2 (${username} *[0-9a-zA-Z-]*): br2-2" if $keep; then echo Keeping ${TESTDIR} and exiting due to --keep exit 0 fi ! cd ../.. ! rm -r 1 2 rm -rf ${CVSROOT_DIRNAME}/first-dir ;; --- 22855,23223 ---- \*\*\*\*\*\*\*\*\*\*\*\*\*\*\* 1\.1\.4\.2 (${username} *[0-9a-zA-Z-]*): br2-2" + # Now check to see what happens when we add files to br2 and trunk + echo br2-1 > file3 + dotest tagdate-18 "${testcvs} add file3" \ + "${PROG} add: scheduling file \`file3' for addition on branch \`br2' + ${PROG} add: use .${PROG} commit. to add this file permanently" + dotest tagdate-19 "${testcvs} -q ci -m add file3" \ + "RCS file: ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v + done + Checking in file3; + ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v <-- file3 + new revision: 1\.1\.2\.1; previous revision: 1\.1 + done" + date_T5=`getrlogdate -r1.1 first-dir/file3` + date_T6=`getrlogdate -r1.1.2.1 first-dir/file3` + + cd ../.. + mkdir 3; cd 3 + dotest tagdate-20 "${testcvs} -Q co first-dir" '' + cd first-dir + echo trunk-1 > file2 + dotest tagdate-21 "${testcvs} add file2" \ + "${PROG} add: scheduling file .file2. for addition + ${PROG} add: use .${PROG} commit. to add this file permanently" + dotest tagdate-22 "${testcvs} -q ci -m add file2" \ + "RCS file: ${CVSROOT_DIRNAME}/first-dir/file2,v + done + Checking in file2; + ${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2 + initial revision: 1\.1 + done" + date_T7=`getrlogdate -r1.1 first-dir/file2` + echo "trunk-2" >file2 + dotest tagdate-23 "${testcvs} -q ci -m update file2" \ + "Checking in file2; + ${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2 + new revision: 1\.2; previous revision: 1\.1 + done" + date_T8=`getrlogdate -r1.2 first-dir/file2` + + cd ../../1/first-dir + echo br2-1 > file2 + dotest tagdate-24 "${testcvs} add file2" \ + "${PROG} add: scheduling file \`file2' for addition on branch \`br2' + ${PROG} add: use .${PROG} commit. to add this file permanently" + dotest tagdate-25 "${testcvs} -q ci -m add file2" \ + "Checking in file2; + ${CVSROOT_DIRNAME}/first-dir/file2,v <-- file2 + new revision: 1\.2\.2\.2; previous revision: 1\.2\.2\.1 + done" + date_T9=`getrlogdate -r1.2.2.2 first-dir/file2` + cd ../.. + + # Time Rev Branch Comments + # T0 trunk first-dir created + # T1 1.1 trunk first-dir/file1 committed "trunk-1" + # br1 branch created + # br2 branch created + # T2 1.2 trunk first-dir/file1 committed "trunk-2" + # T3 1.1.4.1 br2 first-dir/file1 committed "br2-1" + # +60s + # T4 1.1.4.2 br2 first-dir/file1 committed "br2-2" + # T5 1.1 trunk first-dir/file3 dead + # T6 1.1.2.1 br2 first-dir/file3 committed "br2-1" + # T7 1.1 trunk first-dir/file2 committed "trunk-1" + # T8 1.2 trunk first-dir/file2 committed "trunk-2" + # T8 1.2.2.1 br2 first-dir/file2 dead + # T9 1.2.2.2 br2 first-dir/file2 committed "br2-1" + # + + mkdir 4; cd 4 + (echo Dates for tagdate-26-* are:;\ + echo " date_T1='$date_T1'";\ + echo " date_T2='$date_T2'";\ + echo " date_T3='$date_T3'";\ + echo " date_T4='$date_T4'";\ + echo " date_T5='$date_T5'";\ + echo " date_T6='$date_T6'";\ + echo " date_T7='$date_T7'";\ + echo " date_T8='$date_T8'";\ + echo " date_T9='$date_T9'") >>$LOGFILE + dotest tagdate-26-trunk-t1 \ + "${testcvs} co -D'$date_T1' -d first-dir-trunk-t1 first-dir" \ + "${PROG} checkout: Updating first-dir-trunk-t1 + U first-dir-trunk-t1/file1" + dotest tagdate-26-br2-t1 \ + "${testcvs} co -r br2 -D'$date_T1' -d first-dir-br2-t1 first-dir" \ + "${PROG} checkout: Updating first-dir-br2-t1 + U first-dir-br2-t1/file1" + dotest tagdate-26-trunk-t2 \ + "${testcvs} co -D'$date_T2' -d first-dir-trunk-t2 first-dir" \ + "${PROG} checkout: Updating first-dir-trunk-t2 + U first-dir-trunk-t2/file1" + dotest tagdate-26-br2-t2 \ + "${testcvs} co -r br2 -D'$date_T2' -d first-dir-br2-t2 first-dir" \ + "${PROG} checkout: Updating first-dir-br2-t2 + U first-dir-br2-t2/file1" + dotest tagdate-26-br2-t3 \ + "${testcvs} co -r br2 -D'$date_T3' -d first-dir-br2-t3 first-dir" \ + "${PROG} checkout: Updating first-dir-br2-t3 + U first-dir-br2-t3/file1" + dotest tagdate-26-br2-t4 \ + "${testcvs} co -r br2 -D'$date_T4' -d first-dir-br2-t4 first-dir" \ + "${PROG} checkout: Updating first-dir-br2-t4 + U first-dir-br2-t4/file1" + dotest tagdate-26-br2-t6 \ + "${testcvs} co -r br2 -D'$date_T6' -d first-dir-br2-t6 first-dir" \ + "${PROG} checkout: Updating first-dir-br2-t6 + U first-dir-br2-t6/file1 + U first-dir-br2-t6/file3" + dotest tagdate-26-trunk-t7 \ + "${testcvs} co -D'$date_T7' -d first-dir-trunk-t7 first-dir" \ + "${PROG} checkout: Updating first-dir-trunk-t7 + U first-dir-trunk-t7/file1 + U first-dir-trunk-t7/file2" + dotest tagdate-26-br2-t7 \ + "${testcvs} co -r br2 -D'$date_T7' -d first-dir-br2-t7 first-dir" \ + "${PROG} checkout: Updating first-dir-br2-t7 + U first-dir-br2-t7/file1 + U first-dir-br2-t7/file3" + dotest tagdate-26-trunk-t8 \ + "${testcvs} co -D'$date_T8' -d first-dir-trunk-t8 first-dir" \ + "${PROG} checkout: Updating first-dir-trunk-t8 + U first-dir-trunk-t8/file1 + U first-dir-trunk-t8/file2" + dotest tagdate-26-br2-t8 \ + "${testcvs} co -r br2 -D'$date_T8' -d first-dir-br2-t8 first-dir" \ + "${PROG} checkout: Updating first-dir-br2-t8 + U first-dir-br2-t8/file1 + U first-dir-br2-t8/file3" + dotest tagdate-26-br2-t9 \ + "${testcvs} co -r br2 -D'$date_T9' -d first-dir-br2-t9 first-dir" \ + "${PROG} checkout: Updating first-dir-br2-t9 + U first-dir-br2-t9/file1 + U first-dir-br2-t9/file2 + U first-dir-br2-t9/file3" + dotest tagdate-27-trunk-t1 \ + "${testcvs} status first-dir-trunk-t1" \ + "${PROG} status: Examining first-dir-trunk-t1 + =================================================================== + File: file1 Status: Up-to-date + + Working revision: 1\.1[^.]* + Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: (none) + Sticky Date: [0-9.]* + Sticky Options: (none)" + dotest tagdate-27-br2-t1 \ + "${testcvs} status first-dir-br2-t1" \ + "${PROG} status: Examining first-dir-br2-t1 + =================================================================== + File: file1 Status: Needs Patch + + Working revision: 1\.1[^.]* + Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: br2 (branch: 1\.1\.4) + Sticky Date: (none) + Sticky Options: (none)" + dotest tagdate-27-trunk-t2 \ + "${testcvs} status first-dir-trunk-t2" \ + "${PROG} status: Examining first-dir-trunk-t2 + =================================================================== + File: file1 Status: Up-to-date + + Working revision: 1\.2[^.]* + Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: (none) + Sticky Date: [0-9.]* + Sticky Options: (none)" + dotest tagdate-27-br2-t2 \ + "${testcvs} status first-dir-br2-t2" \ + "${PROG} status: Examining first-dir-br2-t2 + =================================================================== + File: file1 Status: Needs Patch + + Working revision: 1\.1[^.]* + Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: br2 (branch: 1\.1\.4) + Sticky Date: (none) + Sticky Options: (none)" + dotest tagdate-27-br2-t3 \ + "${testcvs} status first-dir-br2-t3" \ + "${PROG} status: Examining first-dir-br2-t3 + =================================================================== + File: file1 Status: Needs Patch + + Working revision: 1\.1\.4\.1[^.]* + Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: br2 (branch: 1\.1\.4) + Sticky Date: (none) + Sticky Options: (none)" + dotest tagdate-27-br2-t4 \ + "${testcvs} status first-dir-br2-t4" \ + "${PROG} status: Examining first-dir-br2-t4 + =================================================================== + File: file1 Status: Up-to-date + + Working revision: 1\.1\.4\.2[^.]* + Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: br2 (branch: 1\.1\.4) + Sticky Date: (none) + Sticky Options: (none)" + dotest tagdate-27-br2-t6 \ + "${testcvs} status first-dir-br2-t6" \ + "${PROG} status: Examining first-dir-br2-t6 + =================================================================== + File: file1 Status: Up-to-date + + Working revision: 1\.1\.4\.2[^.]* + Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: br2 (branch: 1\.1\.4) + Sticky Date: (none) + Sticky Options: (none) + + =================================================================== + File: file3 Status: Up-to-date + + Working revision: 1\.1\.2\.1[^.]* + Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v + Sticky Tag: br2 (branch: 1\.1\.2) + Sticky Date: (none) + Sticky Options: (none)" + dotest tagdate-27-trunk-t7 \ + "${testcvs} status first-dir-trunk-t7" \ + "${PROG} status: Examining first-dir-trunk-t7 + =================================================================== + File: file1 Status: Up-to-date + + Working revision: 1\.2[^.]* + Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: (none) + Sticky Date: [0-9.]* + Sticky Options: (none) + + =================================================================== + File: file2 Status: Up-to-date + + Working revision: 1\.1[^.]* + Repository revision: 1\.1 ${CVSROOT_DIRNAME}/first-dir/file2,v + Sticky Tag: (none) + Sticky Date: [0-9.]* + Sticky Options: (none)" + dotest tagdate-27-br2-t7 \ + "${testcvs} status first-dir-br2-t7" \ + "${PROG} status: Examining first-dir-br2-t7 + =================================================================== + File: file1 Status: Up-to-date + + Working revision: 1\.1\.4\.2[^.]* + Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: br2 (branch: 1\.1\.4) + Sticky Date: (none) + Sticky Options: (none) + + =================================================================== + File: file3 Status: Up-to-date + + Working revision: 1\.1\.2\.1[^.]* + Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v + Sticky Tag: br2 (branch: 1\.1\.2) + Sticky Date: (none) + Sticky Options: (none)" + dotest tagdate-27-trunk-t8 \ + "${testcvs} status first-dir-trunk-t8" \ + "${PROG} status: Examining first-dir-trunk-t8 + =================================================================== + File: file1 Status: Up-to-date + + Working revision: 1\.2[^.]* + Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: (none) + Sticky Date: [0-9.]* + Sticky Options: (none) + + =================================================================== + File: file2 Status: Up-to-date + + Working revision: 1\.2[^.]* + Repository revision: 1\.2 ${CVSROOT_DIRNAME}/first-dir/file2,v + Sticky Tag: (none) + Sticky Date: [0-9.]* + Sticky Options: (none)" + dotest tagdate-27-br2-t8 \ + "${testcvs} status first-dir-br2-t8" \ + "${PROG} status: Examining first-dir-br2-t8 + =================================================================== + File: file1 Status: Up-to-date + + Working revision: 1\.1\.4\.2[^.]* + Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: br2 (branch: 1\.1\.4) + Sticky Date: (none) + Sticky Options: (none) + + =================================================================== + File: file3 Status: Up-to-date + + Working revision: 1\.1\.2\.1[^.]* + Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v + Sticky Tag: br2 (branch: 1\.1\.2) + Sticky Date: (none) + Sticky Options: (none)" + dotest tagdate-27-br2-t9 \ + "${testcvs} status first-dir-br2-t9" \ + "${PROG} status: Examining first-dir-br2-t9 + =================================================================== + File: file1 Status: Up-to-date + + Working revision: 1\.1\.4\.2[^.]* + Repository revision: 1\.1\.4\.2 ${CVSROOT_DIRNAME}/first-dir/file1,v + Sticky Tag: br2 (branch: 1\.1\.4) + Sticky Date: (none) + Sticky Options: (none) + + =================================================================== + File: file2 Status: Up-to-date + + Working revision: 1\.2\.2\.2[^.]* + Repository revision: 1\.2\.2\.2 ${CVSROOT_DIRNAME}/first-dir/file2,v + Sticky Tag: br2 (branch: 1\.2\.2) + Sticky Date: (none) + Sticky Options: (none) + + =================================================================== + File: file3 Status: Up-to-date + + Working revision: 1\.1\.2\.1[^.]* + Repository revision: 1\.1\.2\.1 ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v + Sticky Tag: br2 (branch: 1\.1\.2) + Sticky Date: (none) + Sticky Options: (none)" + + # Now check the contents of the files + dotest tagdate-28-trunk-t1 'cat first-dir-trunk-t1/file1' 'trunk-1' + dotest tagdate-28-br2-t1 'cat first-dir-br2-t1/file1' 'trunk-1' + dotest tagdate-28-trunk-t2 'cat first-dir-trunk-t2/file1' 'trunk-2' + dotest tagdate-28-br2-t2 'cat first-dir-br2-t2/file1' 'trunk-1' + dotest tagdate-28-br2-t3 'cat first-dir-br2-t3/file1' 'br2-1' + dotest tagdate-28-br2-t4 'cat first-dir-br2-t4/file1' 'br2-2' + dotest tagdate-28-br2-t6a 'cat first-dir-br2-t6/file1' "br2-2" + dotest tagdate-28-br2-t6b 'cat first-dir-br2-t6/file3' "br2-1" + dotest tagdate-28-trunk-t7a 'cat first-dir-trunk-t7/file1' "trunk-2" + dotest tagdate-28-trunk-t7b 'cat first-dir-trunk-t7/file2' "trunk-1" + dotest tagdate-28-br2-t7a 'cat first-dir-br2-t7/file1' "br2-2" + dotest tagdate-28-br2-t7b 'cat first-dir-br2-t7/file3' "br2-1" + dotest tagdate-28-trunk-t8a 'cat first-dir-trunk-t8/file1' "trunk-2" + dotest tagdate-28-trunk-t8b 'cat first-dir-trunk-t8/file2' "trunk-2" + dotest tagdate-28-br2-t8a 'cat first-dir-br2-t8/file1' "br2-2" + dotest tagdate-28-br2-t8c 'cat first-dir-br2-t8/file3' "br2-1" + dotest tagdate-28-br2-t9a 'cat first-dir-br2-t9/file1' "br2-2" + dotest tagdate-28-br2-t9b 'cat first-dir-br2-t9/file2' "br2-1" + dotest tagdate-28-br2-t9c 'cat first-dir-br2-t9/file3' "br2-1" + cd .. + + unset date_T1 date_T2 date_T3 date_T4 date_T5 + unset date_T6 date_T7 date_T8 date_T9 + TZ=$save_TZ + if $keep; then echo Keeping ${TESTDIR} and exiting due to --keep exit 0 fi ! rm -r 1 2 3 4 rm -rf ${CVSROOT_DIRNAME}/first-dir ;; *************** *** 27600,27623 **** fail "cleanup: PWD != TESTDIR (\``pwd`' != \`$TESTDIR')" fi ! # Test our temp directory for cvs-serv* directories and cvsXXXXXX temp ! # files. We would like to not leave any behind. ! if $remote && ls $TMPDIR/cvs-serv* >/dev/null 2>&1; then ! # A true value means ls found files/directories with these names. ! # Give the server some time to finish, then retry. ! sleep 1 ! if ls $TMPDIR/cvs-serv* >/dev/null 2>&1; then ! fail "Found cvs-serv* directories in $TMPDIR." ! fi ! fi ! if ls $TMPDIR/cvs?????? >/dev/null 2>&1; then ! # A true value means ls found files/directories with these names. ! fail "Found cvsXXXXXX temp files in $TMPDIR." fi done # The big loop ! echo "OK, all tests completed." # TODO: # * Test `cvs update -d foo' (where foo does not exist). --- 28983,29029 ---- fail "cleanup: PWD != TESTDIR (\``pwd`' != \`$TESTDIR')" fi ! # Reset val-tags to a pristine state. ! if test -s $CVSROOT_DIRNAME/CVSROOT/val-tags; then ! : > $CVSROOT_DIRNAME/CVSROOT/val-tags fi + verify_tmp_empty "post $what" done # The big loop ! # Set up summary data for output. ! skippedoutput= ! warningsoutput= ! extendedinfo= ! if test $skipped -ne 0; then ! skippedoutput="$skipped test group" ! if test $skipped -ne 1; then ! skippedoutput="${skippedoutput}s" ! fi ! skippedoutput="$skippedoutput skipped" ! fi ! if test $warnings -ne 0; then ! warningsoutput="$warnings test" ! if test $warnings -ne 1; then ! warningsoutput="${warningsoutput}s" ! fi ! warningsoutput="$warningsoutput passed with warnings" ! fi ! if test -n "$skippedoutput" || test -n "$warningsoutput"; then ! extendedinfo=" (" ! if test -n "$skippedoutput"; then ! extendedinfo="$extendedinfo$skippedoutput" ! fi ! if test -n "$skippedoutput" && test -n "$warningsoutput"; then ! extendedinfo="$extendedinfo and " ! fi ! if test -n "$warningsoutput"; then ! extendedinfo="$extendedinfo$warningsoutput" ! fi ! extendedinfo="$extendedinfo)" ! fi ! ! echo "OK, all $passed tests passed$extendedinfo." # TODO: # * Test `cvs update -d foo' (where foo does not exist). Index: src/gnu/dist/cvs/src/server.c diff -c src/gnu/dist/cvs/src/server.c:1.13.2.3 src/gnu/dist/cvs/src/server.c:1.13.2.4 *** src/gnu/dist/cvs/src/server.c:1.13.2.3 Fri Jul 23 08:03:04 2004 --- src/gnu/dist/cvs/src/server.c Wed Jul 6 20:12:39 2005 *************** *** 356,368 **** --- 356,375 ---- dir_where_cvsadm_lives = xmalloc (strlen (base_dir) + strlen (dir) + 100); if (dir_where_cvsadm_lives == NULL) + { + free (p); return ENOMEM; + } /* Allocate some space for the temporary string in which we will construct filenames. */ tmp = xmalloc (strlen (base_dir) + strlen (dir) + 100); if (tmp == NULL) + { + free (p); + free (dir_where_cvsadm_lives); return ENOMEM; + } /* We make several passes through this loop. On the first pass, *************** *** 1835,1840 **** --- 1842,1848 ---- cp = xmalloc (strlen (arg) + 2); if (cp == NULL) { + free (p); pending_error = ENOMEM; return; } *************** *** 4124,4129 **** --- 4132,4138 ---- free (scratched_file); scratched_file = NULL; } + buf_send_counted (protocol); return; } *************** *** 5487,5492 **** --- 5496,5502 ---- { if (!existence_error (errno)) error (0, errno, "cannot open %s", filename); + free (filename); return 0; } *************** *** 6432,6443 **** size_t to_write = len; const char *p = str; ! /* For symmetry with cvs_outerr we would call fflush (stderr) ! here. I guess the assumption is that stderr will be ! unbuffered, so we don't need to. That sounds like a sound ! assumption from the manpage I looked at, but if there was ! something fishy about it, my guess is that calling fflush ! would not produce a significant performance problem. */ while (to_write > 0) { --- 6442,6451 ---- size_t to_write = len; const char *p = str; ! /* Local users that do 'cvs status 2>&1' on a local repository ! may see the informational messages out-of-order with the ! status messages unless we use the fflush (stderr) here. */ ! fflush (stderr); while (to_write > 0) { *************** *** 6494,6509 **** size_t written; size_t to_write = len; const char *p = str; - - /* For symmetry with cvs_outerr we would call fflush (stderr) - here. I guess the assumption is that stderr will be - unbuffered, so we don't need to. That sounds like a sound - assumption from the manpage I looked at, but if there was - something fishy about it, my guess is that calling fflush - would not produce a significant performance problem. */ #ifdef USE_SETMODE_STDOUT int oldmode; /* It is possible that this should be the same ifdef as USE_SETMODE_BINARY but at least for the moment we keep them separate. Mostly this is just laziness and/or a question --- 6502,6517 ---- size_t written; size_t to_write = len; const char *p = str; #ifdef USE_SETMODE_STDOUT int oldmode; + #endif + /* Local users that do 'cvs status 2>&1' on a local repository + may see the informational messages out-of-order with the + status messages unless we use the fflush (stderr) here. */ + fflush (stderr); + + #ifdef USE_SETMODE_STDOUT /* It is possible that this should be the same ifdef as USE_SETMODE_BINARY but at least for the moment we keep them separate. Mostly this is just laziness and/or a question Index: src/gnu/dist/cvs/src/server.h diff -c src/gnu/dist/cvs/src/server.h:1.1.1.3.2.1 src/gnu/dist/cvs/src/server.h:1.1.1.3.2.2 *** src/gnu/dist/cvs/src/server.h:1.1.1.3.2.1 Thu May 20 04:30:54 2004 --- src/gnu/dist/cvs/src/server.h Wed Jul 6 20:12:39 2005 *************** *** 1,8 **** /* ! * Copyright (c) 2003 The Free Software Foundation. * ! * Portions Copyright (c) 2003 Derek Price ! * and Ximbiot , * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS kit. --- 1,8 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS kit. Index: src/gnu/dist/cvs/src/stack.c diff -c src/gnu/dist/cvs/src/stack.c:1.1.1.1.2.1 src/gnu/dist/cvs/src/stack.c:1.1.1.1.2.2 *** src/gnu/dist/cvs/src/stack.c:1.1.1.1.2.1 Thu May 20 04:30:54 2004 --- src/gnu/dist/cvs/src/stack.c Wed Jul 6 20:12:39 2005 *************** *** 1,7 **** /* ! * Copyright (c) 2004, Free Software Foundation, ! * Derek Price, ! * & Ximbiot . * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,8 ---- /* ! * Copyright (C) 2004-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 2004-2005 Derek Price, Ximbiot , ! * and others. * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/stack.h diff -c src/gnu/dist/cvs/src/stack.h:1.1.1.1.2.1 src/gnu/dist/cvs/src/stack.h:1.1.1.1.2.2 *** src/gnu/dist/cvs/src/stack.h:1.1.1.1.2.1 Thu May 20 04:30:54 2004 --- src/gnu/dist/cvs/src/stack.h Wed Jul 6 20:12:39 2005 *************** *** 1,7 **** /* ! * Copyright (c) 2004, Free Software Foundation, ! * Derek Price, ! * & Ximbiot . * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,6 ---- /* ! * Copyright (c) 2004-2005 The Free Software Foundation, ! * Derek Price, and Ximbiot . * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/status.c diff -c src/gnu/dist/cvs/src/status.c:1.1.1.4.2.1 src/gnu/dist/cvs/src/status.c:1.1.1.4.2.2 *** src/gnu/dist/cvs/src/status.c:1.1.1.4.2.1 Thu May 20 04:30:54 2004 --- src/gnu/dist/cvs/src/status.c Wed Jul 6 20:12:39 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/subr.c diff -c src/gnu/dist/cvs/src/subr.c:1.3.2.2 src/gnu/dist/cvs/src/subr.c:1.3.2.3 *** src/gnu/dist/cvs/src/subr.c:1.3.2.2 Fri Jul 23 08:03:05 2004 --- src/gnu/dist/cvs/src/subr.c Wed Jul 6 20:12:40 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/tag.c diff -c src/gnu/dist/cvs/src/tag.c:1.6.2.1 src/gnu/dist/cvs/src/tag.c:1.6.2.2 *** src/gnu/dist/cvs/src/tag.c:1.6.2.1 Thu May 20 04:30:54 2004 --- src/gnu/dist/cvs/src/tag.c Wed Jul 6 20:12:40 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 352,357 **** --- 357,363 ---- { error (0, errno, "cannot chdir to %s", repository); free (repository); + free (where); return (1); } /* End section which is identical to patch_proc. */ *************** *** 1199,1204 **** --- 1205,1215 ---- || strcmp (name, TAG_HEAD) == 0) return; + /* Verify that the tag is valid syntactically. Some later code once made + * assumptions about this. + */ + RCS_check_tag (name); + /* FIXME: This routine doesn't seem to do any locking whatsoever (and it is called from places which don't have locks in place). If two processes try to write val-tags at the same time, it would Index: src/gnu/dist/cvs/src/update.c diff -c src/gnu/dist/cvs/src/update.c:1.9.2.1 src/gnu/dist/cvs/src/update.c:1.9.2.2 *** src/gnu/dist/cvs/src/update.c:1.9.2.1 Thu May 20 04:30:54 2004 --- src/gnu/dist/cvs/src/update.c Wed Jul 6 20:12:40 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. *************** *** 34,39 **** --- 39,45 ---- */ #include "cvs.h" + #include #include "savecwd.h" #ifdef SERVER_SUPPORT # include "md5.h" *************** *** 195,200 **** --- 201,207 ---- tag = optarg; break; case 'D': + if (date) free (date); date = Make_Date (optarg); break; case 'P': *************** *** 1339,1345 **** --- 1346,1354 ---- for us to stat. */ if (stat (vers_ts->srcfile->path, &sb) < 0) { + #if defined (SERVER_SUPPORT) || defined (CLIENT_SUPPORT) buf_free (revbuf); + #endif /* defined (SERVER_SUPPORT) || defined (CLIENT_SUPPORT) */ error (1, errno, "cannot stat %s", vers_ts->srcfile->path); } *************** *** 1513,1520 **** --- 1522,1531 ---- free (backup); } + #if defined (SERVER_SUPPORT) || defined (CLIENT_SUPPORT) if (revbuf != NULL) buf_free (revbuf); + #endif /* defined (SERVER_SUPPORT) || defined (CLIENT_SUPPORT) */ return retval; } *************** *** 1937,1942 **** --- 1948,1955 ---- int retcode = 0; int retval; + assert (vers->vn_user); + /* * The users currently modified file is moved to a backup file name * ".#filename.version", so that it will stay around for a few days Index: src/gnu/dist/cvs/src/vers_ts.c diff -c src/gnu/dist/cvs/src/vers_ts.c:1.1.1.5.2.1 src/gnu/dist/cvs/src/vers_ts.c:1.1.1.5.2.2 *** src/gnu/dist/cvs/src/vers_ts.c:1.1.1.5.2.1 Thu May 20 04:30:54 2004 --- src/gnu/dist/cvs/src/vers_ts.c Wed Jul 6 20:12:40 2005 *************** *** 1,6 **** /* ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. --- 1,11 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with the CVS source distribution. Index: src/gnu/dist/cvs/src/version.c diff -c src/gnu/dist/cvs/src/version.c:1.1.1.4 src/gnu/dist/cvs/src/version.c:1.1.1.4.2.1 *** src/gnu/dist/cvs/src/version.c:1.1.1.4 Thu Jan 16 02:15:48 2003 --- src/gnu/dist/cvs/src/version.c Wed Jul 6 20:12:40 2005 *************** *** 1,8 **** /* ! * Copyright (c) 1994 david d `zoo' zuhn ! * Copyright (c) 1994 Free Software Foundation, Inc. ! * Copyright (c) 1992, Brian Berliner and Jeff Polk ! * Copyright (c) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with this CVS source distribution. --- 1,12 ---- /* ! * Copyright (C) 1986-2005 The Free Software Foundation, Inc. ! * ! * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot , ! * and others. ! * ! * Portions Copyright (C) 1994 david d `zoo' zuhn ! * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk ! * Portions Copyright (C) 1989-1992, Brian Berliner * * You may distribute under the terms of the GNU General Public License as * specified in the README file that comes with this CVS source distribution. Index: src/gnu/dist/cvs/src/wrapper.c diff -c src/gnu/dist/cvs/src/wrapper.c:1.1.1.4.2.1 src/gnu/dist/cvs/src/wrapper.c:1.1.1.4.2.2 *** src/gnu/dist/cvs/src/wrapper.c:1.1.1.4.2.1 Fri Jul 23 08:03:05 2004 --- src/gnu/dist/cvs/src/wrapper.c Wed Jul 6 20:12:40 2005 *************** *** 240,245 **** --- 240,246 ---- * Remove fmt str specifier other than %% or %s. And allow * only max_s %s specifiers */ + void wrap_clean_fmt_str(char *fmt, int max_s) { while (*fmt) { *************** *** 257,263 **** } fmt++; } - return; } /* --- 258,263 ---- Index: src/gnu/usr.bin/cvs/cvs/Makefile diff -c src/gnu/usr.bin/cvs/cvs/Makefile:1.11.2.1 src/gnu/usr.bin/cvs/cvs/Makefile:1.11.2.2 *** src/gnu/usr.bin/cvs/cvs/Makefile:1.11.2.1 Thu May 20 20:24:15 2004 --- src/gnu/usr.bin/cvs/cvs/Makefile Wed Jul 6 20:12:40 2005 *************** *** 1,4 **** ! # $NetBSD: Makefile,v 1.11.2.1 2004/05/20 20:24:15 jmc Exp $ .include "${.CURDIR}/../Makefile.inc" --- 1,4 ---- ! # $NetBSD: Makefile,v 1.11.2.2 2005/07/06 20:12:40 snj Exp $ .include "${.CURDIR}/../Makefile.inc" *************** *** 21,36 **** DPADD+= ${LIBDIFF} ${LIBCVS} ${LIBCRYPT} ${LIBZ} LDADD+= ${LIBDIFF} ${LIBCVS} -lcrypt -lz ! .if (${USE_KERBEROS} != "no") ! .if (${USE_KERBEROS4} != "no") CPPFLAGS+= -DHAVE_KERBEROS -I${DESTDIR}/usr/include/kerberosIV DPADD+= ${LIBKRB} ${LIBDES} LDADD+= -lkrb -ldes .endif CPPFLAGS+= -DHAVE_GSSAPI -I${DESTDIR}/usr/include/krb5 ! DPADD+= ${LIBGSSAPI} ${LIBKRB5} ${LIBASN1} ${LIBCRYPTO} ! LDADD+= -lgssapi -lkrb5 -lasn1 -lcrypto CPPFLAGS+= -DENCRYPTION DPADD+= ${LIBCOM_ERR} ${LIBROKEN} ${LIBCRYPT} --- 21,36 ---- DPADD+= ${LIBDIFF} ${LIBCVS} ${LIBCRYPT} ${LIBZ} LDADD+= ${LIBDIFF} ${LIBCVS} -lcrypt -lz ! .if defined(USE_KERBEROS) && (${USE_KERBEROS} != "no") ! .if defined(USE_KERBEROS4) && (${USE_KERBEROS4} != "no") CPPFLAGS+= -DHAVE_KERBEROS -I${DESTDIR}/usr/include/kerberosIV DPADD+= ${LIBKRB} ${LIBDES} LDADD+= -lkrb -ldes .endif CPPFLAGS+= -DHAVE_GSSAPI -I${DESTDIR}/usr/include/krb5 ! DPADD+= ${LIBGSSAPI} ${LIBKRB5} ${LIBASN1} ${LIBCRYPTO} ${LIBCRYPT} ! LDADD+= -lgssapi -lkrb5 -lasn1 -lcrypto -lcrypt CPPFLAGS+= -DENCRYPTION DPADD+= ${LIBCOM_ERR} ${LIBROKEN} ${LIBCRYPT} Index: src/gnu/usr.bin/cvs/include/config.h diff -c src/gnu/usr.bin/cvs/include/config.h:1.9.2.2 src/gnu/usr.bin/cvs/include/config.h:1.9.2.3 *** src/gnu/usr.bin/cvs/include/config.h:1.9.2.2 Fri Jul 23 08:03:05 2004 --- src/gnu/usr.bin/cvs/include/config.h Wed Jul 6 20:12:40 2005 *************** *** 396,408 **** #define PACKAGE_NAME "Concurrent Versions System (CVS)" /* Define to the full name and version of this package. */ ! #define PACKAGE_STRING "Concurrent Versions System (CVS) 1.11.17" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "cvs" /* Define to the version of this package. */ ! #define PACKAGE_VERSION "1.11.17" /* Path to the pr utility */ #define PR_PROGRAM "/usr/bin/pr" --- 396,408 ---- #define PACKAGE_NAME "Concurrent Versions System (CVS)" /* Define to the full name and version of this package. */ ! #define PACKAGE_STRING "Concurrent Versions System (CVS) 1.11.20" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "cvs" /* Define to the version of this package. */ ! #define PACKAGE_VERSION "1.11.20" /* Path to the pr utility */ #define PR_PROGRAM "/usr/bin/pr" Index: src/gnu/usr.bin/cvs/libcvs/Makefile diff -c src/gnu/usr.bin/cvs/libcvs/Makefile:1.5 src/gnu/usr.bin/cvs/libcvs/Makefile:1.5.2.2 *** src/gnu/usr.bin/cvs/libcvs/Makefile:1.5 Thu Sep 19 03:09:34 2002 --- src/gnu/usr.bin/cvs/libcvs/Makefile Thu Jul 7 14:20:35 2005 *************** *** 1,4 **** ! # $NetBSD: Makefile,v 1.5 2002/09/19 03:09:34 lukem Exp $ NOLINT= # defined NOPIC= # defined --- 1,4 ---- ! # $NetBSD: Makefile,v 1.5.2.2 2005/07/07 14:20:35 snj Exp $ NOLINT= # defined NOPIC= # defined *************** *** 11,17 **** DIST= ${IDIST}/lib .PATH: ${DIST} ! SRCS= argmatch.c dup2.c getdate.y getline.c getopt.c getopt1.c \ md5.c regex.c savecwd.c sighandle.c stripslash.c xgetwd.c \ yesno.c --- 11,17 ---- DIST= ${IDIST}/lib .PATH: ${DIST} ! SRCS= argmatch.c getdate.y getline.c getopt.c getopt1.c \ md5.c regex.c savecwd.c sighandle.c stripslash.c xgetwd.c \ yesno.c Index: src/gnu/usr.bin/cvs/libdiff/Makefile diff -c src/gnu/usr.bin/cvs/libdiff/Makefile:1.4 src/gnu/usr.bin/cvs/libdiff/Makefile:1.4.4.2 *** src/gnu/usr.bin/cvs/libdiff/Makefile:1.4 Wed Dec 12 23:46:45 2001 --- src/gnu/usr.bin/cvs/libdiff/Makefile Thu Jul 7 14:20:35 2005 *************** *** 1,4 **** ! # $NetBSD: Makefile,v 1.4 2001/12/12 23:46:45 lukem Exp $ NOLINT= # defined NOPIC= # defined --- 1,4 ---- ! # $NetBSD: Makefile,v 1.4.4.2 2005/07/07 14:20:35 snj Exp $ NOLINT= # defined NOPIC= # defined Index: src/gnu/usr.bin/cvs/rcs2log/Makefile diff -c src/gnu/usr.bin/cvs/rcs2log/Makefile:1.6 src/gnu/usr.bin/cvs/rcs2log/Makefile:1.6.4.1 *** src/gnu/usr.bin/cvs/rcs2log/Makefile:1.6 Wed Dec 12 23:53:31 2001 --- src/gnu/usr.bin/cvs/rcs2log/Makefile Wed Jul 6 20:12:40 2005 *************** *** 1,10 **** ! # $NetBSD: Makefile,v 1.6 2001/12/12 23:53:31 lukem Exp $ NOMAN= # defined .include "${.CURDIR}/../Makefile.inc" ! SCRIPTS= rcs2log.sh DIST=${IDIST}/contrib .PATH: ${DIST} --- 1,15 ---- ! # $NetBSD: Makefile,v 1.6.4.1 2005/07/06 20:12:40 snj Exp $ NOMAN= # defined .include "${.CURDIR}/../Makefile.inc" ! SCRIPTS= rcs2log ! CLEANFILES= ${SCRIPTS} ! ! rcs2log: rcs2log.sh ! sed -e "s/@MKTEMP_SH_FUNCTION@//" -e "s/@MKTEMP@/mktemp/" \ ! ${.ALLSRC} > ${.TARGET} DIST=${IDIST}/contrib .PATH: ${DIST} Index: src/gnu/usr.bin/groff/tmac/mdoc.local diff -c src/gnu/usr.bin/groff/tmac/mdoc.local:1.13.2.5 src/gnu/usr.bin/groff/tmac/mdoc.local:1.13.2.10 *** src/gnu/usr.bin/groff/tmac/mdoc.local:1.13.2.5 Mon Nov 29 06:24:21 2004 --- src/gnu/usr.bin/groff/tmac/mdoc.local Sat Oct 29 23:38:00 2005 *************** *** 1,4 **** ! .\" $NetBSD: mdoc.local,v 1.13.2.5 2004/11/29 06:24:21 jmc Exp $ .\" .\" Copyright (c) 2003 The NetBSD Foundation, Inc. .\" All rights reserved. --- 1,4 ---- ! .\" $NetBSD: mdoc.local,v 1.13.2.10 2005/10/29 23:38:00 jmc Exp $ .\" .\" Copyright (c) 2003 The NetBSD Foundation, Inc. .\" All rights reserved. *************** *** 133,139 **** .as doc-str-St--ieee1275-94 " (\*[Lq]\*[doc-Tn-font-size]Open Firmware\*[doc-str-St]\*[Rq]) . .\" Default .Os value ! .ds doc-operating-system NetBSD\~2.0 .\" Other known versions, not yet in groff distribution .ds doc-operating-system-NetBSD-1.4.1 1.4.1 .ds doc-operating-system-NetBSD-1.4.2 1.4.2 --- 133,139 ---- .as doc-str-St--ieee1275-94 " (\*[Lq]\*[doc-Tn-font-size]Open Firmware\*[doc-str-St]\*[Rq]) . .\" Default .Os value ! .ds doc-operating-system NetBSD\~2.0.3 .\" Other known versions, not yet in groff distribution .ds doc-operating-system-NetBSD-1.4.1 1.4.1 .ds doc-operating-system-NetBSD-1.4.2 1.4.2 *************** *** 143,149 **** --- 143,153 ---- .ds doc-operating-system-NetBSD-1.5.3 1.5.3 .ds doc-operating-system-NetBSD-1.6.1 1.6.1 .ds doc-operating-system-NetBSD-1.6.2 1.6.2 + .ds doc-operating-system-NetBSD-1.6.3 1.6.3 .ds doc-operating-system-NetBSD-2.0 2.0 + .ds doc-operating-system-NetBSD-2.0.1 2.0.1 + .ds doc-operating-system-NetBSD-2.0.2 2.0.2 + .ds doc-operating-system-NetBSD-2.0.3 2.0.3 .ds doc-operating-system-NetBSD-2.1 2.1 .ds doc-operating-system-NetBSD-3.0 3.0 .ds doc-operating-system-FreeBSD-5.2 5.2 Index: src/gnu/usr.sbin/Makefile diff -c src/gnu/usr.sbin/Makefile:1.13 src/gnu/usr.sbin/Makefile:1.13.2.1 *** src/gnu/usr.sbin/Makefile:1.13 Tue Jan 6 02:10:43 2004 --- src/gnu/usr.sbin/Makefile Fri Oct 28 23:32:05 2005 *************** *** 1,12 **** ! # $NetBSD: Makefile,v 1.13 2004/01/06 02:10:43 lukem Exp $ .include ! SUBDIR= dbsym mdsetimage ! ! .if ${MACHINE} == "ibmnws" ! SUBDIR+= ncdcs ! .endif .if ${MKPOSTFIX} != "no" SUBDIR+= postfix --- 1,8 ---- ! # $NetBSD: Makefile,v 1.13.2.1 2005/10/28 23:32:05 riz Exp $ .include ! SUBDIR= dbsym mdsetimage ncdcs .if ${MKPOSTFIX} != "no" SUBDIR+= postfix Index: src/lib/libc/arch/sparc64/gen/_setjmp.S diff -c src/lib/libc/arch/sparc64/gen/_setjmp.S:1.5 src/lib/libc/arch/sparc64/gen/_setjmp.S:1.5.2.1 *** src/lib/libc/arch/sparc64/gen/_setjmp.S:1.5 Thu Aug 7 16:42:27 2003 --- src/lib/libc/arch/sparc64/gen/_setjmp.S Fri Jan 7 14:40:49 2005 *************** *** 1,4 **** ! /* $NetBSD: _setjmp.S,v 1.5 2003/08/07 16:42:27 agc Exp $ */ /* * Copyright (c) 1992, 1993 --- 1,4 ---- ! /* $NetBSD: _setjmp.S,v 1.5.2.1 2005/01/07 14:40:49 jdc Exp $ */ /* * Copyright (c) 1992, 1993 *************** *** 40,46 **** #if 0 .asciz "@(#)_setjmp.s 8.1 (Berkeley) 6/4/93" #else ! RCSID("$NetBSD: _setjmp.S,v 1.5 2003/08/07 16:42:27 agc Exp $") #endif #endif /* LIBC_SCCS and not lint */ --- 40,46 ---- #if 0 .asciz "@(#)_setjmp.s 8.1 (Berkeley) 6/4/93" #else ! RCSID("$NetBSD: _setjmp.S,v 1.5.2.1 2005/01/07 14:40:49 jdc Exp $") #endif #endif /* LIBC_SCCS and not lint */ *************** *** 51,91 **** * will generate a "return(v?v:1)" from * the last call to * _setjmp(a) - * by unwinding the call stack. * The previous signal state is NOT restored. */ ENTRY(_setjmp) ! stx %sp, [%o0+0x00] /* store caller's stack pointer */ ! stx %o7, [%o0+0x08] /* ... return pc */ ! stx %fp, [%o0+0x10] /* ... and frame pointer */ retl clr %o0 ! return 0 ENTRY(_longjmp) ! mov 1, %g6 ! movrnz %o1, %o1, %g6 ! compute v ? v : 1 in a global register ! mov %o0, %g1 ! save a in another global register ! ldx [%g1+0x10], %g7 /* get caller's frame */ ! 1: ! cmp %fp, %g7 ! compare against desired frame ! bl,a 1b ! if below, ! restore ! pop frame and loop ! be,a 2f ! if there, ! ldx [%g1+0], %o2 ! fetch return %sp ! ! Lbotch: ! call _C_LABEL(longjmperror) ! otherwise, went too far; bomb out ! nop ! unimp 0 ! ! 2: ! cmp %o2, %sp ! %sp must not decrease ! bge,a 3f ! mov %o2, %sp ! it is OK, put it in place ! b,a Lbotch ! 3: ! ldx [%g1+0x8], %o3 ! fetch pc ! jmp %o3 + 8 ! success, return %g6 ! mov %g6, %o0 ! --- 51,76 ---- * will generate a "return(v?v:1)" from * the last call to * _setjmp(a) * The previous signal state is NOT restored. */ ENTRY(_setjmp) ! stx %sp, [%o0+0] /* store caller's stack pointer */ ! stx %o7, [%o0+8] /* and return pc */ retl clr %o0 ! return 0 ENTRY(_longjmp) ! save %sp, -CC64FSZ, %sp ! flushw ! /* ! * We restore the saved stack pointer to %fp, then issue ! * a `restore' instruction which will reload the register ! * window from the stack. ! */ ! ldx [%i0+8], %i7 ! ldx [%i0+0], %fp ! mov 1, %i0 ! movrnz %i1, %i1, %i0 ! compute v ? v : 1 ! ret ! restore Index: src/lib/libc/arch/x86_64/gen/swapcontext.S diff -c src/lib/libc/arch/x86_64/gen/swapcontext.S:1.2 src/lib/libc/arch/x86_64/gen/swapcontext.S:1.2.2.1 *** src/lib/libc/arch/x86_64/gen/swapcontext.S:1.2 Mon Apr 7 21:04:23 2003 --- src/lib/libc/arch/x86_64/gen/swapcontext.S Fri Jan 7 15:00:10 2005 *************** *** 1,4 **** ! /* $NetBSD: swapcontext.S,v 1.2 2003/04/07 21:04:23 kleink Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. --- 1,4 ---- ! /* $NetBSD: swapcontext.S,v 1.2.2.1 2005/01/07 15:00:10 jdc Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. *************** *** 38,44 **** #include #if defined(LIBC_SCCS) && !defined(lint) ! RCSID("$NetBSD: swapcontext.S,v 1.2 2003/04/07 21:04:23 kleink Exp $") #endif /* LIBC_SCCS && !lint */ /* --- 38,44 ---- #include #if defined(LIBC_SCCS) && !defined(lint) ! RCSID("$NetBSD: swapcontext.S,v 1.2.2.1 2005/01/07 15:00:10 jdc Exp $") #endif /* LIBC_SCCS && !lint */ /* *************** *** 59,67 **** #endif testl %eax,%eax jnz 2f ! movq (%rsp),%r11 movq %r11,(56 + 21 * 8)(%r12) ! leaq 8(%rsp),%r11 movq %r11,(56 + 24 * 8)(%r12) movq %r13,%rdi #ifdef PIC --- 59,67 ---- #endif testl %eax,%eax jnz 2f ! movq 16(%rsp),%r11 movq %r11,(56 + 21 * 8)(%r12) ! leaq 24(%rsp),%r11 movq %r11,(56 + 24 * 8)(%r12) movq %r13,%rdi #ifdef PIC Index: src/lib/libpthread/pthread.3 diff -c src/lib/libpthread/pthread.3:1.3 src/lib/libpthread/pthread.3:1.3.2.1 *** src/lib/libpthread/pthread.3:1.3 Thu Nov 27 16:30:54 2003 --- src/lib/libpthread/pthread.3 Thu Mar 17 10:28:37 2005 *************** *** 1,4 **** ! .\" $NetBSD: pthread.3,v 1.3 2003/11/27 16:30:54 cl Exp $ .\" .\" Copyright (c) 2003 Hubert Feyrer .\" and Thomas Klausner --- 1,4 ---- ! .\" $NetBSD: pthread.3,v 1.3.2.1 2005/03/17 10:28:37 tron Exp $ .\" .\" Copyright (c) 2003 Hubert Feyrer .\" and Thomas Klausner *************** *** 27,33 **** .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" ! .Dd November 27, 2003 .Dt PTHREAD 3 .Os .Sh NAME --- 27,33 ---- .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" ! .Dd February 1, 2005 .Dt PTHREAD 3 .Os .Sh NAME *************** *** 54,59 **** --- 54,63 ---- kernel, providing a kernel-supported MxN scheduling system. .Sh ENVIRONMENT .Bl -tag -width PTHREAD_DEBUGCOUNTERSXX -compact + .It Ev PTHREAD_CONCURRENCY + The number of concurrent threads to be run. + This value should at least be 1, + and smaller than or equal to the number of CPUs. .It Ev PTHREAD_DIAGASSERT Possible values are any combinations of: .Bl -tag -width ignoreXX -offset indent -compact Index: src/lib/libz/inftrees.c diff -c src/lib/libz/inftrees.c:1.9 src/lib/libz/inftrees.c:1.9.2.1 *** src/lib/libz/inftrees.c:1.9 Tue Mar 18 19:53:16 2003 --- src/lib/libz/inftrees.c Fri Aug 5 20:22:04 2005 *************** *** 1,4 **** ! /* $NetBSD: inftrees.c,v 1.9 2003/03/18 19:53:16 mycroft Exp $ */ /* inftrees.c -- generate Huffman trees for efficient decoding * Copyright (C) 1995-2002 Mark Adler --- 1,4 ---- ! /* $NetBSD: inftrees.c,v 1.9.2.1 2005/08/05 20:22:04 snj Exp $ */ /* inftrees.c -- generate Huffman trees for efficient decoding * Copyright (C) 1995-2002 Mark Adler *************** *** 6,12 **** */ #include ! __RCSID("$NetBSD: inftrees.c,v 1.9 2003/03/18 19:53:16 mycroft Exp $"); #include "zutil.h" #include "inftrees.h" --- 6,12 ---- */ #include ! __RCSID("$NetBSD: inftrees.c,v 1.9.2.1 2005/08/05 20:22:04 snj Exp $"); #include "zutil.h" #include "inftrees.h" *************** *** 147,153 **** { *t = (inflate_huft *)Z_NULL; *m = 0; ! return Z_OK; } --- 147,153 ---- { *t = (inflate_huft *)Z_NULL; *m = 0; ! return Z_NEED_DICT; } Index: src/libexec/telnetd/ext.h diff -c src/libexec/telnetd/ext.h:1.18 src/libexec/telnetd/ext.h:1.18.2.1 *** src/libexec/telnetd/ext.h:1.18 Thu Aug 7 09:46:51 2003 --- src/libexec/telnetd/ext.h Fri Jul 1 15:15:02 2005 *************** *** 1,4 **** ! /* $NetBSD: ext.h,v 1.18 2003/08/07 09:46:51 agc Exp $ */ /* * Copyright (c) 1989, 1993 --- 1,4 ---- ! /* $NetBSD: ext.h,v 1.18.2.1 2005/07/01 15:15:02 tron Exp $ */ /* * Copyright (c) 1989, 1993 *************** *** 60,66 **** #endif extern slcfun slctab[NSLC + 1]; /* slc mapping table */ ! extern char *terminaltype; /* * I/O data buffers, pointers, and counters. --- 60,66 ---- #endif extern slcfun slctab[NSLC + 1]; /* slc mapping table */ ! extern char terminaltype[41]; /* * I/O data buffers, pointers, and counters. Index: src/libexec/telnetd/state.c diff -c src/libexec/telnetd/state.c:1.24 src/libexec/telnetd/state.c:1.24.2.1 *** src/libexec/telnetd/state.c:1.24 Thu Aug 7 09:46:51 2003 --- src/libexec/telnetd/state.c Fri Jul 1 15:15:02 2005 *************** *** 1,4 **** ! /* $NetBSD: state.c,v 1.24 2003/08/07 09:46:51 agc Exp $ */ /* * Copyright (c) 1989, 1993 --- 1,4 ---- ! /* $NetBSD: state.c,v 1.24.2.1 2005/07/01 15:15:02 tron Exp $ */ /* * Copyright (c) 1989, 1993 *************** *** 34,40 **** #if 0 static char sccsid[] = "@(#)state.c 8.5 (Berkeley) 5/30/95"; #else ! __RCSID("$NetBSD: state.c,v 1.24 2003/08/07 09:46:51 agc Exp $"); #endif #endif /* not lint */ --- 34,40 ---- #if 0 static char sccsid[] = "@(#)state.c 8.5 (Berkeley) 5/30/95"; #else ! __RCSID("$NetBSD: state.c,v 1.24.2.1 2005/07/01 15:15:02 tron Exp $"); #endif #endif /* not lint */ *************** *** 1149,1155 **** } /* end of case TELOPT_TSPEED */ case TELOPT_TTYPE: { /* Yaaaay! */ ! static char terminalname[41]; if (his_state_is_wont(TELOPT_TTYPE)) /* Ignore if option disabled */ break; --- 1149,1155 ---- } /* end of case TELOPT_TSPEED */ case TELOPT_TTYPE: { /* Yaaaay! */ ! char *p; if (his_state_is_wont(TELOPT_TTYPE)) /* Ignore if option disabled */ break; *************** *** 1159,1167 **** return; /* ??? XXX but, this is the most robust */ } ! terminaltype = terminalname; ! while ((terminaltype < (terminalname + sizeof terminalname-1)) && !SB_EOF()) { register int c; --- 1159,1167 ---- return; /* ??? XXX but, this is the most robust */ } ! p = terminaltype; ! while ((p < (terminaltype + sizeof terminaltype-1)) && !SB_EOF()) { register int c; *************** *** 1169,1178 **** if (isupper(c)) { c = tolower(c); } ! *terminaltype++ = c; /* accumulate name */ } ! *terminaltype = 0; ! terminaltype = terminalname; break; } /* end of case TELOPT_TTYPE */ --- 1169,1177 ---- if (isupper(c)) { c = tolower(c); } ! *p++ = c; /* accumulate name */ } ! *p = 0; break; } /* end of case TELOPT_TTYPE */ Index: src/libexec/telnetd/telnetd.c diff -c src/libexec/telnetd/telnetd.c:1.43 src/libexec/telnetd/telnetd.c:1.43.2.1 *** src/libexec/telnetd/telnetd.c:1.43 Thu Aug 7 09:46:52 2003 --- src/libexec/telnetd/telnetd.c Fri Jul 1 15:15:02 2005 *************** *** 1,4 **** ! /* $NetBSD: telnetd.c,v 1.43 2003/08/07 09:46:52 agc Exp $ */ /* * Copyright (C) 1997 and 1998 WIDE Project. --- 1,4 ---- ! /* $NetBSD: telnetd.c,v 1.43.2.1 2005/07/01 15:15:02 tron Exp $ */ /* * Copyright (C) 1997 and 1998 WIDE Project. *************** *** 65,71 **** #if 0 static char sccsid[] = "@(#)telnetd.c 8.4 (Berkeley) 5/30/95"; #else ! __RCSID("$NetBSD: telnetd.c,v 1.43 2003/08/07 09:46:52 agc Exp $"); #endif #endif /* not lint */ --- 65,71 ---- #if 0 static char sccsid[] = "@(#)telnetd.c 8.4 (Berkeley) 5/30/95"; #else ! __RCSID("$NetBSD: telnetd.c,v 1.43.2.1 2005/07/01 15:15:02 tron Exp $"); #endif #endif /* not lint */ *************** *** 620,626 **** */ _gettermname(); if (strncmp(first, terminaltype, sizeof(first)) != 0) { ! (void) strlcpy(terminaltype, first, sizeof(first)); } break; } --- 620,626 ---- */ _gettermname(); if (strncmp(first, terminaltype, sizeof(first)) != 0) { ! (void) strlcpy(terminaltype, first, sizeof(terminaltype)); } break; } *************** *** 727,733 **** */ *user_name = 0; level = getterminaltype(user_name, sizeof(user_name)); ! setenv("TERM", terminaltype ? terminaltype : "network", 1); /* * Start up the login process on the slave side of the terminal --- 727,733 ---- */ *user_name = 0; level = getterminaltype(user_name, sizeof(user_name)); ! setenv("TERM", terminaltype[0] ? terminaltype : "network", 1); /* * Start up the login process on the slave side of the terminal Index: src/share/man/man4/Makefile diff -c src/share/man/man4/Makefile:1.313.2.5 src/share/man/man4/Makefile:1.313.2.7 *** src/share/man/man4/Makefile:1.313.2.5 Mon Aug 30 09:46:53 2004 --- src/share/man/man4/Makefile Thu Apr 7 09:15:55 2005 *************** *** 1,4 **** ! # $NetBSD: Makefile,v 1.313.2.5 2004/08/30 09:46:53 tron Exp $ # @(#)Makefile 8.1 (Berkeley) 6/18/93 MAN= aac.4 acardide.4 aceride.4 acphy.4 adc.4 adv.4 \ --- 1,4 ---- ! # $NetBSD: Makefile,v 1.313.2.7 2005/04/07 09:15:55 tron Exp $ # @(#)Makefile 8.1 (Berkeley) 6/18/93 MAN= aac.4 acardide.4 aceride.4 acphy.4 adc.4 adv.4 \ Index: src/share/man/man4/fast_ipsec.4 diff -c src/share/man/man4/fast_ipsec.4:1.1.2.1 src/share/man/man4/fast_ipsec.4:1.1.2.2 *** src/share/man/man4/fast_ipsec.4:1.1.2.1 Fri Apr 30 04:05:24 2004 --- src/share/man/man4/fast_ipsec.4 Fri Oct 28 23:20:22 2005 *************** *** 1,4 **** ! .\" $NetBSD: fast_ipsec.4,v 1.1.2.1 2004/04/30 04:05:24 jmc Exp $ .\" $FreeBSD: fast_ipsec.4,v 1.2 2003/03/03 11:51:30 ru Exp $ .\" .\" Copyright (c) 2004 --- 1,4 ---- ! .\" $NetBSD: fast_ipsec.4,v 1.1.2.2 2005/10/28 23:20:22 riz Exp $ .\" $FreeBSD: fast_ipsec.4,v 1.2 2003/03/03 11:51:30 ru Exp $ .\" .\" Copyright (c) 2004 *************** *** 28,34 **** .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF .\" THE POSSIBILITY OF SUCH DAMAGE. .\" ! .Dd April 25 23, 2004 .Dt FAST_IPSEC 4 .Os .Sh NAME --- 28,34 ---- .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF .\" THE POSSIBILITY OF SUCH DAMAGE. .\" ! .Dd April 25, 2004 .Dt FAST_IPSEC 4 .Os .Sh NAME *************** *** 75,94 **** .Xr sysctl 8 . .Sh DIAGNOSTICS To be added. .Sh BUGS There is presently no support for IPv6. Configuring .Nm in conjunction with INET6 ! is explictly experimental and unsupported. At the time of writing, combining .Nm ! and INET6 in a single kernel is beleived to yield a working IPv6 stack, provided that no IPv6 traffic makes any use whatsoever of .Xr ipsec 4 . Attempting to send or receive ! .Xr ipsec 4 IPv6 traffic to or from such a kernel may trigger kernel panics, or ! may expose the unprotected plaintext of IPv6 traffic which is configured to be secured via .Xr ipsec 4 . Caveat emptor. --- 75,121 ---- .Xr sysctl 8 . .Sh DIAGNOSTICS To be added. + .Sh SEE ALSO + .Xr ipsec 4 , + .Xr setkey 8 , + .Xr sysctl 8 , + .Xr opencrypto 9 + .Sh HISTORY + The protocols draw heavily on the + .Ox + implementation of the + .Tn IPsec + protocols. + The policy management code is derived from the + .Tn KAME + implementation found in their + .Tn IPsec + protocols. + The + .Nm + protocols are based on code which appeared in + .Fx 4.7 . + The + .Nx + version is a close copy of the + .Fx + original, and first appeared in + .Nx 2.0 . .Sh BUGS There is presently no support for IPv6. Configuring .Nm in conjunction with INET6 ! is explictly experimental and unsupported. ! At the time of writing, combining .Nm ! and INET6 in a single kernel is believed to yield a working IPv6 stack, provided that no IPv6 traffic makes any use whatsoever of .Xr ipsec 4 . Attempting to send or receive ! .Xr ipsec 4 IPv6 traffic to or from such a kernel may trigger kernel panics, or ! may expose the unprotected plaintext of IPv6 traffic which is configured to be secured via .Xr ipsec 4 . Caveat emptor. *************** *** 103,129 **** subsystem. .Pp This documentation is incomplete. - .Sh SEE ALSO - .Xr ipsec 4 , - .Xr setkey 8 , - .Xr sysctl 8 , - .Xr opencrypto 9 . - .Sh HISTORY - The protocols draw heavily on the - .Ox - implementation of the - .Tn IPsec - protocols. - The policy management code is derived from the - .Tn KAME - implementation found - in their - .Tn IPsec - protocols. - The - .Nm - protocols are based on code which appeared in - .Fx 4.7 . - The NetBSD version is a close copy of the FreeBSD original, and - first appeared in - .Nx 2.0 . --- 130,132 ---- Index: src/share/man/man4/options.4 diff -c src/share/man/man4/options.4:1.232.2.6 src/share/man/man4/options.4:1.232.2.7 *** src/share/man/man4/options.4:1.232.2.6 Sun Jun 6 06:40:28 2004 --- src/share/man/man4/options.4 Mon Aug 15 05:17:13 2005 *************** *** 1,4 **** ! .\" $NetBSD: options.4,v 1.232.2.6 2004/06/06 06:40:28 jdc Exp $ .\" .\" Copyright (c) 1996 .\" Perry E. Metzger. All rights reserved. --- 1,4 ---- ! .\" $NetBSD: options.4,v 1.232.2.7 2005/08/15 05:17:13 snj Exp $ .\" .\" Copyright (c) 1996 .\" Perry E. Metzger. All rights reserved. *************** *** 1212,1220 **** routine, the .Xr ccd 4 driver, - the - .Xr ncr 4 - driver, and much of the networking code. .It Cd options MAXUPRC=integer Sets the soft --- 1212,1217 ---- Index: src/share/man/man4/ppp.4 diff -c src/share/man/man4/ppp.4:1.9 src/share/man/man4/ppp.4:1.9.2.2 *** src/share/man/man4/ppp.4:1.9 Sun Sep 7 16:22:28 2003 --- src/share/man/man4/ppp.4 Mon Jan 10 16:29:55 2005 *************** *** 1,4 **** ! .\" $NetBSD: ppp.4,v 1.9 2003/09/07 16:22:28 wiz Exp $ .\" .\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. --- 1,4 ---- ! .\" $NetBSD: ppp.4,v 1.9.2.2 2005/01/10 16:29:55 jmc Exp $ .\" .\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. Index: src/share/tmac/doc-common diff -c src/share/tmac/doc-common:1.61.2.7 src/share/tmac/doc-common:1.61.2.10 *** src/share/tmac/doc-common:1.61.2.7 Mon Nov 29 06:24:21 2004 --- src/share/tmac/doc-common Sat Oct 29 23:38:00 2005 *************** *** 1,4 **** ! .\" $NetBSD: doc-common,v 1.61.2.7 2004/11/29 06:24:21 jmc Exp $ .\" .\" Copyright (c) 1991, 1993 .\" The Regents of the University of California. All rights reserved. --- 1,4 ---- ! .\" $NetBSD: doc-common,v 1.61.2.10 2005/10/29 23:38:00 jmc Exp $ .\" .\" Copyright (c) 1991, 1993 .\" The Regents of the University of California. All rights reserved. *************** *** 245,251 **** .de Os .ds oS Null .if "\\$1"" \{\ ! . ds oS NetBSD 2.0 .\} .if "\\$2"" \{\ . ds aa Non-Null --- 245,251 ---- .de Os .ds oS Null .if "\\$1"" \{\ ! . ds oS NetBSD 2.0.3 .\} .if "\\$2"" \{\ . ds aa Non-Null *************** *** 295,300 **** --- 295,303 ---- . if "\\$2"1.5" .as oS \01.5 . if "\\$2"1.6" .as oS \01.6 . if "\\$2"2.0" .as oS \02.0 + . if "\\$2"2.0.1" .as oS \02.0.1 + . if "\\$2"2.0.2" .as oS \02.0.2 + . if "\\$2"2.0.3" .as oS \02.0.3 .\} .if "\\*(oS"Null" .ds oS \0\\$1 .if "\\*(aa"Non-Null" .as oS \0\\$2 Index: src/share/zoneinfo/africa diff -c src/share/zoneinfo/africa:1.1.1.15 src/share/zoneinfo/africa:1.1.1.15.4.1 *** src/share/zoneinfo/africa:1.1.1.15 Fri Nov 30 13:28:39 2001 --- src/share/zoneinfo/africa Tue Sep 6 01:33:43 2005 *************** *** 1,10 **** ! # @(#)africa 7.36 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-03-22): # # A good source for time zone historical data outside the U.S. is # Thomas G. Shanks, The International Atlas (5th edition), --- 1,10 ---- ! # @(#)africa 7.39 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-03-22): # # A good source for time zone historical data outside the U.S. is # Thomas G. Shanks, The International Atlas (5th edition), *************** *** 28,34 **** # # Previous editions of this database used WAT, CAT, SAT, and EAT # for +0:00 through +3:00, respectively, ! # but Mark R V Murray reports that # `SAST' is the official abbreviation for +2:00 in the country of South Africa, # `CAT' is commonly used for +2:00 in countries north of South Africa, and # `WAT' is probably the best name for +1:00, as the common phrase for --- 28,34 ---- # # Previous editions of this database used WAT, CAT, SAT, and EAT # for +0:00 through +3:00, respectively, ! # but Mark R V Murray reports that # `SAST' is the official abbreviation for +2:00 in the country of South Africa, # `CAT' is commonly used for +2:00 in countries north of South Africa, and # `WAT' is probably the best name for +1:00, as the common phrase for *************** *** 287,293 **** 2:00 - SAST # Liberia ! # From Paul Eggert (2001-07-17): # In 1972 Liberia was the last country to switch # from a UTC offset that was not a multiple of 15 or 20 minutes. # Howse reports that it was in honor of their president's birthday. --- 287,293 ---- 2:00 - SAST # Liberia ! # From Paul Eggert (2001-07-17): # In 1972 Liberia was the last country to switch # from a UTC offset that was not a multiple of 15 or 20 minutes. # Howse reports that it was in honor of their president's birthday. *************** *** 317,323 **** Rule Libya 1986 only - Apr 4 0:00 1:00 S Rule Libya 1986 only - Oct 3 0:00 0 - Rule Libya 1987 1989 - Apr 1 0:00 1:00 S ! Rule Libya 1987 1990 - Oct 1 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Tripoli 0:52:44 - LMT 1920 1:00 Libya CE%sT 1959 --- 317,323 ---- Rule Libya 1986 only - Apr 4 0:00 1:00 S Rule Libya 1986 only - Oct 3 0:00 0 - Rule Libya 1987 1989 - Apr 1 0:00 1:00 S ! Rule Libya 1987 1989 - Oct 1 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Tripoli 0:52:44 - LMT 1920 1:00 Libya CE%sT 1959 *************** *** 348,356 **** 0:00 - GMT 1934 Feb 26 -1:00 - WAT 1960 Jun 20 0:00 - GMT - # no longer different from Bamako, but too famous to omit - Zone Africa/Timbuktu -0:12:04 - LMT 1912 - 0:00 - GMT # Mauritania # Zone NAME GMTOFF RULES FORMAT [UNTIL] --- 348,353 ---- *************** *** 557,562 **** --- 554,576 ---- 0:00 - GMT # Tunisia + + # From Gwillim Law (2005-04-30): + # + # My correspondent, Risto Nykanen, has alerted me to another adoption of DST, + # this time in Tunisia. According to Yahoo France News + # , in a story attributed to AP + # and dated 2005-04-26, "Tunisia has decided to advance its official time by + # one hour, starting on Sunday, May 1. Henceforth, Tunisian time will be + # UTC+2 instead of UTC+1. The change will take place at 23:00 UTC next + # Saturday." (My translation) + # + # From Oscar van Vlijmen (2005-05-02): + # LaPresse, the first national daily newspaper ... + # + # ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30, + # 1h standard time. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S Rule Tunisia 1939 only - Nov 18 23:00s 0 - *************** *** 579,584 **** --- 593,600 ---- Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 - Rule Tunisia 1989 only - Mar 26 0:00s 1:00 S Rule Tunisia 1990 only - May 1 0:00s 1:00 S + Rule Tunisia 2005 only - May 1 0:00s 1:00 S + Rule Tunisia 2005 only - Sep 30 1:00s 0 - # Shanks gives 0:09 for Paris Mean Time; go with Howse's more precise 0:09:21. # Shanks says the 1911 switch occurred on Mar 9; go with Howse's Mar 11. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Index: src/share/zoneinfo/antarctica diff -c src/share/zoneinfo/antarctica:1.1.1.11 src/share/zoneinfo/antarctica:1.1.1.11.2.1 *** src/share/zoneinfo/antarctica:1.1.1.11 Mon Apr 7 14:50:38 2003 --- src/share/zoneinfo/antarctica Tue Sep 6 01:33:43 2005 *************** *** 1,4 **** ! # @(#)antarctica 7.23 # From Paul Eggert (1999-11-15): # To keep things manageable, we list only locations occupied year-round; see --- 1,4 ---- ! # @(#)antarctica 7.25 # From Paul Eggert (1999-11-15): # To keep things manageable, we list only locations occupied year-round; see *************** *** 90,108 **** # # Brazil - year-round base ! # Ferraz, King George Island, since 1983/4 # Chile - year-round bases and towns # Escudero, South Shetland Is, -621157-0585735, since 1994 ! # Frei, King George Island, -6214-05848, since 1969-03-07 ! # O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02 ! # Prat, -6230-05941 ! # Villa Las Estrellas (a town), King George Island, since 1984-04-09 # These locations have always used Santiago time; use TZ='America/Santiago'. # China - year-round bases ! # Great Wall, King George Island, since 1985-02-20 ! # Zhongshan, Larsemann Hills, Prydz Bay, since 1989-02-26 # France - year-round bases # --- 90,108 ---- # # Brazil - year-round base ! # Comandante Ferraz, King George Island, -6205+05824, since 1983/4 # Chile - year-round bases and towns # Escudero, South Shetland Is, -621157-0585735, since 1994 ! # Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07 ! # General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02 ! # Capitan Arturo Prat, -6230-05941 ! # Villa Las Estrellas (a town), around the Frei base, since 1984-04-09 # These locations have always used Santiago time; use TZ='America/Santiago'. # China - year-round bases ! # Great Wall, King George Island, -6213-05858, since 1985-02-20 ! # Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26 # France - year-round bases # *************** *** 145,163 **** # Germany - year-round base ! # Georg von Neumayer # India - year-round base ! # Dakshin Gangotri # Japan - year-round bases ! # Dome Fuji ! # Syowa # # From Hideyuki Suzuki (1999-02-06): # In all Japanese stations, +0300 is used as the standard time. [See] # [reference in Japanese] ! # and information from KAMO Hiroyasu . # # Syowa station, which is the first antarctic station of Japan, # was established on 1957-01-29. Since Syowa station is still the main --- 145,163 ---- # Germany - year-round base ! # Georg von Neumayer, -7039-00815 # India - year-round base ! # Dakshin Gangotri, -7005+01200 # Japan - year-round bases ! # Dome Fuji, -7719+03942 ! # Syowa, -690022+0393524 # # From Hideyuki Suzuki (1999-02-06): # In all Japanese stations, +0300 is used as the standard time. [See] # [reference in Japanese] ! # and information from KAMO Hiroyasu. # # Syowa station, which is the first antarctic station of Japan, # was established on 1957-01-29. Since Syowa station is still the main *************** *** 171,177 **** # # S Korea - year-round base ! # King Sejong, King George Island, since 1988 # New Zealand - claims # Balleny Islands (never inhabited) --- 171,177 ---- # # S Korea - year-round base ! # King Sejong, King George Island, -6213-05847, since 1988 # New Zealand - claims # Balleny Islands (never inhabited) *************** *** 202,208 **** # Russia - year-round bases # Bellingshausen, King George Island, -621159-0585337, since 1968-02-22 # Mirny, Davis coast, -6633+09301, since 1956-02 ! # Molodezhnaya, Alasheyev Bay, year-round from 1962-02 to 1999-07-01 # Novolazarevskaya, Queen Maud Land, -7046+01150, # year-round from 1960/61 to 1992 --- 202,209 ---- # Russia - year-round bases # Bellingshausen, King George Island, -621159-0585337, since 1968-02-22 # Mirny, Davis coast, -6633+09301, since 1956-02 ! # Molodezhnaya, Alasheyev Bay, -6740+04551, ! # year-round from 1962-02 to 1999-07-01 # Novolazarevskaya, Queen Maud Land, -7046+01150, # year-round from 1960/61 to 1992 *************** *** 234,241 **** 6:00 - VOST # Vostok time # S Africa - year-round bases ! # Marion Island ! # Sanae # UK # --- 235,242 ---- 6:00 - VOST # Vostok time # S Africa - year-round bases ! # Marion Island, -4653+03752 ! # Sanae, -7141-00250 # UK # *************** *** 270,276 **** # # Palmer, Anvers Island, since 1965 (moved 2 miles in 1968) # ! # From Ethan Dicks (1996-10-06): # It keeps the same time as Punta Arenas, Chile, because, just like us # and the South Pole, that's the other end of their supply line.... # I verified with someone who was there that since 1980, --- 271,277 ---- # # Palmer, Anvers Island, since 1965 (moved 2 miles in 1968) # ! # From Ethan Dicks (1996-10-06): # It keeps the same time as Punta Arenas, Chile, because, just like us # and the South Pole, that's the other end of their supply line.... # I verified with someone who was there that since 1980, Index: src/share/zoneinfo/asia diff -c src/share/zoneinfo/asia:1.1.1.26.2.1 src/share/zoneinfo/asia:1.1.1.26.2.3 *** src/share/zoneinfo/asia:1.1.1.26.2.1 Tue Jun 15 22:09:29 2004 --- src/share/zoneinfo/asia Tue Oct 11 16:48:32 2005 *************** *** 1,10 **** ! # @(#)asia 7.74 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-03-22): # # A good source for time zone historical data outside the U.S. is # Thomas G. Shanks, The International Atlas (5th edition), --- 1,10 ---- ! # @(#)asia 7.86 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-03-22): # # A good source for time zone historical data outside the U.S. is # Thomas G. Shanks, The International Atlas (5th edition), *************** *** 43,50 **** # 8:00 CST China # 9:00 CJT Central Japanese Time (1896/1937)* # 9:00 EIT east Indonesia ! # 9:00 JST Japan ! # 9:00 KST Korea # 9:30 CST (Australian) Central Standard Time # # See the `europe' file for Russia and Turkey in Asia. --- 43,50 ---- # 8:00 CST China # 9:00 CJT Central Japanese Time (1896/1937)* # 9:00 EIT east Indonesia ! # 9:00 JST JDT Japan ! # 9:00 KST KDT Korea # 9:30 CST (Australian) Central Standard Time # # See the `europe' file for Russia and Turkey in Asia. *************** *** 107,113 **** 3:00 - BAKT 1957 Mar # Baku Time 4:00 RussiaAsia BAK%sT 1991 Mar 31 2:00s 3:00 1:00 BAKST 1991 Aug 30 # independence ! 3:00 RussiaAsia AZ%sT 1992 Sep lastSun 2:00s 4:00 - AZT 1996 # Azerbaijan time 4:00 EUAsia AZ%sT 1997 4:00 Azer AZ%sT --- 107,113 ---- 3:00 - BAKT 1957 Mar # Baku Time 4:00 RussiaAsia BAK%sT 1991 Mar 31 2:00s 3:00 1:00 BAKST 1991 Aug 30 # independence ! 3:00 RussiaAsia AZ%sT 1992 Sep lastSat 23:00 4:00 - AZT 1996 # Azerbaijan time 4:00 EUAsia AZ%sT 1997 4:00 Azer AZ%sT *************** *** 137,144 **** # British Indian Ocean Territory # Whitman and the 1995 CIA time zone map say 5:00, but the # 1997 and later maps say 6:00. Assume the switch occurred in 1996. # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Indian/Chagos 5:00 - IOT 1996 # BIOT Time 6:00 - IOT # Brunei --- 137,148 ---- # British Indian Ocean Territory # Whitman and the 1995 CIA time zone map say 5:00, but the # 1997 and later maps say 6:00. Assume the switch occurred in 1996. + # We have no information as to when standard time was introduced; + # assume it occurred in 1907, the same year as Mauritius (which + # then contained the Chagos Archipelago). # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Indian/Chagos 4:49:40 - LMT 1907 ! 5:00 - IOT 1996 # BIOT Time 6:00 - IOT # Brunei *************** *** 186,192 **** # CHINA 8 H AHEAD OF UTC ALL OF CHINA, INCL TAIWAN # CHINA 9 H AHEAD OF UTC APR 17 - SEP 10 ! # From Paul Eggert (1995-12-19): # Shanks writes that China has had a single time zone since 1980 May 1, # observing summer DST from 1986 through 1991; this contradicts Devine's # note about Time magazine, though apparently _something_ happened in 1986. --- 190,196 ---- # CHINA 8 H AHEAD OF UTC ALL OF CHINA, INCL TAIWAN # CHINA 9 H AHEAD OF UTC APR 17 - SEP 10 ! # From Paul Eggert (1995-12-19): # Shanks writes that China has had a single time zone since 1980 May 1, # observing summer DST from 1986 through 1991; this contradicts Devine's # note about Time magazine, though apparently _something_ happened in 1986. *************** *** 197,203 **** Rule Shang 1940 only - Jun 3 0:00 1:00 D Rule Shang 1940 1941 - Oct 1 0:00 0 S Rule Shang 1941 only - Mar 16 0:00 1:00 D - Rule PRC 1949 only - Jan 1 0:00 0 S Rule PRC 1986 only - May 4 0:00 1:00 D Rule PRC 1986 1991 - Sep Sun>=11 0:00 0 S Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D --- 201,206 ---- *************** *** 325,340 **** Link Asia/Nicosia Europe/Nicosia # Georgia ! # From Paul Eggert (1994-11-19): # Today's _Economist_ (p 60) reports that Georgia moved its clocks forward # an hour recently, due to a law proposed by Zurab Murvanidze, # an MP who went on a hunger strike for 11 days to force discussion about it! # We have no details, but we'll guess they didn't move the clocks back in fall. # ! # From Mathew Englander , quoting AP (1996-10-23 13:05-04): # Instead of putting back clocks at the end of October, Georgia # will stay on daylight savings time this winter to save energy, # President Eduard Shevardnadze decreed Wednesday. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Tbilisi 2:59:16 - LMT 1880 2:59:16 - TBMT 1924 May 2 # Tbilisi Mean Time --- 328,353 ---- Link Asia/Nicosia Europe/Nicosia # Georgia ! # From Paul Eggert (1994-11-19): # Today's _Economist_ (p 60) reports that Georgia moved its clocks forward # an hour recently, due to a law proposed by Zurab Murvanidze, # an MP who went on a hunger strike for 11 days to force discussion about it! # We have no details, but we'll guess they didn't move the clocks back in fall. # ! # From Mathew Englander, quoting AP (1996-10-23 13:05-04): # Instead of putting back clocks at the end of October, Georgia # will stay on daylight savings time this winter to save energy, # President Eduard Shevardnadze decreed Wednesday. + # + # From the BBC via Joseph S. Myers (2004-06-27): + # + # Georgia moved closer to Western Europe on Sunday... The former Soviet + # republic has changed its time zone back to that of Moscow. As a result it + # is now just four hours ahead of Greenwich Mean Time, rather than five hours + # ahead. The switch was decreed by the pro-Western president of Georgia, + # Mikhail Saakashvili, who said the change was partly prompted by the process + # of integration into Europe. + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Tbilisi 2:59:16 - LMT 1880 2:59:16 - TBMT 1924 May 2 # Tbilisi Mean Time *************** *** 345,351 **** 3:00 E-EurAsia GE%sT 1994 Sep lastSun 4:00 E-EurAsia GE%sT 1996 Oct lastSun 4:00 1:00 GEST 1997 Mar lastSun ! 4:00 E-EurAsia GE%sT # East Timor --- 358,365 ---- 3:00 E-EurAsia GE%sT 1994 Sep lastSun 4:00 E-EurAsia GE%sT 1996 Oct lastSun 4:00 1:00 GEST 1997 Mar lastSun ! 4:00 E-EurAsia GE%sT 2004 Jun 27 ! 3:00 RussiaAsia GE%sT # East Timor *************** *** 372,382 **** # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dili 8:22:20 - LMT 1912 ! 8:00 - TPT 1942 Feb 21 23:00 # E Timor Time 9:00 - JST 1945 Aug ! 9:00 - TPT 1976 May 3 8:00 - CIT 2000 Sep 17 00:00 ! 9:00 - TPT # India # Zone NAME GMTOFF RULES FORMAT [UNTIL] --- 386,396 ---- # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dili 8:22:20 - LMT 1912 ! 8:00 - TLT 1942 Feb 21 23:00 # E Timor Time 9:00 - JST 1945 Aug ! 9:00 - TLT 1976 May 3 8:00 - CIT 2000 Sep 17 00:00 ! 9:00 - TLT # India # Zone NAME GMTOFF RULES FORMAT [UNTIL] *************** *** 461,472 **** # Thursday night of Shahrivar, but I can't give exact dates.... # I have also changed the abbreviations to what is considered correct # here in Iran, IRST for regular time and IRDT for daylight saving time. ! ! # From Paul Eggert (2003-03-15) # Go with Shanks before September 1991, and with Pournader thereafter. ! # I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates. ! # The Persian calendar is based on the sun, and dates after around 2050 ! # are approximate; stop after 2037 when 32-bit time_t's overflow. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Iran 1978 1980 - Mar 21 0:00 1:00 D --- 475,507 ---- # Thursday night of Shahrivar, but I can't give exact dates.... # I have also changed the abbreviations to what is considered correct # here in Iran, IRST for regular time and IRDT for daylight saving time. ! # ! # From Roozbeh Pournader (2005-04-05): ! # The text of the Iranian law, in effect since 1925, clearly mentions ! # that the true solar year is the measure, and there is no arithmetic ! # leap year calculation involved. There has never been any serious ! # plan to change that law.... ! # ! # From Paul Eggert (2005-04-05): # Go with Shanks before September 1991, and with Pournader thereafter. ! # I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates, ! # stopping after 2037 when 32-bit time_t's overflow. ! # That cal-persia used Birashk's approximation, which disagrees with the solar ! # calendar predictions for the year 2025, so I corrected those dates by hand. ! # ! # From Oscar van Vlijmen (2005-03-30), writing about future ! # discrepancies between cal-persia and the Iranian calendar: ! # For 2091 solar-longitude-after yields 2091-03-20 08:40:07.7 UT for ! # the vernal equinox and that gets so close to 12:00 some local ! # Iranian time that the definition of the correct location needs to be ! # known exactly, amongst other factors. 2157 is even closer: ! # 2157-03-20 08:37:15.5 UT. But the Gregorian year 2025 should give ! # no interpretation problem whatsoever. By the way, another instant ! # in the near future where there will be a discrepancy between ! # arithmetical and astronomical Iranian calendars will be in 2058: ! # vernal equinox on 2058-03-20 09:03:05.9 UT. The Java version of ! # Reingold's/Dershowitz' calculator gives correctly the Gregorian date ! # 2058-03-21 for 1 Farvardin 1437 (astronomical). # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Iran 1978 1980 - Mar 21 0:00 1:00 D *************** *** 504,513 **** Rule Iran 2020 only - Sep 21 0:00 0 S Rule Iran 2021 2023 - Mar 22 0:00 1:00 D Rule Iran 2021 2023 - Sep 22 0:00 0 S ! Rule Iran 2024 2025 - Mar 21 0:00 1:00 D ! Rule Iran 2024 2025 - Sep 21 0:00 0 S ! Rule Iran 2026 2027 - Mar 22 0:00 1:00 D ! Rule Iran 2026 2027 - Sep 22 0:00 0 S Rule Iran 2028 2029 - Mar 21 0:00 1:00 D Rule Iran 2028 2029 - Sep 21 0:00 0 S Rule Iran 2030 2031 - Mar 22 0:00 1:00 D --- 539,548 ---- Rule Iran 2020 only - Sep 21 0:00 0 S Rule Iran 2021 2023 - Mar 22 0:00 1:00 D Rule Iran 2021 2023 - Sep 22 0:00 0 S ! Rule Iran 2024 only - Mar 21 0:00 1:00 D ! Rule Iran 2024 only - Sep 21 0:00 0 S ! Rule Iran 2025 2027 - Mar 22 0:00 1:00 D ! Rule Iran 2025 2027 - Sep 22 0:00 0 S Rule Iran 2028 2029 - Mar 21 0:00 1:00 D Rule Iran 2028 2029 - Sep 21 0:00 0 S Rule Iran 2030 2031 - Mar 22 0:00 1:00 D *************** *** 528,534 **** # Iraq # ! # From Jonathan Lennox (2000-06-12): # An article in this week's Economist ("Inside the Saddam-free zone", p. 50 in # the U.S. edition) on the Iraqi Kurds contains a paragraph: # "The three northern provinces ... switched their clocks this spring and --- 563,569 ---- # Iraq # ! # From Jonathan Lennox (2000-06-12): # An article in this week's Economist ("Inside the Saddam-free zone", p. 50 in # the U.S. edition) on the Iraqi Kurds contains a paragraph: # "The three northern provinces ... switched their clocks this spring and *************** *** 627,634 **** Rule Zion 1988 only - Apr 9 0:00 1:00 D Rule Zion 1988 only - Sep 3 0:00 0 S ! # From Ephraim Silverberg ! # (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17 and 2000-07-25): # According to the Office of the Secretary General of the Ministry of # Interior, there is NO set rule for Daylight-Savings/Standard time changes. --- 662,670 ---- Rule Zion 1988 only - Apr 9 0:00 1:00 D Rule Zion 1988 only - Sep 3 0:00 0 S ! # From Ephraim Silverberg ! # (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22, ! # and 2005-02-17): # According to the Office of the Secretary General of the Ministry of # Interior, there is NO set rule for Daylight-Savings/Standard time changes. *************** *** 679,691 **** # time, Haim Ramon. The official announcement regarding 1996-1998 # (with the dates for 1997-1998 no longer being relevant) can be viewed at: # ! # ftp://ftp.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz # # The dates for 1997-1998 were altered by his successor, Rabbi Eli Suissa. # # The official announcements for the years 1997-1999 can be viewed at: # ! # ftp://ftp.huji.ac.il/pub/tz/announcements/YYYY.ps.gz # # where YYYY is the relevant year. --- 715,727 ---- # time, Haim Ramon. The official announcement regarding 1996-1998 # (with the dates for 1997-1998 no longer being relevant) can be viewed at: # ! # ftp://ftp.cs.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz # # The dates for 1997-1998 were altered by his successor, Rabbi Eli Suissa. # # The official announcements for the years 1997-1999 can be viewed at: # ! # ftp://ftp.cs.huji.ac.il/pub/tz/announcements/YYYY.ps.gz # # where YYYY is the relevant year. *************** *** 705,716 **** # # The official announcement for the start date of 2000 can be viewed at: # ! # ftp://ftp.huji.ac.il/pub/tz/announcements/2000-start.ps.gz # # The official announcement for the end date of 2000 and the dates # for the years 2001-2004 can be viewed at: # ! # ftp://ftp.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Zion 2000 only - Apr 14 2:00 1:00 D --- 741,752 ---- # # The official announcement for the start date of 2000 can be viewed at: # ! # ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-start.ps.gz # # The official announcement for the end date of 2000 and the dates # for the years 2001-2004 can be viewed at: # ! # ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Zion 2000 only - Apr 14 2:00 1:00 D *************** *** 724,755 **** Rule Zion 2004 only - Apr 7 1:00 1:00 D Rule Zion 2004 only - Sep 22 1:00 0 S ! # From Paul Eggert (2000-07-25): ! # Here are guesses for rules after 2004. ! # They are probably wrong, but they are more likely than no DST at all. ! # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ! Rule Zion 2005 max - Apr 1 1:00 1:00 D ! Rule Zion 2005 max - Oct 1 1:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Jerusalem 2:20:56 - LMT 1880 2:20:40 - JMT 1918 # Jerusalem Mean Time? 2:00 Zion I%sT - # From Ephraim Silverberg (2003-03-23): - # - # Minister of Interior Poraz has announced that he will respect the law - # passed in July 2000 (proposed at the time jointly by himself and - # then-MK David Azulai [Shas]) fixing the dates for 2000-2004. Hence, - # the dates for 2003 and 2004 remain unchanged.... - # - # As far as 2005 and beyond, no dates have been set. However, the - # minister has mentioned that he wishes to propose to move Israel's - # timezone in 2005 from GMT+2 to GMT+3 and upon that have DST during - # the summer months (i.e. GMT+4). However, no legislation in this - # direction is expected until the latter part of 2004 which is a long - # time off in terms of Israeli politics. - ############################################################################### --- 760,839 ---- Rule Zion 2004 only - Apr 7 1:00 1:00 D Rule Zion 2004 only - Sep 22 1:00 0 S ! # The proposed law agreed upon by the Knesset Interior Committee on ! # 2005-02-14 is that, for 2005 and beyond, DST starts at 02:00 the ! # last Friday before April 2nd (i.e. the last Friday in March or April ! # 1st itself if it falls on a Friday) and ends at 02:00 on the Saturday ! # night _before_ the fast of Yom Kippur. ! # ! # Those who can read Hebrew can view the announcement at: ! # ! # ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps ! ! # From Paul Eggert (2005-02-22): ! # I used Ephraim Silverberg's dst-israel.el program ! # (2005-02-20) ! # along with Ed Reingold's cal-hebrew in GNU Emacs 21.4, ! # to generate the transitions in this list. ! # (I replaced "lastFri" with "Fri>=26" by hand.) ! # The spring transitions below all correspond to the following Rule: ! # ! # Rule Zion 2005 max - Mar Fri>=26 2:00 1:00 D ! # ! # but older zic implementations (e.g., Solaris 8) do not support ! # "Fri>=26" to mean April 1 in years like 2005, so for now we list the ! # springtime transitions explicitly. ! ! # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ! Rule Zion 2005 only - Apr 1 2:00 1:00 D ! Rule Zion 2005 only - Oct 9 2:00 0 S ! Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D ! Rule Zion 2006 only - Oct 1 2:00 0 S ! Rule Zion 2007 only - Sep 16 2:00 0 S ! Rule Zion 2008 only - Oct 5 2:00 0 S ! Rule Zion 2009 only - Sep 27 2:00 0 S ! Rule Zion 2010 only - Sep 12 2:00 0 S ! Rule Zion 2011 only - Apr 1 2:00 1:00 D ! Rule Zion 2011 only - Oct 2 2:00 0 S ! Rule Zion 2012 2015 - Mar Fri>=26 2:00 1:00 D ! Rule Zion 2012 only - Sep 23 2:00 0 S ! Rule Zion 2013 only - Sep 8 2:00 0 S ! Rule Zion 2014 only - Sep 28 2:00 0 S ! Rule Zion 2015 only - Sep 20 2:00 0 S ! Rule Zion 2016 only - Apr 1 2:00 1:00 D ! Rule Zion 2016 only - Oct 9 2:00 0 S ! Rule Zion 2017 2021 - Mar Fri>=26 2:00 1:00 D ! Rule Zion 2017 only - Sep 24 2:00 0 S ! Rule Zion 2018 only - Sep 16 2:00 0 S ! Rule Zion 2019 only - Oct 6 2:00 0 S ! Rule Zion 2020 only - Sep 27 2:00 0 S ! Rule Zion 2021 only - Sep 12 2:00 0 S ! Rule Zion 2022 only - Apr 1 2:00 1:00 D ! Rule Zion 2022 only - Oct 2 2:00 0 S ! Rule Zion 2023 2032 - Mar Fri>=26 2:00 1:00 D ! Rule Zion 2023 only - Sep 24 2:00 0 S ! Rule Zion 2024 only - Oct 6 2:00 0 S ! Rule Zion 2025 only - Sep 28 2:00 0 S ! Rule Zion 2026 only - Sep 20 2:00 0 S ! Rule Zion 2027 only - Oct 10 2:00 0 S ! Rule Zion 2028 only - Sep 24 2:00 0 S ! Rule Zion 2029 only - Sep 16 2:00 0 S ! Rule Zion 2030 only - Oct 6 2:00 0 S ! Rule Zion 2031 only - Sep 21 2:00 0 S ! Rule Zion 2032 only - Sep 12 2:00 0 S ! Rule Zion 2033 only - Apr 1 2:00 1:00 D ! Rule Zion 2033 only - Oct 2 2:00 0 S ! Rule Zion 2034 2037 - Mar Fri>=26 2:00 1:00 D ! Rule Zion 2034 only - Sep 17 2:00 0 S ! Rule Zion 2035 only - Oct 7 2:00 0 S ! Rule Zion 2036 only - Sep 28 2:00 0 S ! Rule Zion 2037 only - Sep 13 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Jerusalem 2:20:56 - LMT 1880 2:20:40 - JMT 1918 # Jerusalem Mean Time? 2:00 Zion I%sT ############################################################################### *************** *** 758,775 **** # `9:00' and `JST' is from Guy Harris. ! # From Paul Eggert (1995-03-06): # Today's _Asahi Evening News_ (page 4) reports that Japan had # daylight saving between 1948 and 1951, but ``the system was discontinued # because the public believed it would lead to longer working hours.'' # Shanks writes that daylight saving in Japan during those years was as follows: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ! #Rule Japan 1948 only - May Sun>=1 2:00 1:00 D ! #Rule Japan 1948 1951 - Sep Sat>=8 2:00 0 S ! #Rule Japan 1949 only - Apr Sun>=1 2:00 1:00 D ! #Rule Japan 1950 1951 - May Sun>=1 2:00 1:00 D ! # but the only locations using it were US military bases. ! # We go with Shanks and omit daylight saving in those years for Asia/Tokyo. # From Hideyuki Suzuki (1998-11-09): # 'Tokyo' usually stands for the former location of Tokyo Astronomical --- 842,873 ---- # `9:00' and `JST' is from Guy Harris. ! # From Paul Eggert (1995-03-06): # Today's _Asahi Evening News_ (page 4) reports that Japan had # daylight saving between 1948 and 1951, but ``the system was discontinued # because the public believed it would lead to longer working hours.'' + + # From Mayumi Negishi in the 2005-08-10 Japan Times + # : + # Occupation authorities imposed daylight-saving time on Japan on + # [1948-05-01].... But lack of prior debate and the execution of + # daylight-saving time just three days after the bill was passed generated + # deep hatred of the concept.... The Diet unceremoniously passed a bill to + # dump the unpopular system in October 1951, less than a month after the San + # Francisco Peace Treaty was signed. (A government poll in 1951 showed 53% + # of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who + # wanted to keep it.) + # Shanks writes that daylight saving in Japan during those years was as follows: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ! Rule Japan 1948 only - May Sun>=1 2:00 1:00 D ! Rule Japan 1948 1951 - Sep Sat>=8 2:00 0 S ! Rule Japan 1949 only - Apr Sun>=1 2:00 1:00 D ! Rule Japan 1950 1951 - May Sun>=1 2:00 1:00 D ! # but the only locations using it (for birth certificates, presumably, since ! # Shanks's audience is astrologers) were US military bases. For now, assume ! # that for most purposes daylight-saving time was observed; otherwise, what ! # would have been the point of the 1951 poll? # From Hideyuki Suzuki (1998-11-09): # 'Tokyo' usually stands for the former location of Tokyo Astronomical *************** *** 799,805 **** Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u 9:00 - JST 1896 9:00 - CJT 1938 ! 9:00 - JST # Since 1938, all Japanese possessions have been like Asia/Tokyo. # Jordan --- 897,903 ---- Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u 9:00 - JST 1896 9:00 - CJT 1938 ! 9:00 Japan J%sT # Since 1938, all Japanese possessions have been like Asia/Tokyo. # Jordan *************** *** 845,858 **** Zone Asia/Amman 2:23:44 - LMT 1931 2:00 Jordan EE%sT # Kazakhstan # From Paul Eggert (1996-11-22): ! # Andrew Evtichov (1996-04-13) writes that Kazakhstan # stayed in sync with Moscow after 1990, and that Aqtobe (formerly Aktyubinsk) # and Aqtau (formerly Shevchenko) are the largest cities in their zones. # Guess that Aqtau and Aqtobe diverged in 1995, since that's the first time # IATA SSIM mentions a third time zone in Kazakhstan. ! # # From Paul Eggert (2001-10-18): # German Iofis, ELSI, Almaty (2001-10-09) reports that Kazakhstan uses # RussiaAsia rules, instead of switching at 00:00 as the IATA has it. --- 943,958 ---- Zone Asia/Amman 2:23:44 - LMT 1931 2:00 Jordan EE%sT + # Kazakhstan + # From Paul Eggert (1996-11-22): ! # Andrew Evtichov (1996-04-13) writes that Kazakhstan # stayed in sync with Moscow after 1990, and that Aqtobe (formerly Aktyubinsk) # and Aqtau (formerly Shevchenko) are the largest cities in their zones. # Guess that Aqtau and Aqtobe diverged in 1995, since that's the first time # IATA SSIM mentions a third time zone in Kazakhstan. ! # From Paul Eggert (2001-10-18): # German Iofis, ELSI, Almaty (2001-10-09) reports that Kazakhstan uses # RussiaAsia rules, instead of switching at 00:00 as the IATA has it. *************** *** 862,868 **** # - Kazakhstan did not observe DST in 1991. # - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00. # - Oral switched from +5:00 to +4:00 in spring 1989. ! # # # Zone NAME GMTOFF RULES FORMAT [UNTIL] # --- 962,985 ---- # - Kazakhstan did not observe DST in 1991. # - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00. # - Oral switched from +5:00 to +4:00 in spring 1989. ! ! # ! # From Kazakhstan Embassy's News Bulletin #11 (2005-03-21): ! # ! # The Government of Kazakhstan passed a resolution March 15 abolishing ! # daylight saving time citing lack of economic benefits and health ! # complications coupled with a decrease in productivity. ! # ! # From Branislav Kojic (in Astana) via Gwillim Law (2005-06-28): ! # ... what happened was that the former Kazakhstan Eastern time zone ! # was "blended" with the Central zone. Therefore, Kazakhstan now has ! # two time zones, and difference between them is one hour. The zone ! # closer to UTC is the former Western zone (probably still called the ! # same), encompassing four provinces in the west: Aqtobe, Atyrau, ! # Mangghystau, and West Kazakhstan. The other zone encompasses ! # everything else.... I guess that would make Kazakhstan time zones ! # de jure UTC+5 and UTC+6 respectively. ! # # Zone NAME GMTOFF RULES FORMAT [UNTIL] # *************** *** 871,877 **** 5:00 - ALMT 1930 Jun 21 # Alma-Ata Time 6:00 RussiaAsia ALM%sT 1991 6:00 - ALMT 1992 ! 6:00 RussiaAsia ALM%sT # Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.) Zone Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 4:00 - KIZT 1930 Jun 21 # Kizilorda Time --- 988,995 ---- 5:00 - ALMT 1930 Jun 21 # Alma-Ata Time 6:00 RussiaAsia ALM%sT 1991 6:00 - ALMT 1992 ! 6:00 RussiaAsia ALM%sT 2005 Mar 15 ! 6:00 - ALMT # Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.) Zone Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 4:00 - KIZT 1930 Jun 21 # Kizilorda Time *************** *** 881,887 **** 5:00 RussiaAsia KIZ%sT 1991 5:00 - KIZT 1991 Dec 16 # independence 5:00 - QYZT 1992 Jan 19 2:00 ! 6:00 RussiaAsia QYZ%sT # Aqtobe (aka Aktobe, formerly Akt'ubinsk) Zone Asia/Aqtobe 3:48:40 - LMT 1924 May 2 4:00 - AKTT 1930 Jun 21 # Aktyubinsk Time --- 999,1006 ---- 5:00 RussiaAsia KIZ%sT 1991 5:00 - KIZT 1991 Dec 16 # independence 5:00 - QYZT 1992 Jan 19 2:00 ! 6:00 RussiaAsia QYZ%sT 2005 Mar 15 ! 6:00 - QYZT # Aqtobe (aka Aktobe, formerly Akt'ubinsk) Zone Asia/Aqtobe 3:48:40 - LMT 1924 May 2 4:00 - AKTT 1930 Jun 21 # Aktyubinsk Time *************** *** 890,896 **** 6:00 - AKTT 1982 Apr 1 5:00 RussiaAsia AKT%sT 1991 5:00 - AKTT 1991 Dec 16 # independence ! 5:00 RussiaAsia AQT%sT # Aqtobe Time # Mangghystau # Aqtau was not founded until 1963, but it represents an inhabited region, # so include time stamps before 1963. --- 1009,1016 ---- 6:00 - AKTT 1982 Apr 1 5:00 RussiaAsia AKT%sT 1991 5:00 - AKTT 1991 Dec 16 # independence ! 5:00 RussiaAsia AQT%sT 2005 Mar 15 # Aqtobe Time ! 5:00 - AQTT # Mangghystau # Aqtau was not founded until 1963, but it represents an inhabited region, # so include time stamps before 1963. *************** *** 902,908 **** 5:00 RussiaAsia SHE%sT 1991 5:00 - SHET 1991 Dec 16 # independence 5:00 RussiaAsia AQT%sT 1995 Mar lastSun 2:00 # Aqtau Time ! 4:00 RussiaAsia AQT%sT # West Kazakhstan Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk 4:00 - URAT 1930 Jun 21 # Ural'sk time --- 1022,1029 ---- 5:00 RussiaAsia SHE%sT 1991 5:00 - SHET 1991 Dec 16 # independence 5:00 RussiaAsia AQT%sT 1995 Mar lastSun 2:00 # Aqtau Time ! 4:00 RussiaAsia AQT%sT 2005 Mar 15 ! 5:00 - AQTT # West Kazakhstan Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk 4:00 - URAT 1930 Jun 21 # Ural'sk time *************** *** 912,932 **** 5:00 RussiaAsia URA%sT 1989 Mar 26 2:00 4:00 RussiaAsia URA%sT 1991 4:00 - URAT 1991 Dec 16 # independence ! 4:00 RussiaAsia ORA%sT # Oral Time # Kyrgyzstan (Kirgizstan) # Transitions through 1991 are from Shanks. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ! Rule Kirgiz 1992 1996 - Apr Sun>=7 0:00s 1:00 S ! Rule Kirgiz 1992 1996 - Sep lastSun 0:00 0 - ! Rule Kirgiz 1997 max - Mar lastSun 2:30 1:00 S ! Rule Kirgiz 1997 max - Oct lastSun 2:30 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 5:00 - FRUT 1930 Jun 21 # Frunze Time 6:00 RussiaAsia FRU%sT 1991 Mar 31 2:00s 5:00 1:00 FRUST 1991 Aug 31 2:00 # independence ! 5:00 Kirgiz KG%sT # Kirgizstan Time ############################################################################### --- 1033,1065 ---- 5:00 RussiaAsia URA%sT 1989 Mar 26 2:00 4:00 RussiaAsia URA%sT 1991 4:00 - URAT 1991 Dec 16 # independence ! 4:00 RussiaAsia ORA%sT 2005 Mar 15 # Oral Time ! 5:00 - ORAT # Kyrgyzstan (Kirgizstan) # Transitions through 1991 are from Shanks. + + # From Paul Eggert (2005-08-15): + # According to an article dated today in the Kyrgyzstan Development Gateway + # + # Kyrgyzstan is canceling the daylight saving time system. I take the article + # to mean that they will leave their clocks at 6 hours ahead of UTC. + # From Malik Abdugaliev (2005-09-21): + # Our government cancels daylight saving time 6th of August 2005. + # From 2005-08-12 our GMT-offset is +6, w/o any daylight saving. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S ! Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 S ! Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 - ! Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 S ! Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 5:00 - FRUT 1930 Jun 21 # Frunze Time 6:00 RussiaAsia FRU%sT 1991 Mar 31 2:00s 5:00 1:00 FRUST 1991 Aug 31 2:00 # independence ! 5:00 Kyrgyz KG%sT 2005 Aug 12 # Kyrgyzstan Time ! 6:00 - KGT ############################################################################### *************** *** 1085,1091 **** # # [The province of Selenge is omitted from the above lists.] ! # From Ganbold Ts., Ulaanbaatar (2004-04-17): # Daylight saving occurs at 02:00 local time last Saturday of March. # It will change back to normal at 02:00 local time last Saturday of # September.... As I remember this rule was changed in 2001. --- 1218,1224 ---- # # [The province of Selenge is omitted from the above lists.] ! # From Ganbold Ts., Ulaanbaatar (2004-04-17): # Daylight saving occurs at 02:00 local time last Saturday of March. # It will change back to normal at 02:00 local time last Saturday of # September.... As I remember this rule was changed in 2001. *************** *** 1094,1099 **** --- 1227,1250 ---- # For now, assume Rives McDow's informant got confused about Friday vs # Saturday, and that his 2001 dates should have 1 added to them. + # From Paul Eggert (2005-07-26): + # We have wildly conflicting information about Mongolia's time zones. + # Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says + # there is only one time zone and that DST is observed, citing Microsoft + # Windows XP as the source. Risto Nykanen (2005-05-16) reports that + # travelmongolia.org says there are two time zones (UTC+7, UTC+8) with no DST. + # Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in + # Washington, DC says there are two time zones, with DST observed. + # He also found + # + # which also says that there is DST, and which has a comment by "Toddius" + # (2005-03-31 06:05 +0700) saying "Mongolia actually has 3.5 time zones. + # The West (OLGII) is +7 GMT, most of the country is ULAT is +8 GMT + # and some Eastern provinces are +9 GMT but Sukhbaatar Aimag is SUHK +8.5 GMT. + # The SUKH timezone is new this year, it is one of the few things the + # parliament passed during the tumultuous winter session." + # For now, let's ignore this information, until we have more confirmation. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Mongol 1983 1984 - Apr 1 0:00 1:00 S Rule Mongol 1983 only - Oct 1 0:00 0 - *************** *** 1185,1191 **** # Palestine ! # From Amos Shapir (1998-02-15): # # From 1917 until 1948-05-15, all of Palestine, including the parts now # known as the Gaza Strip and the West Bank, was under British rule. --- 1336,1342 ---- # Palestine ! # From Amos Shapir (1998-02-15): # # From 1917 until 1948-05-15, all of Palestine, including the parts now # known as the Gaza Strip and the West Bank, was under British rule. *************** *** 1447,1453 **** 5:00 - UZT # Vietnam ! # From Paul Eggert (1993-11-18): # Saigon's official name is Thanh-Pho Ho Chi Minh, but it's too long. # We'll stick with the traditional name for now. # From Shanks: --- 1598,1604 ---- 5:00 - UZT # Vietnam ! # From Paul Eggert (1993-11-18): # Saigon's official name is Thanh-Pho Ho Chi Minh, but it's too long. # We'll stick with the traditional name for now. # From Shanks: Index: src/share/zoneinfo/australasia diff -c src/share/zoneinfo/australasia:1.4 src/share/zoneinfo/australasia:1.4.2.2 *** src/share/zoneinfo/australasia:1.4 Wed Oct 29 21:04:05 2003 --- src/share/zoneinfo/australasia Tue Oct 11 16:48:34 2005 *************** *** 1,4 **** ! # @(#)australasia 7.69 # This file also includes Pacific islands. # Notes are at the end of this file --- 1,4 ---- ! # @(#)australasia 7.74 # This file also includes Pacific islands. # Notes are at the end of this file *************** *** 38,44 **** 8:00 - WST # Queensland # ! # From Alex Livingston (1996-11-01): # I have heard or read more than once that some resort islands off the coast # of Queensland chose to keep observing daylight-saving time even after # Queensland ceased to. --- 38,44 ---- 8:00 - WST # Queensland # ! # From Alex Livingston (1996-11-01): # I have heard or read more than once that some resort islands off the coast # of Queensland chose to keep observing daylight-saving time even after # Queensland ceased to. *************** *** 77,83 **** Rule AS 1992 only - Mar Sun>=18 2:00s 0 - Rule AS 1993 only - Mar Sun>=1 2:00s 0 - Rule AS 1994 only - Mar Sun>=18 2:00s 0 - ! Rule AS 1995 max - Mar lastSun 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Australia/Adelaide 9:14:20 - LMT 1895 Feb 9:00 - CST 1899 May --- 77,85 ---- Rule AS 1992 only - Mar Sun>=18 2:00s 0 - Rule AS 1993 only - Mar Sun>=1 2:00s 0 - Rule AS 1994 only - Mar Sun>=18 2:00s 0 - ! Rule AS 1995 2005 - Mar lastSun 2:00s 0 - ! Rule AS 2006 only - Apr Sun>=1 2:00s 0 - ! Rule AS 2007 max - Mar lastSun 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Australia/Adelaide 9:14:20 - LMT 1895 Feb 9:00 - CST 1899 May *************** *** 85,90 **** --- 87,97 ---- 9:30 AS CST # Tasmania + # + # From Paul Eggert (2005-08-16): + # + # says King Island didn't observe DST from WWII until late 1971. + # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 - Rule AT 1968 only - Mar lastSun 2:00s 0 - *************** *** 99,113 **** Rule AT 1987 only - Oct Sun>=22 2:00s 1:00 - Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 - Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 - ! Rule AT 1991 max - Mar lastSun 2:00s 0 - Rule AT 2000 only - Aug lastSun 2:00s 1:00 - Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Australia/Hobart 9:49:16 - LMT 1895 Sep 10:00 - EST 1916 Oct 1 2:00 10:00 1:00 EST 1917 Feb 10:00 Aus EST 1967 10:00 AT EST # Victoria # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --- 106,127 ---- Rule AT 1987 only - Oct Sun>=22 2:00s 1:00 - Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 - Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 - ! Rule AT 1991 2005 - Mar lastSun 2:00s 0 - Rule AT 2000 only - Aug lastSun 2:00s 1:00 - Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 - + Rule AT 2006 only - Apr Sun>=1 2:00s 0 - + Rule AT 2007 max - Mar lastSun 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Australia/Hobart 9:49:16 - LMT 1895 Sep 10:00 - EST 1916 Oct 1 2:00 10:00 1:00 EST 1917 Feb 10:00 Aus EST 1967 10:00 AT EST + Zone Australia/Currie 9:35:28 - LMT 1895 Sep + 10:00 - EST 1916 Oct 1 2:00 + 10:00 1:00 EST 1917 Feb + 10:00 Aus EST 1971 Jul + 10:00 AT EST # Victoria # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S *************** *** 118,126 **** Rule AV 1986 1987 - Oct Sun>=15 2:00s 1:00 - Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 - Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 - ! Rule AV 1995 max - Mar lastSun 2:00s 0 - Rule AV 2000 only - Aug lastSun 2:00s 1:00 - Rule AV 2001 max - Oct lastSun 2:00s 1:00 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Australia/Melbourne 9:39:52 - LMT 1895 Feb 10:00 Aus EST 1971 --- 132,142 ---- Rule AV 1986 1987 - Oct Sun>=15 2:00s 1:00 - Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 - Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 - ! Rule AV 1995 2005 - Mar lastSun 2:00s 0 - Rule AV 2000 only - Aug lastSun 2:00s 1:00 - Rule AV 2001 max - Oct lastSun 2:00s 1:00 - + Rule AV 2006 only - Apr Sun>=1 2:00s 0 - + Rule AV 2007 max - Mar lastSun 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Australia/Melbourne 9:39:52 - LMT 1895 Feb 10:00 Aus EST 1971 *************** *** 137,145 **** Rule AN 1986 only - Oct 19 2:00s 1:00 - Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 - Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 - ! Rule AN 1996 max - Mar lastSun 2:00s 0 - Rule AN 2000 only - Aug lastSun 2:00s 1:00 - Rule AN 2001 max - Oct lastSun 2:00s 1:00 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Australia/Sydney 10:04:52 - LMT 1895 Feb 10:00 Aus EST 1971 --- 153,163 ---- Rule AN 1986 only - Oct 19 2:00s 1:00 - Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 - Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 - ! Rule AN 1996 2005 - Mar lastSun 2:00s 0 - Rule AN 2000 only - Aug lastSun 2:00s 1:00 - Rule AN 2001 max - Oct lastSun 2:00s 1:00 - + Rule AN 2006 only - Apr Sun>=1 2:00s 0 - + Rule AN 2007 max - Mar lastSun 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Australia/Sydney 10:04:52 - LMT 1895 Feb 10:00 Aus EST 1971 *************** *** 160,168 **** Rule LH 1986 only - Oct 19 2:00 0:30 - Rule LH 1987 1999 - Oct lastSun 2:00 0:30 - Rule LH 1990 1995 - Mar Sun>=1 2:00 0 - ! Rule LH 1996 max - Mar lastSun 2:00 0 - Rule LH 2000 only - Aug lastSun 2:00 0:30 - Rule LH 2001 max - Oct lastSun 2:00 0:30 - Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb 10:00 - EST 1981 Mar 10:30 LH LHST --- 178,188 ---- Rule LH 1986 only - Oct 19 2:00 0:30 - Rule LH 1987 1999 - Oct lastSun 2:00 0:30 - Rule LH 1990 1995 - Mar Sun>=1 2:00 0 - ! Rule LH 1996 2005 - Mar lastSun 2:00 0 - Rule LH 2000 only - Aug lastSun 2:00 0:30 - Rule LH 2001 max - Oct lastSun 2:00 0:30 - + Rule LH 2006 only - Apr Sun>=1 2:00 0 - + Rule LH 2007 max - Mar lastSun 2:00 0 - Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb 10:00 - EST 1981 Mar 10:30 LH LHST *************** *** 199,207 **** -10:00 Cook CK%sT # Cocos ! # From USNO (1989): # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Indian/Cocos 6:30 - CCT # Cocos Islands Time # Fiji # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --- 219,229 ---- -10:00 Cook CK%sT # Cocos ! # These islands were ruled by the Ross family from about 1830 to 1978. ! # We don't know when standard time was introduced; for now, we guess 1900. # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone Indian/Cocos 6:27:40 - LMT 1900 ! 6:30 - CCT # Cocos Islands Time # Fiji # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S *************** *** 262,270 **** # Micronesia # Zone NAME GMTOFF RULES FORMAT [UNTIL] - Zone Pacific/Yap 9:12:32 - LMT 1901 # Colonia - 9:00 - YAPT 1969 Oct # Yap Time - 10:00 - YAPT Zone Pacific/Truk 10:07:08 - LMT 1901 10:00 - TRUT # Truk Time Zone Pacific/Ponape 10:32:52 - LMT 1901 # Kolonia --- 284,289 ---- *************** *** 381,391 **** -11:00 - BST 1983 Nov 30 # B=Bering -11:00 - SST # S=Samoa ! # W Samoa Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5 -11:26:56 - LMT 1911 -11:30 - SAMT 1950 # Samoa Time ! -11:00 - WST # W Samoa Time # Solomon Is # excludes Bougainville, for which see Papua New Guinea --- 400,410 ---- -11:00 - BST 1983 Nov 30 # B=Bering -11:00 - SST # S=Samoa ! # Samoa Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5 -11:26:56 - LMT 1911 -11:30 - SAMT 1950 # Samoa Time ! -11:00 - WST # Samoa Time # Solomon Is # excludes Bougainville, for which see Papua New Guinea *************** *** 434,439 **** --- 453,469 ---- # uninhabited # Midway + # + # From Mark Brader (2005-01-23): + # [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies, + # published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3] + # reproduced a Pan American Airways timeables from 1936, for their weekly + # "Orient Express" flights between San Francisco and Manila, and connecting + # flights to Chicago and the US East Coast. As it uses some time zone + # designations that I've never seen before:.... + # Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I. H.L.T. Ar. 5:30P Sun. + # " 3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A " + # Zone Pacific/Midway -11:49:28 - LMT 1901 -11:00 - NST 1956 Jun 3 -11:00 1:00 NDT 1956 Sep 2 *************** *** 475,481 **** # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-10-29): # A good source for time zone historical data outside the U.S. is # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). --- 505,511 ---- # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-10-29): # A good source for time zone historical data outside the U.S. is # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). *************** *** 632,644 **** # From Paul Eggert (1995-12-19): # Shanks reports 2:00 for all autumn changes in Australia and New Zealand. ! # Mark Prior writes that his newspaper # reports that NSW's fall 1995 change will occur at 2:00, # but Robert Elz says it's been 3:00 in Victoria since 1970 # and perhaps the newspaper's `2:00' is referring to standard time. # For now we'll continue to assume 2:00s for changes since 1960. ! # From Eric Ulevik (1998-01-05): # # Here are some URLs to Australian time legislation. These URLs are stable, # and should probably be included in the data file. There are probably more --- 662,674 ---- # From Paul Eggert (1995-12-19): # Shanks reports 2:00 for all autumn changes in Australia and New Zealand. ! # Mark Prior writes that his newspaper # reports that NSW's fall 1995 change will occur at 2:00, # but Robert Elz says it's been 3:00 in Victoria since 1970 # and perhaps the newspaper's `2:00' is referring to standard time. # For now we'll continue to assume 2:00s for changes since 1960. ! # From Eric Ulevik (1998-01-05): # # Here are some URLs to Australian time legislation. These URLs are stable, # and should probably be included in the data file. There are probably more *************** *** 657,662 **** --- 687,710 ---- # Standard Time Act, 1898 # + # From David Grosz (2005-06-13): + # It was announced last week that Daylight Saving would be extended by + # one week next year to allow for the 2006 Commonwealth Games. + # Daylight Saving is now to end for next year only on the first Sunday + # in April instead of the last Sunday in March. + # + # From Gwillim Law (2005-06-14): + # I did some Googling and found that all of those states (and territory) plan + # to extend DST together in 2006. + # ACT: http://www.cmd.act.gov.au/mediareleases/fileread.cfm?file=86.txt + # New South Wales: http://www.thecouriermail.news.com.au/common/story_page/0,5936,15538869%255E1702,00.html + # South Australia: http://www.news.com.au/story/0,10117,15555031-1246,00.html + # Tasmania: http://www.media.tas.gov.au/release.php?id=14772 + # Victoria: I wasn't able to find anything separate, but the other articles + # allude to it. + # But not Queensland + # http://www.news.com.au/story/0,10117,15564030-1248,00.html. + # Northern Territory # From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06): *************** *** 843,849 **** # 1994 was at +0930 as John Connolly's customer seems to assert, then I can # only conclude that the actual rule is more complicated.... ! # From John Warburton (1994-10-07): # The new Daylight Savings dates for South Australia ... # was gazetted in the Government Hansard on Sep 26 1994.... # start on last Sunday in October and end in last sunday in March. --- 891,897 ---- # 1994 was at +0930 as John Connolly's customer seems to assert, then I can # only conclude that the actual rule is more complicated.... ! # From John Warburton (1994-10-07): # The new Daylight Savings dates for South Australia ... # was gazetted in the Government Hansard on Sep 26 1994.... # start on last Sunday in October and end in last sunday in March. *************** *** 903,909 **** # From Arthur David Olson: # New South Wales and subjurisdictions have their own ideas of a fun time. ! # Based on law library research by John Mackin (john@basser.cs.su.oz), # who notes: # In Australia, time is not legislated federally, but rather by the # individual states. Thus, while such terms as ``Eastern Standard Time'' --- 951,957 ---- # From Arthur David Olson: # New South Wales and subjurisdictions have their own ideas of a fun time. ! # Based on law library research by John Mackin, # who notes: # In Australia, time is not legislated federally, but rather by the # individual states. Thus, while such terms as ``Eastern Standard Time'' *************** *** 923,929 **** # Lawlink NSW: Daylight Saving in New South Wales # ! # From Eric Ulevik (1999-05-26): # DST will start in NSW on the last Sunday of August, rather than the usual # October in 2000. [See: Matthew Moore, # --- 971,977 ---- # Lawlink NSW: Daylight Saving in New South Wales # ! # From Eric Ulevik (1999-05-26): # DST will start in NSW on the last Sunday of August, rather than the usual # October in 2000. [See: Matthew Moore, # *************** *** 1057,1063 **** # From Paul Eggert (1995-12-19); # Shanks reports 2:00 for all autumn changes in Australia and New Zealand. ! # Robert Uzgalis writes that the New Zealand Daylight # Savings Time Order in Council dated 1990-06-18 specifies 2:00 standard # time on both the first Sunday in October and the third Sunday in March. # As with Australia, we'll assume the tradition is 2:00s, not 2:00. --- 1105,1111 ---- # From Paul Eggert (1995-12-19); # Shanks reports 2:00 for all autumn changes in Australia and New Zealand. ! # Robert Uzgalis writes that the New Zealand Daylight # Savings Time Order in Council dated 1990-06-18 specifies 2:00 standard # time on both the first Sunday in October and the third Sunday in March. # As with Australia, we'll assume the tradition is 2:00s, not 2:00. *************** *** 1136,1142 **** # Micronesia ! # Alan Eugene Davis writes (1996-03-16), # ``I am certain, having lived there for the past decade, that "Truk" # (now properly known as Chuuk) ... is in the time zone GMT+10.'' # --- 1184,1190 ---- # Micronesia ! # Alan Eugene Davis writes (1996-03-16), # ``I am certain, having lived there for the past decade, that "Truk" # (now properly known as Chuuk) ... is in the time zone GMT+10.'' # *************** *** 1244,1253 **** # October to March, which has won approval in principle from the Tongan # Government. ! # From Steffen Thorsen [straen@thorsen.priv.no] (1999-09-09): # * Tonga will introduce DST in November # ! # I was given this link by John Letts : # # http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm # --- 1292,1301 ---- # October to March, which has won approval in principle from the Tongan # Government. ! # From Steffen Thorsen (1999-09-09): # * Tonga will introduce DST in November # ! # I was given this link by John Letts: # # http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm # *************** *** 1257,1263 **** # of UTC as well, but as far as I know Fiji will only be 13 hours ahead # (12 + 1 hour DST). ! # From Arthur David Olson [arthur_david_olson@nih.gov] (1999-09-20): # According to # http://www.tongaonline.com/news/sept1799.html # : *************** *** 1327,1338 **** # mapmakers redrew the IDL following the boundary of Kiribati. Even that line # has a rather arbitrary nature. The straight-line boundaries between Pacific # island nations that are shown on many maps are based on an international ! # convention, but are not legally binding national borders. ! # ! # An Anglo-French Conference on Time-Keeping at Sea (June, 1917) agreed that ! # legal time on the high seas would be zone time, i.e., the standard time at ! # the nearest meridian that is a multiple of fifteen degrees. The date is # governed by the IDL; therefore, even on the high seas, there may be some # places as late as fourteen hours later than UTC. And, since the IDL is not # an international standard, there are some places on the high seas where the # correct date is ambiguous. --- 1375,1404 ---- # mapmakers redrew the IDL following the boundary of Kiribati. Even that line # has a rather arbitrary nature. The straight-line boundaries between Pacific # island nations that are shown on many maps are based on an international ! # convention, but are not legally binding national borders.... The date is # governed by the IDL; therefore, even on the high seas, there may be some # places as late as fourteen hours later than UTC. And, since the IDL is not # an international standard, there are some places on the high seas where the # correct date is ambiguous. + + # From Wikipedia (2005-08-31): + # Before 1920, all ships kept local apparent time on the high seas by setting + # their clocks at night or at the morning sight so that, given the ship's + # speed and direction, it would be 12 o'clock when the Sun crossed the ship's + # meridian (12 o'clock = local apparent noon). During 1917, at the + # Anglo-French Conference on Time-keeping at Sea, it was recommended that all + # ships, both military and civilian, should adopt hourly standard time zones + # on the high seas. Whenever a ship was within the territorial waters of any + # nation it would use that nation's standard time. The captain was permitted + # to change his ship's clocks at a time of his choice following his ship's + # entry into another zone time--he often chose midnight. These zones were + # adopted by all major fleets between 1920 and 1925 but not by many + # independent merchant ships until World War II. + + # From Paul Eggert, using references suggested by Oscar van Vlijmen + # (2005-03-20): + # + # The American Practical Navigator (2002) + # + # talks only about the 180-degree meridian with respect to ships in + # international waters; it ignores the international date line. Index: src/share/zoneinfo/backward diff -c src/share/zoneinfo/backward:1.1.1.12.2.1 src/share/zoneinfo/backward:1.1.1.12.2.2 *** src/share/zoneinfo/backward:1.1.1.12.2.1 Tue Jun 15 22:09:06 2004 --- src/share/zoneinfo/backward Tue Sep 6 01:33:43 2005 *************** *** 1,22 **** ! # @(#)backward 7.25 # This file provides links between current names for time zones # and their old names. Many names changed in late 1993. Link America/Adak America/Atka Link America/Tijuana America/Ensenada ! Link America/Indianapolis America/Fort_Wayne Link America/Indiana/Knox America/Knox_IN Link America/Rio_Branco America/Porto_Acre ! Link America/Cordoba America/Rosario Link America/St_Thomas America/Virgin Link Asia/Ashgabat Asia/Ashkhabad Link Asia/Chongqing Asia/Chungking Link Asia/Dhaka Asia/Dacca Link Asia/Macau Asia/Macao - Link Asia/Makassar Asia/Ujung_Pandang Link Asia/Jerusalem Asia/Tel_Aviv Link Asia/Thimphu Asia/Thimbu Link Asia/Ulaanbaatar Asia/Ulan_Bator Link Australia/Sydney Australia/ACT Link Australia/Sydney Australia/Canberra --- 1,31 ---- ! # @(#)backward 7.29 # This file provides links between current names for time zones # and their old names. Many names changed in late 1993. + Link Africa/Bamako Africa/Timbuktu + Link America/Argentina/Catamarca America/Argentina/ComodRivadavia Link America/Adak America/Atka + Link America/Argentina/Buenos_Aires America/Buenos_Aires + Link America/Argentina/Catamarca America/Catamarca + Link America/Argentina/Cordoba America/Cordoba Link America/Tijuana America/Ensenada ! Link America/Indiana/Indianapolis America/Fort_Wayne ! Link America/Indiana/Indianapolis America/Indianapolis ! Link America/Argentina/Jujuy America/Jujuy Link America/Indiana/Knox America/Knox_IN + Link America/Kentucky/Louisville America/Louisville + Link America/Argentina/Mendoza America/Mendoza Link America/Rio_Branco America/Porto_Acre ! Link America/Argentina/Cordoba America/Rosario Link America/St_Thomas America/Virgin Link Asia/Ashgabat Asia/Ashkhabad Link Asia/Chongqing Asia/Chungking Link Asia/Dhaka Asia/Dacca Link Asia/Macau Asia/Macao Link Asia/Jerusalem Asia/Tel_Aviv Link Asia/Thimphu Asia/Thimbu + Link Asia/Makassar Asia/Ujung_Pandang Link Asia/Ulaanbaatar Asia/Ulan_Bator Link Australia/Sydney Australia/ACT Link Australia/Sydney Australia/Canberra *************** *** 29,38 **** Link Australia/Melbourne Australia/Victoria Link Australia/Perth Australia/West Link Australia/Broken_Hill Australia/Yancowinna ! Link America/Porto_Acre Brazil/Acre Link America/Noronha Brazil/DeNoronha Link America/Sao_Paulo Brazil/East Link America/Manaus Brazil/West Link America/Halifax Canada/Atlantic Link America/Winnipeg Canada/Central Link America/Regina Canada/East-Saskatchewan --- 38,48 ---- Link Australia/Melbourne Australia/Victoria Link Australia/Perth Australia/West Link Australia/Broken_Hill Australia/Yancowinna ! Link America/Rio_Branco Brazil/Acre Link America/Noronha Brazil/DeNoronha Link America/Sao_Paulo Brazil/East Link America/Manaus Brazil/West + Link America/Chicago CST6CDT Link America/Halifax Canada/Atlantic Link America/Winnipeg Canada/Central Link America/Regina Canada/East-Saskatchewan *************** *** 45,59 **** Link America/Santiago Chile/Continental Link Pacific/Easter Chile/EasterIsland Link America/Havana Cuba Link Africa/Cairo Egypt Link Europe/Dublin Eire Link Europe/Chisinau Europe/Tiraspol Link Europe/London GB Link Europe/London GB-Eire ! Link Etc/GMT+0 GMT+0 ! Link Etc/GMT-0 GMT-0 ! Link Etc/GMT0 GMT0 ! Link Etc/Greenwich Greenwich Link Asia/Hong_Kong Hongkong Link Atlantic/Reykjavik Iceland Link Asia/Tehran Iran --- 55,73 ---- Link America/Santiago Chile/Continental Link Pacific/Easter Chile/EasterIsland Link America/Havana Cuba + Link America/Panama EST + Link America/New_York EST5EDT Link Africa/Cairo Egypt Link Europe/Dublin Eire + Link Europe/London Europe/Belfast Link Europe/Chisinau Europe/Tiraspol Link Europe/London GB Link Europe/London GB-Eire ! Link Etc/GMT GMT+0 ! Link Etc/GMT GMT-0 ! Link Etc/GMT GMT0 ! Link Etc/GMT Greenwich ! Link Pacific/Honolulu HST Link Asia/Hong_Kong Hongkong Link Atlantic/Reykjavik Iceland Link Asia/Tehran Iran *************** *** 62,77 **** Link Asia/Tokyo Japan Link Pacific/Kwajalein Kwajalein Link Africa/Tripoli Libya Link America/Tijuana Mexico/BajaNorte Link America/Mazatlan Mexico/BajaSur Link America/Mexico_City Mexico/General - Link America/Shiprock Navajo Link Pacific/Auckland NZ Link Pacific/Chatham NZ-CHAT Link Pacific/Pago_Pago Pacific/Samoa Link Europe/Warsaw Poland Link Europe/Lisbon Portugal - Link Asia/Shanghai PRC Link Asia/Taipei ROC Link Asia/Seoul ROK Link Asia/Singapore Singapore --- 76,95 ---- Link Asia/Tokyo Japan Link Pacific/Kwajalein Kwajalein Link Africa/Tripoli Libya + Link America/Phoenix MST + Link America/Denver MST7MDT Link America/Tijuana Mexico/BajaNorte Link America/Mazatlan Mexico/BajaSur Link America/Mexico_City Mexico/General Link Pacific/Auckland NZ Link Pacific/Chatham NZ-CHAT + Link America/Denver Navajo + Link Asia/Shanghai PRC + Link America/Los_Angeles PST8PDT Link Pacific/Pago_Pago Pacific/Samoa + Link Pacific/Truk Pacific/Yap Link Europe/Warsaw Poland Link Europe/Lisbon Portugal Link Asia/Taipei ROC Link Asia/Seoul ROK Link Asia/Singapore Singapore *************** *** 81,87 **** Link America/Adak US/Aleutian Link America/Phoenix US/Arizona Link America/Chicago US/Central ! Link America/Indianapolis US/East-Indiana Link America/New_York US/Eastern Link Pacific/Honolulu US/Hawaii Link America/Indiana/Knox US/Indiana-Starke --- 99,105 ---- Link America/Adak US/Aleutian Link America/Phoenix US/Arizona Link America/Chicago US/Central ! Link America/Indiana/Indianapolis US/East-Indiana Link America/New_York US/Eastern Link Pacific/Honolulu US/Hawaii Link America/Indiana/Knox US/Indiana-Starke *************** *** 90,95 **** Link America/Los_Angeles US/Pacific Link Pacific/Pago_Pago US/Samoa Link Etc/UTC UTC ! Link Etc/Universal Universal Link Europe/Moscow W-SU ! Link Etc/Zulu Zulu --- 108,113 ---- Link America/Los_Angeles US/Pacific Link Pacific/Pago_Pago US/Samoa Link Etc/UTC UTC ! Link Etc/UTC Universal Link Europe/Moscow W-SU ! Link Etc/UTC Zulu Index: src/share/zoneinfo/etcetera diff -c src/share/zoneinfo/etcetera:1.1.1.4 src/share/zoneinfo/etcetera:1.1.1.4.4.1 *** src/share/zoneinfo/etcetera:1.1.1.4 Wed Mar 14 13:36:20 2001 --- src/share/zoneinfo/etcetera Tue Sep 6 01:33:43 2005 *************** *** 1,10 **** ! # @(#)etcetera 7.11 # These entries are mostly present for historical reasons, so that # people in areas not otherwise covered by the tz files could "zic -l" # to a time zone that was right for their area. These days, the ! # tz files cover almost all the inhabited world, so there's little ! # need now for the entries that are not on UTC. Zone Etc/GMT 0 - GMT Zone Etc/UTC 0 - UTC --- 1,11 ---- ! # @(#)etcetera 7.12 # These entries are mostly present for historical reasons, so that # people in areas not otherwise covered by the tz files could "zic -l" # to a time zone that was right for their area. These days, the ! # tz files cover almost all the inhabited world, and the only practical ! # need now for the entries that are not on UTC are for ships at sea ! # that cannot use POSIX TZ settings. Zone Etc/GMT 0 - GMT Zone Etc/UTC 0 - UTC Index: src/share/zoneinfo/europe diff -c src/share/zoneinfo/europe:1.1.1.26.2.1 src/share/zoneinfo/europe:1.1.1.26.2.2 *** src/share/zoneinfo/europe:1.1.1.26.2.1 Tue Jun 15 22:09:29 2004 --- src/share/zoneinfo/europe Tue Sep 6 01:33:43 2005 *************** *** 1,10 **** ! # @(#)europe 7.87 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-10-29): # A good source for time zone historical data outside the U.S. is # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). --- 1,10 ---- ! # @(#)europe 7.95 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-10-29): # A good source for time zone historical data outside the U.S. is # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). *************** *** 55,61 **** # A reliable and entertaining source about time zones, especially in Britain, # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997). ! # From Peter Ilieve (1994-12-04), # The original six [EU members]: Belgium, France, (West) Germany, Italy, # Luxembourg, the Netherlands. # Plus, from 1 Jan 73: Denmark, Ireland, United Kingdom. --- 55,61 ---- # A reliable and entertaining source about time zones, especially in Britain, # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997). ! # From Peter Ilieve (1994-12-04), # The original six [EU members]: Belgium, France, (West) Germany, Italy, # Luxembourg, the Netherlands. # Plus, from 1 Jan 73: Denmark, Ireland, United Kingdom. *************** *** 81,87 **** # Britain (United Kingdom) and Ireland (Eire) ! # From Peter Ilieve (1994-07-06): # # On 17 Jan 1994 the Independent, a UK quality newspaper, had a piece about # historical vistas along the Thames in west London. There was a photo --- 81,87 ---- # Britain (United Kingdom) and Ireland (Eire) ! # From Peter Ilieve (1994-07-06): # # On 17 Jan 1994 the Independent, a UK quality newspaper, had a piece about # historical vistas along the Thames in west London. There was a photo *************** *** 102,108 **** # # [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.] ! # From Paul Eggert (1993-11-18): # # Howse writes that Britain was the first country to use standard time. # The railways cared most about the inconsistencies of local mean time, --- 102,108 ---- # # [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.] ! # From Paul Eggert (1993-11-18): # # Howse writes that Britain was the first country to use standard time. # The railways cared most about the inconsistencies of local mean time, *************** *** 168,179 **** # known as "British" Summer Time in all parts of the United Kingdom. # Date: 4 Jan 89 08:57:25 GMT (Wed) ! # From: Jonathan Leffler # [British Summer Time] is fixed annually by Act of Parliament. # If you can predict what Parliament will do, you should be in # politics making a fortune, not computing. ! # From Chris Carrier <72157.3334@CompuServe.COM> (1996-06-14): # I remember reading in various wartime issues of the London Times the # acronym BDST for British Double Summer Time. Look for the published # time of sunrise and sunset in The Times, when BDST was in effect, and --- 168,179 ---- # known as "British" Summer Time in all parts of the United Kingdom. # Date: 4 Jan 89 08:57:25 GMT (Wed) ! # From: Jonathan Leffler # [British Summer Time] is fixed annually by Act of Parliament. # If you can predict what Parliament will do, you should be in # politics making a fortune, not computing. ! # From Chris Carrier (1996-06-14): # I remember reading in various wartime issues of the London Times the # acronym BDST for British Double Summer Time. Look for the published # time of sunrise and sunset in The Times, when BDST was in effect, and *************** *** 204,218 **** # and follows the more usual convention of putting the location name first, # so we use `BDST'. ! # Peter Ilieve (1998-04-19) described at length # the history of summer time legislation in the United Kingdom. ! # Since 1998 Joseph S. Myers has been updating # and extending this list, which can be found in # # History of legal time in Britain # ! # From Joseph S. Myers (1998-01-06): # # The legal time in the UK outside of summer time is definitely GMT, not UTC; # see Lord Tanlaw's speech --- 204,218 ---- # and follows the more usual convention of putting the location name first, # so we use `BDST'. ! # Peter Ilieve (1998-04-19) described at length # the history of summer time legislation in the United Kingdom. ! # Since 1998 Joseph S. Myers has been updating # and extending this list, which can be found in # # History of legal time in Britain # ! # From Joseph S. Myers (1998-01-06): # # The legal time in the UK outside of summer time is definitely GMT, not UTC; # see Lord Tanlaw's speech *************** *** 255,260 **** --- 255,289 ---- # "Timeball on the ballast office is down. Dunsink time." # -- James Joyce, Ulysses + # From Joseph S. Myers (2005-01-26): + # Irish laws are available online at www.irishstatutebook.ie. These include + # various relating to legal time, for example: + # + # ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html + # + # ZZSI71Y1947.html ZZSI128Y1948.html ZZSI23Y1949.html ZZSI41Y1950.html + # ZZSI27Y1951.html ZZSI73Y1952.html + # + # ZZSI11Y1961.html ZZSI232Y1961.html ZZSI182Y1962.html + # ZZSI167Y1963.html ZZSI257Y1964.html ZZSI198Y1967.html + # ZZA23Y1968.html ZZA17Y1971.html + # + # ZZSI67Y1981.html ZZSI212Y1982.html ZZSI45Y1986.html + # ZZSI264Y1988.html ZZSI52Y1990.html ZZSI371Y1992.html + # ZZSI395Y1994.html ZZSI484Y1997.html ZZSI506Y2001.html + # + # [These are all relative to the root, e.g., the first is + # .] + # + # (These are those I found, but there could be more. In any case these + # should allow various updates to the comments in the europe file to cover + # the laws applicable in Ireland.) + # + # (Note that the time in the Republic of Ireland since 1968 has been defined + # in terms of standard time being GMT+1 with a period of winter time when it + # is GMT, rather than standard time being GMT with a period of summer time + # being GMT+1.) + # From Paul Eggert (1999-03-28): # Clive Feather (, 1997-03-31) # reports that Folkestone (Cheriton) Shuttle Terminal uses Concession Time *************** *** 393,405 **** 1:00 - BST 1971 Oct 31 2:00u 0:00 GB-Eire %s 1996 0:00 EU GMT/BST - Zone Europe/Belfast -0:23:40 - LMT 1880 Aug 2 - -0:25:21 - DMT 1916 May 21 2:00 # Dublin/Dunsink MT - -0:25:21 1:00 IST 1916 Oct 1 2:00s # Irish Summer Time - 0:00 GB-Eire %s 1968 Oct 27 - 1:00 - BST 1971 Oct 31 2:00u - 0:00 GB-Eire %s 1996 - 0:00 EU GMT/BST Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 -0:25:21 - DMT 1916 May 21 2:00 -0:25:21 1:00 IST 1916 Oct 1 2:00s --- 422,427 ---- *************** *** 507,513 **** # Previous editions of this database used abbreviations like MET DST # for Central European Summer Time, but this didn't agree with common usage. ! # From Markus Kuhn (1996-07-12): # The official German names ... are # # Mitteleuropaeische Zeit (MEZ) = UTC+01:00 --- 529,535 ---- # Previous editions of this database used abbreviations like MET DST # for Central European Summer Time, but this didn't agree with common usage. ! # From Markus Kuhn (1996-07-12): # The official German names ... are # # Mitteleuropaeische Zeit (MEZ) = UTC+01:00 *************** *** 623,629 **** # pp 8-9. # LMT before 1892 was 0:17:30, according to the official journal of Belgium: # Moniteur Belge, Samedi 30 Avril 1892, N.121. ! # Thanks to Pascal Delmoitie for these references. # The 1918 rules are listed for completeness; they apply to unoccupied Belgium. # Assume Brussels switched to WET in 1918 when the armistice took effect. # --- 645,651 ---- # pp 8-9. # LMT before 1892 was 0:17:30, according to the official journal of Belgium: # Moniteur Belge, Samedi 30 Avril 1892, N.121. ! # Thanks to Pascal Delmoitie for these references. # The 1918 rules are listed for completeness; they apply to unoccupied Belgium. # Assume Brussels switched to WET in 1918 when the armistice took effect. # *************** *** 682,688 **** # Bulgaria # ! # From Plamen Simenov via Steffen Thorsen (1999-09-09): # A document of Government of Bulgaria (No.94/1997) says: # EET --> EETDST is in 03:00 Local time in last Sunday of March ... # EETDST --> EET is in 04:00 Local time in last Sunday of October --- 704,710 ---- # Bulgaria # ! # From Plamen Simenov via Steffen Thorsen (1999-09-09): # A document of Government of Bulgaria (No.94/1997) says: # EET --> EETDST is in 03:00 Local time in last Sunday of March ... # EETDST --> EET is in 04:00 Local time in last Sunday of October *************** *** 708,714 **** # see Serbia and Montenegro # Cyprus ! # See the `asia' file. # Czech Republic # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --- 730,736 ---- # see Serbia and Montenegro # Cyprus ! # Please see the `asia' file for Asia/Nicosia. # Czech Republic # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S *************** *** 727,732 **** --- 749,788 ---- 1:00 EU CE%sT # Denmark, Faeroe Islands, and Greenland + + # From Jesper Norgaard Welen (2005-04-26): + # http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law + # [introducing standard time] was in effect from 1894-01-01.... + # The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL + # confirms this, and states that the law was put forth 1893-03-29. + # + # The EU treaty with effect from 1973: + # http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL + # + # This provoked a new law from 1974 to make possible summer time changes + # in subsequenet decrees with the law + # http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL + # + # It seems however that no decree was set forward until 1980. I have + # not found any decree, but in another related law, the effecting DST + # changes are stated explicitly to be from 1980-04-06 at 02:00 to + # 1980-09-28 at 02:00. If this is true, this differs slightly from + # the EU rule in that DST runs to 02:00, not 03:00. We don't know + # when Denmark began using the EU rule correctly, but we have only + # confirmation of the 1980-time, so I presume it was correct in 1981: + # The law is about the management of the extra hour, concerning + # working hours reported and effect on obligatory-rest rules (which + # was suspended on that night): + # http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL + + # From Jesper Norgaard Welen (2005-06-11): + # The Herning Folkeblad (1980-09-26) reported that the night between + # Saturday and Sunday the clock is set back from three to two. + + # From Paul Eggert (2005-06-11): + # Hence the "02:00" of the 1980 law refers to standard time, not + # wall-clock time, and so the EU rules were in effect in 1980. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Denmark 1916 only - May 14 23:00 1:00 S Rule Denmark 1916 only - Sep 30 23:00 0 - *************** *** 739,751 **** Rule Denmark 1947 only - Aug 10 2:00s 0 - Rule Denmark 1948 only - May 9 2:00s 1:00 S Rule Denmark 1948 only - Aug 8 2:00s 0 - - # Whitman also gives 1949 Apr 9 to 1949 Oct 1, and disagrees in minor ways - # about many of the above dates; go with Shanks. # - # For 1894, Shanks says Jan, Whitman Apr; go with Whitman. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Copenhagen 0:50:20 - LMT 1890 ! 0:50:20 - CMT 1894 Apr # Copenhagen Mean Time 1:00 Denmark CE%sT 1942 Nov 2 2:00s 1:00 C-Eur CE%sT 1945 Apr 2 2:00 1:00 Denmark CE%sT 1980 --- 795,804 ---- Rule Denmark 1947 only - Aug 10 2:00s 0 - Rule Denmark 1948 only - May 9 2:00s 1:00 S Rule Denmark 1948 only - Aug 8 2:00s 0 - # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Copenhagen 0:50:20 - LMT 1890 ! 0:50:20 - CMT 1894 Jan 1 # Copenhagen MT 1:00 Denmark CE%sT 1942 Nov 2 2:00s 1:00 C-Eur CE%sT 1945 Apr 2 2:00 1:00 Denmark CE%sT 1980 *************** *** 754,759 **** --- 807,817 ---- 0:00 - WET 1981 0:00 EU WE%sT # + # From Paul Eggert (2004-10-31): + # During World War II, Germany maintained secret manned weather stations in + # East Greenland and Franz Josef Land, but we don't know their time zones. + # My source for this is Wilhelm Dege's book mentioned under Svalbard. + # # From Paul Eggert (1996-11-22): # Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01, # and left the EU on 1985-02-01. It therefore should have been using EU *************** *** 840,851 **** -4:00 Thule A%sT # Estonia ! # From Peter Ilieve (1994-10-15): # A relative in Tallinn confirms the accuracy of the data for 1989 onwards # [through 1994] and gives the legal authority for it, # a regulation of the Government of Estonia, No. 111 of 1989.... # ! # From Peter Ilieve (1996-10-28): # [IATA SSIM (1992/1996) claims that the Baltic republics switch at 01:00s, # but a relative confirms that Estonia still switches at 02:00s, writing:] # ``I do not [know] exactly but there are some little different --- 898,909 ---- -4:00 Thule A%sT # Estonia ! # From Peter Ilieve (1994-10-15): # A relative in Tallinn confirms the accuracy of the data for 1989 onwards # [through 1994] and gives the legal authority for it, # a regulation of the Government of Estonia, No. 111 of 1989.... # ! # From Peter Ilieve (1996-10-28): # [IATA SSIM (1992/1996) claims that the Baltic republics switch at 01:00s, # but a relative confirms that Estonia still switches at 02:00s, writing:] # ``I do not [know] exactly but there are some little different *************** *** 855,861 **** # human physiology. It seems that Estonia maybe will not change to # summer time next spring.'' ! # From Peter Ilieve (1998-11-04), heavily edited: # # The 1998-09-22 Estonian time law # --- 913,919 ---- # human physiology. It seems that Estonia maybe will not change to # summer time next spring.'' ! # From Peter Ilieve (1998-11-04), heavily edited: # # The 1998-09-22 Estonian time law # *************** *** 904,914 **** # Finland # ! # From Hannu Strang (25 Sep 1994 06:03:37 UTC): # Well, here in Helsinki we're just changing from summer time to regular one, # and it's supposed to change at 4am... # ! # From Paul Eggert (25 Sep 1994): # Shanks says Finland has switched at 02:00 standard time since 1981. # Go with Strang instead. # --- 962,972 ---- # Finland # ! # From Hannu Strang (25 Sep 1994 06:03:37 UTC): # Well, here in Helsinki we're just changing from summer time to regular one, # and it's supposed to change at 4am... # ! # From Paul Eggert (25 Sep 1994): # Shanks says Finland has switched at 02:00 standard time since 1981. # Go with Strang instead. # *************** *** 921,926 **** --- 979,988 ---- 2:00 Finland EE%sT 1981 Mar 29 2:00 2:00 EU EE%sT + # Aaland Is + Link Europe/Helsinki Europe/Mariehamn + + # France # From Ciro Discepolo (2000-12-20): *************** *** 981,987 **** # Dole, Morez, St-Claude, and Collognes (Haute-Savioe). Rule France 1941 only - May 5 0:00 2:00 M # Midsummer # Shanks says this transition occurred at Oct 6 1:00, ! # but go with Denis.Excoffier@ens.fr (1997-12-12), # who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes # as saying 5/10/41 22hUT. Rule France 1941 only - Oct 6 0:00 1:00 S --- 1043,1049 ---- # Dole, Morez, St-Claude, and Collognes (Haute-Savioe). Rule France 1941 only - May 5 0:00 2:00 M # Midsummer # Shanks says this transition occurred at Oct 6 1:00, ! # but go with Denis Excoffier (1997-12-12), # who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes # as saying 5/10/41 22hUT. Rule France 1941 only - Oct 6 0:00 1:00 S *************** *** 1015,1021 **** # Germany ! # From Markus Kuhn (1998-09-29): # The German time zone web site by the Physikalisch-Technische # Bundesanstalt contains DST information back to 1916. # [See tz-link.htm for the URL.] --- 1077,1083 ---- # Germany ! # From Markus Kuhn (1998-09-29): # The German time zone web site by the Physikalisch-Technische # Bundesanstalt contains DST information back to 1916. # [See tz-link.htm for the URL.] *************** *** 1051,1056 **** --- 1113,1123 ---- 1:00 Germany CE%sT 1980 1:00 EU CE%sT + # Georgia + # Please see the "asia" file for Asia/Tbilisi. + # Herodotus (Histories, IV.45) says Georgia north of the Phasis (now Rioni) + # is in Europe. Our reference location Tbilisi is in the Asian part. + # Gibraltar # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 *************** *** 1125,1131 **** # Iceland # ! # From Adam David (1993-11-06): # The name of the timezone in Iceland for system / mail / news purposes is GMT. # # (1993-12-05): --- 1192,1198 ---- # Iceland # ! # From Adam David (1993-11-06): # The name of the timezone in Iceland for system / mail / news purposes is GMT. # # (1993-12-05): *************** *** 1152,1158 **** # might be a reference to the Julian calendar as opposed to Gregorian, or it # might mean something else (???). # ! # From Paul Eggert (1999-10-29): # The Iceland Almanak, Shanks and Whitman disagree on many points. # We go with the Almanak, except for one claim from Shanks, namely that # Reykavik was 21W57 from 1837 to 1908, local mean time before that. --- 1219,1225 ---- # might be a reference to the Julian calendar as opposed to Gregorian, or it # might mean something else (???). # ! # From Paul Eggert (1999-10-29): # The Iceland Almanak, Shanks and Whitman disagree on many points. # We go with the Almanak, except for one claim from Shanks, namely that # Reykavik was 21W57 from 1837 to 1908, local mean time before that. *************** *** 1268,1274 **** # Latvia ! # From Liene Kanepe (1998-09-17): # I asked about this matter Scientific Secretary of the Institute of Astronomy # of The University of Latvia Dr. paed Mr. Ilgonis Vilks. I also searched the --- 1335,1341 ---- # Latvia ! # From Liene Kanepe (1998-09-17): # I asked about this matter Scientific Secretary of the Institute of Astronomy # of The University of Latvia Dr. paed Mr. Ilgonis Vilks. I also searched the *************** *** 1355,1361 **** # IATA SSIM (1992/1996) says Lithuania uses W-Eur rules, but since it is # known to be wrong about Estonia and Latvia, assume it's wrong here too. ! # From Marius Gedminas (1998-08-07): # I would like to inform that in this year Lithuanian time zone # (Europe/Vilnius) was changed. --- 1422,1428 ---- # IATA SSIM (1992/1996) says Lithuania uses W-Eur rules, but since it is # known to be wrong about Estonia and Latvia, assume it's wrong here too. ! # From Marius Gedminas (1998-08-07): # I would like to inform that in this year Lithuanian time zone # (Europe/Vilnius) was changed. *************** *** 1462,1468 **** # on 1991-08-27 (the 1992-01-19 date is that of a Russian decree). # In early 1992 there was large-scale interethnic violence in the area # and it's possible that some Russophones continued to observe Moscow time. ! # But moldavizolit@tirastel.md and mk@tirastel.md separately reported via # Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau. # The Tiraspol entry has therefore been removed for now. --- 1529,1535 ---- # on 1991-08-27 (the 1992-01-19 date is that of a Russian decree). # In early 1992 there was large-scale interethnic violence in the area # and it's possible that some Russophones continued to observe Moscow time. ! # But [two people] separately reported via # Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau. # The Tiraspol entry has therefore been removed for now. *************** *** 1565,1576 **** 1:00 EU CE%sT # Norway # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S - # Whitman gives 1916 May 21 - 1916 Oct 21; go with Shanks. Rule Norway 1916 only - May 22 1:00 1:00 S Rule Norway 1916 only - Sep 30 0:00 0 - - # Whitman says DST observed 1935-08-11/1942-11-01, then 1943-03-29/10-04, - # 1944-04-03/10-02, and 1945-04-01/10-01; go with Shanks. Rule Norway 1945 only - Apr 2 2:00s 1:00 S Rule Norway 1945 only - Oct 1 2:00s 0 - Rule Norway 1959 1964 - Mar Sun>=15 2:00s 1:00 S --- 1632,1641 ---- 1:00 EU CE%sT # Norway + # http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Norway 1916 only - May 22 1:00 1:00 S Rule Norway 1916 only - Sep 30 0:00 0 - Rule Norway 1945 only - Apr 2 2:00s 1:00 S Rule Norway 1945 only - Oct 1 2:00s 0 - Rule Norway 1959 1964 - Mar Sun>=15 2:00s 1:00 S *************** *** 1607,1613 **** # From Paul Eggert (2001-05-01): # # Actually, Jan Mayen was never occupied by Germany during World War II, ! # so it must have diverged from Oslo time during the war, as Olso was # keeping Berlin time. # # says that the meteorologists --- 1672,1678 ---- # From Paul Eggert (2001-05-01): # # Actually, Jan Mayen was never occupied by Germany during World War II, ! # so it must have diverged from Oslo time during the war, as Oslo was # keeping Berlin time. # # says that the meteorologists *************** *** 1624,1630 **** # says that the Germans were # expelled on 1942-05-14. However, small parties of Germans did return, # and according to Wilhelm Dege's book "War North of 80" (1954) ! # # the German armed forces at the Svalbard weather station code-named # Haudegen did not surrender to the Allies until September 1945. # --- 1689,1695 ---- # says that the Germans were # expelled on 1942-05-14. However, small parties of Germans did return, # and according to Wilhelm Dege's book "War North of 80" (1954) ! # # the German armed forces at the Svalbard weather station code-named # Haudegen did not surrender to the Allies until September 1945. # *************** *** 1643,1661 **** # For 1944-1948 Whitman gives the previous day; go with Shanks. Rule Poland 1945 only - Apr 29 0:00 1:00 S Rule Poland 1945 only - Nov 1 0:00 0 - ! Rule Poland 1946 only - Apr 14 0:00 1:00 S ! Rule Poland 1946 only - Sep 7 0:00 0 - ! Rule Poland 1947 only - May 4 0:00 1:00 S ! Rule Poland 1947 1948 - Oct Sun>=1 0:00 0 - ! Rule Poland 1948 only - Apr 18 0:00 1:00 S ! # Whitman also gives 1949 Apr 9 - 1949 Oct 1; go with Shanks. Rule Poland 1957 only - Jun 2 1:00s 1:00 S Rule Poland 1957 1958 - Sep lastSun 1:00s 0 - Rule Poland 1958 only - Mar 30 1:00s 1:00 S Rule Poland 1959 only - May 31 1:00s 1:00 S Rule Poland 1959 1961 - Oct Sun>=1 1:00s 0 - Rule Poland 1960 only - Apr 3 1:00s 1:00 S ! Rule Poland 1961 1964 - May Sun>=25 1:00s 1:00 S Rule Poland 1962 1964 - Sep lastSun 1:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Warsaw 1:24:00 - LMT 1880 --- 1708,1733 ---- # For 1944-1948 Whitman gives the previous day; go with Shanks. Rule Poland 1945 only - Apr 29 0:00 1:00 S Rule Poland 1945 only - Nov 1 0:00 0 - ! # For 1946 on the source is Kazimierz Borkowski, ! # Torun Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U., ! # ! # Thanks to Przemyslaw Augustyniak (2005-05-28) for this reference. ! # He also gives these further references: ! # Mon Pol nr 13, poz 162 (1995) ! # Druk nr 2180 (2003) ! Rule Poland 1946 only - Apr 14 0:00s 1:00 S ! Rule Poland 1946 only - Oct 7 2:00s 0 - ! Rule Poland 1947 only - May 4 2:00s 1:00 S ! Rule Poland 1947 1949 - Oct Sun>=1 2:00s 0 - ! Rule Poland 1948 only - Apr 18 2:00s 1:00 S ! Rule Poland 1949 only - Apr 10 2:00s 1:00 S Rule Poland 1957 only - Jun 2 1:00s 1:00 S Rule Poland 1957 1958 - Sep lastSun 1:00s 0 - Rule Poland 1958 only - Mar 30 1:00s 1:00 S Rule Poland 1959 only - May 31 1:00s 1:00 S Rule Poland 1959 1961 - Oct Sun>=1 1:00s 0 - Rule Poland 1960 only - Apr 3 1:00s 1:00 S ! Rule Poland 1961 1964 - May lastSun 1:00s 1:00 S Rule Poland 1962 1964 - Sep lastSun 1:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Warsaw 1:24:00 - LMT 1880 *************** *** 1664,1696 **** 2:00 Poland EE%sT 1922 Jun 1:00 Poland CE%sT 1940 Jun 23 2:00 1:00 C-Eur CE%sT 1944 Oct ! 1:00 Poland CE%sT 1977 Apr 3 1:00 ! 1:00 W-Eur CE%sT 1999 ! # IATA SSIM (1991/1996) gives EU rules, but the _The Warsaw Voice_ ! # ! # http://www.warsawvoice.com/pl/v361/NewsInBrief.shtml (1995-09-24) ! # ! # says the autumn 1995 switch was at 02:00. ! # Stick with W-Eur for now. ! # ! # From Marcin.Kasperski@softax.com.pl (1999-06-10): ! # According to my colleagues someone recently decided, that Poland would ! # follow European Union regulations, so - I think - the matter is not ! # worth further discussion. ! # ! # From Paul Eggert (1999-06-10): ! # Kasperski also writes that the government futzed with the rules in 1997 ! # or 1998 but he doesn't remember the details. Assume they switched to ! # EU rules in 1999. 1:00 EU CE%sT # Portugal # ! # From Rui Pedro Salgueiro (1992-11-12): # Portugal has recently (September, 27) changed timezone # (from WET to MET or CET) to harmonize with EEC. # ! # Martin Bruckmann (1996-02-29) reports via Peter Ilieve # that Portugal is reverting to 0:00 by not moving its clocks this spring. # The new Prime Minister was fed up with getting up in the dark in the winter. # --- 1736,1752 ---- 2:00 Poland EE%sT 1922 Jun 1:00 Poland CE%sT 1940 Jun 23 2:00 1:00 C-Eur CE%sT 1944 Oct ! 1:00 Poland CE%sT 1977 ! 1:00 W-Eur CE%sT 1988 1:00 EU CE%sT # Portugal # ! # From Rui Pedro Salgueiro (1992-11-12): # Portugal has recently (September, 27) changed timezone # (from WET to MET or CET) to harmonize with EEC. # ! # Martin Bruckmann (1996-02-29) reports via Peter Ilieve # that Portugal is reverting to 0:00 by not moving its clocks this spring. # The new Prime Minister was fed up with getting up in the dark in the winter. # *************** *** 1820,1844 **** # Russia ! # From Paul Eggert (1999-11-12): # Except for Moscow after 1919-07-01, I invented the time zone abbreviations. # Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991, # are from Andrey A. Chernov. The rest is from Shanks, except we follow # Chernov's report that 1992 DST transitions were Sat 23:00, not Sun 02:00s. # ! # From Stanislaw A. Kuzikowski (1994-06-29): # But now it is some months since Novosibirsk is 3 hours ahead of Moscow! # I do not know why they have decided to make this change; # as far as I remember it was done exactly during winter->summer switching # so we (Novosibirsk) simply did not switch. # ! # From Andrey A. Chernov (1996-10-04): # `MSK' and `MSD' were born and used initially on Moscow computers with # UNIX-like OSes by several developer groups (e.g. Demos group, Kiae group).... # The next step was the UUCP network, the Relcom predecessor # (used mainly for mail), and MSK/MSD was actively used there. # ! # From Chris Carrier <72157.3334@CompuServe.COM> (1996-10-30): # According to a friend of mine who rode the Trans-Siberian Railroad from # Moscow to Irkutsk in 1995, public air and rail transport in Russia ... # still follows Moscow time, no matter where in Russia it is located. --- 1876,1900 ---- # Russia ! # From Paul Eggert (1999-11-12): # Except for Moscow after 1919-07-01, I invented the time zone abbreviations. # Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991, # are from Andrey A. Chernov. The rest is from Shanks, except we follow # Chernov's report that 1992 DST transitions were Sat 23:00, not Sun 02:00s. # ! # From Stanislaw A. Kuzikowski (1994-06-29): # But now it is some months since Novosibirsk is 3 hours ahead of Moscow! # I do not know why they have decided to make this change; # as far as I remember it was done exactly during winter->summer switching # so we (Novosibirsk) simply did not switch. # ! # From Andrey A. Chernov (1996-10-04): # `MSK' and `MSD' were born and used initially on Moscow computers with # UNIX-like OSes by several developer groups (e.g. Demos group, Kiae group).... # The next step was the UUCP network, the Relcom predecessor # (used mainly for mail), and MSK/MSD was actively used there. # ! # From Chris Carrier (1996-10-30): # According to a friend of mine who rode the Trans-Siberian Railroad from # Moscow to Irkutsk in 1995, public air and rail transport in Russia ... # still follows Moscow time, no matter where in Russia it is located. *************** *** 2026,2032 **** 1:00 - CET 1941 Apr 18 23:00 1:00 C-Eur CE%sT 1945 May 8 2:00s 1:00 1:00 CEST 1945 Sep 16 2:00s ! # Metod Kozelj reports that the legal date of # transition to EU rules was 1982-11-27, for all of Yugoslavia at the time. # Shanks doesn't give as much detail, so go with Kozelj. 1:00 - CET 1982 Nov 27 --- 2082,2088 ---- 1:00 - CET 1941 Apr 18 23:00 1:00 C-Eur CE%sT 1945 May 8 2:00s 1:00 1:00 CEST 1945 Sep 16 2:00s ! # Metod Kozelj reports that the legal date of # transition to EU rules was 1982-11-27, for all of Yugoslavia at the time. # Shanks doesn't give as much detail, so go with Kozelj. 1:00 - CET 1982 Nov 27 *************** *** 2300,2306 **** 3:00 Russia MSK/MSD 1990 3:00 - MSK 1990 Jul 1 2:00 2:00 - EET 1992 ! # From Paul Eggert (1999-11-12): # The _Economist_ (1994-05-28, p 45) reports that central Crimea switched # from Kiev to Moscow time sometime after the January 1994 elections. # Shanks says ``date of change uncertain'', but implies that it happened --- 2356,2362 ---- 3:00 Russia MSK/MSD 1990 3:00 - MSK 1990 Jul 1 2:00 2:00 - EET 1992 ! # From Paul Eggert (1999-11-12): # The _Economist_ (1994-05-28, p 45) reports that central Crimea switched # from Kiev to Moscow time sometime after the January 1994 elections. # Shanks says ``date of change uncertain'', but implies that it happened *************** *** 2330,2337 **** # ... # Date: Wed, 28 Jan 87 16:56:27 -0100 ! # From: seismo!mcvax!cgcha!wtho (Tom Hofmann) ! # Message-Id: <8701281556.AA22174@cgcha.uucp> # ... # # ...the European time rules are...standardized since 1981, when --- 2386,2392 ---- # ... # Date: Wed, 28 Jan 87 16:56:27 -0100 ! # From: Tom Hofmann # ... # # ...the European time rules are...standardized since 1981, when *************** *** 2350,2360 **** # # Tom Hofmann, Scientific Computer Center, CIBA-GEIGY AG, # 4002 Basle, Switzerland ! # UUCP: ...!mcvax!cernvax!cgcha!wtho # ... # Date: Wed, 4 Feb 87 22:35:22 +0100 ! # From: seismo!mcvax!cwi.nl!dik (Dik T. Winter) # ... # # The information from Tom Hofmann is (as far as I know) not entirely correct. --- 2405,2415 ---- # # Tom Hofmann, Scientific Computer Center, CIBA-GEIGY AG, # 4002 Basle, Switzerland ! # ... # ... # Date: Wed, 4 Feb 87 22:35:22 +0100 ! # From: Dik T. Winter # ... # # The information from Tom Hofmann is (as far as I know) not entirely correct. *************** *** 2380,2387 **** # # ... # dik t. winter, cwi, amsterdam, nederland ! # INTERNET : dik@cwi.nl ! # BITNET/EARN: dik@mcvax # From Bob Devine (1988-01-28): # ... --- 2435,2441 ---- # # ... # dik t. winter, cwi, amsterdam, nederland ! # ... # From Bob Devine (1988-01-28): # ... Index: src/share/zoneinfo/iso3166.tab diff -c src/share/zoneinfo/iso3166.tab:1.1.1.10 src/share/zoneinfo/iso3166.tab:1.1.1.10.2.1 *** src/share/zoneinfo/iso3166.tab:1.1.1.10 Sat Dec 20 00:18:35 2003 --- src/share/zoneinfo/iso3166.tab Tue Sep 6 01:33:43 2005 *************** *** 1,12 **** # ISO 3166 alpha-2 country codes # ! # @(#)iso3166.tab 1.14 # ! # From Paul Eggert (2003-02-04): # # This file contains a table with the following columns: # 1. ISO 3166-1 alpha-2 country code, current as of ! # ISO 3166-1 Newsletter No. V-8 (2003-07-23). See: # # ISO 3166 Maintenance agency (ISO 3166/MA) # . --- 1,12 ---- # ISO 3166 alpha-2 country codes # ! # @(#)iso3166.tab 1.17 # ! # From Paul Eggert (2004-06-14): # # This file contains a table with the following columns: # 1. ISO 3166-1 alpha-2 country code, current as of ! # ISO 3166-1 Newsletter No. V-10 (2004-04-26). See: # # ISO 3166 Maintenance agency (ISO 3166/MA) # . *************** *** 36,41 **** --- 36,42 ---- AT Austria AU Australia AW Aruba + AX Aaland Islands AZ Azerbaijan BA Bosnia & Herzegovina BB Barbados *************** *** 254,260 **** VN Vietnam VU Vanuatu WF Wallis & Futuna ! WS Samoa (Western) YE Yemen YT Mayotte ZA South Africa --- 255,261 ---- VN Vietnam VU Vanuatu WF Wallis & Futuna ! WS Samoa (western) YE Yemen YT Mayotte ZA South Africa Index: src/share/zoneinfo/leapseconds diff -c src/share/zoneinfo/leapseconds:1.1.1.8.2.1 src/share/zoneinfo/leapseconds:1.1.1.8.2.2 *** src/share/zoneinfo/leapseconds:1.1.1.8.2.1 Tue Jun 15 22:09:17 2004 --- src/share/zoneinfo/leapseconds Tue Sep 6 01:33:43 2005 *************** *** 1,4 **** ! # @(#)leapseconds 7.17 # Allowance for leapseconds added to each timezone file. --- 1,4 ---- ! # @(#)leapseconds 7.20 # Allowance for leapseconds added to each timezone file. *************** *** 43,81 **** Leap 1995 Dec 31 23:59:60 + S Leap 1997 Jun 30 23:59:60 + S Leap 1998 Dec 31 23:59:60 + S ! # INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS) ! # # SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE ! # # SERVICE DE LA ROTATION TERRESTRE # OBSERVATOIRE DE PARIS # 61, Av. de l'Observatoire 75014 PARIS (France) # Tel. : 33 (0) 1 40 51 22 26 # FAX : 33 (0) 1 40 51 22 91 ! # Internet : services.iers@obspm.fr ! # ! # Paris, 15 January 2004 ! # ! # Bulletin C 27 ! # ! # To authorities responsible ! # for the measurement and ! # distribution of time ! # ! # INFORMATION ON UTC - TAI ! # ! # NO positive leap second will be introduced at the end of June 2004. # The difference between UTC and the International Atomic Time TAI is: ! # ! # from 1999 January 1, 0h UTC, until further notice : UTC-TAI = -32 s ! # ! # Leap seconds can be introduced in UTC at the end of the months of December # or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every ! # six months, either to announce a time step in UTC, or to confirm that there # will be no time step at the next possible date. ! # ! # Daniel GAMBIS ! # Director ! # Earth Orientation Center of IERS ! # Observatoire de Paris, France --- 43,92 ---- Leap 1995 Dec 31 23:59:60 + S Leap 1997 Jun 30 23:59:60 + S Leap 1998 Dec 31 23:59:60 + S + Leap 2005 Dec 31 23:59:60 + S ! # INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS) ! # # SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE ! # # SERVICE DE LA ROTATION TERRESTRE # OBSERVATOIRE DE PARIS # 61, Av. de l'Observatoire 75014 PARIS (France) # Tel. : 33 (0) 1 40 51 22 26 # FAX : 33 (0) 1 40 51 22 91 ! # ... ! # http://hpiers.obspm.fr/eop-pc ! # ! # Paris, 4 July 2005 ! # ! # Bulletin C 30 ! # ! # To authorities responsible ! # for the measurement and ! # distribution of time ! # ! # ! # UTC TIME STEP ! # on the 1st of January 2006 ! # ! # A positive leap second will be introduced at the end of December 2005. ! # The sequence of dates of the UTC second markers will be: ! # ! # 2005 December 31, 23h 59m 59s ! # 2005 December 31, 23h 59m 60s ! # 2006 January 1, 0h 0m 0s ! # # The difference between UTC and the International Atomic Time TAI is: ! # ! # from 1999 January 1, 0h UTC, to 2006 January 1 0h UTC : UTC-TAI = - 32s ! # from 2006 January 1, 0h UTC, until further notice : UTC-TAI = - 33s ! # ! # Leap seconds can be introduced in UtC at the end of the months of December # or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every ! # six months, either to announce a time step in UTC or to confirm that there # will be no time step at the next possible date. ! # ! # Daniel GAMBIS ! # Head ! # Earth Orientation Center of IERS ! # Observatoire de Paris, France Index: src/share/zoneinfo/northamerica diff -c src/share/zoneinfo/northamerica:1.1.1.25.2.1 src/share/zoneinfo/northamerica:1.1.1.25.2.3 *** src/share/zoneinfo/northamerica:1.1.1.25.2.1 Tue Jun 15 22:09:23 2004 --- src/share/zoneinfo/northamerica Tue Oct 11 16:48:32 2005 *************** *** 1,11 **** ! # @(#)northamerica 7.69 # also includes Central America and the Caribbean # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-03-22): # A reliable and entertaining source about time zones is # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997). --- 1,11 ---- ! # @(#)northamerica 7.80 # also includes Central America and the Caribbean # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-03-22): # A reliable and entertaining source about time zones is # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997). *************** *** 24,35 **** # His proposal was adopted by the railroads on 1883-11-18 at 12:00, # and the most of the country soon followed suit. ! # From Paul Eggert (1995-12-19): # A good source for time zone historical data in the US is # Thomas G. Shanks, The American Atlas (5th edition), # San Diego: ACS Publications, Inc. (1991). # Make sure you have the errata sheet; the book is somewhat useless without it. ! # It is the source for the US and Puerto Rico entries below. # From Paul Eggert (2001-03-06): # Daylight Saving Time was first suggested as a joke by Benjamin Franklin --- 24,39 ---- # His proposal was adopted by the railroads on 1883-11-18 at 12:00, # and the most of the country soon followed suit. ! # From Paul Eggert (2005-04-16): ! # That 1883 transition occurred at 12:00 new time, not at 12:00 old time. ! # See p 46 of David Prerau, Seize the daylight, Thunder's Mouth Press (2005). ! ! # From Paul Eggert (1995-12-19): # A good source for time zone historical data in the US is # Thomas G. Shanks, The American Atlas (5th edition), # San Diego: ACS Publications, Inc. (1991). # Make sure you have the errata sheet; the book is somewhat useless without it. ! # It is the source for most of the pre-1991 US and Puerto Rico entries below. # From Paul Eggert (2001-03-06): # Daylight Saving Time was first suggested as a joke by Benjamin Franklin *************** *** 48,54 **** # to push people into bed earlier, and get them up earlier, to make # them healthy, wealthy and wise in spite of themselves. # ! # -- Robertson Davies, The Diary of Samuel Marchbanks (1947), XIX, Sunday # # For more about the first ten years of DST in the United States, see # Robert Garland's --- 52,59 ---- # to push people into bed earlier, and get them up earlier, to make # them healthy, wealthy and wise in spite of themselves. # ! # -- Robertson Davies, The diary of Samuel Marchbanks, ! # Clarke, Irwin (1947), XIX, Sunday # # For more about the first ten years of DST in the United States, see # Robert Garland's *************** *** 78,84 **** # Time' instead of the old familiar 'Eastern War Time.' Peace is wonderful." # (August 1945) by way of confirmation. ! # From Joseph Gallant , citing # George H. Douglas, _The Early Days of Radio Broadcasting_ (1987): # At 7 P.M. (Eastern War Time) [on 1945-08-14], the networks were set # to switch to London for Attlee's address, but the American people --- 83,89 ---- # Time' instead of the old familiar 'Eastern War Time.' Peace is wonderful." # (August 1945) by way of confirmation. ! # From Joseph Gallant citing # George H. Douglas, _The Early Days of Radio Broadcasting_ (1987): # At 7 P.M. (Eastern War Time) [on 1945-08-14], the networks were set # to switch to London for Attlee's address, but the American people *************** *** 105,125 **** # # He had scored a 20-second scoop on other broadcasters. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule US 1918 1919 - Mar lastSun 2:00 1:00 D Rule US 1918 1919 - Oct lastSun 2:00 0 S Rule US 1942 only - Feb 9 2:00 1:00 W # War Rule US 1945 only - Aug 14 23:00u 1:00 P # Peace Rule US 1945 only - Sep 30 2:00 0 S ! Rule US 1967 max - Oct lastSun 2:00 0 S Rule US 1967 1973 - Apr lastSun 2:00 1:00 D Rule US 1974 only - Jan 6 2:00 1:00 D Rule US 1975 only - Feb 23 2:00 1:00 D Rule US 1976 1986 - Apr lastSun 2:00 1:00 D ! Rule US 1987 max - Apr Sun>=1 2:00 1:00 D ! # ! # H.R.177 ! # (introduced 1999-01-06) would change April to March in the above rule. # From Bob Devine (1988-01-28): # ...Alaska (and Hawaii) had the timezone names changed in 1967. --- 110,135 ---- # # He had scored a 20-second scoop on other broadcasters. + # From Arthur David Olson (2005-08-22): + # Paul has been careful to use the "US" rules only in those locations + # that are part of the United States; this reflects the real scope of + # U.S. government action. So even though the "US" rules have changed + # in the latest release, other countries won't be affected. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule US 1918 1919 - Mar lastSun 2:00 1:00 D Rule US 1918 1919 - Oct lastSun 2:00 0 S Rule US 1942 only - Feb 9 2:00 1:00 W # War Rule US 1945 only - Aug 14 23:00u 1:00 P # Peace Rule US 1945 only - Sep 30 2:00 0 S ! Rule US 1967 2006 - Oct lastSun 2:00 0 S Rule US 1967 1973 - Apr lastSun 2:00 1:00 D Rule US 1974 only - Jan 6 2:00 1:00 D Rule US 1975 only - Feb 23 2:00 1:00 D Rule US 1976 1986 - Apr lastSun 2:00 1:00 D ! Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D ! Rule US 2007 max - Mar Sun>=8 2:00 1:00 D ! Rule US 2007 max - Nov Sun>=1 2:00 0 S # From Bob Devine (1988-01-28): # ...Alaska (and Hawaii) had the timezone names changed in 1967. *************** *** 197,213 **** # Public law 106-564 (2000-12-23) introduced the abbreviation # "Chamorro Standard Time" for time in Guam and the Northern Marianas. # See the file "australasia". ! # US eastern time, represented by New York # Connecticut, Delaware, District of Columbia, most of Florida, ! # Georgia, southeast Indiana (Clark, Dearborn, Floyd, Harrison, and ! # Ohio counties), eastern Kentucky, Maine, Maryland, Massachusetts, # New Hampshire, New Jersey, New York, North Carolina, Ohio, # Pennsylvania, Rhode Island, South Carolina, eastern Tennessee, # Vermont, Virginia, West Virginia # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER Rule NYC 1920 only - Mar lastSun 2:00 1:00 D Rule NYC 1920 only - Oct lastSun 2:00 0 S --- 207,259 ---- # Public law 106-564 (2000-12-23) introduced the abbreviation # "Chamorro Standard Time" for time in Guam and the Northern Marianas. # See the file "australasia". ! ! # From Arthur David Olson, 2005-08-09 ! # The following was signed into law on 2005-08-08. ! # ! # H.R. 6, Energy Policy Act of 2005, SEC. 110. DAYLIGHT SAVINGS. ! # (a) Amendment- Section 3(a) of the Uniform Time Act of 1966 (15 ! # U.S.C. 260a(a)) is amended-- ! # (1) by striking `first Sunday of April' and inserting `second ! # Sunday of March'; and ! # (2) by striking `last Sunday of October' and inserting `first ! # Sunday of November'. ! # (b) Effective Date- Subsection (a) shall take effect 1 year after the ! # date of enactment of this Act or March 1, 2007, whichever is later. ! # (c) Report to Congress- Not later than 9 months after the effective ! # date stated in subsection (b), the Secretary shall report to Congress ! # on the impact of this section on energy consumption in the United ! # States. ! # (d) Right to Revert- Congress retains the right to revert the ! # Daylight Saving Time back to the 2005 time schedules once the ! # Department study is complete. # US eastern time, represented by New York # Connecticut, Delaware, District of Columbia, most of Florida, ! # Georgia, southeast Indiana (Dearborn and Ohio counties), eastern Kentucky ! # (except America/Kentucky/Louisville below), Maine, Maryland, Massachusetts, # New Hampshire, New Jersey, New York, North Carolina, Ohio, # Pennsylvania, Rhode Island, South Carolina, eastern Tennessee, # Vermont, Virginia, West Virginia + # From Dave Cantor (2004-11-02): + # Early this summer I had the occasion to visit the Mount Washington + # Observatory weather station atop (of course!) Mount Washington [, NH].... + # One of the staff members said that the station was on Eastern Standard Time + # and didn't change their clocks for Daylight Saving ... so that their + # reports will always have times which are 5 hours behind UTC. + + # From Paul Eggert (2005-08-26): + # According to today's Huntsville Times + # + # a few towns on Alabama's "eastern border with Georgia, such as Phenix City + # in Russell County, Lanett in Chambers County and some towns in Lee County, + # set their watches and clocks on Eastern time." It quotes H.H. "Bubba" + # Roberts, city administrator in Phenix City. as saying "We are in the Central + # time zone, but we do go by the Eastern time zone because so many people work + # in Columbus." + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER Rule NYC 1920 only - Mar lastSun 2:00 1:00 D Rule NYC 1920 only - Oct lastSun 2:00 0 S *************** *** 215,221 **** Rule NYC 1921 1954 - Sep lastSun 2:00 0 S Rule NYC 1955 1966 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:00 -5:00 US E%sT 1920 -5:00 NYC E%sT 1942 -5:00 US E%sT 1946 --- 261,267 ---- Rule NYC 1921 1954 - Sep lastSun 2:00 0 S Rule NYC 1955 1966 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58 -5:00 US E%sT 1920 -5:00 NYC E%sT 1942 -5:00 US E%sT 1946 *************** *** 241,247 **** Rule Chicago 1922 1954 - Sep lastSun 2:00 0 S Rule Chicago 1955 1966 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Chicago -5:50:36 - LMT 1883 Nov 18 12:00 -6:00 US C%sT 1920 -6:00 Chicago C%sT 1936 Mar 1 2:00 -5:00 - EST 1936 Nov 15 2:00 --- 287,293 ---- Rule Chicago 1922 1954 - Sep lastSun 2:00 0 S Rule Chicago 1955 1966 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Chicago -5:50:36 - LMT 1883 Nov 18 12:09:24 -6:00 US C%sT 1920 -6:00 Chicago C%sT 1936 Mar 1 2:00 -5:00 - EST 1936 Nov 15 2:00 *************** *** 250,256 **** -6:00 Chicago C%sT 1967 -6:00 US C%sT # Oliver County, ND switched from mountain to central time on 1992-10-25. ! Zone America/North_Dakota/Center -6:45:12 - LMT 1883 Nov 18 12:00 -7:00 US M%sT 1992 Oct 25 02:00 -6:00 US C%sT --- 296,302 ---- -6:00 Chicago C%sT 1967 -6:00 US C%sT # Oliver County, ND switched from mountain to central time on 1992-10-25. ! Zone America/North_Dakota/Center -6:45:12 - LMT 1883 Nov 18 12:14:48 -7:00 US M%sT 1992 Oct 25 02:00 -6:00 US C%sT *************** *** 269,275 **** Rule Denver 1965 1966 - Apr lastSun 2:00 1:00 D Rule Denver 1965 1966 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00 -7:00 US M%sT 1920 -7:00 Denver M%sT 1942 -7:00 US M%sT 1946 --- 315,321 ---- Rule Denver 1965 1966 - Apr lastSun 2:00 1:00 D Rule Denver 1965 1966 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00:04 -7:00 US M%sT 1920 -7:00 Denver M%sT 1942 -7:00 US M%sT 1946 *************** *** 289,295 **** Rule CA 1950 1961 - Sep lastSun 2:00 0 S Rule CA 1962 1966 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:00 -8:00 US P%sT 1946 -8:00 CA P%sT 1967 -8:00 US P%sT --- 335,341 ---- Rule CA 1950 1961 - Sep lastSun 2:00 0 S Rule CA 1962 1966 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:07:02 -8:00 US P%sT 1946 -8:00 CA P%sT 1967 -8:00 US P%sT *************** *** 355,364 **** -11:00 US B%sT 1983 Oct 30 2:00 -10:00 US AH%sT 1983 Nov 30 -10:00 US HA%sT # Shanks writes that part of southwest Alaska (e.g. Aniak) # switched from -11:00 to -10:00 on 1968-09-22 at 02:00, # and another part (e.g. Akiak) made the same switch five weeks later. ! # These switches don't quite make our 1970 cutoff. # Hawaii # --- 401,426 ---- -11:00 US B%sT 1983 Oct 30 2:00 -10:00 US AH%sT 1983 Nov 30 -10:00 US HA%sT + # The following switches don't quite make our 1970 cutoff. + # # Shanks writes that part of southwest Alaska (e.g. Aniak) # switched from -11:00 to -10:00 on 1968-09-22 at 02:00, # and another part (e.g. Akiak) made the same switch five weeks later. ! # ! # From David Flater (2004-11-09): ! # In e-mail, 2004-11-02, Ray Hudson, historian/liaison to the Unalaska ! # Historic Preservation Commission, provided this information, which ! # suggests that Unalaska deviated from statutory time from early 1967 ! # possibly until 1983: ! # ! # Minutes of the Unalaska City Council Meeting, January 10, 1967: ! # "Except for St. Paul and Akutan, Unalaska is the only important ! # location not on Alaska Standard Time. The following resolution was ! # made by William Robinson and seconded by Henry Swanson: Be it ! # resolved that the City of Unalaska hereby goes to Alaska Standard ! # Time as of midnight Friday, January 13, 1967 (1 A.M. Saturday, ! # January 14, Alaska Standard Time.) This resolution was passed with ! # three votes for and one against." # Hawaii # *************** *** 400,406 **** # Shanks says the 1944 experiment came to an end on 1944-03-17. # Go with the Arizona State Library instead. ! Zone America/Phoenix -7:28:18 - LMT 1883 Nov 18 12:00 -7:00 US M%sT 1944 Jan 1 00:01 -7:00 - MST 1944 Apr 1 00:01 -7:00 US M%sT 1944 Oct 1 00:01 --- 462,468 ---- # Shanks says the 1944 experiment came to an end on 1944-03-17. # Go with the Arizona State Library instead. ! Zone America/Phoenix -7:28:18 - LMT 1883 Nov 18 11:31:42 -7:00 US M%sT 1944 Jan 1 00:01 -7:00 - MST 1944 Apr 1 00:01 -7:00 US M%sT 1944 Oct 1 00:01 *************** *** 422,430 **** # Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power, # Teton, Twin Falls, Valley, Washington counties) and eastern Oregon # switched four weeks late in 1974. ! # # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:00 -8:00 US P%sT 1923 May 13 2:00 -7:00 US M%sT 1974 -7:00 - MST 1974 Feb 3 2:00 --- 484,492 ---- # Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power, # Teton, Twin Falls, Valley, Washington counties) and eastern Oregon # switched four weeks late in 1974. ! # # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11 -8:00 US P%sT 1923 May 13 2:00 -7:00 US M%sT 1974 -7:00 - MST 1974 Feb 3 2:00 *************** *** 435,474 **** # For a map of Indiana's time zone regions, see: # # What time is it in Indiana? ! # (1999-04-06) # - # From Paul Eggert (1995-12-19): - # Indiana generally observes either EST all year, or CST/CDT, - # but areas near Cincinnati and Louisville use those cities' timekeeping - # and in 1969 and 1970 the whole state observed daylight time; - # and there are other exceptions as noted below. # Shanks partitions Indiana into 345 regions, each with its own time history, # and writes ``Even newspaper reports present contradictory information.'' # Fortunately, most of the complexity occurred before our cutoff date of 1970. # - # Since 1970, EST-only Indiana has been like America/Indianapolis, - # with exceptions noted below for Crawford, Starke, and Switzerland counties. - # The parts of Indiana not listed below have been like America/Chicago, - # America/Louisville, or America/New_York. - # # Other than Indianapolis, the Indiana place names are so nondescript # that they would be ambiguous if we left them at the `America' level. # So we reluctantly put them all in a subdirectory `America/Indiana'. - # - # Most of EST-only Indiana last observed DST in 1970. ! # From Paul Eggert (2001-03-06), following a tip by Markus Kuhn: ! # Pam Belluck reported in the New York Times (2001-01-31) that the ! # Indiana Legislature is considering a bill to adopt DST statewide. ! # Her article mentioned Vevay, whose post office observes a different ! # time zone from Danner's Hardware across the street. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:00 -6:00 US C%sT 1920 -6:00 Indianapolis C%sT 1942 -6:00 US C%sT 1946 --- 497,540 ---- # For a map of Indiana's time zone regions, see: # # What time is it in Indiana? ! # (2005-05-03) ! # ! # From Paul Eggert (2005-08-22): ! # Since 1970, most of Indiana has been like America/Indiana/Indianapolis, ! # with the following exceptions: ! # ! # - Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer, ! # Vandenburgh, and Warrick counties have been like America/Chicago. ! # ! # - Dearborn and Ohio counties have been like America/New_York. ! # ! # - Clark, Floyd, and Harrison counties have been like ! # America/Kentucky/Louisville. ! # ! # - Crawford, Starke, and Switzerland counties have their own time zone ! # histories as noted below. # # Shanks partitions Indiana into 345 regions, each with its own time history, # and writes ``Even newspaper reports present contradictory information.'' # Fortunately, most of the complexity occurred before our cutoff date of 1970. # # Other than Indianapolis, the Indiana place names are so nondescript # that they would be ambiguous if we left them at the `America' level. # So we reluctantly put them all in a subdirectory `America/Indiana'. ! # From Paul Eggert (2005-08-16): ! # http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006, ! # and that many counties may switch either to Central or to Eastern time. ! # The county-by-county decisions have not been made yet, so for now assume ! # that no counties will switch: this assumption is most likely wrong, ! # but it's the best we can do for now. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22 -6:00 US C%sT 1920 -6:00 Indianapolis C%sT 1942 -6:00 US C%sT 1946 *************** *** 477,484 **** -6:00 - CST 1958 Apr 27 2:00 -5:00 - EST 1969 -5:00 US E%sT 1971 ! -5:00 - EST ! Link America/Indianapolis America/Indiana/Indianapolis # # Part of Crawford County, Indiana, last observed DST in 1975, # and left its clocks alone in 1974. --- 543,550 ---- -6:00 - CST 1958 Apr 27 2:00 -5:00 - EST 1969 -5:00 US E%sT 1971 ! -5:00 - EST 2006 ! -5:00 US E%sT # # Part of Crawford County, Indiana, last observed DST in 1975, # and left its clocks alone in 1974. *************** *** 488,501 **** Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D Rule Marengo 1954 1960 - Sep lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Indiana/Marengo -5:45:23 - LMT 1883 Nov 18 12:00 -6:00 US C%sT 1951 -6:00 Marengo C%sT 1961 Apr 30 2:00 -5:00 - EST 1969 -5:00 US E%sT 1974 Jan 6 2:00 -6:00 1:00 CDT 1974 Oct 27 2:00 -5:00 US E%sT 1976 ! -5:00 - EST # # Starke County, Indiana # From Arthur David Olson (1991-10-28): --- 554,568 ---- Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D Rule Marengo 1954 1960 - Sep lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Indiana/Marengo -5:45:23 - LMT 1883 Nov 18 12:14:37 -6:00 US C%sT 1951 -6:00 Marengo C%sT 1961 Apr 30 2:00 -5:00 - EST 1969 -5:00 US E%sT 1974 Jan 6 2:00 -6:00 1:00 CDT 1974 Oct 27 2:00 -5:00 US E%sT 1976 ! -5:00 - EST 2006 ! -5:00 US E%sT # # Starke County, Indiana # From Arthur David Olson (1991-10-28): *************** *** 509,531 **** Rule Starke 1957 1958 - Sep lastSun 2:00 0 S Rule Starke 1959 1961 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Indiana/Knox -5:46:30 - LMT 1883 Nov 18 12:00 -6:00 US C%sT 1947 -6:00 Starke C%sT 1962 Apr 29 2:00 -5:00 - EST 1963 Oct 27 2:00 -6:00 US C%sT 1991 Oct 27 2:00 ! -5:00 - EST # # Switzerland County, Indiana, last observed DST in 1972. # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Indiana/Vevay -5:40:16 - LMT 1883 Nov 18 12:00 -6:00 US C%sT 1954 Apr 25 2:00 -5:00 - EST 1969 -5:00 US E%sT 1973 ! -5:00 - EST # Part of Kentucky left its clocks alone in 1974. ! # This also includes a part of Indiana immediately adjacent to Louisville. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER Rule Louisville 1921 only - May 1 2:00 1:00 D Rule Louisville 1921 only - Sep 1 2:00 0 S --- 576,600 ---- Rule Starke 1957 1958 - Sep lastSun 2:00 0 S Rule Starke 1959 1961 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Indiana/Knox -5:46:30 - LMT 1883 Nov 18 12:13:30 -6:00 US C%sT 1947 -6:00 Starke C%sT 1962 Apr 29 2:00 -5:00 - EST 1963 Oct 27 2:00 -6:00 US C%sT 1991 Oct 27 2:00 ! -5:00 - EST 2006 ! -5:00 US E%sT # # Switzerland County, Indiana, last observed DST in 1972. # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Indiana/Vevay -5:40:16 - LMT 1883 Nov 18 12:19:44 -6:00 US C%sT 1954 Apr 25 2:00 -5:00 - EST 1969 -5:00 US E%sT 1973 ! -5:00 - EST 2006 ! -5:00 US E%sT # Part of Kentucky left its clocks alone in 1974. ! # This also includes Clark, Floyd, and Harrison counties in Indiana. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER Rule Louisville 1921 only - May 1 2:00 1:00 D Rule Louisville 1921 only - Sep 1 2:00 0 S *************** *** 535,541 **** Rule Louisville 1950 1955 - Sep lastSun 2:00 0 S Rule Louisville 1956 1960 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Louisville -5:43:02 - LMT 1883 Nov 18 12:00 -6:00 US C%sT 1921 -6:00 Louisville C%sT 1942 -6:00 US C%sT 1946 --- 604,610 ---- Rule Louisville 1950 1955 - Sep lastSun 2:00 0 S Rule Louisville 1956 1960 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] ! Zone America/Kentucky/Louisville -5:43:02 - LMT 1883 Nov 18 12:16:58 -6:00 US C%sT 1921 -6:00 Louisville C%sT 1942 -6:00 US C%sT 1946 *************** *** 544,550 **** -5:00 US E%sT 1974 Jan 6 2:00 -6:00 1:00 CDT 1974 Oct 27 2:00 -5:00 US E%sT - Link America/Louisville America/Kentucky/Louisville # # Wayne, Clinton, and Russell Counties, Kentucky # --- 613,618 ---- *************** *** 572,578 **** # Federal Register 65, 160 (2000-08-17), page 50154-50158. # # ! Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:00 -6:00 US C%sT 1946 -6:00 - CST 1968 -6:00 US C%sT 2000 Oct 29 2:00 --- 640,646 ---- # Federal Register 65, 160 (2000-08-17), page 50154-50158. # # ! Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:20:36 -6:00 US C%sT 1946 -6:00 - CST 1968 -6:00 US C%sT 2000 Oct 29 2:00 *************** *** 667,687 **** # _Los Angeles Times_ (1998-11-10), A1, A10; it cites # Jimmy Skaggs, _The Great Guano Rush_ (1994). - # Old names, for S5 users - - # Link LINK-FROM LINK-TO - Link America/New_York EST5EDT - Link America/Chicago CST6CDT - Link America/Denver MST7MDT - Link America/Los_Angeles PST8PDT - Link America/Indianapolis EST - Link America/Phoenix MST - Link Pacific/Honolulu HST - ################################################################################ ! # From Paul Eggert (1999-10-29): # A good source for time zone historical data outside the US is # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). --- 735,744 ---- # _Los Angeles Times_ (1998-11-10), A1, A10; it cites # Jimmy Skaggs, _The Great Guano Rush_ (1994). ################################################################################ ! # From Paul Eggert (1999-10-29): # A good source for time zone historical data outside the US is # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). *************** *** 709,715 **** # Canada ! # From Alain LaBont (1994-11-14): # I post here the time zone abbreviations standardized in Canada # for both English and French in the CAN/CSA-Z234.4-89 standard.... # --- 766,772 ---- # Canada ! # From Alain LaBont (1994-11-14): # I post here the time zone abbreviations standardized in Canada # for both English and French in the CAN/CSA-Z234.4-89 standard.... # *************** *** 738,744 **** # T: de Terre-Neuve # Y: du Yukon Yukon # ! # From Paul Eggert (1994-11-22): # Alas, this sort of thing must be handled by localization software. # Unless otherwise specified, the data for Canada are all from Shanks. --- 795,801 ---- # T: de Terre-Neuve # Y: du Yukon Yukon # ! # From Paul Eggert (1994-11-22): # Alas, this sort of thing must be handled by localization software. # Unless otherwise specified, the data for Canada are all from Shanks. *************** *** 1123,1129 **** # Matthews and Vincent (1998) write that Denare Beach and Creighton # are like Winnipeg, in violation of Saskatchewan law. ! # From W. Jones (1992-11-06): # The. . .below is based on information I got from our law library, the # provincial archives, and the provincial Community Services department. # A precise history would require digging through newspaper archives, and --- 1180,1186 ---- # Matthews and Vincent (1998) write that Denare Beach and Creighton # are like Winnipeg, in violation of Saskatchewan law. ! # From W. Jones (1992-11-06): # The. . .below is based on information I got from our law library, the # provincial archives, and the provincial Community Services department. # A precise history would require digging through newspaper archives, and *************** *** 1241,1247 **** # From Paul Eggert (1999-10-29): # Dawson switched to PST in 1973. Inuvik switched to MST in 1979. ! # Mathew Englander (1996-10-07) gives the following refs: # * 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68, # c. 7 defines Yukon standard time as UTC-9. This is still valid; # see Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1). --- 1298,1304 ---- # From Paul Eggert (1999-10-29): # Dawson switched to PST in 1973. Inuvik switched to MST in 1979. ! # Mathew Englander (1996-10-07) gives the following refs: # * 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68, # c. 7 defines Yukon standard time as UTC-9. This is still valid; # see Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1). *************** *** 1266,1273 **** # (1999) reports that Pangnirtung operates on eastern time, # and that Coral Harbour does not observe DST. We don't know when # Pangnirtung switched to eastern time; we'll guess 1995. - # We'll ignore the claim about Coral Harbour for now, - # since we have no further info. # From Rives McDow (1999-11-08): # On October 31, when the rest of Nunavut went to Central time, --- 1323,1328 ---- *************** *** 1342,1347 **** --- 1397,1419 ---- # more. # [Also see (2001-03-09).] + # From Gwillim Law (2005-05-21): + # According to maps at + # http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg + # http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg + # (both dated 2003), and + # http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp + # (from a 1998 Canadian Geographic article), the de facto and de jure time + # for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year + # round. Using Google, it's easy to find other websites that confirm this. + # I wasn't able to find how far back this time regimen goes, but since it + # predates the creation of Nunavut, it probably goes back many years.... + # The Inuktitut name of Coral Harbour is Sallit, but it's rarely used. + # + # From Paul Eggert (2005-07-26): + # For lack of better information, assume that Southampton Island observed + # daylight saving only during wartime. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule NT_YK 1918 only - Apr 14 2:00 1:00 D Rule NT_YK 1918 only - Oct 27 2:00 0 S *************** *** 1365,1370 **** --- 1437,1445 ---- -5:00 NT_YK E%sT 1999 Oct 31 2:00 -6:00 Canada C%sT 2000 Oct 29 2:00 -5:00 Canada E%sT + Zone America/Coral_Harbour -5:32:40 - LMT 1884 + -5:00 NT_YK E%sT 1946 + -5:00 - EST Zone America/Rankin_Inlet -6:08:40 - LMT 1884 -6:00 NT_YK C%sT 2000 Oct 29 2:00 -5:00 - EST 2001 Apr 1 3:00 *************** *** 1404,1410 **** # Shanks reports that Baja was at -8:00 in 1922/1923. # Shanks says the 1930 transition in Baja was 1930-11-16. # Shanks reports no DST during summer 1931. ! # Shanks reports a transition at 1032-03-30 23:00, not 1932-04-01. # Shanks does not report transitions for Baja in 1945 or 1948. # Shanks reports southern Mexico transitions on 1981-12-01, not 12-23. # Shanks says Quintana Roo switched to -6:00 on 1982-12-02, and to -5:00 --- 1479,1485 ---- # Shanks reports that Baja was at -8:00 in 1922/1923. # Shanks says the 1930 transition in Baja was 1930-11-16. # Shanks reports no DST during summer 1931. ! # Shanks reports a transition at 1932-03-30 23:00, not 1932-04-01. # Shanks does not report transitions for Baja in 1945 or 1948. # Shanks reports southern Mexico transitions on 1981-12-01, not 12-23. # Shanks says Quintana Roo switched to -6:00 on 1982-12-02, and to -5:00 *************** *** 1420,1426 **** # Shanks gives 1942-04-01 instead of 1942-04-24, and omits the 1981 # and 1988 DST experiments. Go with spin.com.mx. ! # From Alan Perry (1996-02-15): # A guy from our Mexico subsidiary finally found the Presidential Decree # outlining the timezone changes in Mexico. # --- 1495,1501 ---- # Shanks gives 1942-04-01 instead of 1942-04-24, and omits the 1981 # and 1988 DST experiments. Go with spin.com.mx. ! # From Alan Perry (1996-02-15): # A guy from our Mexico subsidiary finally found the Presidential Decree # outlining the timezone changes in Mexico. # *************** *** 1731,1736 **** --- 1806,1820 ---- # to DST--and one more hour on 1999-04-04--when the announcers will have # returned to Baltimore, which switches on that date.) + # From Evert van der Veer via Steffen Thorsen (2004-10-28): + # Cuba is not going back to standard time this year. + # From Paul Eggert (2004-10-28): + # http://www.granma.cu/ingles/2004/septiembre/juev30/41medid-i.html + # says that it's due to a problem at the Antonio Guiteras + # thermoelectric plant, and says "This October there will be no return + # to normal hours (after daylight saving time)". + # For now, let's assume that it's a one-year temporary measure. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Cuba 1928 only - Jun 10 0:00 1:00 D Rule Cuba 1928 only - Oct 10 0:00 0 S *************** *** 1759,1766 **** Rule Cuba 1996 only - Oct 6 0:00s 0 S Rule Cuba 1997 only - Oct 12 0:00s 0 S Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D ! Rule Cuba 1998 max - Oct lastSun 0:00s 0 S Rule Cuba 2000 max - Apr Sun>=1 0:00s 1:00 D # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Havana -5:29:28 - LMT 1890 --- 1843,1851 ---- Rule Cuba 1996 only - Oct 6 0:00s 0 S Rule Cuba 1997 only - Oct 12 0:00s 0 S Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D ! Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S Rule Cuba 2000 max - Apr Sun>=1 0:00s 1:00 D + Rule Cuba 2005 max - Oct lastSun 0:00s 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Havana -5:29:28 - LMT 1890 *************** *** 1840,1845 **** --- 1925,1950 ---- -6:00 Guat C%sT # Haiti + # From Gwillim Law (2005-04-15): + # Risto O. Nykanen wrote me that Haiti is now on DST. + # I searched for confirmation, and I found a + # press release + # on the Web page of the Haitian Consulate in Chicago (2005-03-31), + # . Translated from French, it says: + # + # "The Prime Minister's Communication Office notifies the public in general + # and the press in particular that, following a decision of the Interior + # Ministry and the Territorial Collectivities [I suppose that means the + # provinces], Haiti will move to Eastern Daylight Time in the night from next + # Saturday the 2nd to Sunday the 3rd. + # + # "Consequently, the Prime Minister's Communication Office wishes to inform + # the population that the country's clocks will be set forward one hour + # starting at midnight. This provision will hold until the last Saturday in + # October 2005. + # + # "Port-au-Prince, March 31, 2005" + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Haiti 1983 only - May 8 0:00 1:00 D Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D *************** *** 1847,1852 **** --- 1952,1959 ---- # Shanks says AT is 2:00, but IATA SSIM (1991/1997) says 1:00s. Go with IATA. Rule Haiti 1988 1997 - Apr Sun>=1 1:00s 1:00 D Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S + Rule Haiti 2005 only - Apr Sun>=1 0:00 1:00 D + Rule Haiti 2005 only - Oct lastSun 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Port-au-Prince -4:49:20 - LMT 1890 -4:49 - PPMT 1917 Jan 24 12:00 # P-a-P MT *************** *** 1898,1908 **** --- 2005,2043 ---- # Nicaragua seems to be back at -6:00 but I have not been able to find when # they changed from -5:00. # + # From Steffen Thorsen (2005-04-12): + # I've got reports from 8 different people that Nicaragua just started + # DST on Sunday 2005-04-10, in order to save energy because of + # expensive petroleum. The exact end date for DST is not yet + # announced, only "September" but some sites also say "mid-September". + # Some background information is available on the President's official site: + # http://www.presidencia.gob.ni/Presidencia/Files_index/Secretaria/Notas%20de%20Prensa/Presidente/2005/ABRIL/Gobierno-de-nicaragua-adelanta-hora-oficial-06abril.htm + # The Decree, no 23-2005 is available here: + # http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2005/Decreto%2023-2005%20Se%20adelanta%20en%20una%20hora%20en%20todo%20el%20territorio%20nacional%20apartir%20de%20las%2024horas%20del%2009%20de%20Abril.pdf + # + # From Paul Eggert (2005-05-01): + # The decree doesn't say anything about daylight saving, but for now let's + # assume that it is daylight saving and that they'll switch back on the + # 3rd Sunday in September. + # + # From Gwillim Law (2005-04-21): + # The Associated Press story on the time change, which can be found at + # http://www.lapalmainteractivo.com/guias/content/gen/ap/America_Latina/AMC_GEN_NICARAGUA_HORA.html + # and elsewhere, says (fifth paragraph, translated from Spanish): "The last + # time that a change of clocks was applied to save energy was in the year 2000 + # during the Arnoldo Aleman administration."... + # The northamerica file says that Nicaragua has been on UTC-6 continuously + # since December 1998. I wasn't able to find any details of Nicaraguan time + # changes in 2000. Perhaps a note could be added to the northamerica file, to + # the effect that we have indirect evidence that DST was observed in 2000. + # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S Rule Nic 1992 only - Jan 1 4:00 1:00 D Rule Nic 1992 only - Sep 24 0:00 0 S + Rule Nic 2005 only - Apr 10 0:00 1:00 D + Rule Nic 2005 only - Sep 18 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Managua -5:45:08 - LMT 1890 -5:45:12 - MMT 1934 Jun 23 # Managua Mean Time? *************** *** 1910,1916 **** -5:00 - EST 1975 Feb 16 -6:00 Nic C%sT 1993 Jan 1 4:00 -5:00 - EST 1998 Dec ! -6:00 - CST # Panama # Zone NAME GMTOFF RULES FORMAT [UNTIL] --- 2045,2051 ---- -5:00 - EST 1975 Feb 16 -6:00 Nic C%sT 1993 Jan 1 4:00 -5:00 - EST 1998 Dec ! -6:00 Nic C%sT # Panama # Zone NAME GMTOFF RULES FORMAT [UNTIL] Index: src/share/zoneinfo/solar87 diff -c src/share/zoneinfo/solar87:1.1.1.1 src/share/zoneinfo/solar87:1.1.1.1.16.1 *** src/share/zoneinfo/solar87:1.1.1.1 Wed Jun 18 01:19:13 1997 --- src/share/zoneinfo/solar87 Tue Sep 6 01:33:43 2005 *************** *** 1,4 **** ! # @(#)solar87 7.3 # So much for footnotes about Saudi Arabia. # Apparent noon times below are for Riyadh; your mileage will vary. --- 1,4 ---- ! # @(#)solar87 7.4 # So much for footnotes about Saudi Arabia. # Apparent noon times below are for Riyadh; your mileage will vary. *************** *** 381,388 **** # Before and after 1987, we'll operate on local mean solar time. # Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] ! Zone Asia/Riyadh87 3:07:04 - ?? 1987 ! 3:07:04 sol87 ?? 1988 ! 3:07:04 - ?? # For backward compatibility... Link Asia/Riyadh87 Mideast/Riyadh87 --- 381,388 ---- # Before and after 1987, we'll operate on local mean solar time. # Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] ! Zone Asia/Riyadh87 3:07:04 - zzz 1987 ! 3:07:04 sol87 zzz 1988 ! 3:07:04 - zzz # For backward compatibility... Link Asia/Riyadh87 Mideast/Riyadh87 Index: src/share/zoneinfo/solar88 diff -c src/share/zoneinfo/solar88:1.1.1.1 src/share/zoneinfo/solar88:1.1.1.1.16.1 *** src/share/zoneinfo/solar88:1.1.1.1 Wed Jun 18 01:19:13 1997 --- src/share/zoneinfo/solar88 Tue Sep 6 01:33:43 2005 *************** *** 1,4 **** ! # @(#)solar88 7.3 # Apparent noon times below are for Riyadh; they're a bit off for other places. # Times were computed using formulas in the U.S. Naval Observatory's --- 1,4 ---- ! # @(#)solar88 7.4 # Apparent noon times below are for Riyadh; they're a bit off for other places. # Times were computed using formulas in the U.S. Naval Observatory's *************** *** 381,388 **** # Before and after 1988, we'll operate on local mean solar time. # Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] ! Zone Asia/Riyadh88 3:07:04 - ?? 1988 ! 3:07:04 sol88 ?? 1989 ! 3:07:04 - ?? # For backward compatibility... Link Asia/Riyadh88 Mideast/Riyadh88 --- 381,388 ---- # Before and after 1988, we'll operate on local mean solar time. # Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] ! Zone Asia/Riyadh88 3:07:04 - zzz 1988 ! 3:07:04 sol88 zzz 1989 ! 3:07:04 - zzz # For backward compatibility... Link Asia/Riyadh88 Mideast/Riyadh88 Index: src/share/zoneinfo/solar89 diff -c src/share/zoneinfo/solar89:1.1.1.1 src/share/zoneinfo/solar89:1.1.1.1.16.1 *** src/share/zoneinfo/solar89:1.1.1.1 Wed Jun 18 01:19:13 1997 --- src/share/zoneinfo/solar89 Tue Sep 6 01:33:43 2005 *************** *** 1,4 **** ! # @(#)solar89 7.4 # Apparent noon times below are for Riyadh; they're a bit off for other places. # Times were computed using a formula provided by the U. S. Naval Observatory: --- 1,4 ---- ! # @(#)solar89 7.5 # Apparent noon times below are for Riyadh; they're a bit off for other places. # Times were computed using a formula provided by the U. S. Naval Observatory: *************** *** 386,393 **** # Before and after 1989, we'll operate on local mean solar time. # Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] ! Zone Asia/Riyadh89 3:07:04 - ?? 1989 ! 3:07:04 sol89 ?? 1990 ! 3:07:04 - ?? # For backward compatibility... Link Asia/Riyadh89 Mideast/Riyadh89 --- 386,393 ---- # Before and after 1989, we'll operate on local mean solar time. # Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] ! Zone Asia/Riyadh89 3:07:04 - zzz 1989 ! 3:07:04 sol89 zzz 1990 ! 3:07:04 - zzz # For backward compatibility... Link Asia/Riyadh89 Mideast/Riyadh89 Index: src/share/zoneinfo/southamerica diff -c src/share/zoneinfo/southamerica:1.1.1.24.2.1 src/share/zoneinfo/southamerica:1.1.1.24.2.3 *** src/share/zoneinfo/southamerica:1.1.1.24.2.1 Tue Jun 15 22:09:12 2004 --- src/share/zoneinfo/southamerica Tue Oct 11 16:48:32 2005 *************** *** 1,10 **** ! # @(#)southamerica 7.51 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-07-07): # A good source for time zone historical data outside the U.S. is # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). --- 1,10 ---- ! # @(#)southamerica 7.62 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). ! # From Paul Eggert (1999-07-07): # A good source for time zone historical data outside the U.S. is # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). *************** *** 58,64 **** # From U. S. Naval Observatory (1988-01-199): # ARGENTINA 3 H BEHIND UTC ! # From Hernan G. Otero (1995-06-26): # I am sending modifications to the Argentine time zone table... # AR was chosen because they are the ISO letters that represent Argentina. --- 58,64 ---- # From U. S. Naval Observatory (1988-01-199): # ARGENTINA 3 H BEHIND UTC ! # From Hernan G. Otero (1995-06-26): # I am sending modifications to the Argentine time zone table... # AR was chosen because they are the ISO letters that represent Argentina. *************** *** 86,92 **** Rule Arg 1974 only - May 1 0:00 0 - Rule Arg 1988 only - Dec 1 0:00 1:00 S # ! # From Hernan G. Otero (1995-06-26): # These corrections were contributed by InterSoft Argentina S.A., # obtaining the data from the: # Talleres de Hidrografia Naval Argentina --- 86,92 ---- Rule Arg 1974 only - May 1 0:00 0 - Rule Arg 1988 only - Dec 1 0:00 1:00 S # ! # From Hernan G. Otero (1995-06-26): # These corrections were contributed by InterSoft Argentina S.A., # obtaining the data from the: # Talleres de Hidrografia Naval Argentina *************** *** 96,102 **** Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 - Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S # ! # From Hernan G. Otero (1995-06-26): # From this moment on, the law that mandated the daylight saving # time corrections was derogated and no more modifications # to the time zones (for daylight saving) are now made. --- 96,102 ---- Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 - Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S # ! # From Hernan G. Otero (1995-06-26): # From this moment on, the law that mandated the daylight saving # time corrections was derogated and no more modifications # to the time zones (for daylight saving) are now made. *************** *** 113,119 **** # Argentina decided not to become one of the countries that go on or off DST. # So Buenos Aires should be -3 hours from GMT at all times. # ! # From Fabian L. Arce Jofre (2000-04-04): # The law that claimed DST for Argentina was derogated by President Fernando # de la Rua on March 2, 2000, because it would make people spend more energy # in the winter time, rather than less. The change took effect on March 3. --- 113,119 ---- # Argentina decided not to become one of the countries that go on or off DST. # So Buenos Aires should be -3 hours from GMT at all times. # ! # From Fabian L. Arce Jofre (2000-04-04): # The law that claimed DST for Argentina was derogated by President Fernando # de la Rua on March 2, 2000, because it would make people spend more energy # in the winter time, rather than less. The change took effect on March 3. *************** *** 155,171 **** # says that standard time in Argentina from 1894-10-31 # to 1920-05-01 was -4:16:48.25. Go with this more-precise value # over Shanks. # Unless otherwise specified, data are from Shanks through 1992, from # the IATA otherwise. As noted below, Shanks says that ! # America/Cordoba split into 7 subregions during 1991/1992, but we # haven't verified this yet so for now we'll keep it a single region. # # Zone NAME GMTOFF RULES FORMAT [UNTIL] # ! # Buenos Aires (BA), Capital Federal (CF), Santa Cruz (SC), ! # Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF) ! Zone America/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May # Cordoba Mean Time -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 --- 155,215 ---- # says that standard time in Argentina from 1894-10-31 # to 1920-05-01 was -4:16:48.25. Go with this more-precise value # over Shanks. + # + # From Mariano Absatz (2004-06-05): + # These media articles from a major newspaper mostly cover the current state: + # http://www.lanacion.com.ar/04/05/27/de_604825.asp + # http://www.lanacion.com.ar/04/05/28/de_605203.asp + # + # The following eight (8) provinces pulled clocks back to UTC-04:00 at + # midnight Monday May 31st. (that is, the night between 05/31 and 06/01). + # Apparently, all nine provinces would go back to UTC-03:00 at the same + # time in October 17th. + # + # Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz, + # Tierra del Fuego, Tucuman. + # + # From Mariano Absatz (2004-06-14): + # ... this weekend, the Province of Tucuman decided it'd go back to UTC-03:00 + # yesterday midnight (that is, at 24:00 Saturday 12th), since the people's + # annoyance with the change is much higher than the power savings obtained.... + # + # From Gwillim Law (2004-06-14): + # http://www.lanacion.com.ar/04/06/10/de_609078.asp ... + # "The time change in Tierra del Fuego was a conflicted decision from + # the start. The government had decreed that the measure would take + # effect on June 1, but a normative error forced the new time to begin + # three days earlier, from a Saturday to a Sunday.... + # Our understanding was that the change was originally scheduled to take place + # on June 1 at 00:00 in Chubut, Santa Cruz, Tierra del Fuego (and some other + # provinces). Sunday was May 30, only two days earlier. So the article + # contains a contradiction. I would give more credence to the Saturday/Sunday + # date than the "three days earlier" phrase, and conclude that Tierra del + # Fuego set its clocks back at 2004-05-30 00:00. + # + # From Steffen Thorsen (2004-10-05): + # The previous law 7210 which changed the province of Mendoza's time zone + # back in May have been modified slightly in a new law 7277, which set the + # new end date to 2004-09-26 (original date was 2004-10-17). + # http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040924-27244-normas.pdf + # + # From Mariano Absatz (2004-10-05): + # San Juan changed from UTC-03:00 to UTC-04:00 at midnight between + # Sunday, May 30th and Monday, May 31st. It changed back to UTC-03:00 + # at midnight between Saturday, July 24th and Sunday, July 25th.... + # http://www.sanjuan.gov.ar/prensa/archivo/000329.html + # http://www.sanjuan.gov.ar/prensa/archivo/000426.html + # http://www.sanjuan.gov.ar/prensa/archivo/000441.html # Unless otherwise specified, data are from Shanks through 1992, from # the IATA otherwise. As noted below, Shanks says that ! # America/Cordoba split into 6 subregions during 1991/1992, but we # haven't verified this yet so for now we'll keep it a single region. # # Zone NAME GMTOFF RULES FORMAT [UNTIL] # ! # Buenos Aires (BA), Capital Federal (CF), ! Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May # Cordoba Mean Time -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 *************** *** 174,197 **** -3:00 - ART # # Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC), ! # Formosa (FM), Salta (SA), Tucuman (TM), Santiago del Estero (SE), ! # Cordoba (CB), La Rioja (LR), San Juan (SJ), San Luis (SL), La Pampa (LP), ! # Neuquen (NQ), Rio Negro (RN), Chubut (CH) # # Shanks also makes the following claims, which we haven't verified: # - Formosa switched to -3:00 on 1991-01-07. - # - La Rioja and San Juan switched to -4:00 on 1991-03-01 - # and then to -3:00 on 1991-05-07. # - Misiones switched to -3:00 on 1990-12-29. # - Chaco switched to -3:00 on 1991-01-04. # - San Luis switched to -4:00 on 1990-03-14, then to -3:00 on 1990-10-15, # then to -4:00 on 1991-03-01, then to -3:00 on 1991-06-01. # - Santiago del Estero switched to -4:00 on 1991-04-01, # then to -3:00 on 1991-04-26. - # If we need to add Zones for these areas, we may need to have a subdirectory - # for Argentina, as e.g. "America/San_Luis" is too ambiguious. # ! Zone America/Cordoba -4:16:48 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 --- 218,247 ---- -3:00 - ART # # Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC), ! # Formosa (FM), Salta (SA), Santiago del Estero (SE), Cordoba (CB), ! # San Luis (SL), La Pampa (LP), Neuquen (NQ), Rio Negro (RN) # # Shanks also makes the following claims, which we haven't verified: # - Formosa switched to -3:00 on 1991-01-07. # - Misiones switched to -3:00 on 1990-12-29. # - Chaco switched to -3:00 on 1991-01-04. # - San Luis switched to -4:00 on 1990-03-14, then to -3:00 on 1990-10-15, # then to -4:00 on 1991-03-01, then to -3:00 on 1991-06-01. # - Santiago del Estero switched to -4:00 on 1991-04-01, # then to -3:00 on 1991-04-26. # ! Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31 ! -4:16:48 - CMT 1920 May ! -4:00 - ART 1930 Dec ! -4:00 Arg AR%sT 1969 Oct 5 ! -3:00 Arg AR%sT 1991 Mar 3 ! -4:00 - WART 1991 Oct 20 ! -3:00 Arg AR%sT 1999 Oct 3 ! -4:00 Arg AR%sT 2000 Mar 3 ! -3:00 - ART ! # ! # Tucuman (TM) ! Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 *************** *** 199,208 **** -4:00 - WART 1991 Oct 20 -3:00 Arg AR%sT 1999 Oct 3 -4:00 Arg AR%sT 2000 Mar 3 -3:00 - ART # # Jujuy (JY) ! Zone America/Jujuy -4:21:12 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 --- 249,286 ---- -4:00 - WART 1991 Oct 20 -3:00 Arg AR%sT 1999 Oct 3 -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 Jun 1 + -4:00 - WART 2004 Jun 13 + -3:00 - ART + # + # La Rioja (LR) + Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1991 Mar 1 + -4:00 - WART 1991 May 7 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 Jun 1 + -4:00 - WART 2004 Jun 20 + -3:00 - ART + # + # San Juan (SJ) + Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1991 Mar 1 + -4:00 - WART 1991 May 7 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 May 31 + -4:00 - WART 2004 Jul 25 -3:00 - ART # # Jujuy (JY) ! Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 *************** *** 215,222 **** -4:00 Arg AR%sT 2000 Mar 3 -3:00 - ART # ! # Catamarca (CT) ! Zone America/Catamarca -4:23:08 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 --- 293,300 ---- -4:00 Arg AR%sT 2000 Mar 3 -3:00 - ART # ! # Catamarca (CT), Chubut (CH) ! Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 *************** *** 224,233 **** -4:00 - WART 1991 Oct 20 -3:00 Arg AR%sT 1999 Oct 3 -4:00 Arg AR%sT 2000 Mar 3 -3:00 - ART # # Mendoza (MZ) ! Zone America/Mendoza -4:35:16 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 --- 302,313 ---- -4:00 - WART 1991 Oct 20 -3:00 Arg AR%sT 1999 Oct 3 -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 Jun 1 + -4:00 - WART 2004 Jun 20 -3:00 - ART # # Mendoza (MZ) ! Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 *************** *** 240,246 **** -3:00 Arg AR%sT 1999 Oct 3 -4:00 Arg AR%sT 2000 Mar 3 -3:00 - ART 2004 May 23 ! -4:00 - WART 2004 Oct 17 -3:00 - ART # Aruba --- 320,348 ---- -3:00 Arg AR%sT 1999 Oct 3 -4:00 Arg AR%sT 2000 Mar 3 -3:00 - ART 2004 May 23 ! -4:00 - WART 2004 Sep 26 ! -3:00 - ART ! # ! # Santa Cruz (SC) ! Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31 ! -4:16:48 - CMT 1920 May # Cordoba Mean Time ! -4:00 - ART 1930 Dec ! -4:00 Arg AR%sT 1969 Oct 5 ! -3:00 Arg AR%sT 1999 Oct 3 ! -4:00 Arg AR%sT 2000 Mar 3 ! -3:00 - ART 2004 Jun 1 ! -4:00 - WART 2004 Jun 20 ! -3:00 - ART ! # ! # Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF) ! Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31 ! -4:16:48 - CMT 1920 May # Cordoba Mean Time ! -4:00 - ART 1930 Dec ! -4:00 Arg AR%sT 1969 Oct 5 ! -3:00 Arg AR%sT 1999 Oct 3 ! -4:00 Arg AR%sT 2000 Mar 3 ! -3:00 - ART 2004 May 30 ! -4:00 - WART 2004 Jun 20 -3:00 - ART # Aruba *************** *** 258,264 **** # Brazil ! # From Paul Eggert (1993-11-18): # The mayor of Rio recently attempted to change the time zone rules # just in his city, in order to leave more summer time for the tourist trade. # The rule change lasted only part of the day; --- 360,366 ---- # Brazil ! # From Paul Eggert (1993-11-18): # The mayor of Rio recently attempted to change the time zone rules # just in his city, in order to leave more summer time for the tourist trade. # The rule change lasted only part of the day; *************** *** 318,323 **** --- 420,430 ---- # the Government decided to postpone DST, instead of changing the Constitution # (maybe, for the next elections, it will be possible to change the clock)... + # From Rodrigo Severo (2004-10-04): + # It's just the biannual change made necessary by the much hyped, supposedly + # modern Brazilian eletronic voting machines which, apparently, can't deal + # with a time change between the first and the second rounds of the elections. + # From Paul Eggert (2002-10-10): # The official decrees referenced below are mostly taken from # *************** *** 411,417 **** # adopted by same states, minus AL, SE. Rule Brazil 1996 only - Oct 6 0:00 1:00 S Rule Brazil 1997 only - Feb 16 0:00 0 - ! # From Daniel C. Sobral (1998-02-12): # In 1997, the DS began on October 6. The stated reason was that # because international television networks ignored Brazil's policy on DS, # they bought the wrong times on satellite for coverage of Pope's visit. --- 518,524 ---- # adopted by same states, minus AL, SE. Rule Brazil 1996 only - Oct 6 0:00 1:00 S Rule Brazil 1997 only - Feb 16 0:00 0 - ! # From Daniel C. Sobral (1998-02-12): # In 1997, the DS began on October 6. The stated reason was that # because international television networks ignored Brazil's policy on DS, # they bought the wrong times on satellite for coverage of Pope's visit. *************** *** 454,464 **** Rule Brazil 2002 only - Nov 3 0:00 1:00 S # Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO. # ! Rule Brazil 2003 max - Oct Sun>=15 0:00 1:00 S # The latest ruleset listed above says that the following states observe DST: ! # DF, ES, GO, MG, MS, PR, RJ, RS, SC, SP. # ! # For dates after mid-2004, the above rules with TO="max" are guesses # and are quite possibly wrong, but are more likely than no DST at all. --- 561,575 ---- Rule Brazil 2002 only - Nov 3 0:00 1:00 S # Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO. # ! Rule Brazil 2003 only - Oct 19 0:00 1:00 S ! # Decree 5,223 (2004-10-01) reestablishes DST in MT. ! # ! Rule Brazil 2004 only - Nov 2 0:00 1:00 S # The latest ruleset listed above says that the following states observe DST: ! # DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP. # ! Rule Brazil 2005 max - Oct Sun>=15 0:00 1:00 S ! # For dates after mid-2005, the above rules with TO="max" are guesses # and are quite possibly wrong, but are more likely than no DST at all. *************** *** 546,552 **** # Mato Grosso (MT) Zone America/Cuiaba -3:44:20 - LMT 1914 -4:00 Brazil AM%sT 2003 Sep 24 ! -4:00 - AMT # # west Para (PA), Rondonia (RO) # West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem. --- 657,664 ---- # Mato Grosso (MT) Zone America/Cuiaba -3:44:20 - LMT 1914 -4:00 Brazil AM%sT 2003 Sep 24 ! -4:00 - AMT 2004 Oct 1 ! -4:00 Brazil AM%sT # # west Para (PA), Rondonia (RO) # West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem. *************** *** 816,824 **** # A decree was issued in Paraguay (no. 16350) on 2002-02-26 that changed the # dst method to be from the first Sunday in September to the first Sunday in # April. ! Rule Para 2002 max - Apr Sun>=1 0:00 0 - ! Rule Para 2002 max - Sep Sun>=1 0:00 1:00 S ! # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Asuncion -3:50:40 - LMT 1890 --- 928,943 ---- # A decree was issued in Paraguay (no. 16350) on 2002-02-26 that changed the # dst method to be from the first Sunday in September to the first Sunday in # April. ! Rule Para 2002 2004 - Apr Sun>=1 0:00 0 - ! Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S ! # ! # From Jesper Norgaard Welen (2005-01-02): ! # There are several sources that claim that Paraguay made ! # a timezone rule change in autumn 2004. ! # From Steffen Thorsen (2005-01-05): ! # Decree 1,867 (2004-03-05) ! Rule Para 2004 max - Oct Sun>=15 0:00 1:00 S ! Rule Para 2005 max - Mar Sun>=8 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Asuncion -3:50:40 - LMT 1890 *************** *** 831,837 **** # # # From Evelyn C. Leeper via Mark Brader (2003-10-26): ! # When we were in Peru in 1985-1986, they apparently switched over # sometime between December 29 and January 3 while we were on the Amazon. # # From Paul Eggert (2003-11-02): --- 950,956 ---- # # # From Evelyn C. Leeper via Mark Brader (2003-10-26): ! # When we were in Peru in 1985-1986, they apparently switched over # sometime between December 29 and January 3 while we were on the Amazon. # # From Paul Eggert (2003-11-02): *************** *** 877,883 **** -4:00 - AST # Uruguay ! # From Paul Eggert (1993-11-18): # Uruguay wins the prize for the strangest peacetime manipulation of the rules. # From Shanks: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S --- 996,1002 ---- -4:00 - AST # Uruguay ! # From Paul Eggert (1993-11-18): # Uruguay wins the prize for the strangest peacetime manipulation of the rules. # From Shanks: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S *************** *** 927,932 **** --- 1046,1066 ---- Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S Rule Uruguay 1992 only - Oct 18 0:00 1:00 S Rule Uruguay 1993 only - Feb 28 0:00 0 - + # From Eduardo Cota (2004-09-20): + # The uruguayan government has decreed a change in the local time.... + # http://www.presidencia.gub.uy/decretos/2004091502.htm + Rule Uruguay 2004 only - Sep 19 0:00 1:00 S + # From Steffen Thorsen (2005-03-11): + # Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to + # save energy ... it was postponed two weeks.... + # http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm + Rule Uruguay 2005 only - Mar 27 2:00 0 - + # From Eduardo Cota (2005-09-27): + # http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF + # This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at + # 02:00 local time, official time in Uruguay will be at GMT -2. + Rule Uruguay 2005 only - Oct 9 2:00 1:00 S + Rule Uruguay 2006 only - Mar 12 2:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 -3:44:44 - MMT 1920 May 1 # Montevideo MT Index: src/share/zoneinfo/yearistype.sh diff -c src/share/zoneinfo/yearistype.sh:1.4 src/share/zoneinfo/yearistype.sh:1.4.4.1 *** src/share/zoneinfo/yearistype.sh:1.4 Fri Nov 3 11:08:22 2000 --- src/share/zoneinfo/yearistype.sh Tue Sep 6 01:33:43 2005 *************** *** 1,9 **** #! /bin/sh - # - # $NetBSD: yearistype.sh,v 1.4 2000/11/03 11:08:22 kleink Exp $ - # ! : '@(#)yearistype.sh 7.7' case $#-$1 in 2-|2-0*|2-*[!0-9]*) --- 1,6 ---- #! /bin/sh ! : '@(#)yearistype.sh 7.8' case $#-$1 in 2-|2-0*|2-*[!0-9]*) *************** *** 12,18 **** esac case $#-$2 in ! 2-even) case $1 in *[24680]) exit 0 ;; *) exit 1 ;; --- 9,15 ---- esac case $#-$2 in ! 2-even) case $1 in *[24680]) exit 0 ;; *) exit 1 ;; *************** *** 22,28 **** *[02468][048]|*[13579][26]) exit 1 ;; *) exit 0 ;; esac ;; ! 2-odd) case $1 in *[13579]) exit 0 ;; *) exit 1 ;; --- 19,25 ---- *[02468][048]|*[13579][26]) exit 1 ;; *) exit 0 ;; esac ;; ! 2-odd) case $1 in *[13579]) exit 0 ;; *) exit 1 ;; *************** *** 32,38 **** *[02468][048]|*[13579][26]) exit 0 ;; *) exit 1 ;; esac ;; ! 2-*) echo "$0: wild type - $2" >&2 ;; esac --- 29,35 ---- *[02468][048]|*[13579][26]) exit 0 ;; *) exit 1 ;; esac ;; ! 2-*) echo "$0: wild type - $2" >&2 ;; esac Index: src/share/zoneinfo/zone.tab diff -c src/share/zoneinfo/zone.tab:1.1.1.20 src/share/zoneinfo/zone.tab:1.1.1.20.2.1 *** src/share/zoneinfo/zone.tab:1.1.1.20 Wed Oct 29 21:00:44 2003 --- src/share/zoneinfo/zone.tab Tue Sep 6 01:33:43 2005 *************** *** 1,8 **** ! # @(#)zone.tab 1.29 # # TZ zone descriptions # ! # From Paul Eggert (1996-08-05): # # This file contains a table with the following columns: # 1. ISO 3166 2-character country code. See the file `iso3166.tab'. --- 1,8 ---- ! # @(#)zone.tab 1.32 # # TZ zone descriptions # ! # From Paul Eggert (1996-08-05): # # This file contains a table with the following columns: # 1. ISO 3166 2-character country code. See the file `iso3166.tab'. *************** *** 41,55 **** AQ -7824+10654 Antarctica/Vostok Vostok Station, S Magnetic Pole AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Base, Terre Adelie AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I ! AR -3436-05827 America/Buenos_Aires E Argentina (BA, DF, SC, TF) ! AR -3124-06411 America/Cordoba most locations (CB,CC,CH,CN,ER,FM,LP,LR,MN,NQ,RN,SA,SE,SF,SJ,SL,TM) ! AR -2411-06518 America/Jujuy Jujuy (JY) ! AR -2828-06547 America/Catamarca Catamarca (CT) ! AR -3253-06849 America/Mendoza Mendoza (MZ) AS -1416-17042 Pacific/Pago_Pago AT +4813+01620 Europe/Vienna AU -3133+15905 Australia/Lord_Howe Lord Howe Island ! AU -4253+14719 Australia/Hobart Tasmania AU -3749+14458 Australia/Melbourne Victoria AU -3352+15113 Australia/Sydney New South Wales - most locations AU -3157+14127 Australia/Broken_Hill New South Wales - Yancowinna --- 41,61 ---- AQ -7824+10654 Antarctica/Vostok Vostok Station, S Magnetic Pole AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Base, Terre Adelie AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I ! AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF) ! AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, LP, MN, NQ, RN, SA, SE, SF, SL) ! AR -2411-06518 America/Argentina/Jujuy Jujuy (JY) ! AR -3124-06411 America/Argentina/Tucuman Tucuman (TM) ! AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH) ! AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR) ! AR -3132-06831 America/Argentina/San_Juan San Juan (SJ) ! AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ) ! AR -5138-06913 America/Argentina/Rio_Gallegos Santa Cruz (SC) ! AR -5448-06818 America/Argentina/Ushuaia Tierra del Fuego (TF) AS -1416-17042 Pacific/Pago_Pago AT +4813+01620 Europe/Vienna AU -3133+15905 Australia/Lord_Howe Lord Howe Island ! AU -4253+14719 Australia/Hobart Tasmania - most locations ! AU -3956+14352 Australia/Currie Tasmania - King Island AU -3749+14458 Australia/Melbourne Victoria AU -3352+15113 Australia/Sydney New South Wales - most locations AU -3157+14127 Australia/Broken_Hill New South Wales - Yancowinna *************** *** 59,64 **** --- 65,71 ---- AU -1228+13050 Australia/Darwin Northern Territory AU -3157+11551 Australia/Perth Western Australia AW +1230-06858 America/Aruba + AX +6006+01957 Europe/Mariehamn AZ +4023+04951 Asia/Baku BA +4352+01825 Europe/Sarajevo BB +1306-05937 America/Barbados *************** *** 100,108 **** CA +4339-07923 America/Toronto Eastern Time - Ontario - most locations CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973 CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario ! CA +6608-06544 America/Pangnirtung Eastern Standard Time - Pangnirtung, Nunavut ! CA +6344-06828 America/Iqaluit Eastern Standard Time - east Nunavut ! CA +6245-09210 America/Rankin_Inlet Eastern Standard Time - central Nunavut CA +4953-09709 America/Winnipeg Central Time - Manitoba & west Ontario CA +4843-09429 America/Rainy_River Central Time - Rainy River & Fort Frances, Ontario CA +6903-10505 America/Cambridge_Bay Central Time - west Nunavut --- 107,116 ---- CA +4339-07923 America/Toronto Eastern Time - Ontario - most locations CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973 CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario ! CA +6608-06544 America/Pangnirtung Eastern Time - Pangnirtung, Nunavut ! CA +6344-06828 America/Iqaluit Eastern Time - east Nunavut ! CA +6408-08310 America/Coral_Harbour Eastern Standard Time - Southampton Island ! CA +6245-09210 America/Rankin_Inlet Central Time - central Nunavut CA +4953-09709 America/Winnipeg Central Time - Manitoba & west Ontario CA +4843-09429 America/Rainy_River Central Time - Rainy River & Fort Frances, Ontario CA +6903-10505 America/Cambridge_Bay Central Time - west Nunavut *************** *** 158,172 **** FI +6010+02458 Europe/Helsinki FJ -1808+17825 Pacific/Fiji FK -5142-05751 Atlantic/Stanley ! FM +0931+13808 Pacific/Yap Yap ! FM +0725+15147 Pacific/Truk Truk (Chuuk) FM +0658+15813 Pacific/Ponape Ponape (Pohnpei) FM +0519+16259 Pacific/Kosrae Kosrae FO +6201-00646 Atlantic/Faeroe FR +4852+00220 Europe/Paris GA +0023+00927 Africa/Libreville ! GB +512830-0001845 Europe/London Great Britain ! GB +5435-00555 Europe/Belfast Northern Ireland GD +1203-06145 America/Grenada GE +4143+04449 Asia/Tbilisi GF +0456-05220 America/Cayenne --- 166,178 ---- FI +6010+02458 Europe/Helsinki FJ -1808+17825 Pacific/Fiji FK -5142-05751 Atlantic/Stanley ! FM +0725+15147 Pacific/Truk Truk (Chuuk) and Yap FM +0658+15813 Pacific/Ponape Ponape (Pohnpei) FM +0519+16259 Pacific/Kosrae Kosrae FO +6201-00646 Atlantic/Faeroe FR +4852+00220 Europe/Paris GA +0023+00927 Africa/Libreville ! GB +512830-0001845 Europe/London GD +1203-06145 America/Grenada GE +4143+04449 Asia/Tbilisi GF +0456-05220 America/Cayenne *************** *** 241,248 **** MH +0709+17112 Pacific/Majuro most locations MH +0905+16720 Pacific/Kwajalein Kwajalein MK +4159+02126 Europe/Skopje ! ML +1239-00800 Africa/Bamako southwest Mali ! ML +1446-00301 Africa/Timbuktu northeast Mali MM +1647+09610 Asia/Rangoon MN +4755+10653 Asia/Ulaanbaatar most locations MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan --- 247,253 ---- MH +0709+17112 Pacific/Majuro most locations MH +0905+16720 Pacific/Kwajalein Kwajalein MK +4159+02126 Europe/Skopje ! ML +1239-00800 Africa/Bamako MM +1647+09610 Asia/Rangoon MN +4755+10653 Asia/Ulaanbaatar most locations MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan *************** *** 363,371 **** UM +1917+16637 Pacific/Wake Wake Island US +404251-0740023 America/New_York Eastern Time US +421953-0830245 America/Detroit Eastern Time - Michigan - most locations ! US +381515-0854534 America/Louisville Eastern Time - Kentucky - Louisville area US +364947-0845057 America/Kentucky/Monticello Eastern Time - Kentucky - Wayne County ! US +394606-0860929 America/Indianapolis Eastern Standard Time - Indiana - most locations US +382232-0862041 America/Indiana/Marengo Eastern Standard Time - Indiana - Crawford County US +411745-0863730 America/Indiana/Knox Eastern Standard Time - Indiana - Starke County US +384452-0850402 America/Indiana/Vevay Eastern Standard Time - Indiana - Switzerland County --- 368,376 ---- UM +1917+16637 Pacific/Wake Wake Island US +404251-0740023 America/New_York Eastern Time US +421953-0830245 America/Detroit Eastern Time - Michigan - most locations ! US +381515-0854534 America/Kentucky/Louisville Eastern Time - Kentucky - Louisville area US +364947-0845057 America/Kentucky/Monticello Eastern Time - Kentucky - Wayne County ! US +394606-0860929 America/Indiana/Indianapolis Eastern Standard Time - Indiana - most locations US +382232-0862041 America/Indiana/Marengo Eastern Standard Time - Indiana - Crawford County US +411745-0863730 America/Indiana/Knox Eastern Standard Time - Indiana - Starke County US +384452-0850402 America/Indiana/Vevay Eastern Standard Time - Indiana - Switzerland County Index: src/sys/arch/alpha/alpha/pmap.c diff -c src/sys/arch/alpha/alpha/pmap.c:1.207 src/sys/arch/alpha/alpha/pmap.c:1.207.2.1 *** src/sys/arch/alpha/alpha/pmap.c:1.207 Tue Jan 13 18:50:40 2004 --- src/sys/arch/alpha/alpha/pmap.c Sun Aug 7 15:08:16 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.207 2004/01/13 18:50:40 nathanw Exp $ */ /*- * Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.207.2.1 2005/08/07 15:08:16 riz Exp $ */ /*- * Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc. *************** *** 145,151 **** #include /* RCS ID & Copyright macro defns */ ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.207 2004/01/13 18:50:40 nathanw Exp $"); #include #include --- 145,151 ---- #include /* RCS ID & Copyright macro defns */ ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.207.2.1 2005/08/07 15:08:16 riz Exp $"); #include #include *************** *** 525,530 **** --- 525,541 ---- int pmap_physpage_delref(void *); /* + * Define PMAP_NO_LAZY_LEV1MAP in order to have a lev1map allocated + * in pmap_create(), rather than when the first mapping is entered. + * This causes pmaps to use an extra page of memory if no mappings + * are entered in them, but in practice this is probably not going + * to be a problem, and it allows us to avoid locking pmaps in + * pmap_activate(), which in turn allows us to avoid a deadlock with + * sched_lock via cpu_switch(). + */ + #define PMAP_NO_LAZY_LEV1MAP + + /* * PMAP_ISACTIVE{,_TEST}: * * Check to see if a pmap is active on the current processor. *************** *** 1207,1212 **** --- 1218,1228 ---- TAILQ_INSERT_TAIL(&pmap_all_pmaps, pmap, pm_list); simple_unlock(&pmap_all_pmaps_slock); + #ifdef PMAP_NO_LAZY_LEV1MAP + i = pmap_lev1map_create(pmap, cpu_number()); + KASSERT(i == 0); + #endif + return (pmap); } *************** *** 1240,1253 **** TAILQ_REMOVE(&pmap_all_pmaps, pmap, pm_list); simple_unlock(&pmap_all_pmaps_slock); ! #ifdef DIAGNOSTIC /* * Since the pmap is supposed to contain no valid ! * mappings at this point, this should never happen. */ ! if (pmap->pm_lev1map != kernel_lev1map) ! panic("pmap_destroy: pmap still contains valid mappings"); ! #endif pool_put(&pmap_pmap_pool, pmap); } --- 1256,1271 ---- TAILQ_REMOVE(&pmap_all_pmaps, pmap, pm_list); simple_unlock(&pmap_all_pmaps_slock); ! #ifdef PMAP_NO_LAZY_LEV1MAP ! pmap_lev1map_destroy(pmap, cpu_number()); ! #endif ! /* * Since the pmap is supposed to contain no valid ! * mappings at this point, we should always see ! * kernel_lev1map here. */ ! KASSERT(pmap->pm_lev1map == kernel_lev1map); pool_put(&pmap_pmap_pool, pmap); } *************** *** 1685,1690 **** --- 1703,1711 ---- panic("pmap_enter: user pmap, invalid va 0x%lx", va); #endif + #ifdef PMAP_NO_LAZY_LEV1MAP + KASSERT(pmap->pm_lev1map != kernel_lev1map); + #else /* * If we're still referencing the kernel kernel_lev1map, * create a new level 1 page table. A reference will be *************** *** 1715,1720 **** --- 1736,1742 ---- panic("pmap_enter: unable to create lev1map"); } } + #endif /* PMAP_NO_LAZY_LEV1MAP */ /* * Check to see if the level 1 PTE is valid, and *************** *** 2128,2133 **** --- 2150,2171 ---- if (pmapdebug & PDB_FOLLOW) printf("pmap_extract(%p, %lx) -> ", pmap, va); #endif + + /* + * Take a faster path for the kernel pmap. Avoids locking, + * handles K0SEG. + */ + if (pmap == pmap_kernel()) { + pa = vtophys(va); + if (pap != NULL) + *pap = pa; + #ifdef DEBUG + if (pmapdebug & PDB_FOLLOW) + printf("0x%lx (kernel vtophys)\n", pa); + #endif + return (pa != 0); /* XXX */ + } + PMAP_LOCK(pmap); l1pte = pmap_l1pte(pmap, va); *************** *** 2238,2258 **** printf("pmap_activate(%p)\n", l); #endif PMAP_LOCK(pmap); ! /* ! * Mark the pmap in use by this processor. ! */ atomic_setbits_ulong(&pmap->pm_cpus, (1UL << cpu_id)); ! /* ! * Allocate an ASN. ! */ pmap_asn_alloc(pmap, cpu_id); PMAP_ACTIVATE(pmap, l, cpu_id); PMAP_UNLOCK(pmap); } /* --- 2276,2296 ---- printf("pmap_activate(%p)\n", l); #endif + #ifndef PMAP_NO_LAZY_LEV1MAP PMAP_LOCK(pmap); + #endif ! /* Mark the pmap in use by this processor. */ atomic_setbits_ulong(&pmap->pm_cpus, (1UL << cpu_id)); ! /* Allocate an ASN. */ pmap_asn_alloc(pmap, cpu_id); PMAP_ACTIVATE(pmap, l, cpu_id); + #ifndef PMAP_NO_LAZY_LEV1MAP PMAP_UNLOCK(pmap); + #endif } /* *************** *** 3261,3272 **** --- 3299,3316 ---- panic("pmap_lev1map_create: pmap uses non-reserved ASN"); #endif + #ifdef PMAP_NO_LAZY_LEV1MAP + /* Being called from pmap_create() in this case; we can sleep. */ + l1pt = pool_cache_get(&pmap_l1pt_cache, PR_WAITOK); + #else l1pt = pool_cache_get(&pmap_l1pt_cache, PR_NOWAIT); + #endif if (l1pt == NULL) return (ENOMEM); pmap->pm_lev1map = l1pt; + #ifndef PMAP_NO_LAZY_LEV1MAP /* guaranteed not to be active */ /* * The page table base has changed; if the pmap was active, * reactivate it. *************** *** 3276,3281 **** --- 3320,3326 ---- PMAP_ACTIVATE(pmap, curlwp, cpu_id); } PMAP_LEV1MAP_SHOOTDOWN(pmap, cpu_id); + #endif /* ! PMAP_NO_LAZY_LEV1MAP */ return (0); } *************** *** 3301,3306 **** --- 3346,3352 ---- */ pmap->pm_lev1map = kernel_lev1map; + #ifndef PMAP_NO_LAZY_LEV1MAP /* pmap is being destroyed */ /* * The page table base has changed; if the pmap was active, * reactivate it. Note that allocation of a new ASN is *************** *** 3323,3328 **** --- 3369,3375 ---- if (PMAP_ISACTIVE(pmap, cpu_id)) PMAP_ACTIVATE(pmap, curlwp, cpu_id); PMAP_LEV1MAP_SHOOTDOWN(pmap, cpu_id); + #endif /* ! PMAP_NO_LAZY_LEV1MAP */ /* * Free the old level 1 page table page. *************** *** 3561,3571 **** --- 3608,3620 ---- #endif if (pmap_physpage_delref(l1pte) == 0) { + #ifndef PMAP_NO_LAZY_LEV1MAP /* * No more level 2 tables left, go back to the global * kernel_lev1map. */ pmap_lev1map_destroy(pmap, cpu_id); + #endif /* ! PMAP_NO_LAZY_LEV1MAP */ } } *************** *** 3597,3602 **** --- 3646,3658 ---- * kernel mappings exist in that map, and all kernel mappings * have PG_ASM set. If the pmap eventually gets its own * lev1map, an ASN will be allocated at that time. + * + * #ifdef PMAP_NO_LAZY_LEV1MAP + * Only the kernel pmap will reference kernel_lev1map. Do the + * same old fixups, but note that we no longer need the pmap + * to be locked if we're in this mode, since pm_lev1map will + * never change. + * #endif */ if (pmap->pm_lev1map == kernel_lev1map) { #ifdef DEBUG *************** *** 3617,3627 **** */ pma->pma_asn = PMAP_ASN_RESERVED; #else ! #ifdef DIAGNOSTIC ! if (pma->pma_asn != PMAP_ASN_RESERVED) ! panic("pmap_asn_alloc: kernel_lev1map without " ! "PMAP_ASN_RESERVED"); ! #endif #endif /* MULTIPROCESSOR */ return; } --- 3673,3679 ---- */ pma->pma_asn = PMAP_ASN_RESERVED; #else ! KASSERT(pma->pma_asn == PMAP_ASN_RESERVED); #endif /* MULTIPROCESSOR */ return; } Index: src/sys/arch/amd64/amd64/copy.S diff -c src/sys/arch/amd64/amd64/copy.S:1.1 src/sys/arch/amd64/amd64/copy.S:1.1.4.1 *** src/sys/arch/amd64/amd64/copy.S:1.1 Sat Apr 26 18:39:26 2003 --- src/sys/arch/amd64/amd64/copy.S Wed Mar 16 11:49:47 2005 *************** *** 1,4 **** ! /* $NetBSD: copy.S,v 1.1 2003/04/26 18:39:26 fvdl Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. --- 1,4 ---- ! /* $NetBSD: copy.S,v 1.1.4.1 2005/03/16 11:49:47 tron Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. *************** *** 207,212 **** --- 207,213 ---- */ movq $VM_MAXUSER_ADDRESS,%rax subq %rdi,%rax + jc _C_LABEL(copystr_efault) cmpq %rdx,%rax jae 1f movq %rax,%rdx *************** *** 248,253 **** --- 249,255 ---- */ movq $VM_MAXUSER_ADDRESS,%rax subq %rsi,%rax + jc _C_LABEL(copystr_efault) cmpq %rdx,%rax jae 1f movq %rax,%rdx Index: src/sys/arch/amd64/amd64/pmap.c diff -c src/sys/arch/amd64/amd64/pmap.c:1.9.2.1 src/sys/arch/amd64/amd64/pmap.c:1.9.2.2 *** src/sys/arch/amd64/amd64/pmap.c:1.9.2.1 Tue Jun 1 04:34:52 2004 --- src/sys/arch/amd64/amd64/pmap.c Wed Jun 8 11:32:08 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.9.2.1 2004/06/01 04:34:52 jmc Exp $ */ /* * --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.9.2.2 2005/06/08 11:32:08 tron Exp $ */ /* * *************** *** 108,114 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.9.2.1 2004/06/01 04:34:52 jmc Exp $"); #ifndef __x86_64__ #include "opt_cputype.h" --- 108,114 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.9.2.2 2005/06/08 11:32:08 tron Exp $"); #ifndef __x86_64__ #include "opt_cputype.h" *************** *** 3309,3314 **** --- 3309,3319 ---- npte |= (PG_u | PG_RW); /* XXXCDC: no longer needed? */ if (pmap == pmap_kernel()) npte |= pmap_pg_g; + if (flags & VM_PROT_ALL) { + npte |= PG_U; + if (flags & VM_PROT_WRITE) + npte |= PG_M; + } ptes[pl1_i(va)] = npte; /* zap! */ Index: src/sys/arch/amiga/amiga/pmap.c diff -c src/sys/arch/amiga/amiga/pmap.c:1.108.2.1 src/sys/arch/amiga/amiga/pmap.c:1.108.2.2 *** src/sys/arch/amiga/amiga/pmap.c:1.108.2.1 Fri Oct 1 02:37:08 2004 --- src/sys/arch/amiga/amiga/pmap.c Wed Jun 8 11:32:38 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.108.2.1 2004/10/01 02:37:08 jmc Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.108.2.2 2005/06/08 11:32:38 tron Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. *************** *** 107,113 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.108.2.1 2004/10/01 02:37:08 jmc Exp $"); #include #include --- 107,113 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.108.2.2 2005/06/08 11:32:38 tron Exp $"); #include #include *************** *** 1340,1345 **** --- 1340,1351 ---- (kernel_copyback || pmap != pmap_kernel())) npte |= PG_CCB; /* cache copyback */ #endif + if (flags & VM_PROT_ALL) { + npte |= PG_U; + if (flags & VM_PROT_WRITE) + npte |= PG_M; + } + /* * Remember if this was a wiring-only change. * If so, we need not flush the TLB and caches. Index: src/sys/arch/atari/atari/pmap.c diff -c src/sys/arch/atari/atari/pmap.c:1.86 src/sys/arch/atari/atari/pmap.c:1.86.2.1 *** src/sys/arch/atari/atari/pmap.c:1.86 Sat Sep 27 20:01:58 2003 --- src/sys/arch/atari/atari/pmap.c Wed Jun 8 11:33:19 2005 *************** *** 106,112 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.86 2003/09/27 20:01:58 cl Exp $"); #include #include --- 106,112 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.86.2.1 2005/06/08 11:33:19 tron Exp $"); #include #include *************** *** 1291,1296 **** --- 1291,1302 ---- (kernel_copyback || pmap != pmap_kernel())) npte |= PG_CCB; /* cache copyback */ #endif + if (flags & VM_PROT_ALL) { + npte |= PG_U; + if (flags & VM_PROT_WRITE) + npte |= PG_M; + } + /* * Remember if this was a wiring-only change. * If so, we need not flush the TLB and caches. Index: src/sys/arch/evbppc/conf/Makefile.ev64260.inc diff -c src/sys/arch/evbppc/conf/Makefile.ev64260.inc:1.2 src/sys/arch/evbppc/conf/Makefile.ev64260.inc:1.2.4.1 *** src/sys/arch/evbppc/conf/Makefile.ev64260.inc:1.2 Sun Mar 16 07:07:17 2003 --- src/sys/arch/evbppc/conf/Makefile.ev64260.inc Tue Mar 22 19:07:49 2005 *************** *** 1,6 **** ! # $NetBSD: Makefile.ev64260.inc,v 1.2 2003/03/16 07:07:17 matt Exp $ ! MKIMG?= ${THISPPC}/compile/walnut-mkimg.sh TEXTADDR?= 300000 --- 1,6 ---- ! # $NetBSD: Makefile.ev64260.inc,v 1.2.4.1 2005/03/22 19:07:49 tron Exp $ ! MKIMG?= ${HOST_SH} ${THISPPC}/compile/walnut-mkimg.sh TEXTADDR?= 300000 Index: src/sys/arch/evbppc/conf/Makefile.obs405.inc diff -c src/sys/arch/evbppc/conf/Makefile.obs405.inc:1.1 src/sys/arch/evbppc/conf/Makefile.obs405.inc:1.1.2.1 *** src/sys/arch/evbppc/conf/Makefile.obs405.inc:1.1 Tue Sep 23 14:45:12 2003 --- src/sys/arch/evbppc/conf/Makefile.obs405.inc Tue Mar 22 19:07:44 2005 *************** *** 1,6 **** ! # $NetBSD: Makefile.obs405.inc,v 1.1 2003/09/23 14:45:12 shige Exp $ ! MKIMG?= ${THISPPC}/compile/walnut-mkimg.sh CFLAGS+=-mcpu=403 AFLAGS+=-mcpu=403 --- 1,6 ---- ! # $NetBSD: Makefile.obs405.inc,v 1.1.2.1 2005/03/22 19:07:44 tron Exp $ ! MKIMG?= ${HOST_SH} ${THISPPC}/compile/walnut-mkimg.sh CFLAGS+=-mcpu=403 AFLAGS+=-mcpu=403 Index: src/sys/arch/evbppc/conf/Makefile.walnut.inc diff -c src/sys/arch/evbppc/conf/Makefile.walnut.inc:1.2 src/sys/arch/evbppc/conf/Makefile.walnut.inc:1.2.4.1 *** src/sys/arch/evbppc/conf/Makefile.walnut.inc:1.2 Sat Jan 4 18:13:51 2003 --- src/sys/arch/evbppc/conf/Makefile.walnut.inc Tue Mar 22 19:07:49 2005 *************** *** 1,6 **** ! # $NetBSD: Makefile.walnut.inc,v 1.2 2003/01/04 18:13:51 thorpej Exp $ ! MKIMG?= ${THISPPC}/compile/walnut-mkimg.sh CFLAGS+=-mcpu=403 AFLAGS+=-mcpu=403 TEXTADDR?= 25000 --- 1,6 ---- ! # $NetBSD: Makefile.walnut.inc,v 1.2.4.1 2005/03/22 19:07:49 tron Exp $ ! MKIMG?= ${HOST_SH} ${THISPPC}/compile/walnut-mkimg.sh CFLAGS+=-mcpu=403 AFLAGS+=-mcpu=403 TEXTADDR?= 25000 Index: src/sys/arch/hppa/hppa/pmap.c diff -c src/sys/arch/hppa/hppa/pmap.c:1.12 src/sys/arch/hppa/hppa/pmap.c:1.12.2.1 *** src/sys/arch/hppa/hppa/pmap.c:1.12 Mon Jan 5 02:25:32 2004 --- src/sys/arch/hppa/hppa/pmap.c Wed Jun 8 11:31:58 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.12 2004/01/05 02:25:32 chs Exp $ */ /*- * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.12.2.1 2005/06/08 11:31:58 tron Exp $ */ /*- * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc. *************** *** 171,177 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.12 2004/01/05 02:25:32 chs Exp $"); #include #include --- 171,177 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.12.2.1 2005/06/08 11:31:58 tron Exp $"); #include #include *************** *** 1353,1358 **** --- 1353,1363 ---- tlbprot = pmap_prot(pmap, prot) | pmap->pmap_pid; if (wired) tlbprot |= TLB_WIRED; + if (flags & VM_PROT_ALL) { + tlbprot |= TLB_REF; + if (flags & VM_PROT_WRITE) + tlbprot |= TLB_DIRTY; + } #ifdef PMAPDEBUG if (!pmap_initialized || (pmapdebug & PDB_ENTER)) Index: src/sys/arch/i386/i386/locore.S diff -c src/sys/arch/i386/i386/locore.S:1.25.2.2 src/sys/arch/i386/i386/locore.S:1.25.2.3 *** src/sys/arch/i386/i386/locore.S:1.25.2.2 Mon Sep 20 05:57:11 2004 --- src/sys/arch/i386/i386/locore.S Wed Mar 16 11:49:54 2005 *************** *** 1,4 **** ! /* $NetBSD: locore.S,v 1.25.2.2 2004/09/20 05:57:11 tron Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: locore.S,v 1.25.2.3 2005/03/16 11:49:54 tron Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. *************** *** 1180,1185 **** --- 1180,1186 ---- */ movl $VM_MAXUSER_ADDRESS,%eax subl %edi,%eax + jc _C_LABEL(copystr_efault) cmpl %edx,%eax jae 1f movl %eax,%edx *************** *** 1234,1239 **** --- 1235,1241 ---- */ movl $VM_MAXUSER_ADDRESS,%eax subl %esi,%eax + jc _C_LABEL(copystr_efault) cmpl %edx,%eax jae 1f movl %eax,%edx Index: src/sys/arch/i386/i386/pmap.c diff -c src/sys/arch/i386/i386/pmap.c:1.171.2.1 src/sys/arch/i386/i386/pmap.c:1.171.2.2 *** src/sys/arch/i386/i386/pmap.c:1.171.2.1 Fri Apr 16 07:58:45 2004 --- src/sys/arch/i386/i386/pmap.c Wed Jun 8 11:29:40 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.171.2.1 2004/04/16 07:58:45 tron Exp $ */ /* * --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.171.2.2 2005/06/08 11:29:40 tron Exp $ */ /* * *************** *** 60,66 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.171.2.1 2004/04/16 07:58:45 tron Exp $"); #include "opt_cputype.h" #include "opt_user_ldt.h" --- 60,66 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.171.2.2 2005/06/08 11:29:40 tron Exp $"); #include "opt_cputype.h" #include "opt_user_ldt.h" *************** *** 3280,3285 **** --- 3280,3292 ---- npte |= (PG_u | PG_RW); /* XXXCDC: no longer needed? */ if (pmap == pmap_kernel()) npte |= pmap_pg_g; + #if 1 + if (flags & VM_PROT_ALL) { + npte |= PG_U; + if (flags & VM_PROT_WRITE) + npte |= PG_M; + } + #endif /* get lock */ PMAP_MAP_TO_HEAD_LOCK(); Index: src/sys/arch/i386/i386/trap.c diff -c src/sys/arch/i386/i386/trap.c:1.200 src/sys/arch/i386/i386/trap.c:1.200.2.1 *** src/sys/arch/i386/i386/trap.c:1.200 Sun Mar 14 01:08:48 2004 --- src/sys/arch/i386/i386/trap.c Tue Oct 11 17:14:37 2005 *************** *** 1,4 **** ! /* $NetBSD: trap.c,v 1.200 2004/03/14 01:08:48 cl Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: trap.c,v 1.200.2.1 2005/10/11 17:14:37 riz Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. *************** *** 75,81 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.200 2004/03/14 01:08:48 cl Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" --- 75,81 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.200.2.1 2005/10/11 17:14:37 riz Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" *************** *** 126,131 **** --- 126,132 ---- #include "npx.h" + static __inline int xmm_si_code(struct lwp *); void trap(struct trapframe *); void trap_tss(struct i386tss *, int, int); #if defined(I386_CPU) *************** *** 199,204 **** --- 200,244 ---- trap(&tf); } + static __inline int + xmm_si_code(struct lwp *l) + { + uint32_t mxcsr, mask; + + if (!i386_use_fxsave) { + #ifdef DIAGNOSTIC + panic("SSE FP Exception, but no SSE"); + #endif + return 0; + } + mxcsr = l->l_addr->u_pcb.pcb_savefpu.sv_xmm.sv_env.en_mxcsr; + + /* + * Since we only have a single status and control register, + * we use the exception mask bits to mask disabled exceptions + */ + mask = ~((mxcsr & __INITIAL_MXCSR__) >> 7) & 0xff; + switch (mask & mxcsr) { + case EN_SW_INVOP: + return FPE_FLTINV; + case EN_SW_DENORM: + case EN_SW_PRECLOSS: + return FPE_FLTRES; + case EN_SW_ZERODIV: + return FPE_FLTDIV; + case EN_SW_OVERFLOW: + return FPE_FLTOVF; + case EN_SW_UNDERFLOW: + return FPE_FLTUND; + case EN_SW_DATACHAIN: + return FPE_FLTSUB; + case 0: + default: + return 0; + } + } + + /* * trap(frame): * Exception, fault, and trap interface to BSD kernel. This *************** *** 491,496 **** --- 531,537 ---- #endif } + case T_XMM|T_USER: case T_BOUND|T_USER: case T_OFLOW|T_USER: case T_DIVIDE|T_USER: *************** *** 499,504 **** --- 540,548 ---- ksi.ksi_trap = type & ~T_USER; ksi.ksi_addr = (void *)frame->tf_eip; switch (type) { + case T_XMM|T_USER: + ksi.ksi_code = xmm_si_code(l); + break; case T_BOUND|T_USER: case T_OFLOW|T_USER: ksi.ksi_code = FPE_FLTOVF; Index: src/sys/arch/i386/i386/vector.S diff -c src/sys/arch/i386/i386/vector.S:1.13 src/sys/arch/i386/i386/vector.S:1.13.2.1 *** src/sys/arch/i386/i386/vector.S:1.13 Thu Mar 11 11:39:26 2004 --- src/sys/arch/i386/i386/vector.S Tue Oct 11 17:14:37 2005 *************** *** 1,4 **** ! /* $NetBSD: vector.S,v 1.13 2004/03/11 11:39:26 yamt Exp $ */ /* * Copyright 2002 (c) Wasabi Systems, Inc. --- 1,4 ---- ! /* $NetBSD: vector.S,v 1.13.2.1 2005/10/11 17:14:37 riz Exp $ */ /* * Copyright 2002 (c) Wasabi Systems, Inc. *************** *** 802,808 **** --- 802,810 ---- IDTVEC(trap11) TRAP(T_ALIGNFLT) IDTVEC(trap12) + ZTRAP(T_MCA) IDTVEC(trap13) + ZTRAP(T_XMM) IDTVEC(trap14) IDTVEC(trap15) IDTVEC(trap16) *************** *** 815,821 **** IDTVEC(trap1d) IDTVEC(trap1e) IDTVEC(trap1f) ! /* 18 - 31 reserved for future exp */ ZTRAP(T_RESERVED) IDTVEC(exceptions) --- 817,823 ---- IDTVEC(trap1d) IDTVEC(trap1e) IDTVEC(trap1f) ! /* 20 - 31 reserved for future exp */ ZTRAP(T_RESERVED) IDTVEC(exceptions) Index: src/sys/arch/i386/include/npx.h diff -c src/sys/arch/i386/include/npx.h:1.20 src/sys/arch/i386/include/npx.h:1.20.2.1 *** src/sys/arch/i386/include/npx.h:1.20 Thu Aug 7 16:27:59 2003 --- src/sys/arch/i386/include/npx.h Tue Oct 11 17:14:30 2005 *************** *** 1,4 **** ! /* $NetBSD: npx.h,v 1.20 2003/08/07 16:27:59 agc Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. --- 1,4 ---- ! /* $NetBSD: npx.h,v 1.20.2.1 2005/10/11 17:14:30 riz Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. *************** *** 150,155 **** --- 150,170 ---- */ #define __INITIAL_MXCSR__ 0x1f80 + + /* + * 80387 control word bits + */ + #define EN_SW_INVOP 0x0001 /* Invalid operation */ + #define EN_SW_DENORM 0x0002 /* Denormalized operand */ + #define EN_SW_ZERODIV 0x0004 /* Divide by zero */ + #define EN_SW_OVERFLOW 0x0008 /* Overflow */ + #define EN_SW_UNDERFLOW 0x0010 /* Underflow */ + #define EN_SW_PRECLOSS 0x0020 /* Loss of precision */ + #define EN_SW_DATACHAIN 0x0080 /* Data chain exception */ + #define EN_SW_CTL_PREC 0x0300 /* Precision control */ + #define EN_SW_CTL_ROUND 0x0c00 /* Rounding control */ + #define EN_SW_CTL_INF 0x1000 /* Infinity control */ + /* * The standard control word from finit is 0x37F, giving: * round to nearest Index: src/sys/arch/macppc/conf/INSTALL diff -c src/sys/arch/macppc/conf/INSTALL:1.75.2.2 src/sys/arch/macppc/conf/INSTALL:1.75.2.3 *** src/sys/arch/macppc/conf/INSTALL:1.75.2.2 Thu Jul 15 20:19:04 2004 --- src/sys/arch/macppc/conf/INSTALL Fri Jan 7 12:48:59 2005 *************** *** 1,4 **** ! # $NetBSD: INSTALL,v 1.75.2.2 2004/07/15 20:19:04 he Exp $ # # config file for INSTALL FLOPPY # --- 1,4 ---- ! # $NetBSD: INSTALL,v 1.75.2.3 2005/01/07 12:48:59 jdc Exp $ # # config file for INSTALL FLOPPY # *************** *** 13,21 **** options RTC_OFFSET=0 # hardware clock is this many mins. west of GMT - # Change base address to 0x800000 to use large memory disk. - makeoptions TEXTADDR=0x800000 - # Enable the hooks used for initializing the ram-disk. options MEMORY_DISK_HOOKS options MEMORY_DISK_IS_ROOT # Force root on ram-disk --- 13,18 ---- Index: src/sys/arch/macppc/pci/pci_machdep.c diff -c src/sys/arch/macppc/pci/pci_machdep.c:1.24.2.1 src/sys/arch/macppc/pci/pci_machdep.c:1.24.2.2 *** src/sys/arch/macppc/pci/pci_machdep.c:1.24.2.1 Fri Apr 9 02:31:12 2004 --- src/sys/arch/macppc/pci/pci_machdep.c Sun Jul 24 10:08:02 2005 *************** *** 1,4 **** ! /* $NetBSD: pci_machdep.c,v 1.24.2.1 2004/04/09 02:31:12 jmc Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. --- 1,4 ---- ! /* $NetBSD: pci_machdep.c,v 1.24.2.2 2005/07/24 10:08:02 tron Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. *************** *** 43,49 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pci_machdep.c,v 1.24.2.1 2004/04/09 02:31:12 jmc Exp $"); #include #include --- 43,49 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pci_machdep.c,v 1.24.2.2 2005/07/24 10:08:02 tron Exp $"); #include #include *************** *** 494,505 **** #endif } ! #if 0 ! /* XXX This may be wrong... */ ! len = OF_getprop(node, "interrupts", intr, 4) ; if (len == 4) return len; - #endif return -1; } --- 494,506 ---- #endif } ! /* ! * If all else fails, attempt to get AAPL, interrupts property. ! * Grackle, at least, uses this instead of above in some cases. ! */ ! len = OF_getprop(node, "AAPL,interrupts", intr, 4) ; if (len == 4) return len; return -1; } Index: src/sys/arch/pc532/pc532/pmap.c diff -c src/sys/arch/pc532/pc532/pmap.c:1.74 src/sys/arch/pc532/pc532/pmap.c:1.74.2.1 *** src/sys/arch/pc532/pc532/pmap.c:1.74 Tue Jul 15 02:54:35 2003 --- src/sys/arch/pc532/pc532/pmap.c Wed Jun 8 11:33:10 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.74 2003/07/15 02:54:35 lukem Exp $ */ /* * --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.74.2.1 2005/06/08 11:33:10 tron Exp $ */ /* * *************** *** 60,66 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.74 2003/07/15 02:54:35 lukem Exp $"); #include #include --- 60,66 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.74.2.1 2005/06/08 11:33:10 tron Exp $"); #include #include *************** *** 2673,2678 **** --- 2673,2683 ---- npte |= PG_u; else if (va < VM_MAX_ADDRESS) npte |= (PG_u | PG_RW); /* XXXCDC: no longer needed? */ + if (flags & VM_PROT_ALL) { + npte |= PG_U; + if (flags & VM_PROT_WRITE) + npte |= PG_M; + } ptes[ns532_btop(va)] = npte; /* zap! */ Index: src/sys/arch/powerpc/powerpc/trap.c diff -c src/sys/arch/powerpc/powerpc/trap.c:1.99 src/sys/arch/powerpc/powerpc/trap.c:1.99.2.2 *** src/sys/arch/powerpc/powerpc/trap.c:1.99 Thu Mar 25 18:50:50 2004 --- src/sys/arch/powerpc/powerpc/trap.c Wed Apr 13 21:46:47 2005 *************** *** 1,4 **** ! /* $NetBSD: trap.c,v 1.99 2004/03/25 18:50:50 matt Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. --- 1,4 ---- ! /* $NetBSD: trap.c,v 1.99.2.2 2005/04/13 21:46:47 tron Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. *************** *** 32,38 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.99 2004/03/25 18:50:50 matt Exp $"); #include "opt_altivec.h" #include "opt_ddb.h" --- 32,38 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.99.2.2 2005/04/13 21:46:47 tron Exp $"); #include "opt_altivec.h" #include "opt_ddb.h" *************** *** 574,583 **** uva += seglen; kp += seglen; len -= seglen; } out: - unsetusr(); curpcb->pcb_onfault = 0; return rv; } --- 574,583 ---- uva += seglen; kp += seglen; len -= seglen; + unsetusr(); } out: curpcb->pcb_onfault = 0; return rv; } *************** *** 602,611 **** uva += seglen; kp += seglen; len -= seglen; } out: - unsetusr(); curpcb->pcb_onfault = 0; return rv; } --- 602,611 ---- uva += seglen; kp += seglen; len -= seglen; + unsetusr(); } out: curpcb->pcb_onfault = 0; return rv; } *************** *** 768,776 **** len -= seglen; uva += seglen; for (; seglen-- > 0; p++) { ! if ((*kp++ = *(char *)p) == 0) goto out; } } rv = ENAMETOOLONG; --- 768,779 ---- len -= seglen; uva += seglen; for (; seglen-- > 0; p++) { ! if ((*kp++ = *(char *)p) == 0) { ! unsetusr(); goto out; + } } + unsetusr(); } rv = ENAMETOOLONG; *************** *** 778,784 **** if (done != NULL) *done = kp - (char *) kaddr; out2: - unsetusr(); curpcb->pcb_onfault = 0; return rv; } --- 781,786 ---- *************** *** 803,811 **** len -= seglen; uva += seglen; for (; seglen-- > 0; p++) { ! if ((*(char *)p = *kp++) == 0) goto out; } } rv = ENAMETOOLONG; --- 805,816 ---- len -= seglen; uva += seglen; for (; seglen-- > 0; p++) { ! if ((*(char *)p = *kp++) == 0) { ! unsetusr(); goto out; + } } + unsetusr(); } rv = ENAMETOOLONG; *************** *** 813,819 **** if (done != NULL) *done = kp - (char *) kaddr; out2: - unsetusr(); curpcb->pcb_onfault = 0; return rv; } --- 818,823 ---- *************** *** 847,851 **** --- 851,856 ---- { struct trapframe *frame = trapframe(l); + KERNEL_PROC_UNLOCK(l); userret(l, frame); } Index: src/sys/arch/powerpc/powerpc/trap_subr.S diff -c src/sys/arch/powerpc/powerpc/trap_subr.S:1.54 src/sys/arch/powerpc/powerpc/trap_subr.S:1.54.2.1 *** src/sys/arch/powerpc/powerpc/trap_subr.S:1.54 Tue Dec 9 09:49:01 2003 --- src/sys/arch/powerpc/powerpc/trap_subr.S Sat May 7 07:09:27 2005 *************** *** 1,4 **** ! /* $NetBSD: trap_subr.S,v 1.54 2003/12/09 09:49:01 simonb Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. --- 1,4 ---- ! /* $NetBSD: trap_subr.S,v 1.54.2.1 2005/05/07 07:09:27 snj Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. *************** *** 871,877 **** trapagain: /* Now we can recover interrupts again: */ mfmsr %r7 ! ori %r7,%r7,(PSL_EE|PSL_ME|PSL_RI)@l mtmsr %r7 isync /* Call C trap code: */ --- 871,879 ---- trapagain: /* Now we can recover interrupts again: */ mfmsr %r7 ! ldreg %r6, (FRAME_SRR1+(2*SZREG))(%r1) ! andi. %r6,%r6,(PSL_EE|PSL_ME|PSL_RI)@l ! or %r7,%r7,%r6 mtmsr %r7 isync /* Call C trap code: */ Index: src/sys/arch/prep/prep/ibm_7043_140.c diff -c src/sys/arch/prep/prep/ibm_7043_140.c:1.2 src/sys/arch/prep/prep/ibm_7043_140.c:1.2.2.1 *** src/sys/arch/prep/prep/ibm_7043_140.c:1.2 Tue Jul 15 02:54:52 2003 --- src/sys/arch/prep/prep/ibm_7043_140.c Thu Mar 17 00:02:03 2005 *************** *** 1,4 **** ! /* $NetBSD: ibm_7043_140.c,v 1.2 2003/07/15 02:54:52 lukem Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: ibm_7043_140.c,v 1.2.2.1 2005/03/17 00:02:03 he Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. *************** *** 37,43 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: ibm_7043_140.c,v 1.2 2003/07/15 02:54:52 lukem Exp $"); #include "opt_openpic.h" #if !defined(OPENPIC) --- 37,43 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: ibm_7043_140.c,v 1.2.2.1 2005/03/17 00:02:03 he Exp $"); #include "opt_openpic.h" #if !defined(OPENPIC) *************** *** 99,105 **** address = pci_conf_read(&pc, tag, 0x10); if ((address & PCI_MAPREG_TYPE_MASK) == PCI_MAPREG_TYPE_MEM) { address &= PCI_MAPREG_MEM_ADDR_MASK; ! baseaddr = (unsigned char *)(PREP_BUS_SPACE_MEM | address); } } #endif --- 99,119 ---- address = pci_conf_read(&pc, tag, 0x10); if ((address & PCI_MAPREG_TYPE_MASK) == PCI_MAPREG_TYPE_MEM) { address &= PCI_MAPREG_MEM_ADDR_MASK; ! /* ! * PReP PCI memory space is from 0xc0000000 to ! * 0xffffffff but machdep.c maps only 0xc0000000 to ! * 0xcfffffff of PCI memory space. So look if the ! * address offset is bigger then 0xfffffff. If it is ! * we are outside the already mapped region and we need ! * to add an additional mapping for the OpenPIC. ! * The OpenPIC register window is always 256kB. ! */ ! if (address > 0xfffffff) ! baseaddr = (unsigned char *) mapiodev( ! PREP_BUS_SPACE_MEM | address, 0x40000); ! else ! baseaddr = (unsigned char *) ! (PREP_BUS_SPACE_MEM | address); } } #endif Index: src/sys/arch/prep/prep/machdep.c diff -c src/sys/arch/prep/prep/machdep.c:1.51 src/sys/arch/prep/prep/machdep.c:1.51.2.1 *** src/sys/arch/prep/prep/machdep.c:1.51 Mon Oct 20 00:12:10 2003 --- src/sys/arch/prep/prep/machdep.c Thu Mar 17 00:01:36 2005 *************** *** 1,4 **** ! /* $NetBSD: machdep.c,v 1.51 2003/10/20 00:12:10 matt Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. --- 1,4 ---- ! /* $NetBSD: machdep.c,v 1.51.2.1 2005/03/17 00:01:36 he Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. *************** *** 32,38 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.51 2003/10/20 00:12:10 matt Exp $"); #include "opt_compat_netbsd.h" #include "opt_ddb.h" --- 32,38 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.51.2.1 2005/03/17 00:01:36 he Exp $"); #include "opt_compat_netbsd.h" #include "opt_ddb.h" *************** *** 207,217 **** */ consinit(); - /* - * external interrupt handler install - */ - (*platform->init_intr)(); - /* * Set the page size. */ --- 207,212 ---- *************** *** 255,260 **** --- 250,260 ---- panic("startup: no room for interrupt register"); /* + * external interrupt handler install + */ + (*platform->init_intr)(); + + /* * Do common startup. */ oea_startup(res->VitalProductData.PrintableModel); Index: src/sys/arch/sgimips/hpc/if_sq.c diff -c src/sys/arch/sgimips/hpc/if_sq.c:1.20 src/sys/arch/sgimips/hpc/if_sq.c:1.20.2.2 *** src/sys/arch/sgimips/hpc/if_sq.c:1.20 Tue Dec 30 23:48:07 2003 --- src/sys/arch/sgimips/hpc/if_sq.c Wed Apr 6 17:16:03 2005 *************** *** 1,4 **** ! /* $NetBSD: if_sq.c,v 1.20 2003/12/30 23:48:07 sekiya Exp $ */ /* * Copyright (c) 2001 Rafal K. Boni --- 1,4 ---- ! /* $NetBSD: if_sq.c,v 1.20.2.2 2005/04/06 17:16:03 he Exp $ */ /* * Copyright (c) 2001 Rafal K. Boni *************** *** 33,39 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: if_sq.c,v 1.20 2003/12/30 23:48:07 sekiya Exp $"); #include "bpfilter.h" --- 33,39 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: if_sq.c,v 1.20.2.2 2005/04/06 17:16:03 he Exp $"); #include "bpfilter.h" *************** *** 113,158 **** static int sq_intr(void *); static int sq_rxintr(struct sq_softc *); static int sq_txintr(struct sq_softc *); static void sq_reset(struct sq_softc *); static int sq_add_rxbuf(struct sq_softc *, int); static void sq_dump_buffer(u_int32_t addr, u_int32_t len); static void enaddr_aton(const char*, u_int8_t*); - /* Actions */ - #define SQ_RESET 1 - #define SQ_ADD_TO_DMA 2 - #define SQ_START_DMA 3 - #define SQ_DONE_DMA 4 - #define SQ_RESTART_DMA 5 - #define SQ_TXINTR_ENTER 6 - #define SQ_TXINTR_EXIT 7 - #define SQ_TXINTR_BUSY 8 - - struct sq_action_trace { - int action; - int bufno; - int status; - int freebuf; - }; - - #define SQ_TRACEBUF_SIZE 100 - int sq_trace_idx = 0; - struct sq_action_trace sq_trace[SQ_TRACEBUF_SIZE]; - - void sq_trace_dump(struct sq_softc* sc); - - #define SQ_TRACE(act, buf, stat, free) do { \ - sq_trace[sq_trace_idx].action = (act); \ - sq_trace[sq_trace_idx].bufno = (buf); \ - sq_trace[sq_trace_idx].status = (stat); \ - sq_trace[sq_trace_idx].freebuf = (free); \ - if (++sq_trace_idx == SQ_TRACEBUF_SIZE) { \ - memset(&sq_trace, 0, sizeof(sq_trace)); \ - sq_trace_idx = 0; \ - } \ - } while (0) - CFATTACH_DECL(sq, sizeof(struct sq_softc), sq_match, sq_attach, NULL, NULL); --- 113,127 ---- static int sq_intr(void *); static int sq_rxintr(struct sq_softc *); static int sq_txintr(struct sq_softc *); + static void sq_txring_hpc1(struct sq_softc *); + static void sq_txring_hpc3(struct sq_softc *); static void sq_reset(struct sq_softc *); static int sq_add_rxbuf(struct sq_softc *, int); static void sq_dump_buffer(u_int32_t addr, u_int32_t len); + static void sq_trace_dump(struct sq_softc *); static void enaddr_aton(const char*, u_int8_t*); CFATTACH_DECL(sq, sizeof(struct sq_softc), sq_match, sq_attach, NULL, NULL); *************** *** 315,321 **** if_attach(ifp); ether_ifattach(ifp, sc->sc_enaddr); ! memset(&sq_trace, 0, sizeof(sq_trace)); /* Done! */ return; --- 284,290 ---- if_attach(ifp); ether_ifattach(ifp, sc->sc_enaddr); ! memset(&sc->sq_trace, 0, sizeof(sc->sq_trace)); /* Done! */ return; *************** *** 368,374 **** sc->sc_nfreetx = SQ_NTXDESC; sc->sc_nexttx = sc->sc_prevtx = 0; ! SQ_TRACE(SQ_RESET, 0, 0, sc->sc_nfreetx); /* Set into 8003 mode, bank 0 to program ethernet address */ bus_space_write_1(sc->sc_regt, sc->sc_regh, SEEQ_TXCMD, TXCMD_BANK0); --- 337,343 ---- sc->sc_nfreetx = SQ_NTXDESC; sc->sc_nexttx = sc->sc_prevtx = 0; ! SQ_TRACE(SQ_RESET, sc, 0, 0); /* Set into 8003 mode, bank 0 to program ethernet address */ bus_space_write_1(sc->sc_regt, sc->sc_regh, SEEQ_TXCMD, TXCMD_BANK0); *************** *** 405,413 **** /* Set up HPC ethernet DMA config */ if (sc->hpc_regs->revision == 3) { reg = bus_space_read_4(sc->sc_hpct, sc->sc_hpch, ! sc->hpc_regs->enetr_dmacfg); bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! sc->hpc_regs->enetr_dmacfg, reg | ENETR_DMACFG_FIX_RXDC | ENETR_DMACFG_FIX_INTR | ENETR_DMACFG_FIX_EOP); --- 374,382 ---- /* Set up HPC ethernet DMA config */ if (sc->hpc_regs->revision == 3) { reg = bus_space_read_4(sc->sc_hpct, sc->sc_hpch, ! HPC_ENETR_DMACFG); bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC_ENETR_DMACFG, reg | ENETR_DMACFG_FIX_RXDC | ENETR_DMACFG_FIX_INTR | ENETR_DMACFG_FIX_EOP); *************** *** 421,426 **** --- 390,403 ---- bus_space_write_4(sc->sc_hpct, sc->sc_hpch, sc->hpc_regs->enetr_ctl, sc->hpc_regs->enetr_ctl_active); + /* + * Turn off delayed receive interrupts on HPC1. + * (see Hollywood HPC Specification 2.1.4.3) + */ + if (sc->hpc_regs->revision != 3) + bus_space_write_4(sc->sc_hpct, sc->sc_hpch, HPC1_ENET_INTDELAY, + HPC1_ENET_INTDELAYVAL); + ifp->if_flags |= IFF_RUNNING; ifp->if_flags &= ~IFF_OACTIVE; *************** *** 472,477 **** --- 449,456 ---- { int s, error = 0; + SQ_TRACE(SQ_IOCTL, (struct sq_softc *)ifp->if_softc, 0, 0); + s = splnet(); error = ether_ioctl(ifp, cmd, data); *************** *** 480,486 **** * Multicast list has changed; set the hardware filter * accordingly. */ ! error = sq_init(ifp); } splx(s); --- 459,468 ---- * Multicast list has changed; set the hardware filter * accordingly. */ ! if (ifp->if_flags & IFF_RUNNING) ! error = sq_init(ifp); ! else ! error = 0; } splx(s); *************** *** 608,613 **** --- 590,597 ---- * WE ARE NOW COMMITTED TO TRANSMITTING THE PACKET. */ + SQ_TRACE(SQ_ENQUEUE, sc, sc->sc_nexttx, 0); + /* Sync the DMA map. */ bus_dmamap_sync(sc->sc_dmat, dmamap, 0, dmamap->dm_mapsize, BUS_DMASYNC_PREWRITE); *************** *** 677,683 **** /* Advance the tx pointer. */ sc->sc_nfreetx -= dmamap->dm_nsegs; sc->sc_nexttx = nexttx; - } /* All transmit descriptors used up, let upper layers know */ --- 661,666 ---- *************** *** 694,701 **** * last packet we enqueued, mark it as the last * descriptor. * ! * HDD_CTL_EOPACKET && HDD_CTL_INTR cause an ! * interrupt. */ KASSERT(lasttx != -1); if (sc->hpc_regs->revision == 3) { --- 677,685 ---- * last packet we enqueued, mark it as the last * descriptor. * ! * HDD_CTL_INTR will generate an interrupt on ! * HPC1 by itself. HPC3 will not interrupt unless ! * HDD_CTL_EOPACKET is set as well. */ KASSERT(lasttx != -1); if (sc->hpc_regs->revision == 3) { *************** *** 726,757 **** sc->hpc_regs->enetx_ctl); if ((status & sc->hpc_regs->enetx_ctl_active) != 0) { ! SQ_TRACE(SQ_ADD_TO_DMA, firsttx, status, ! sc->sc_nfreetx); /* NB: hpc3_hdd_ctl is also hpc1_hdd_bufptr */ sc->sc_txdesc[SQ_PREVTX(firsttx)].hpc3_hdd_ctl &= ~HDD_CTL_EOCHAIN; SQ_CDTXSYNC(sc, SQ_PREVTX(firsttx), 1, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); ! } else { ! SQ_TRACE(SQ_START_DMA, firsttx, status, sc->sc_nfreetx); bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! sc->hpc_regs->enetx_ndbp, SQ_CDTXADDR(sc, firsttx)); - if (sc->hpc_regs->revision != 3) { bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC1_ENETX_CFXBP, SQ_CDTXADDR(sc, firsttx)); bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC1_ENETX_CBP, SQ_CDTXADDR(sc, firsttx)); ! } ! /* Kick DMA channel into life */ ! bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! sc->hpc_regs->enetx_ctl, ! sc->hpc_regs->enetx_ctl_active); } /* Set a watchdog timer in case the chip flakes out. */ --- 710,761 ---- sc->hpc_regs->enetx_ctl); if ((status & sc->hpc_regs->enetx_ctl_active) != 0) { ! SQ_TRACE(SQ_ADD_TO_DMA, sc, firsttx, status); /* NB: hpc3_hdd_ctl is also hpc1_hdd_bufptr */ sc->sc_txdesc[SQ_PREVTX(firsttx)].hpc3_hdd_ctl &= ~HDD_CTL_EOCHAIN; + if (sc->hpc_regs->revision != 3) + sc->sc_txdesc[SQ_PREVTX(firsttx)].hpc1_hdd_ctl + &= ~HPC1_HDD_CTL_INTR; + SQ_CDTXSYNC(sc, SQ_PREVTX(firsttx), 1, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); ! } else if (sc->hpc_regs->revision == 3) { ! SQ_TRACE(SQ_START_DMA, sc, firsttx, status); ! ! bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC_ENETX_NDBP, SQ_CDTXADDR(sc, firsttx)); + /* Kick DMA channel into life */ bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC_ENETX_CTL, ENETX_CTL_ACTIVE); ! } else { ! /* ! * In the HPC1 case where transmit DMA is ! * inactive, we can either kick off if ! * the ring was previously empty, or call ! * our transmit interrupt handler to ! * figure out if the ring stopped short ! * and restart at the right place. ! */ ! if (ofree == SQ_NTXDESC) { ! SQ_TRACE(SQ_START_DMA, sc, firsttx, status); bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC1_ENETX_NDBP, ! SQ_CDTXADDR(sc, firsttx)); bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC1_ENETX_CFXBP, SQ_CDTXADDR(sc, firsttx)); ! bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC1_ENETX_CBP, SQ_CDTXADDR(sc, firsttx)); ! /* Kick DMA channel into life */ ! bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC1_ENETX_CTL, HPC1_ENETX_CTL_ACTIVE); ! } else ! sq_txring_hpc1(sc); } /* Set a watchdog timer in case the chip flakes out. */ *************** *** 798,820 **** sq_trace_dump(sc); ! memset(&sq_trace, 0, sizeof(sq_trace)); ! sq_trace_idx = 0; ++ifp->if_oerrors; sq_init(ifp); } ! void sq_trace_dump(struct sq_softc* sc) { int i; ! for(i = 0; i < sq_trace_idx; i++) { ! printf("%s: [%d] action %d, buf %d, free %d, status %08x\n", ! sc->sc_dev.dv_xname, i, sq_trace[i].action, ! sq_trace[i].bufno, sq_trace[i].freebuf, ! sq_trace[i].status); } } --- 802,840 ---- sq_trace_dump(sc); ! memset(&sc->sq_trace, 0, sizeof(sc->sq_trace)); ! sc->sq_trace_idx = 0; ++ifp->if_oerrors; sq_init(ifp); } ! static void ! sq_trace_dump(struct sq_softc *sc) { int i; + char *act; ! for (i = 0; i < sc->sq_trace_idx; i++) { ! switch (sc->sq_trace[i].action) { ! case SQ_RESET: act = "SQ_RESET"; break; ! case SQ_ADD_TO_DMA: act = "SQ_ADD_TO_DMA"; break; ! case SQ_START_DMA: act = "SQ_START_DMA"; break; ! case SQ_DONE_DMA: act = "SQ_DONE_DMA"; break; ! case SQ_RESTART_DMA: act = "SQ_RESTART_DMA"; break; ! case SQ_TXINTR_ENTER: act = "SQ_TXINTR_ENTER"; break; ! case SQ_TXINTR_EXIT: act = "SQ_TXINTR_EXIT"; break; ! case SQ_TXINTR_BUSY: act = "SQ_TXINTR_BUSY"; break; ! case SQ_IOCTL: act = "SQ_IOCTL"; break; ! case SQ_ENQUEUE: act = "SQ_ENQUEUE"; break; ! default: act = "UNKNOWN"; ! } ! ! printf("%s: [%03d] action %-16s buf %03d free %03d " ! "status %08x line %d\n", sc->sc_dev.dv_xname, i, act, ! sc->sq_trace[i].bufno, sc->sq_trace[i].freebuf, ! sc->sq_trace[i].status, sc->sq_trace[i].line); } } *************** *** 925,930 **** --- 945,952 ---- sc->sc_rxmap[i]->dm_mapsize, BUS_DMASYNC_PREREAD); SQ_INIT_RXDESC(sc, i); + SQ_DPRINTF(("%s: sq_rxintr: buf %d no RXSTAT_GOOD\n", + sc->sc_dev.dv_xname, i)); continue; } *************** *** 934,939 **** --- 956,963 ---- sc->sc_rxmap[i]->dm_mapsize, BUS_DMASYNC_PREREAD); SQ_INIT_RXDESC(sc, i); + SQ_DPRINTF(("%s: sq_rxintr: buf %d sq_add_rxbuf() " + "failed\n", sc->sc_dev.dv_xname, i)); continue; } *************** *** 992,1002 **** static int sq_txintr(struct sq_softc *sc) { - int i; int shift = 0; u_int32_t status; - u_int32_t hpc1_ready = 0; - u_int32_t hpc3_not_ready = 1; struct ifnet *ifp = &sc->sc_ethercom.ec_if; if (sc->hpc_regs->revision != 3) --- 1016,1023 ---- *************** *** 1005,1014 **** status = bus_space_read_4(sc->sc_hpct, sc->sc_hpch, sc->hpc_regs->enetx_ctl) >> shift; ! SQ_TRACE(SQ_TXINTR_ENTER, sc->sc_prevtx, status, sc->sc_nfreetx); if ((status & ( (sc->hpc_regs->enetx_ctl_active >> shift) | TXSTAT_GOOD)) == 0) { - /* XXX */ printf("txstat: %x\n", status); if (status & TXSTAT_COLL) ifp->if_collisions++; --- 1026,1034 ---- status = bus_space_read_4(sc->sc_hpct, sc->sc_hpch, sc->hpc_regs->enetx_ctl) >> shift; ! SQ_TRACE(SQ_TXINTR_ENTER, sc, sc->sc_prevtx, status); if ((status & ( (sc->hpc_regs->enetx_ctl_active >> shift) | TXSTAT_GOOD)) == 0) { if (status & TXSTAT_COLL) ifp->if_collisions++; *************** *** 1018,1029 **** } if (status & TXSTAT_16COLL) { ! printf("%s: max collisions reached\n", sc->sc_dev.dv_xname); ifp->if_oerrors++; ifp->if_collisions += 16; } } i = sc->sc_prevtx; while (sc->sc_nfreetx < SQ_NTXDESC) { /* --- 1038,1170 ---- } if (status & TXSTAT_16COLL) { ! printf("%s: max collisions reached\n", ! sc->sc_dev.dv_xname); ifp->if_oerrors++; ifp->if_collisions += 16; } } + /* prevtx now points to next xmit packet not yet finished */ + if (sc->hpc_regs->revision == 3) + sq_txring_hpc3(sc); + else + sq_txring_hpc1(sc); + + /* If we have buffers free, let upper layers know */ + if (sc->sc_nfreetx > 0) + ifp->if_flags &= ~IFF_OACTIVE; + + /* If all packets have left the coop, cancel watchdog */ + if (sc->sc_nfreetx == SQ_NTXDESC) + ifp->if_timer = 0; + + SQ_TRACE(SQ_TXINTR_EXIT, sc, sc->sc_prevtx, status); + sq_start(ifp); + + return 1; + } + + /* + * Reclaim used transmit descriptors and restart the transmit DMA + * engine if necessary. + */ + static void + sq_txring_hpc1(struct sq_softc *sc) + { + /* + * HPC1 doesn't tag transmitted descriptors, however, + * the NDBP register points to the next descriptor that + * has not yet been processed. If DMA is not in progress, + * we can safely reclaim all descriptors up to NDBP, and, + * if necessary, restart DMA at NDBP. Otherwise, if DMA + * is active, we can only safely reclaim up to CBP. + * + * For now, we'll only reclaim on inactive DMA and assume + * that a sufficiently large ring keeps us out of trouble. + */ + u_int32_t reclaimto, status; + int reclaimall, i = sc->sc_prevtx; + struct ifnet *ifp = &sc->sc_ethercom.ec_if; + + status = bus_space_read_4(sc->sc_hpct, sc->sc_hpch, HPC1_ENETX_CTL); + if (status & HPC1_ENETX_CTL_ACTIVE) { + SQ_TRACE(SQ_TXINTR_BUSY, sc, i, status); + return; + } else { + reclaimto = bus_space_read_4(sc->sc_hpct, sc->sc_hpch, + HPC1_ENETX_NDBP); + } + + if (sc->sc_nfreetx == 0 && SQ_CDTXADDR(sc, i) == reclaimto) + reclaimall = 1; + else + reclaimall = 0; + + while (sc->sc_nfreetx < SQ_NTXDESC) { + if (SQ_CDTXADDR(sc, i) == reclaimto && !reclaimall) + break; + + SQ_CDTXSYNC(sc, i, sc->sc_txmap[i]->dm_nsegs, + BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + + /* Sync the packet data, unload DMA map, free mbuf */ + bus_dmamap_sync(sc->sc_dmat, sc->sc_txmap[i], 0, + sc->sc_txmap[i]->dm_mapsize, + BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(sc->sc_dmat, sc->sc_txmap[i]); + m_freem(sc->sc_txmbuf[i]); + sc->sc_txmbuf[i] = NULL; + + ifp->if_opackets++; + sc->sc_nfreetx++; + + SQ_TRACE(SQ_DONE_DMA, sc, i, status); + + i = SQ_NEXTTX(i); + } + + if (sc->sc_nfreetx < SQ_NTXDESC) { + SQ_TRACE(SQ_RESTART_DMA, sc, i, status); + + KASSERT(reclaimto == SQ_CDTXADDR(sc, i)); + + bus_space_write_4(sc->sc_hpct, sc->sc_hpch, HPC1_ENETX_CFXBP, + reclaimto); + bus_space_write_4(sc->sc_hpct, sc->sc_hpch, HPC1_ENETX_CBP, + reclaimto); + + /* Kick DMA channel into life */ + bus_space_write_4(sc->sc_hpct, sc->sc_hpch, HPC1_ENETX_CTL, + HPC1_ENETX_CTL_ACTIVE); + + /* + * Set a watchdog timer in case the chip + * flakes out. + */ + ifp->if_timer = 5; + } + + sc->sc_prevtx = i; + } + + /* + * Reclaim used transmit descriptors and restart the transmit DMA + * engine if necessary. + */ + static void + sq_txring_hpc3(struct sq_softc *sc) + { + /* + * HPC3 tags descriptors with a bit once they've been + * transmitted. We need only free each XMITDONE'd + * descriptor, and restart the DMA engine if any + * descriptors are left over. + */ + int i; + u_int32_t status = 0; + struct ifnet *ifp = &sc->sc_ethercom.ec_if; + i = sc->sc_prevtx; while (sc->sc_nfreetx < SQ_NTXDESC) { /* *************** *** 1032,1089 **** * has gone idle. */ status = bus_space_read_4(sc->sc_hpct, sc->sc_hpch, ! sc->hpc_regs->enetx_ctl) >> shift; SQ_CDTXSYNC(sc, i, sc->sc_txmap[i]->dm_nsegs, BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); ! /* ! * If not yet transmitted, try and start DMA engine again. ! * HPC3 tags transmitted descriptors with XMITDONE whereas ! * HPC1 will not halt before sending through EOCHAIN. ! */ ! if (sc->hpc_regs->revision == 3) { ! hpc3_not_ready = ! sc->sc_txdesc[i].hpc3_hdd_ctl & HDD_CTL_XMITDONE; ! } else { ! if (hpc1_ready) ! hpc1_ready++; ! else { ! if (sc->sc_txdesc[i].hpc1_hdd_ctl & ! HPC1_HDD_CTL_EOPACKET) ! hpc1_ready = 1; ! } ! } ! ! if (hpc3_not_ready == 0 || hpc1_ready == 2) { ! if ((status & (sc->hpc_regs->enetx_ctl_active >> shift)) == 0) { // XXX ! SQ_TRACE(SQ_RESTART_DMA, i, status, ! sc->sc_nfreetx); bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! sc->hpc_regs->enetx_ndbp, SQ_CDTXADDR(sc, i)); ! ! if (sc->hpc_regs->revision != 3) { ! bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC1_ENETX_CFXBP, SQ_CDTXADDR(sc, i)); ! bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC1_ENETX_CBP, SQ_CDTXADDR(sc, i)); ! } /* Kick DMA channel into life */ bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! sc->hpc_regs->enetx_ctl, ! sc->hpc_regs->enetx_ctl_active); /* * Set a watchdog timer in case the chip * flakes out. */ ifp->if_timer = 5; ! } else { ! SQ_TRACE(SQ_TXINTR_BUSY, i, status, ! sc->sc_nfreetx); ! } break; } --- 1173,1202 ---- * has gone idle. */ status = bus_space_read_4(sc->sc_hpct, sc->sc_hpch, ! HPC_ENETX_CTL); SQ_CDTXSYNC(sc, i, sc->sc_txmap[i]->dm_nsegs, BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); ! /* Check for used descriptor and restart DMA chain if needed */ ! if ((sc->sc_txdesc[i].hpc3_hdd_ctl & HDD_CTL_XMITDONE) == 0) { ! if ((status & ENETX_CTL_ACTIVE) == 0) { ! SQ_TRACE(SQ_RESTART_DMA, sc, i, status); bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC_ENETX_NDBP, SQ_CDTXADDR(sc, i)); /* Kick DMA channel into life */ bus_space_write_4(sc->sc_hpct, sc->sc_hpch, ! HPC_ENETX_CTL, ENETX_CTL_ACTIVE); /* * Set a watchdog timer in case the chip * flakes out. */ ifp->if_timer = 5; ! } else ! SQ_TRACE(SQ_TXINTR_BUSY, sc, i, status); break; } *************** *** 1098,1125 **** ifp->if_opackets++; sc->sc_nfreetx++; ! SQ_TRACE(SQ_DONE_DMA, i, status, sc->sc_nfreetx); i = SQ_NEXTTX(i); } ! /* prevtx now points to next xmit packet not yet finished */ ! sc->sc_prevtx = i; ! ! /* If we have buffers free, let upper layers know */ ! if (sc->sc_nfreetx > 0) ! ifp->if_flags &= ~IFF_OACTIVE; ! ! /* If all packets have left the coop, cancel watchdog */ ! if (sc->sc_nfreetx == SQ_NTXDESC) ! ifp->if_timer = 0; ! ! SQ_TRACE(SQ_TXINTR_EXIT, sc->sc_prevtx, status, sc->sc_nfreetx); ! sq_start(ifp); ! ! return 1; } - void sq_reset(struct sq_softc *sc) { --- 1211,1223 ---- ifp->if_opackets++; sc->sc_nfreetx++; ! SQ_TRACE(SQ_DONE_DMA, sc, i, status); i = SQ_NEXTTX(i); } ! sc->sc_prevtx = i; } void sq_reset(struct sq_softc *sc) { *************** *** 1190,1196 **** printf("\n"); } - void enaddr_aton(const char* str, u_int8_t* eaddr) { --- 1288,1293 ---- Index: src/sys/arch/sgimips/hpc/sqvar.h diff -c src/sys/arch/sgimips/hpc/sqvar.h:1.5 src/sys/arch/sgimips/hpc/sqvar.h:1.5.2.1 *** src/sys/arch/sgimips/hpc/sqvar.h:1.5 Tue Dec 30 23:48:07 2003 --- src/sys/arch/sgimips/hpc/sqvar.h Wed Apr 6 17:13:41 2005 *************** *** 1,4 **** ! /* $NetBSD: sqvar.h,v 1.5 2003/12/30 23:48:07 sekiya Exp $ */ /* * Copyright (c) 2001 Rafal K. Boni --- 1,4 ---- ! /* $NetBSD: sqvar.h,v 1.5.2.1 2005/04/06 17:13:41 he Exp $ */ /* * Copyright (c) 2001 Rafal K. Boni *************** *** 43,50 **** #include /* Note, these must be powers of two for the magic NEXT/PREV macros to work */ ! #define SQ_NRXDESC 32 ! #define SQ_NTXDESC 16 #define SQ_NRXDESC_MASK (SQ_NRXDESC - 1) #define SQ_NEXTRX(x) ((x + 1) & SQ_NRXDESC_MASK) --- 43,50 ---- #include /* Note, these must be powers of two for the magic NEXT/PREV macros to work */ ! #define SQ_NRXDESC 64 ! #define SQ_NTXDESC 64 #define SQ_NRXDESC_MASK (SQ_NRXDESC - 1) #define SQ_NEXTRX(x) ((x + 1) & SQ_NRXDESC_MASK) *************** *** 75,80 **** --- 75,112 ---- #define SQ_TYPE_8003 0 #define SQ_TYPE_80C03 1 + /* Trace Actions */ + #define SQ_RESET 1 + #define SQ_ADD_TO_DMA 2 + #define SQ_START_DMA 3 + #define SQ_DONE_DMA 4 + #define SQ_RESTART_DMA 5 + #define SQ_TXINTR_ENTER 6 + #define SQ_TXINTR_EXIT 7 + #define SQ_TXINTR_BUSY 8 + #define SQ_IOCTL 9 + #define SQ_ENQUEUE 10 + + struct sq_action_trace { + int action; + int line; + int bufno; + int status; + int freebuf; + }; + + #define SQ_TRACEBUF_SIZE 100 + + #define SQ_TRACE(act, sc, buf, stat) do { \ + (sc)->sq_trace[(sc)->sq_trace_idx].action = (act); \ + (sc)->sq_trace[(sc)->sq_trace_idx].line = __LINE__; \ + (sc)->sq_trace[(sc)->sq_trace_idx].bufno = (buf); \ + (sc)->sq_trace[(sc)->sq_trace_idx].status = (stat); \ + (sc)->sq_trace[(sc)->sq_trace_idx].freebuf = (sc)->sc_nfreetx; \ + if (++(sc)->sq_trace_idx == SQ_TRACEBUF_SIZE) \ + (sc)->sq_trace_idx = 0; \ + } while (0) + struct sq_softc { struct device sc_dev; *************** *** 128,133 **** --- 160,168 ---- rndsource_element_t rnd_source; /* random source */ #endif struct hpc_values *hpc_regs; /* HPC register definitions */ + + int sq_trace_idx; + struct sq_action_trace sq_trace[SQ_TRACEBUF_SIZE]; }; #define SQ_CDTXADDR(sc, x) ((sc)->sc_cddma + SQ_CDTXOFF((x))) Index: src/sys/arch/sh3/sh3/mmu.c diff -c src/sys/arch/sh3/sh3/mmu.c:1.9 src/sys/arch/sh3/sh3/mmu.c:1.9.2.1 *** src/sys/arch/sh3/sh3/mmu.c:1.9 Tue Jul 15 03:35:57 2003 --- src/sys/arch/sh3/sh3/mmu.c Mon Jan 10 19:00:48 2005 *************** *** 1,4 **** ! /* $NetBSD: mmu.c,v 1.9 2003/07/15 03:35:57 lukem Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: mmu.c,v 1.9.2.1 2005/01/10 19:00:48 jmc Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. *************** *** 37,43 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: mmu.c,v 1.9 2003/07/15 03:35:57 lukem Exp $"); #include #include --- 37,43 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: mmu.c,v 1.9.2.1 2005/01/10 19:00:48 jmc Exp $"); #include #include *************** *** 112,117 **** --- 112,120 ---- void sh_tlb_set_asid(int asid) { + int s; + s = _cpu_exception_suspend(); _reg_write_4(SH_(PTEH), asid); + _cpu_exception_resume(s); } Index: src/sys/arch/sh3/sh3/mmu_sh3.c diff -c src/sys/arch/sh3/sh3/mmu_sh3.c:1.6 src/sys/arch/sh3/sh3/mmu_sh3.c:1.6.2.1 *** src/sys/arch/sh3/sh3/mmu_sh3.c:1.6 Tue Jul 15 03:35:57 2003 --- src/sys/arch/sh3/sh3/mmu_sh3.c Mon Jan 10 19:00:50 2005 *************** *** 1,4 **** ! /* $NetBSD: mmu_sh3.c,v 1.6 2003/07/15 03:35:57 lukem Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: mmu_sh3.c,v 1.6.2.1 2005/01/10 19:00:50 jmc Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. *************** *** 37,43 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: mmu_sh3.c,v 1.6 2003/07/15 03:35:57 lukem Exp $"); #include #include --- 37,43 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: mmu_sh3.c,v 1.6.2.1 2005/01/10 19:00:50 jmc Exp $"); #include #include *************** *** 63,72 **** sh3_tlb_invalidate_addr(int asid, vaddr_t va) { u_int32_t a, d; ! int w; d = (va & SH3_MMUAA_D_VPN_MASK_4K) | asid; /* 4K page */ va = va & SH3_MMU_VPN_MASK; /* [16:12] entry index */ /* Probe entry and invalidate it. */ for (w = 0; w < SH3_MMU_WAY; w++) { --- 63,73 ---- sh3_tlb_invalidate_addr(int asid, vaddr_t va) { u_int32_t a, d; ! int s, w; d = (va & SH3_MMUAA_D_VPN_MASK_4K) | asid; /* 4K page */ va = va & SH3_MMU_VPN_MASK; /* [16:12] entry index */ + s = _cpu_exception_suspend(); /* Probe entry and invalidate it. */ for (w = 0; w < SH3_MMU_WAY; w++) { *************** *** 77,90 **** break; } } } void sh3_tlb_invalidate_asid(int asid) { u_int32_t aw, a; ! int e, w; /* Invalidate entry attribute to ASID */ for (w = 0; w < SH3_MMU_WAY; w++) { aw = (w << SH3_MMU_WAY_SHIFT); --- 78,94 ---- break; } } + + _cpu_exception_resume(s); } void sh3_tlb_invalidate_asid(int asid) { u_int32_t aw, a; ! int s, e, w; + s = _cpu_exception_suspend(); /* Invalidate entry attribute to ASID */ for (w = 0; w < SH3_MMU_WAY; w++) { aw = (w << SH3_MMU_WAY_SHIFT); *************** *** 96,109 **** } } } } void sh3_tlb_invalidate_all() { u_int32_t aw, a; ! int e, w; /* Zero clear all TLB entry to avoid unexpected VPN match. */ for (w = 0; w < SH3_MMU_WAY; w++) { aw = (w << SH3_MMU_WAY_SHIFT); --- 100,115 ---- } } } + _cpu_exception_resume(s); } void sh3_tlb_invalidate_all() { u_int32_t aw, a; ! int s, e, w; + s = _cpu_exception_suspend(); /* Zero clear all TLB entry to avoid unexpected VPN match. */ for (w = 0; w < SH3_MMU_WAY; w++) { aw = (w << SH3_MMU_WAY_SHIFT); *************** *** 113,127 **** --- 119,136 ---- _reg_write_4(SH3_MMUDA | a, 0); } } + _cpu_exception_resume(s); } void sh3_tlb_update(int asid, vaddr_t va, u_int32_t pte) { u_int32_t oasid; + int s; KDASSERT(asid < 0x100 && (pte & ~PGOFSET) != 0 && va != 0); + s = _cpu_exception_suspend(); /* Save old ASID */ oasid = _reg_read_4(SH3_PTEH) & SH3_PTEH_ASID_MASK; *************** *** 136,139 **** --- 145,149 ---- /* Restore old ASID */ if (asid != oasid) _reg_write_4(SH3_PTEH, oasid); + _cpu_exception_resume(s); } Index: src/sys/arch/sh3/sh3/mmu_sh4.c diff -c src/sys/arch/sh3/sh3/mmu_sh4.c:1.7 src/sys/arch/sh3/sh3/mmu_sh4.c:1.7.2.1 *** src/sys/arch/sh3/sh3/mmu_sh4.c:1.7 Tue Jul 15 03:35:57 2003 --- src/sys/arch/sh3/sh3/mmu_sh4.c Mon Jan 10 19:00:54 2005 *************** *** 1,4 **** ! /* $NetBSD: mmu_sh4.c,v 1.7 2003/07/15 03:35:57 lukem Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: mmu_sh4.c,v 1.7.2.1 2005/01/10 19:00:54 jmc Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. *************** *** 37,43 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: mmu_sh4.c,v 1.7 2003/07/15 03:35:57 lukem Exp $"); #include #include --- 37,43 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: mmu_sh4.c,v 1.7.2.1 2005/01/10 19:00:54 jmc Exp $"); #include #include *************** *** 85,91 **** --- 85,94 ---- sh4_tlb_invalidate_addr(int asid, vaddr_t va) { u_int32_t pteh; + int s; + va &= SH4_PTEH_VPN_MASK; + s = _cpu_exception_suspend(); /* Save current ASID */ pteh = _reg_read_4(SH4_PTEH); *************** *** 98,111 **** RUN_P1; /* Restore ASID */ _reg_write_4(SH4_PTEH, pteh); } void sh4_tlb_invalidate_asid(int asid) { u_int32_t a; ! int e; /* Invalidate entry attribute to ASID */ RUN_P2; for (e = 0; e < SH4_UTLB_ENTRY; e++) { --- 101,117 ---- RUN_P1; /* Restore ASID */ _reg_write_4(SH4_PTEH, pteh); + + _cpu_exception_resume(s); } void sh4_tlb_invalidate_asid(int asid) { u_int32_t a; ! int e, s; + s = _cpu_exception_suspend(); /* Invalidate entry attribute to ASID */ RUN_P2; for (e = 0; e < SH4_UTLB_ENTRY; e++) { *************** *** 116,129 **** __sh4_itlb_invalidate_all(); RUN_P1; } void sh4_tlb_invalidate_all() { u_int32_t a; ! int e, eend; /* If non-wired entry limit is zero, clear all entry. */ a = _reg_read_4(SH4_MMUCR) & SH4_MMUCR_URB_MASK; eend = a ? (a >> SH4_MMUCR_URB_SHIFT) : SH4_UTLB_ENTRY; --- 122,137 ---- __sh4_itlb_invalidate_all(); RUN_P1; + _cpu_exception_resume(s); } void sh4_tlb_invalidate_all() { u_int32_t a; ! int e, eend, s; + s = _cpu_exception_suspend(); /* If non-wired entry limit is zero, clear all entry. */ a = _reg_read_4(SH4_MMUCR) & SH4_MMUCR_URB_MASK; eend = a ? (a >> SH4_MMUCR_URB_SHIFT) : SH4_UTLB_ENTRY; *************** *** 141,146 **** --- 149,155 ---- _reg_write_4(SH4_ITLB_DA1 | (2 << SH4_ITLB_E_SHIFT), 0); _reg_write_4(SH4_ITLB_DA1 | (3 << SH4_ITLB_E_SHIFT), 0); RUN_P1; + _cpu_exception_resume(s); } void *************** *** 148,156 **** --- 157,167 ---- { u_int32_t oasid; u_int32_t ptel; + int s; KDASSERT(asid < 0x100 && (pte & ~PGOFSET) != 0 && va != 0); + s = _cpu_exception_suspend(); /* Save old ASID */ oasid = _reg_read_4(SH4_PTEH) & SH4_PTEH_ASID_MASK; *************** *** 173,176 **** --- 184,188 ---- /* Restore old ASID */ if (asid != oasid) _reg_write_4(SH4_PTEH, oasid); + _cpu_exception_resume(s); } Index: src/sys/arch/sparc/include/lock.h diff -c src/sys/arch/sparc/include/lock.h:1.14.2.1 src/sys/arch/sparc/include/lock.h:1.14.2.2 *** src/sys/arch/sparc/include/lock.h:1.14.2.1 Sat Apr 24 18:32:29 2004 --- src/sys/arch/sparc/include/lock.h Wed Mar 16 12:38:12 2005 *************** *** 1,4 **** ! /* $NetBSD: lock.h,v 1.14.2.1 2004/04/24 18:32:29 jdc Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: lock.h,v 1.14.2.2 2005/03/16 12:38:12 tron Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. *************** *** 57,63 **** int v; __asm __volatile("ldstub [%1],%0" ! : "=r" (v) : "r" (addr) : "memory"); --- 57,63 ---- int v; __asm __volatile("ldstub [%1],%0" ! : "=&r" (v) : "r" (addr) : "memory"); Index: src/sys/arch/sparc/sparc/machdep.c diff -c src/sys/arch/sparc/sparc/machdep.c:1.245.2.1 src/sys/arch/sparc/sparc/machdep.c:1.245.2.2 *** src/sys/arch/sparc/sparc/machdep.c:1.245.2.1 Thu Apr 29 04:19:33 2004 --- src/sys/arch/sparc/sparc/machdep.c Sun Mar 20 11:58:32 2005 *************** *** 1,4 **** ! /* $NetBSD: machdep.c,v 1.245.2.1 2004/04/29 04:19:33 jmc Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: machdep.c,v 1.245.2.2 2005/03/20 11:58:32 tron Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. *************** *** 78,84 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.245.2.1 2004/04/29 04:19:33 jmc Exp $"); #include "opt_compat_netbsd.h" #include "opt_compat_sunos.h" --- 78,84 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.245.2.2 2005/03/20 11:58:32 tron Exp $"); #include "opt_compat_netbsd.h" #include "opt_compat_sunos.h" *************** *** 863,869 **** * registers into the pcb; we need them in the process's memory. */ write_user_windows(); ! if (rwindow_save(l)) sigexit(l, SIGILL); /* --- 863,869 ---- * registers into the pcb; we need them in the process's memory. */ write_user_windows(); ! if ((l->l_flag & L_SA_SWITCHING) == 0 && rwindow_save(l)) sigexit(l, SIGILL); /* Index: src/sys/arch/sparc/sparc/pmap.c diff -c src/sys/arch/sparc/sparc/pmap.c:1.276.2.3 src/sys/arch/sparc/sparc/pmap.c:1.276.2.4 *** src/sys/arch/sparc/sparc/pmap.c:1.276.2.3 Thu Apr 29 04:19:27 2004 --- src/sys/arch/sparc/sparc/pmap.c Wed Jun 8 11:33:01 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.276.2.3 2004/04/29 04:19:27 jmc Exp $ */ /* * Copyright (c) 1996 --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.276.2.4 2005/06/08 11:33:01 tron Exp $ */ /* * Copyright (c) 1996 *************** *** 56,62 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.276.2.3 2004/04/29 04:19:27 jmc Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" --- 56,62 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.276.2.4 2005/06/08 11:33:01 tron Exp $"); #include "opt_ddb.h" #include "opt_kgdb.h" *************** *** 5608,5616 **** #endif pg = PHYS_TO_VM_PAGE(pa); - pteproto = PG_V | PMAP_T2PTE_4(pa); pa &= ~PMAP_TNC_4; /* * Set up prototype for new PTE. Cannot set PG_NC from PV_NC yet * since the pvlist no-cache bit might change as a result of the --- 5608,5616 ---- #endif pg = PHYS_TO_VM_PAGE(pa); pteproto = PG_V | PMAP_T2PTE_4(pa); pa &= ~PMAP_TNC_4; + /* * Set up prototype for new PTE. Cannot set PG_NC from PV_NC yet * since the pvlist no-cache bit might change as a result of the *************** *** 5619,5627 **** pteproto |= atop(pa) & PG_PFNUM; if (prot & VM_PROT_WRITE) pteproto |= PG_W; - if ((flags & PMAP_WIRED) != 0) pteproto |= PG_WIRED; write_user_windows(); ctx = getcontext4(); --- 5619,5632 ---- pteproto |= atop(pa) & PG_PFNUM; if (prot & VM_PROT_WRITE) pteproto |= PG_W; if ((flags & PMAP_WIRED) != 0) pteproto |= PG_WIRED; + if (flags & VM_PROT_ALL) { + pteproto |= PG_U; + if (flags & VM_PROT_WRITE) { + pteproto |= PG_M; + } + } write_user_windows(); ctx = getcontext4(); *************** *** 6248,6253 **** --- 6253,6264 ---- /* Make sure we get a pte with appropriate perms! */ pteproto |= pte_prot4m(pm, prot); + if (flags & VM_PROT_ALL) { + pteproto |= SRMMU_PG_R; + if (flags & VM_PROT_WRITE) { + pteproto |= SRMMU_PG_M; + } + } if (pm == pmap_kernel()) error = pmap_enk4m(pm, va, prot, flags, pg, pteproto | PPROT_S); Index: src/sys/arch/sparc/sparc/trap.c diff -c src/sys/arch/sparc/sparc/trap.c:1.153.2.1 src/sys/arch/sparc/sparc/trap.c:1.153.2.2 *** src/sys/arch/sparc/sparc/trap.c:1.153.2.1 Sat Apr 24 18:28:24 2004 --- src/sys/arch/sparc/sparc/trap.c Wed Mar 16 12:16:10 2005 *************** *** 1,4 **** ! /* $NetBSD: trap.c,v 1.153.2.1 2004/04/24 18:28:24 jdc Exp $ */ /* * Copyright (c) 1996 --- 1,4 ---- ! /* $NetBSD: trap.c,v 1.153.2.2 2005/03/16 12:16:10 tron Exp $ */ /* * Copyright (c) 1996 *************** *** 49,55 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.153.2.1 2004/04/24 18:28:24 jdc Exp $"); #include "opt_ddb.h" #include "opt_ktrace.h" --- 49,55 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.153.2.2 2005/03/16 12:16:10 tron Exp $"); #include "opt_ddb.h" #include "opt_ktrace.h" *************** *** 947,952 **** --- 947,963 ---- goto fault; } atype = ser & SER_WRITE ? VM_PROT_WRITE : VM_PROT_READ; + if ((ser & SER_PROT) && atype == VM_PROT_READ && type != T_TEXTFAULT) { + + /* + * The hardware reports faults by the atomic load/store + * instructions as read faults, so if the faulting instruction + * is one of those, relabel this fault as both read and write. + */ + if ((fuword((void *)pc) & 0xc1680000) == 0xc0680000) { + atype = VM_PROT_READ | VM_PROT_WRITE; + } + } va = trunc_page(v); if (psr & PSR_PS) { extern char Lfsbail[]; Index: src/sys/arch/sparc/stand/common/mmu.c diff -c src/sys/arch/sparc/stand/common/mmu.c:1.4 src/sys/arch/sparc/stand/common/mmu.c:1.4.2.1 *** src/sys/arch/sparc/stand/common/mmu.c:1.4 Fri Oct 24 09:48:08 2003 --- src/sys/arch/sparc/stand/common/mmu.c Wed Mar 16 12:04:21 2005 *************** *** 1,4 **** ! /* $NetBSD: mmu.c,v 1.4 2003/10/24 09:48:08 pk Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: mmu.c,v 1.4.2.1 2005/03/16 12:04:21 tron Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. *************** *** 97,103 **** * Limited functionality wrt. MMU resource management. */ #define setregmap(va, smeg) stha((va)+2, ASI_REGMAP, (smeg << 8)) ! #define setsegmap(va, pmeg) stba(va, ASI_SEGMAP, pmeg) int pmap_map4(vaddr_t va, paddr_t pa, psize_t size) { --- 97,105 ---- * Limited functionality wrt. MMU resource management. */ #define setregmap(va, smeg) stha((va)+2, ASI_REGMAP, (smeg << 8)) ! #define setsegmap(va, pmeg) (CPU_ISSUN4C \ ! ? stba(va, ASI_SEGMAP, pmeg) \ ! : stha(va, ASI_SEGMAP, pmeg)) int pmap_map4(vaddr_t va, paddr_t pa, psize_t size) { Index: src/sys/arch/sparc64/sparc64/locore.s diff -c src/sys/arch/sparc64/sparc64/locore.s:1.196.2.1 src/sys/arch/sparc64/sparc64/locore.s:1.196.2.2 *** src/sys/arch/sparc64/sparc64/locore.s:1.196.2.1 Sun Jul 25 07:45:01 2004 --- src/sys/arch/sparc64/sparc64/locore.s Sun May 1 11:23:38 2005 *************** *** 1,4 **** ! /* $NetBSD: locore.s,v 1.196.2.1 2004/07/25 07:45:01 tron Exp $ */ /* * Copyright (c) 1996-2002 Eduardo Horvath --- 1,4 ---- ! /* $NetBSD: locore.s,v 1.196.2.2 2005/05/01 11:23:38 tron Exp $ */ /* * Copyright (c) 1996-2002 Eduardo Horvath *************** *** 54,63 **** * * @(#)locore.s 8.4 (Berkeley) 12/10/93 */ - #define INTRLIST #define SPITFIRE /* We don't support Cheetah (USIII) yet */ - #define INTR_INTERLOCK /* Use IH_PEND field to interlock interrupts */ #undef PARANOID /* Extremely expensive consistency checks */ #undef NO_VCACHE /* Map w/D$ disabled */ #ifdef DEBUG --- 54,61 ---- *************** *** 67,78 **** #undef TRAPSTATS /* Count traps */ #undef TRAPS_USE_IG /* Use Interrupt Globals for all traps */ #define HWREF /* Track ref/mod bits in trap handlers */ - #undef PMAP_FPSTATE /* Allow nesting of VIS pmap copy/zero */ - #define NEW_FPSTATE - #define PMAP_PHYS_PAGE /* Use phys ASIs for pmap copy/zero */ #undef DCACHE_BUG /* Flush D$ around ASI_PHYS accesses */ #undef NO_TSB /* Don't use TSB */ - #define TICK_IS_TIME /* Keep %tick synchronized with time */ #undef SCHED_DEBUG #include "opt_ddb.h" --- 65,72 ---- *************** *** 429,441 **** #endif /* - * _cpcb points to the current pcb (and hence u. area). - * Initially this is the special one. - */ - .globl _C_LABEL(cpcb) - _C_LABEL(cpcb): POINTER _C_LABEL(u0) - - /* * romp is the prom entry pointer * romtba is the prom trap table base address */ --- 423,428 ---- *************** *** 445,488 **** romtba: POINTER 0 - /* NB: Do we really need the following around? */ - /* - * _cputyp is the current CPU type, used to distinguish between - * the many variations of different sun4* machines. It contains - * the value CPU_SUN4, CPU_SUN4C, or CPU_SUN4M. - */ - .globl _C_LABEL(cputyp) - _C_LABEL(cputyp): - .word 1 - /* - * _cpumod is the current CPU model, used to distinguish between variants - * in the Sun4 and Sun4M families. See /sys/arch/sparc64/include/param.h - * for possible values. - */ - .globl _C_LABEL(cpumod) - _C_LABEL(cpumod): - .word 1 - /* - * _mmumod is the current mmu model, used to distinguish between the - * various implementations of the SRMMU in the sun4m family of machines. - * See /sys/arch/sparc64/include/param.h for possible values. - */ - .globl _C_LABEL(mmumod) - _C_LABEL(mmumod): - .word 0 - - /* - * There variables are pointed to by the cpp symbols PGSHIFT, NBPG, - * and PGOFSET. - */ - .globl _C_LABEL(pgshift), _C_LABEL(nbpg), _C_LABEL(pgofset) - _C_LABEL(pgshift): - .word 0 - _C_LABEL(nbpg): - .word 0 - _C_LABEL(pgofset): - .word 0 - _ALIGN .text --- 432,437 ---- *************** *** 907,939 **** UTRAP(T_ECCERR) ! We'll implement this one later ufast_IMMU_miss: ! 064 = fast instr access MMU miss TRACEFLT ! DEBUG ! ldxa [%g0] ASI_IMMU_8KPTR, %g2 ! Load IMMU 8K TSB pointer #ifdef NO_TSB ! ba,a %icc, instr_miss; #endif ! ldxa [%g0] ASI_IMMU, %g1 ! Load IMMU tag target register ! ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 !Load TSB tag:data into %g4:%g5 ! brgez,pn %g5, instr_miss ! Entry invalid? Punt ! cmp %g1, %g4 ! Compare TLB tags ! bne,pn %xcc, instr_miss ! Got right tag? nop CLRTT ! stxa %g5, [%g0] ASI_IMMU_DATA_IN! Enter new mapping ! retry ! Try new mapping 1: sir TA32 ufast_DMMU_miss: ! 068 = fast data access MMU miss TRACEFLT ! DEBUG ! ldxa [%g0] ASI_DMMU_8KPTR, %g2! Load DMMU 8K TSB pointer #ifdef NO_TSB ! ba,a %icc, data_miss; #endif ! ldxa [%g0] ASI_DMMU, %g1 ! Hard coded for unified 8K TSB Load DMMU tag target register ! ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag and data into %g4 and %g5 ! brgez,pn %g5, data_miss ! Entry invalid? Punt ! cmp %g1, %g4 ! Compare TLB tags ! bnz,pn %xcc, data_miss ! Got right tag? nop CLRTT #ifdef TRAPSTATS --- 856,888 ---- UTRAP(T_ECCERR) ! We'll implement this one later ufast_IMMU_miss: ! 064 = fast instr access MMU miss TRACEFLT ! DEBUG ! ldxa [%g0] ASI_IMMU_8KPTR, %g2 ! Load IMMU 8K TSB pointer #ifdef NO_TSB ! ba,a %icc, instr_miss #endif ! ldxa [%g0] ASI_IMMU, %g1 ! Load IMMU tag target register ! ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag:data into %g4:%g5 ! brgez,pn %g5, instr_miss ! Entry invalid? Punt ! cmp %g1, %g4 ! Compare TLB tags ! bne,pn %xcc, instr_miss ! Got right tag? nop CLRTT ! stxa %g5, [%g0] ASI_IMMU_DATA_IN ! Enter new mapping ! retry ! Try new mapping 1: sir TA32 ufast_DMMU_miss: ! 068 = fast data access MMU miss TRACEFLT ! DEBUG ! ldxa [%g0] ASI_DMMU_8KPTR, %g2! Load DMMU 8K TSB pointer #ifdef NO_TSB ! ba,a %icc, data_miss #endif ! ldxa [%g0] ASI_DMMU, %g1 ! Load DMMU tag target register ! ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag and data into %g4 and %g5 ! brgez,pn %g5, data_miss ! Entry invalid? Punt ! cmp %g1, %g4 ! Compare TLB tags ! bnz,pn %xcc, data_miss ! Got right tag? nop CLRTT #ifdef TRAPSTATS *************** *** 942,949 **** inc %g2 stw %g2, [%g1+%lo(_C_LABEL(udhit))] #endif ! stxa %g5, [%g0] ASI_DMMU_DATA_IN! Enter new mapping ! retry ! Try new mapping 1: sir TA32 --- 891,898 ---- inc %g2 stw %g2, [%g1+%lo(_C_LABEL(udhit))] #endif ! stxa %g5, [%g0] ASI_DMMU_DATA_IN ! Enter new mapping ! retry ! Try new mapping 1: sir TA32 *************** *** 1150,1182 **** UTRAP(T_ECCERR) ! We'll implement this one later kfast_IMMU_miss: ! 064 = fast instr access MMU miss TRACEFLT ! DEBUG ! ldxa [%g0] ASI_IMMU_8KPTR, %g2 ! Load IMMU 8K TSB pointer #ifdef NO_TSB ! ba,a %icc, instr_miss; #endif ! ldxa [%g0] ASI_IMMU, %g1 ! Load IMMU tag target register ! ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 !Load TSB tag:data into %g4:%g5 ! brgez,pn %g5, instr_miss ! Entry invalid? Punt ! cmp %g1, %g4 ! Compare TLB tags ! bne,pn %xcc, instr_miss ! Got right tag? nop CLRTT ! stxa %g5, [%g0] ASI_IMMU_DATA_IN! Enter new mapping ! retry ! Try new mapping 1: sir TA32 kfast_DMMU_miss: ! 068 = fast data access MMU miss TRACEFLT ! DEBUG ! ldxa [%g0] ASI_DMMU_8KPTR, %g2! Load DMMU 8K TSB pointer #ifdef NO_TSB ! ba,a %icc, data_miss; #endif ! ldxa [%g0] ASI_DMMU, %g1 ! Hard coded for unified 8K TSB Load DMMU tag target register ! ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag and data into %g4 and %g5 ! brgez,pn %g5, data_miss ! Entry invalid? Punt ! cmp %g1, %g4 ! Compare TLB tags ! bnz,pn %xcc, data_miss ! Got right tag? nop CLRTT #ifdef TRAPSTATS --- 1099,1131 ---- UTRAP(T_ECCERR) ! We'll implement this one later kfast_IMMU_miss: ! 064 = fast instr access MMU miss TRACEFLT ! DEBUG ! ldxa [%g0] ASI_IMMU_8KPTR, %g2 ! Load IMMU 8K TSB pointer #ifdef NO_TSB ! ba,a %icc, instr_miss #endif ! ldxa [%g0] ASI_IMMU, %g1 ! Load IMMU tag target register ! ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag:data into %g4:%g5 ! brgez,pn %g5, instr_miss ! Entry invalid? Punt ! cmp %g1, %g4 ! Compare TLB tags ! bne,pn %xcc, instr_miss ! Got right tag? nop CLRTT ! stxa %g5, [%g0] ASI_IMMU_DATA_IN ! Enter new mapping ! retry ! Try new mapping 1: sir TA32 kfast_DMMU_miss: ! 068 = fast data access MMU miss TRACEFLT ! DEBUG ! ldxa [%g0] ASI_DMMU_8KPTR, %g2! Load DMMU 8K TSB pointer #ifdef NO_TSB ! ba,a %icc, data_miss #endif ! ldxa [%g0] ASI_DMMU, %g1 ! Load DMMU tag target register ! ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag and data into %g4 and %g5 ! brgez,pn %g5, data_miss ! Entry invalid? Punt ! cmp %g1, %g4 ! Compare TLB tags ! bnz,pn %xcc, data_miss ! Got right tag? nop CLRTT #ifdef TRAPSTATS *************** *** 1185,1192 **** inc %g2 stw %g2, [%g1+%lo(_C_LABEL(kdhit))] #endif ! stxa %g5, [%g0] ASI_DMMU_DATA_IN! Enter new mapping ! retry ! Try new mapping 1: sir TA32 --- 1134,1141 ---- inc %g2 stw %g2, [%g1+%lo(_C_LABEL(kdhit))] #endif ! stxa %g5, [%g0] ASI_DMMU_DATA_IN ! Enter new mapping ! retry ! Try new mapping 1: sir TA32 *************** *** 2144,2151 **** and %g6, PTMASK, %g6 add %g5, %g4, %g5 brz,pn %g4, winfix ! NULL entry? check somewhere else - nop ldxa [%g5] ASI_PHYS_CACHED, %g4 sll %g6, 3, %g6 brz,pn %g4, winfix ! NULL entry? check somewhere else --- 2093,2100 ---- and %g6, PTMASK, %g6 add %g5, %g4, %g5 brz,pn %g4, winfix ! NULL entry? check somewhere else nop + ldxa [%g5] ASI_PHYS_CACHED, %g4 sll %g6, 3, %g6 brz,pn %g4, winfix ! NULL entry? check somewhere else *************** *** 2175,2183 **** ldxa [%g0] ASI_DMMU_8KPTR, %g2 ! Load DMMU 8K TSB pointer andcc %g5, 0x3, %g5 ! 8K? bnz,pn %icc, winfix ! We punt to the pmap code since we can't handle policy ! ldxa [%g0] ASI_DMMU, %g1 ! Hard coded for unified 8K TSB Load DMMU tag target register casxa [%g6] ASI_PHYS_CACHED, %g4, %g7 ! and write it out - membar #StoreLoad cmp %g4, %g7 bne,pn %xcc, 1b --- 2124,2131 ---- ldxa [%g0] ASI_DMMU_8KPTR, %g2 ! Load DMMU 8K TSB pointer andcc %g5, 0x3, %g5 ! 8K? bnz,pn %icc, winfix ! We punt to the pmap code since we can't handle policy ! ldxa [%g0] ASI_DMMU, %g1 ! Load DMMU tag target register casxa [%g6] ASI_PHYS_CACHED, %g4, %g7 ! and write it out membar #StoreLoad cmp %g4, %g7 bne,pn %xcc, 1b *************** *** 2186,2191 **** --- 2134,2140 ---- mov SFSR, %g7 stx %g4, [%g2+8] ! Update TSB entry data nop + #ifdef DEBUG set DATA_START, %g6 ! debug stx %g1, [%g6+0x40] ! debug *************** *** 3808,3815 **** * int type; * struct trapframe *tf0; */ ! .globl _C_LABEL(kgdb_trap_glue) ! _C_LABEL(kgdb_trap_glue): save %sp, -CCFSZ, %sp flushw ! flush all windows --- 3757,3763 ---- * int type; * struct trapframe *tf0; */ ! ENTRY_NOPROFILE(kgdb_trap_glue) save %sp, -CCFSZ, %sp flushw ! flush all windows *************** *** 4019,4027 **** * shift instead of multiply for address calculation). It hunts for * any available slot at that level. Available slots are NULL. * - * NOTE: If no slots are available, we issue an un-vectored interrupt, - * but it will probably be lost anyway. - * * Then interrupt_vector uses the interrupt level in the intrhand * to issue a softint of the appropriate level. The softint handler * figures out what level interrupt it's handling and pulls the first --- 3967,3972 ---- *************** *** 4124,4141 **** nop setup_sparcintr: - #ifdef INTR_INTERLOCK LDPTR [%g5+IH_PEND], %g6 ! Read pending flag brnz,pn %g6, ret_from_intr_vector ! Skip it if it's running - #endif ldub [%g5+IH_PIL], %g6 ! Read interrupt mask sethi %hi(intrpending), %g1 - mov 8, %g7 ! Number of slots to search sll %g6, PTRSHFT+3, %g3 ! Find start of table for this IPL or %g1, %lo(intrpending), %g1 add %g1, %g3, %g1 1: - #ifdef INTRLIST LDPTR [%g1], %g3 ! Load list head STPTR %g3, [%g5+IH_PEND] ! Link our intrhand node in mov %g5, %g7 --- 4069,4082 ---- *************** *** 4143,4194 **** cmp %g7, %g3 ! Did it work? bne,pn %xcc, 1b ! No, try again nop - #else /* INTRLIST */ - mov %g5, %g3 - CASPTR [%g1] ASI_N, %g0, %g3 ! Try a slot -- MPU safe - brz,pt %g3, 2f ! Available? - #ifdef DEBUG - cmp %g5, %g3 ! if these are the same - bne,pt %icc, 97f ! then we aleady have the - nop ! interrupt registered - set _C_LABEL(intrdebug), %g4 - ld [%g4], %g4 - btst INTRDEBUG_VECTOR, %g4 - bz,pt %icc, 97f - nop - - STACKFRAME(-CC64FSZ) ! Get a clean register window - LOAD_ASCIZ(%o0, "interrupt_vector: duplicate handler %p\r\n") - GLOBTOLOC - clr %g4 - call prom_printf - mov %g3, %o1 - LOCTOGLOB - restore - 97: - #endif - dec %g7 - brgz,pt %g7, 1b - inc PTRSZ, %g1 ! Next slot - - !! If we get here we have a problem. - !! There were no available slots and the interrupt was lost. - !! We'll resort to polling in this case. - #ifdef DIAGNOSTIC - STACKFRAME(-CC64FSZ) ! Get a clean register window - LOAD_ASCIZ(%o0, "interrupt_vector: level %d out of slots\r\n") - mov %g6, %o1 - GLOBTOLOC - clr %g4 - rdpr %pil, %l0 - call prom_printf - mov %l0, %o2 - wrpr %g0, 15, %pil - ta 1 - LOCTOGLOB - restore - #endif - #endif /* INTRLIST */ 2: #ifdef DEBUG set _C_LABEL(intrdebug), %g7 --- 4084,4089 ---- *************** *** 4241,4246 **** --- 4136,4142 ---- ba,a ret_from_intr_vector nop ! XXX spitfire bug? + #if defined(MULTIPROCESSOR) /* * IPI handler to flush single pte. * void sparc64_ipi_flush_pte(void *); *************** *** 4274,4282 **** * %g2 - pointer to 'ipi_tlb_args' structure */ ENTRY(sparc64_ipi_flush_all) - rdpr %pstate, %g3 - andn %g3, PSTATE_IE, %g2 ! disable interrupts - wrpr %g2, 0, %pstate set (63 * 8), %g1 ! last TLB entry membar #Sync --- 4170,4175 ---- *************** *** 4317,4326 **** sethi %hi(KERNBASE), %g4 membar #Sync flush %g4 - wrpr %g3, %pstate ba,a ret_from_intr_vector nop /* * Ultra1 and Ultra2 CPUs use soft interrupts for everything. What we do --- 4210,4219 ---- sethi %hi(KERNBASE), %g4 membar #Sync flush %g4 ba,a ret_from_intr_vector nop + #endif /* MULTIPROCESSOR */ /* * Ultra1 and Ultra2 CPUs use soft interrupts for everything. What we do *************** *** 4382,4390 **** * IRQ# = %tt - 0x40 */ ! .globl _C_LABEL(sparc_interrupt) ! This is for interrupt debugging ! _C_LABEL(sparc_interrupt): #ifdef TRAPS_USE_IG wrpr %g0, PSTATE_KERN|PSTATE_IG, %pstate ! DEBUG #endif /* --- 4275,4283 ---- * IRQ# = %tt - 0x40 */ ! ENTRY_NOPROFILE(sparc_interrupt) #ifdef TRAPS_USE_IG + ! This is for interrupt debugging wrpr %g0, PSTATE_KERN|PSTATE_IG, %pstate ! DEBUG #endif /* *************** *** 4481,4494 **** sparc_intr_retry: wr %l3, 0, CLEAR_SOFTINT ! (don't clear possible %tick IRQ) - wrpr %g0, PSTATE_INTR, %pstate ! Reenable interrupts sll %l6, PTRSHFT+3, %l2 sethi %hi(intrpending), %l4 or %l4, %lo(intrpending), %l4 mov 8, %l7 add %l2, %l4, %l4 - #ifdef INTRLIST 1: membar #StoreLoad ! Make sure any failed casxa insns complete LDPTR [%l4], %l2 ! Check a slot --- 4374,4385 ---- *************** *** 4501,4515 **** bne,pn %icc, 1b add %sp, CC64FSZ+STKB, %o2 ! tf = %sp + CC64FSZ + STKB 2: LDPTR [%l2 + IH_FUN], %o4 ! ih->ih_fun LDPTR [%l2 + IH_ARG], %o0 ! ih->ih_arg jmpl %o4, %o7 ! handled = (*ih->ih_fun)(...) movrz %o0, %o2, %o0 ! arg = (arg == 0) ? arg : tf ! LDPTR [%l2 + IH_PEND], %l7 ! Clear pending flag LDPTR [%l2 + IH_CLR], %l1 - membar #LoadStore - STPTR %g0, [%l2 + IH_PEND] ! Clear pending flag membar #Sync brz,pn %l1, 0f --- 4392,4409 ---- bne,pn %icc, 1b add %sp, CC64FSZ+STKB, %o2 ! tf = %sp + CC64FSZ + STKB 2: + LDPTR [%l2 + IH_PEND], %l7 ! save ih->ih_pending + membar #LoadStore + STPTR %g0, [%l2 + IH_PEND] ! Clear pending flag + membar #Sync LDPTR [%l2 + IH_FUN], %o4 ! ih->ih_fun LDPTR [%l2 + IH_ARG], %o0 ! ih->ih_arg + wrpr %g0, PSTATE_INTR, %pstate ! Reenable interrupts jmpl %o4, %o7 ! handled = (*ih->ih_fun)(...) movrz %o0, %o2, %o0 ! arg = (arg == 0) ? arg : tf ! wrpr %g0, PSTATE_KERN, %pstate ! Disable interrupts LDPTR [%l2 + IH_CLR], %l1 membar #Sync brz,pn %l1, 0f *************** *** 4521,4623 **** bne,pn CCCR, 2b ! 'Nother? mov %l7, %l2 - #else /* INTRLIST */ - /* - * Register usage at this point: - * %l4 - current slot at intrpending[PIL] - * %l5 - sum of interrupt handler return values - * %l6 - PIL - */ - sparc_intr_check_slot: - LDPTR [%l4], %l2 ! Check a slot - dec %l7 - brnz,pt %l2, 1f ! Pending? - nop - brgz,pt %l7, sparc_intr_check_slot - inc PTRSZ, %l4 ! Next slot - - ba,a,pt %icc, intrcmplt ! Only handle vectors -- don't poll XXXX - nop ! XXX spitfire bug? - - 1: - /* - * We have a pending interrupt; prepare to call handler - */ - ! DLFLUSH(%l2, %o3) - LDPTR [%l2 + IH_CLR], %l1 - add %sp, CC64FSZ+STKB, %o2 ! tf = %sp + CC64FSZ + STKB - LDPTR [%l2 + IH_FUN], %o4 ! ih->ih_fun - LDPTR [%l2 + IH_ARG], %o0 ! ih->ih_arg - - #ifdef DEBUG - set _C_LABEL(intrdebug), %o3 - ld [%o3], %o3 - btst INTRDEBUG_FUNC, %o3 - bz,a,pt %icc, 97f - nop - - STACKFRAME(-CC64FSZ) ! Get a clean register window - LOAD_ASCIZ(%o0, "sparc_interrupt: calling %lx(%lx) sp = %p\r\n") - mov %i0, %o2 ! arg - mov %i6, %o3 ! sp - GLOBTOLOC - call prom_printf - mov %i4, %o1 ! fun - LOCTOGLOB - restore - 97: - mov %l4, %o1 ! XXXXXXX DEBUGGGGGG! - #endif /* DEBUG */ - - ! STPTR %g0, [%l4] ! Clear the slot - jmpl %o4, %o7 ! handled = (*ih->ih_fun)(...) - movrz %o0, %o2, %o0 ! arg = (arg == 0) ? arg : tf - STPTR %g0, [%l2 + IH_PEND] ! Clear pending flag - STPTR %g0, [%l4] ! Clear the slot - - #ifdef DEBUG - set _C_LABEL(intrdebug), %o3 - ld [%o3], %o3 - btst INTRDEBUG_FUNC, %o3 - bz,a,pt %icc, 97f - nop - #if 0 - brnz,pt %l1, 97f - nop - #endif - - mov %l4, %o5 - mov %l1, %o3 - STACKFRAME(-CC64FSZ) ! Get a clean register window - mov %i5, %o1 - mov %i3, %o3 - LOAD_ASCIZ(%o0, "sparc_interrupt: ih %p fun %p has %p clear\r\n") - GLOBTOLOC - call prom_printf - mov %i4, %o2 ! fun - LOCTOGLOB - restore - 97: - #endif /* DEBUG */ - brz,pn %l1, 0f - add %l5, %o0, %l5 - stx %g0, [%l1] ! Clear intr source - membar #Sync ! Should not be needed - 0: - brnz,pt %o0, sparc_intr_check_slot ! Handle any others - nop - - /* - * Interrupt not claimed by handler at this vector entry; - * report that. - */ - mov 1, %o1 - call _C_LABEL(strayintr) ! strayintr(&intrframe, 1) - add %sp, CC64FSZ + STKB, %o0 - - ba,a,pt %icc, sparc_intr_check_slot ! Try another - nop ! XXX spitfire bug? - #endif /* INTRLIST */ intrcmplt: /* * Re-read SOFTINT to see if any new pending interrupts --- 4415,4420 ---- *************** *** 4648,4654 **** #endif ldub [%sp + CC64FSZ + STKB + TF_OLDPIL], %l3 ! restore old %pil - wrpr %g0, PSTATE_KERN, %pstate ! Disable interrupts wrpr %l3, 0, %pil CHKPT(%o1,%o2,5) --- 4445,4450 ---- *************** *** 5231,5238 **** !!! !!! Only toast a few %o registers !!! ! .globl dump_dtlb ! dump_dtlb: clr %o1 add %o1, (64 * 8), %o3 1: --- 5027,5034 ---- !!! !!! Only toast a few %o registers !!! ! ! ENTRY_NOPROFILE(dump_dtlb) clr %o1 add %o1, (64 * 8), %o3 1: *************** *** 5253,5260 **** retl nop ! .globl dump_itlb ! dump_itlb: clr %o1 add %o1, (64 * 8), %o3 1: --- 5049,5055 ---- retl nop ! ENTRY_NOPROFILE(dump_itlb) clr %o1 add %o1, (64 * 8), %o3 1: *************** *** 5276,5283 **** nop #ifdef _LP64 ! .globl print_dtlb ! print_dtlb: save %sp, -CC64FSZ, %sp clr %l1 add %l1, (64 * 8), %l3 --- 5071,5077 ---- nop #ifdef _LP64 ! ENTRY_NOPROFILE(print_dtlb) save %sp, -CC64FSZ, %sp clr %l1 add %l1, (64 * 8), %l3 *************** *** 5311,5318 **** restore ! .globl print_itlb ! print_itlb: save %sp, -CC64FSZ, %sp clr %l1 add %l1, (64 * 8), %l3 --- 5105,5111 ---- restore ! ENTRY_NOPROFILE(print_itlb) save %sp, -CC64FSZ, %sp clr %l1 add %l1, (64 * 8), %l3 *************** *** 5352,5359 **** .asciz "%2d:%016lx %016lx\r\n" .text #else ! .globl print_dtlb ! print_dtlb: save %sp, -CC64FSZ, %sp clr %l1 add %l1, (64 * 8), %l3 --- 5145,5151 ---- .asciz "%2d:%016lx %016lx\r\n" .text #else ! ENTRY_NOPROFILE(print_dtlb) save %sp, -CC64FSZ, %sp clr %l1 add %l1, (64 * 8), %l3 *************** *** 5394,5401 **** ret restore ! .globl print_itlb ! print_itlb: save %sp, -CC64FSZ, %sp clr %l1 add %l1, (64 * 8), %l3 --- 5186,5192 ---- ret restore ! ENTRY_NOPROFILE(print_itlb) save %sp, -CC64FSZ, %sp clr %l1 add %l1, (64 * 8), %l3 *************** *** 6742,6747 **** --- 6533,6542 ---- /* * We turn off interrupts for the duration to prevent RED exceptions. */ + #ifdef PROF + save %sp, -CC64FSZ, %sp + #endif + rdpr %pstate, %o3 set (2 * NBPG) - 8, %o1 andn %o3, PSTATE_IE, %o4 ! Turn off PSTATE_IE bit *************** *** 6752,6759 **** --- 6547,6560 ---- dec 8, %o1 sethi %hi(KERNBASE), %o2 flush %o2 + #ifdef PROF + wrpr %o3, %pstate + ret + restore + #else retl wrpr %o3, %pstate + #endif /* * blast_icache() *************** *** 6780,6789 **** retl wrpr %o3, %pstate - - /* ! * dcache_flush_page(vaddr_t pa) * * Clear one page from D$. * --- 6581,6588 ---- retl wrpr %o3, %pstate /* ! * dcache_flush_page(paddr_t pa) * * Clear one page from D$. * *************** *** 6793,6822 **** #ifndef _LP64 COMBINE(%o0, %o1, %o0) #endif - - !! Try using cache_flush_phys for a change. - mov -1, %o1 ! Generate mask for tag: bits [29..2] ! srlx %o0, 13-2, %o2 ! Tag is VA bits <40:13> in bits <29:2> clr %o4 srl %o1, 2, %o1 ! Now we have bits <29:0> set set (2*NBPG), %o5 ba,pt %icc, 1f andn %o1, 3, %o1 ! Now we have bits <29:2> set ! .align 8 1: ldxa [%o4] ASI_DCACHE_TAG, %o3 mov %o4, %o0 ! deccc 16, %o5 bl,pn %icc, 2f ! ! inc 16, %o4 xor %o3, %o2, %o3 andcc %o3, %o1, %g0 bne,pt %xcc, 1b membar #LoadStore ! stxa %g0, [%o0] ASI_DCACHE_TAG ba,pt %icc, 1b membar #StoreLoad --- 6592,6618 ---- #ifndef _LP64 COMBINE(%o0, %o1, %o0) #endif mov -1, %o1 ! Generate mask for tag: bits [29..2] ! srlx %o0, 13-2, %o2 ! Tag is PA bits <40:13> in bits <29:2> clr %o4 srl %o1, 2, %o1 ! Now we have bits <29:0> set set (2*NBPG), %o5 ba,pt %icc, 1f andn %o1, 3, %o1 ! Now we have bits <29:2> set ! .align 8 1: ldxa [%o4] ASI_DCACHE_TAG, %o3 mov %o4, %o0 ! deccc 32, %o5 bl,pn %icc, 2f ! inc 32, %o4 ! xor %o3, %o2, %o3 andcc %o3, %o1, %g0 bne,pt %xcc, 1b membar #LoadStore ! stxa %g0, [%o0] ASI_DCACHE_TAG ba,pt %icc, 1b membar #StoreLoad *************** *** 6829,6835 **** membar #Sync /* ! * icache_flush_page(vaddr_t pa) * * Clear one page from I$. * --- 6625,6631 ---- membar #Sync /* ! * icache_flush_page(paddr_t pa) * * Clear one page from I$. * *************** *** 6873,6931 **** nop /* - * cache_flush_virt(vaddr_t va, vsize_t len) - * - * Clear everything in that va range from D$ and I$. - * - */ - .align 8 - ENTRY(cache_flush_virt) - brz,pn %o1, 2f ! What? nothing to clear? - add %o0, %o1, %o2 - mov 0x1ff, %o3 - sllx %o3, 5, %o3 ! Generate mask for VA bits - and %o0, %o3, %o0 - and %o2, %o3, %o2 - sub %o2, %o1, %o4 ! End < start? need to split flushes. - sethi %hi((1<<13)), %o5 - brlz,pn %o4, 1f - movrz %o4, %o3, %o4 ! If start == end we need to wrap - - !! Clear from start to end - 1: - stxa %g0, [%o0] ASI_DCACHE_TAG - dec 16, %o4 - xor %o5, %o0, %o3 ! Second way - #ifdef SPITFIRE - stxa %g0, [%o0] ASI_ICACHE_TAG! Don't do this on cheetah - stxa %g0, [%o3] ASI_ICACHE_TAG! Don't do this on cheetah - #endif - brgz,pt %o4, 1b - inc 16, %o0 - 2: - sethi %hi(KERNBASE), %o5 - flush %o5 - membar #Sync - retl - nop - - !! We got a hole. Clear from start to hole - clr %o4 - 3: - stxa %g0, [%o4] ASI_DCACHE_TAG - dec 16, %o1 - xor %o5, %o4, %g1 ! Second way - stxa %g0, [%o4] ASI_ICACHE_TAG - stxa %g0, [%g1] ASI_ICACHE_TAG - brgz,pt %o1, 3b - inc 16, %o4 - - !! Now clear to the end. - sub %o3, %o2, %o4 ! Size to clear (NBPG - end) - ba,pt %icc, 1b - mov %o2, %o0 ! Start of clear - - /* * cache_flush_phys __P((paddr_t, psize_t, int)); * * Clear a set of paddrs from the D$, I$ and if param3 is --- 6669,6674 ---- *************** *** 7023,7031 **** * will eventually be removed, with a hole left in its place, if things * work out. */ ! .globl _C_LABEL(sigcode) ! .globl _C_LABEL(esigcode) ! _C_LABEL(sigcode): /* * XXX the `save' and `restore' below are unnecessary: should * replace with simple arithmetic on %sp --- 6766,6772 ---- * will eventually be removed, with a hole left in its place, if things * work out. */ ! ENTRY_NOPROFILE(sigcode) /* * XXX the `save' and `restore' below are unnecessary: should * replace with simple arithmetic on %sp *************** *** 7117,7122 **** --- 6858,6865 ---- mov SYS_exit, %g1 ! exit(errno) t ST_SYSCALL /* NOTREACHED */ + + .globl _C_LABEL(esigcode) _C_LABEL(esigcode): #endif *************** *** 8933,8947 **** .word 0 .text ENTRY(pmap_zero_page) - !! - !! If we have 64-bit physical addresses (and we do now) - !! we need to move the pointer from %o0:%o1 to %o0 - !! #ifndef _LP64 - #if PADDRT == 8 COMBINE(%o0, %o1, %o0) #endif - #endif #ifdef DEBUG set pmapdebug, %o4 ld [%o4], %o4 --- 8676,8684 ---- *************** *** 8996,9011 **** */ ENTRY(pmap_copy_page) #ifndef _LP64 - !! - !! If we have 64-bit physical addresses (and we do now) - !! we need to move the pointer from %o0:%o1 to %o0 and - !! %o2:%o3 to %o1 - !! - #if PADDRT == 8 COMBINE(%o0, %o1, %o0) COMBINE(%o2, %o3, %o1) #endif - #endif #ifdef DEBUG set pmapdebug, %o4 ld [%o4], %o4 --- 8733,8741 ---- *************** *** 9117,9123 **** --- 8847,8855 ---- nop #endif 1: + #ifndef _LP64 clr %o1 + #endif retl clr %o0 *************** *** 11669,11703 **** * send_softint(cpu, level, intrhand) * * Send a softint with an intrhand pointer so we can cause a vectored ! * interrupt instead of a polled interrupt. This does pretty much the ! * same as interrupt_vector. If intrhand is NULL then it just sends ! * a polled interrupt. If cpu is -1 then send it to this CPU, if it's ! * -2 send it to any CPU, otherwise send it to a particular CPU. * * XXXX Dispatching to different CPUs is not implemented yet. - * - * XXXX We do not block interrupts here so it's possible that another - * interrupt of the same level is dispatched before we get to - * enable the softint, causing a spurious interrupt. */ ENTRY(send_softint) ! rdpr %pil, %g1 ! s = splx(level) ! cmp %g1, %o1 ! bge,pt %icc, 1f ! nop ! wrpr %o1, 0, %pil ! 1: ! brz,pn %o2, 1f ! set intrpending, %o3 LDPTR [%o2 + IH_PEND], %o5 - mov 8, %o4 ! Number of slots to search - #ifdef INTR_INTERLOCK brnz %o5, 1f - #endif sll %o1, PTRSHFT+3, %o5 ! Find start of table for this IPL add %o3, %o5, %o3 2: - #ifdef INTRLIST LDPTR [%o3], %o5 ! Load list head STPTR %o5, [%o2+IH_PEND] ! Link our intrhand node in mov %o2, %o4 --- 11401,11423 ---- * send_softint(cpu, level, intrhand) * * Send a softint with an intrhand pointer so we can cause a vectored ! * interrupt instead of a polled interrupt. This does pretty much the same ! * as interrupt_vector. If cpu is -1 then send it to this CPU, if it's -2 ! * send it to any CPU, otherwise send it to a particular CPU. * * XXXX Dispatching to different CPUs is not implemented yet. */ ENTRY(send_softint) ! rdpr %pstate, %g1 ! andn %g1, PSTATE_IE, %g2 ! clear PSTATE.IE ! wrpr %g2, 0, %pstate ! ! set intrpending, %o3 LDPTR [%o2 + IH_PEND], %o5 brnz %o5, 1f sll %o1, PTRSHFT+3, %o5 ! Find start of table for this IPL add %o3, %o5, %o3 2: LDPTR [%o3], %o5 ! Load list head STPTR %o5, [%o2+IH_PEND] ! Link our intrhand node in mov %o2, %o4 *************** *** 11705,11738 **** cmp %o4, %o5 ! Did it work? bne,pn %xcc, 2b ! No, try again nop ! #else /* INTRLIST */ ! #if 1 ! DLFLUSH(%o3, %o5) ! mov %o2, %o5 ! CASPTR [%o3] ASI_N, %g0, %o5 ! Try a slot -- MPU safe ! brz,pt %o5, 4f ! Available? ! #else ! DLFLUSH(%o3, %o5) ! LDPTR [%o3], %o5 ! Try a slog ! brz,a %o5, 4f ! Available? ! STPTR %o2, [%o3] ! Grab it ! #endif ! dec %o4 ! brgz,pt %o4, 2b ! inc PTRSZ, %o3 ! Next slot ! ! !! If we get here we have a problem. ! !! There were no available slots and the interrupt was lost. ! !! We'll resort to polling in this case. ! 4: ! DLFLUSH(%o3, %o3) ! Prevent D$ pollution ! #endif /* INTRLIST */ ! 1: mov 1, %o3 ! Change from level to bitmask sllx %o3, %o1, %o3 wr %o3, 0, SET_SOFTINT ! SET_SOFTINT retl ! wrpr %g1, 0, %pil ! restore IPL /* * Here is a very good random number generator. This implementation is --- 11425,11437 ---- cmp %o4, %o5 ! Did it work? bne,pn %xcc, 2b ! No, try again nop ! mov 1, %o3 ! Change from level to bitmask sllx %o3, %o1, %o3 wr %o3, 0, SET_SOFTINT ! SET_SOFTINT + 1: retl ! wrpr %g1, 0, %pstate ! restore PSTATE.IE /* * Here is a very good random number generator. This implementation is Index: src/sys/arch/sparc64/sparc64/machdep.c diff -c src/sys/arch/sparc64/sparc64/machdep.c:1.165 src/sys/arch/sparc64/sparc64/machdep.c:1.165.2.1 *** src/sys/arch/sparc64/sparc64/machdep.c:1.165 Wed Mar 24 15:34:51 2004 --- src/sys/arch/sparc64/sparc64/machdep.c Sun Mar 20 11:58:39 2005 *************** *** 1,4 **** ! /* $NetBSD: machdep.c,v 1.165 2004/03/24 15:34:51 atatat Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: machdep.c,v 1.165.2.1 2005/03/20 11:58:39 tron Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. *************** *** 78,84 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.165 2004/03/24 15:34:51 atatat Exp $"); #include "opt_ddb.h" #include "opt_compat_netbsd.h" --- 78,84 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.165.2.1 2005/03/20 11:58:39 tron Exp $"); #include "opt_ddb.h" #include "opt_compat_netbsd.h" *************** *** 1811,1817 **** /* First ensure consistent stack state (see sendsig). */ /* XXX? */ write_user_windows(); ! if (rwindow_save(l)) sigexit(l, SIGILL); /* For now: Erase any random indicators for optional state. */ --- 1811,1817 ---- /* First ensure consistent stack state (see sendsig). */ /* XXX? */ write_user_windows(); ! if ((l->l_flag & L_SA_SWITCHING) == 0 && rwindow_save(l)) sigexit(l, SIGILL); /* For now: Erase any random indicators for optional state. */ Index: src/sys/arch/sparc64/sparc64/pmap.c diff -c src/sys/arch/sparc64/sparc64/pmap.c:1.156 src/sys/arch/sparc64/sparc64/pmap.c:1.156.2.2 *** src/sys/arch/sparc64/sparc64/pmap.c:1.156 Sun Mar 21 14:19:30 2004 --- src/sys/arch/sparc64/sparc64/pmap.c Fri Jan 7 14:28:19 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.156 2004/03/21 14:19:30 pk Exp $ */ /* * * Copyright (C) 1996-1999 Eduardo Horvath. --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.156.2.2 2005/01/07 14:28:19 jdc Exp $ */ /* * * Copyright (C) 1996-1999 Eduardo Horvath. *************** *** 26,32 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.156 2004/03/21 14:19:30 pk Exp $"); #undef NO_VCACHE /* Don't forget the locked TLB in dostart */ #define HWREF --- 26,32 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.156.2.2 2005/01/07 14:28:19 jdc Exp $"); #undef NO_VCACHE /* Don't forget the locked TLB in dostart */ #define HWREF *************** *** 1766,1771 **** --- 1766,1772 ---- struct pmap *pm = pmap_kernel(); int64_t data; paddr_t pa; + int rv; boolean_t flush = FALSE; KASSERT(va < INTSTACK || va > EINTSTACK); *************** *** 1795,1805 **** * clear the access statistics. */ ! if (pseg_set(pm, va, 0, 0)) { ! printf("pmap_kremove: pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } DPRINTF(PDB_DEMAP, ("pmap_kremove: seg %x pdir %x pte %x\n", (int)va_to_seg(va), (int)va_to_dir(va), (int)va_to_pte(va))); --- 1796,1805 ---- * clear the access statistics. */ ! rv = pseg_set(pm, va, 0, 0); ! if (rv & 1) ! panic("pmap_kremove: pseg_set needs spare, rv=%d\n", ! rv); DPRINTF(PDB_DEMAP, ("pmap_kremove: seg %x pdir %x pte %x\n", (int)va_to_seg(va), (int)va_to_dir(va), (int)va_to_pte(va))); *************** *** 2077,2082 **** --- 2077,2083 ---- stxa(CTX_SECONDARY, ASI_DMMU, 0); pm->pm_refs = 0; ctx_free(pm); + blast_dcache(); } /* *************** *** 2091,2096 **** --- 2092,2098 ---- paddr_t pa; struct vm_page *pg; pv_entry_t pv; + int rv; boolean_t flush = FALSE; /* *************** *** 2139,2149 **** * clear the access statistics. */ ! if (pseg_set(pm, va, 0, 0)) { ! printf("pmap_remove: pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } DPRINTF(PDB_REMOVE, (" clearing seg %x pte %x\n", (int)va_to_seg(va), (int)va_to_pte(va))); REMOVE_STAT(removes); --- 2141,2151 ---- * clear the access statistics. */ ! rv = pseg_set(pm, va, 0, 0); ! if (rv & 1) ! panic("pmap_remove: pseg_set needed spare, rv=%d!\n", ! rv); ! DPRINTF(PDB_REMOVE, (" clearing seg %x pte %x\n", (int)va_to_seg(va), (int)va_to_pte(va))); REMOVE_STAT(removes); *************** *** 2189,2194 **** --- 2191,2197 ---- int64_t data; struct vm_page *pg; pv_entry_t pv; + int rv; KASSERT(pm != pmap_kernel() || eva < INTSTACK || sva > EINTSTACK); KASSERT(pm != pmap_kernel() || eva < kdata || sva > ekdata); *************** *** 2243,2253 **** if ((prot & VM_PROT_EXECUTE) == 0) data &= ~(TLB_EXEC); ! if (pseg_set(pm, sva, data, 0)) { ! printf("pmap_protect: gotten pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } if (!pm->pm_ctx && pm != pmap_kernel()) continue; --- 2246,2255 ---- if ((prot & VM_PROT_EXECUTE) == 0) data &= ~(TLB_EXEC); ! rv = pseg_set(pm, sva, data, 0); ! if (rv & 1) ! panic("pmap_protect: pseg_set needs spare! rv=%d\n", ! rv); if (!pm->pm_ctx && pm != pmap_kernel()) continue; *************** *** 2337,2351 **** { struct pmap *pm = pmap_kernel(); int64_t data; simple_lock(&pm->pm_lock); data = pseg_get(pm, va); if (prot & VM_PROT_WRITE) { data |= (TLB_W|TLB_REAL_W); } else { data &= ~(TLB_W|TLB_REAL_W); } ! (void) pseg_set(pm, va, data, 0); tsb_invalidate(pm->pm_ctx, va); tlb_flush_pte(va, pm->pm_ctx); simple_unlock(&pm->pm_lock); --- 2339,2357 ---- { struct pmap *pm = pmap_kernel(); int64_t data; + int rv; simple_lock(&pm->pm_lock); data = pseg_get(pm, va); + KASSERT(data & TLB_V); if (prot & VM_PROT_WRITE) { data |= (TLB_W|TLB_REAL_W); } else { data &= ~(TLB_W|TLB_REAL_W); } ! rv = pseg_set(pm, va, data, 0); ! if (rv & 1) ! panic("pmap_kprotect: pseg_set needs spare! rv=%d", rv); tsb_invalidate(pm->pm_ctx, va); tlb_flush_pte(va, pm->pm_ctx); simple_unlock(&pm->pm_lock); *************** *** 2539,2544 **** --- 2545,2551 ---- struct vm_page *pg; { pv_entry_t pv; + int rv; int changed = 0; #ifdef DEBUG int modified = 0; *************** *** 2573,2578 **** --- 2580,2586 ---- simple_lock(&pmap->pm_lock); /* First clear the mod bit in the PTE and make it R/O */ data = pseg_get(pmap, va); + KASSERT(data & TLB_V); /* Need to both clear the modify and write bits */ if (data & TLB_MODIFY) changed |= 1; *************** *** 2581,2591 **** #else data &= ~(TLB_MODIFY|TLB_W|TLB_REAL_W); #endif ! if (pseg_set(pmap, va, data, 0)) { ! printf("pmap_clear_modify: pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } if (pmap->pm_ctx || pmap == pmap_kernel()) { tsb_invalidate(pmap->pm_ctx, va); tlb_flush_pte(va, pmap->pm_ctx); --- 2589,2598 ---- #else data &= ~(TLB_MODIFY|TLB_W|TLB_REAL_W); #endif ! rv = pseg_set(pmap, va, data, 0); ! if (rv & 1) ! printf("pmap_clear_modify: pseg_set needs" ! " spare! rv=%d\n", rv); if (pmap->pm_ctx || pmap == pmap_kernel()) { tsb_invalidate(pmap->pm_ctx, va); tlb_flush_pte(va, pmap->pm_ctx); *************** *** 2620,2625 **** --- 2627,2633 ---- { paddr_t pa = VM_PAGE_TO_PHYS(pg); pv_entry_t pv; + int rv; int changed = 0; #ifdef DEBUG int referenced = 0; *************** *** 2648,2653 **** --- 2656,2662 ---- simple_lock(&pmap->pm_lock); data = pseg_get(pmap, va); + KASSERT(data & TLB_V); DPRINTF(PDB_CHANGEPROT, ("clearing ref pm:%p va:%p ctx:%lx data:%llx\n", pmap, (void *)(u_long)va, (u_long)pmap->pm_ctx, *************** *** 2661,2671 **** changed |= 1; data = 0; #endif ! if (pseg_set(pmap, va, data, 0)) { ! printf("pmap_clear_reference: pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } if (pmap->pm_ctx || pmap == pmap_kernel()) { tsb_invalidate(pmap->pm_ctx, va); tlb_flush_pte(va, pmap->pm_ctx); --- 2670,2679 ---- changed |= 1; data = 0; #endif ! rv = pseg_set(pmap, va, data, 0); ! if (rv & 1) ! panic("pmap_clear_reference: pseg_set needs" ! " spare! rv=%d\n", rv); if (pmap->pm_ctx || pmap == pmap_kernel()) { tsb_invalidate(pmap->pm_ctx, va); tlb_flush_pte(va, pmap->pm_ctx); *************** *** 2719,2724 **** --- 2727,2733 ---- int64_t data; data = pseg_get(npv->pv_pmap, npv->pv_va & PV_VAMASK); + KASSERT(data & TLB_V); if (data & TLB_MODIFY) i = 1; *************** *** 2764,2769 **** --- 2773,2779 ---- int64_t data; data = pseg_get(npv->pv_pmap, npv->pv_va & PV_VAMASK); + KASSERT(data & TLB_V); if (data & TLB_ACCESS) i = 1; *************** *** 2798,2803 **** --- 2808,2814 ---- vaddr_t va; { int64_t data; + int rv; DPRINTF(PDB_MMU_STEAL, ("pmap_unwire(%p, %lx)\n", pmap, va)); *************** *** 2814,2825 **** #endif simple_lock(&pmap->pm_lock); data = pseg_get(pmap, va & PV_VAMASK); data &= ~TLB_TSB_LOCK; ! if (pseg_set(pmap, va & PV_VAMASK, data, 0)) { ! printf("pmap_unwire: gotten pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } simple_unlock(&pmap->pm_lock); pv_check(); } --- 2825,2835 ---- #endif simple_lock(&pmap->pm_lock); data = pseg_get(pmap, va & PV_VAMASK); + KASSERT(data & TLB_V); data &= ~TLB_TSB_LOCK; ! rv = pseg_set(pmap, va & PV_VAMASK, data, 0); ! if (rv & 1) ! panic("pmap_unwire: pseg_set needs spare! rv=%d\n", rv); simple_unlock(&pmap->pm_lock); pv_check(); } *************** *** 2837,2842 **** --- 2847,2853 ---- { int64_t clear, set; int64_t data = 0; + int rv; paddr_t pa = VM_PAGE_TO_PHYS(pg); pv_entry_t pv, npv, firstpv; struct pmap *pmap; *************** *** 2876,2881 **** --- 2887,2893 ---- "RO va %p of pg %p...\n", (void *)(u_long)pv->pv_va, pg)); data = pseg_get(pmap, va); + KASSERT(data & TLB_V); /* Save REF/MOD info */ if (data & TLB_ACCESS) *************** *** 2885,2896 **** data &= ~clear; data |= set; ! if (pseg_set(pmap, va, data, 0)) { ! printf("pmap_page_protect: " ! "pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } if (pmap->pm_ctx || pmap == pmap_kernel()) { tsb_invalidate(pmap->pm_ctx, va); tlb_flush_pte(va, pmap->pm_ctx); --- 2897,2907 ---- data &= ~clear; data |= set; ! rv = pseg_set(pmap, va, data, 0); ! if (rv & 1) ! panic("pmap_page_protect: " ! "pseg_set needs spare! rv=%d\n", ! rv); if (pmap->pm_ctx || pmap == pmap_kernel()) { tsb_invalidate(pmap->pm_ctx, va); tlb_flush_pte(va, pmap->pm_ctx); *************** *** 2919,2924 **** --- 2930,2936 ---- /* clear the entry in the page table */ data = pseg_get(pmap, va); + KASSERT(data & TLB_V); /* Save ref/mod info */ if (data & TLB_ACCESS) *************** *** 2926,2936 **** if (data & TLB_MODIFY) firstpv->pv_va |= PV_MOD; /* Clear mapping */ ! if (pseg_set(pmap, va, 0, 0)) { ! printf("pmap_page_protect: pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } if (pmap->pm_ctx || pmap == pmap_kernel()) { tsb_invalidate(pmap->pm_ctx, va); tlb_flush_pte(va, pmap->pm_ctx); --- 2938,2947 ---- if (data & TLB_MODIFY) firstpv->pv_va |= PV_MOD; /* Clear mapping */ ! rv = pseg_set(pmap, va, 0, 0); ! if (rv & 1) ! panic("pmap_page_protect: pseg_set needs" ! " spare! rv=%d\n", rv); if (pmap->pm_ctx || pmap == pmap_kernel()) { tsb_invalidate(pmap->pm_ctx, va); tlb_flush_pte(va, pmap->pm_ctx); *************** *** 2965,2980 **** (void *)(u_long)va, pg, pmap)); data = pseg_get(pmap, va); /* Save ref/mod info */ if (data & TLB_ACCESS) pv->pv_va |= PV_REF; if (data & TLB_MODIFY) pv->pv_va |= PV_MOD; ! if (pseg_set(pmap, va, 0, 0)) { ! printf("pmap_page_protect: pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } if (pv->pv_pmap->pm_ctx || pv->pv_pmap == pmap_kernel()) { tsb_invalidate(pmap->pm_ctx, va); --- 2976,2991 ---- (void *)(u_long)va, pg, pmap)); data = pseg_get(pmap, va); + KASSERT(data & TLB_V); /* Save ref/mod info */ if (data & TLB_ACCESS) pv->pv_va |= PV_REF; if (data & TLB_MODIFY) pv->pv_va |= PV_MOD; ! rv = pseg_set(pmap, va, 0, 0); ! if (rv & 1) ! panic("pmap_page_protect: pseg_set needs" ! " spare! rv=%d\n", rv); if (pv->pv_pmap->pm_ctx || pv->pv_pmap == pmap_kernel()) { tsb_invalidate(pmap->pm_ctx, va); *************** *** 3136,3142 **** } } tlb_flush_all(); - blast_dcache(); ctx = 1; pmap_next_ctx = 2; } --- 3147,3152 ---- *************** *** 3276,3281 **** --- 3286,3292 ---- */ if (pmap == pvh->pv_pmap && PV_MATCH(pvh, va)) { data = pseg_get(pvh->pv_pmap, pvh->pv_va & PV_VAMASK); + KASSERT(data & TLB_V); npv = pvh->pv_next; if (npv) { /* First save mod/ref bits */ *************** *** 3301,3306 **** --- 3312,3318 ---- } pv->pv_next = npv->pv_next; data = pseg_get(npv->pv_pmap, npv->pv_va & PV_VAMASK); + KASSERT(data & TLB_V); } /* Save ref/mod info */ *************** *** 3339,3344 **** --- 3351,3357 ---- struct vm_page *pg; pv_entry_t pv; vaddr_t va; + int rv; DPRINTF(PDB_ENTER, ("pmap_page_uncache(%llx)\n", (unsigned long long)pa)); *************** *** 3349,3378 **** if (pv->pv_pmap != pm) simple_lock(&pv->pv_pmap->pm_lock); if (pv->pv_va & PV_NC) { /* Non-cached -- I/O mapping */ ! if (pseg_set(pv->pv_pmap, va, ! pseg_get(pv->pv_pmap, va) & ! ~(TLB_CV|TLB_CP), 0)) { ! printf("pmap_page_cache: pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } } else if (mode && (!(pv->pv_va & PV_NVC))) { /* Enable caching */ ! if (pseg_set(pv->pv_pmap, va, ! pseg_get(pv->pv_pmap, va) | TLB_CV, 0)) { ! printf("pmap_page_cache: pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } } else { /* Disable caching */ ! if (pseg_set(pv->pv_pmap, va, ! pseg_get(pv->pv_pmap, va) & ~TLB_CV, 0)) { ! printf("pmap_page_cache: pseg empty!\n"); ! Debugger(); ! /* panic? */ ! } } if (pv->pv_pmap != pm) simple_unlock(&pv->pv_pmap->pm_lock); --- 3362,3396 ---- if (pv->pv_pmap != pm) simple_lock(&pv->pv_pmap->pm_lock); if (pv->pv_va & PV_NC) { + int64_t data; + /* Non-cached -- I/O mapping */ ! data = pseg_get(pv->pv_pmap, va); ! KASSERT(data & TLB_V); ! rv = pseg_set(pv->pv_pmap, va, ! data & ~(TLB_CV|TLB_CP), 0); ! if (rv & 1) ! panic("pmap_page_cache: pseg_set needs" ! " spare! rv=%d\n", rv); } else if (mode && (!(pv->pv_va & PV_NVC))) { + int64_t data; + /* Enable caching */ ! data = pseg_get(pv->pv_pmap, va); ! KASSERT(data & TLB_V); ! rv = pseg_set(pv->pv_pmap, va, data | TLB_CV, 0); ! if (rv & 1) ! panic("pmap_page_cache: pseg_set needs" ! " spare! rv=%d\n", rv); } else { + int64_t data; + /* Disable caching */ ! data = pseg_get(pv->pv_pmap, va); ! rv = pseg_set(pv->pv_pmap, va, data & ~TLB_CV, 0); ! if (rv & 1) ! panic("pmap_page_cache: pseg_set needs" ! " spare! rv=%d\n", rv); } if (pv->pv_pmap != pm) simple_unlock(&pv->pv_pmap->pm_lock); Index: src/sys/arch/sun2/sun2/pmap.c diff -c src/sys/arch/sun2/sun2/pmap.c:1.24 src/sys/arch/sun2/sun2/pmap.c:1.24.2.1 *** src/sys/arch/sun2/sun2/pmap.c:1.24 Tue Jul 15 03:36:13 2003 --- src/sys/arch/sun2/sun2/pmap.c Wed Jun 8 11:32:47 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.24 2003/07/15 03:36:13 lukem Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.24.2.1 2005/06/08 11:32:47 tron Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. *************** *** 89,95 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.24 2003/07/15 03:36:13 lukem Exp $"); #include "opt_ddb.h" #include "opt_pmap_debug.h" --- 89,95 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.24.2.1 2005/06/08 11:32:47 tron Exp $"); #include "opt_ddb.h" #include "opt_pmap_debug.h" *************** *** 2011,2016 **** --- 2011,2022 ---- new_pte |= PG_VALID; if (prot & VM_PROT_WRITE) new_pte |= PG_WRITE; + if (flags & VM_PROT_ALL) { + new_pte |= PG_REF; + if (flags & VM_PROT_WRITE) { + new_pte |= PG_MOD; + } + } /* ...and finally the page-frame number. */ new_pte |= PA_PGNUM(pa); Index: src/sys/arch/sun3/dev/if_ie.c diff -c src/sys/arch/sun3/dev/if_ie.c:1.39 src/sys/arch/sun3/dev/if_ie.c:1.39.2.1 *** src/sys/arch/sun3/dev/if_ie.c:1.39 Tue Jul 15 03:36:14 2003 --- src/sys/arch/sun3/dev/if_ie.c Tue May 31 21:52:34 2005 *************** *** 1,4 **** ! /* $NetBSD: if_ie.c,v 1.39 2003/07/15 03:36:14 lukem Exp $ */ /*- * Copyright (c) 1993, 1994, 1995 Charles M. Hannum. --- 1,4 ---- ! /* $NetBSD: if_ie.c,v 1.39.2.1 2005/05/31 21:52:34 riz Exp $ */ /*- * Copyright (c) 1993, 1994, 1995 Charles M. Hannum. *************** *** 98,104 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: if_ie.c,v 1.39 2003/07/15 03:36:14 lukem Exp $"); #include "opt_inet.h" #include "opt_ns.h" --- 98,104 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: if_ie.c,v 1.39.2.1 2005/05/31 21:52:34 riz Exp $"); #include "opt_inet.h" #include "opt_ns.h" *************** *** 704,717 **** struct ether_header *eh; int *to_bpf; { struct ifnet *ifp; ifp = &sc->sc_if; - - #if NBPFILTER > 0 *to_bpf = (ifp->if_bpf != 0); - #else - *to_bpf = 0; #endif /* --- 704,714 ---- struct ether_header *eh; int *to_bpf; { + #if NBPFILTER > 0 struct ifnet *ifp; ifp = &sc->sc_if; *to_bpf = (ifp->if_bpf != 0); #endif /* *************** *** 987,993 **** #if NBPFILTER > 0 m = ieget(sc, &bpf_gets_it); #else ! m = ieget(sc, 0); #endif ie_drop_packet_buffer(sc); } --- 984,990 ---- #if NBPFILTER > 0 m = ieget(sc, &bpf_gets_it); #else ! m = ieget(sc, NULL); #endif ie_drop_packet_buffer(sc); } Index: src/sys/arch/sun3/include/param3.h diff -c src/sys/arch/sun3/include/param3.h:1.49 src/sys/arch/sun3/include/param3.h:1.49.2.1 *** src/sys/arch/sun3/include/param3.h:1.49 Thu Aug 7 16:29:56 2003 --- src/sys/arch/sun3/include/param3.h Wed Mar 16 12:53:19 2005 *************** *** 1,4 **** ! /* $NetBSD: param3.h,v 1.49 2003/08/07 16:29:56 agc Exp $ */ /* * Copyright (c) 1982, 1986, 1990, 1993 --- 1,4 ---- ! /* $NetBSD: param3.h,v 1.49.2.1 2005/03/16 12:53:19 tron Exp $ */ /* * Copyright (c) 1982, 1986, 1990, 1993 *************** *** 87,90 **** #define SEGOFSET (NBSG-1) /* byte offset into segment */ #define MAXBSIZE 0x8000 /* max FS block size */ ! --- 87,90 ---- #define SEGOFSET (NBSG-1) /* byte offset into segment */ #define MAXBSIZE 0x8000 /* max FS block size */ ! #define MAXPHYS 0xe000 Index: src/sys/arch/sun3/sun3/pmap.c diff -c src/sys/arch/sun3/sun3/pmap.c:1.144 src/sys/arch/sun3/sun3/pmap.c:1.144.2.1 *** src/sys/arch/sun3/sun3/pmap.c:1.144 Tue Jul 15 03:36:18 2003 --- src/sys/arch/sun3/sun3/pmap.c Wed Jun 8 11:32:28 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.144 2003/07/15 03:36:18 lukem Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.144.2.1 2005/06/08 11:32:28 tron Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. *************** *** 87,93 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.144 2003/07/15 03:36:18 lukem Exp $"); #include "opt_ddb.h" #include "opt_pmap_debug.h" --- 87,93 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.144.2.1 2005/06/08 11:32:28 tron Exp $"); #include "opt_ddb.h" #include "opt_pmap_debug.h" *************** *** 2040,2045 **** --- 2040,2051 ---- new_pte |= PG_VALID; if (prot & VM_PROT_WRITE) new_pte |= PG_WRITE; + if (flags & VM_PROT_ALL) { + new_pte |= PG_REF; + if (flags & VM_PROT_WRITE) { + new_pte |= PG_MOD; + } + } /* ...and finally the page-frame number. */ new_pte |= PA_PGNUM(pa); Index: src/sys/arch/sun3/sun3x/pmap.c diff -c src/sys/arch/sun3/sun3x/pmap.c:1.84 src/sys/arch/sun3/sun3x/pmap.c:1.84.2.1 *** src/sys/arch/sun3/sun3x/pmap.c:1.84 Fri Sep 26 22:23:58 2003 --- src/sys/arch/sun3/sun3x/pmap.c Wed Jun 8 11:32:19 2005 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.84 2003/09/26 22:23:58 wiz Exp $ */ /*- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.84.2.1 2005/06/08 11:32:19 tron Exp $ */ /*- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc. *************** *** 112,118 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.84 2003/09/26 22:23:58 wiz Exp $"); #include "opt_ddb.h" #include "opt_pmap_debug.h" --- 112,118 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.84.2.1 2005/06/08 11:32:19 tron Exp $"); #include "opt_ddb.h" #include "opt_pmap_debug.h" *************** *** 1939,1944 **** --- 1939,1954 ---- c_pte->attr.raw |= MMU_SHORT_PTE_WP; /* + * Mark the PTE as used and/or modified as specified by the flags arg. + */ + if (flags & VM_PROT_ALL) { + c_pte->attr.raw |= MMU_SHORT_PTE_USED; + if (flags & VM_PROT_WRITE) { + c_pte->attr.raw |= MMU_SHORT_PTE_M; + } + } + + /* * If the mapping should be cache inhibited (indicated by the flag * bits found on the lower order of the physical address.) * mark the PTE as a cache inhibited page. Index: src/sys/arch/xen/i386/locore.S diff -c src/sys/arch/xen/i386/locore.S:1.2.2.2 src/sys/arch/xen/i386/locore.S:1.2.2.4 *** src/sys/arch/xen/i386/locore.S:1.2.2.2 Thu Sep 23 02:41:01 2004 --- src/sys/arch/xen/i386/locore.S Wed Mar 16 15:18:53 2005 *************** *** 1,4 **** ! /* $NetBSD: locore.S,v 1.2.2.2 2004/09/23 02:41:01 jmc Exp $ */ /* NetBSD: locore.S,v 1.26 2004/04/12 13:17:46 yamt Exp */ /*- --- 1,4 ---- ! /* $NetBSD: locore.S,v 1.2.2.4 2005/03/16 15:18:53 tron Exp $ */ /* NetBSD: locore.S,v 1.26 2004/04/12 13:17:46 yamt Exp */ /*- *************** *** 238,243 **** --- 238,244 ---- #include #define __HYPERVISOR_yield 8 + #define __SCHEDOP_yield 0 .space 512 tmpstk: *************** *** 967,972 **** --- 968,974 ---- */ movl $VM_MAXUSER_ADDRESS,%eax subl %edi,%eax + jc _C_LABEL(copystr_efault) cmpl %edx,%eax jae 1f movl %eax,%edx *************** *** 1021,1026 **** --- 1023,1029 ---- */ movl $VM_MAXUSER_ADDRESS,%eax subl %esi,%eax + jc _C_LABEL(copystr_efault) cmpl %edx,%eax jae 1f movl %eax,%edx *************** *** 1610,1615 **** --- 1613,1619 ---- jmp idle_start 4: movl $__HYPERVISOR_yield,%eax + movl $__SCHEDOP_yield,%ebx TRAP_INSTR NENTRY(mpidle) idle_start: Index: src/sys/arch/xen/i386/machdep.c diff -c src/sys/arch/xen/i386/machdep.c:1.2.2.1 src/sys/arch/xen/i386/machdep.c:1.2.2.2 *** src/sys/arch/xen/i386/machdep.c:1.2.2.1 Sat May 22 15:58:02 2004 --- src/sys/arch/xen/i386/machdep.c Fri Jan 7 15:57:27 2005 *************** *** 1,4 **** ! /* $NetBSD: machdep.c,v 1.2.2.1 2004/05/22 15:58:02 he Exp $ */ /* NetBSD: machdep.c,v 1.552 2004/03/24 15:34:49 atatat Exp */ /*- --- 1,4 ---- ! /* $NetBSD: machdep.c,v 1.2.2.2 2005/01/07 15:57:27 jdc Exp $ */ /* NetBSD: machdep.c,v 1.552 2004/03/24 15:34:49 atatat Exp */ /*- *************** *** 73,79 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.2.2.1 2004/05/22 15:58:02 he Exp $"); #include "opt_beep.h" #include "opt_compat_ibcs2.h" --- 73,79 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.2.2.2 2005/01/07 15:57:27 jdc Exp $"); #include "opt_beep.h" #include "opt_compat_ibcs2.h" *************** *** 847,858 **** */ #endif } ! if (howto & RB_HALT) { printf("\n"); ! printf("The operating system has halted.\n"); ! printf("Please press any key to reboot.\n\n"); #ifdef BEEP_ONHALT { int c; --- 847,860 ---- */ #endif } ! #if 0 if (howto & RB_HALT) { + #endif printf("\n"); ! printf("The guest operating system has halted.\n"); ! printf("To reboot, recreate this Xen domain.\n\n"); + #if 0 #ifdef BEEP_ONHALT { int c; *************** *** 877,884 **** } printf("rebooting...\n"); if (cpureset_delay > 0) ! delay(cpureset_delay * 1000); cpu_reset(); for(;;) ; /*NOTREACHED*/ --- 879,887 ---- } printf("rebooting...\n"); + #endif if (cpureset_delay > 0) ! delay(cpureset_delay * 1000); /* XXX not nice under Xen! */ cpu_reset(); for(;;) ; /*NOTREACHED*/ Index: src/sys/compat/freebsd/freebsd_misc.c diff -c src/sys/compat/freebsd/freebsd_misc.c:1.20 src/sys/compat/freebsd/freebsd_misc.c:1.20.2.1 *** src/sys/compat/freebsd/freebsd_misc.c:1.20 Thu Sep 18 14:44:09 2003 --- src/sys/compat/freebsd/freebsd_misc.c Tue Sep 13 16:37:28 2005 *************** *** 1,4 **** ! /* $NetBSD: freebsd_misc.c,v 1.20 2003/09/18 14:44:09 pooka Exp $ */ /* * Copyright (c) 1995 Frank van der Linden --- 1,4 ---- ! /* $NetBSD: freebsd_misc.c,v 1.20.2.1 2005/09/13 16:37:28 tron Exp $ */ /* * Copyright (c) 1995 Frank van der Linden *************** *** 36,42 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: freebsd_misc.c,v 1.20 2003/09/18 14:44:09 pooka Exp $"); #if defined(_KERNEL_OPT) #include "opt_ntp.h" --- 36,42 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: freebsd_misc.c,v 1.20.2.1 2005/09/13 16:37:28 tron Exp $"); #if defined(_KERNEL_OPT) #include "opt_ntp.h" *************** *** 231,242 **** } */ *uap = v; struct proc *p = l->l_proc; ! if (KTRPOINT(p, KTR_USER)) ! ktruser(p, "FreeBSD utrace", SCARG(uap, addr), SCARG(uap, len), ! 0); ! return (0); #else ! return (ENOSYS); #endif } --- 231,246 ---- } */ *uap = v; struct proc *p = l->l_proc; ! if (!KTRPOINT(p, KTR_USER)) ! return 0; ! ! if (SCARG(uap, len) > KTR_USER_MAXLEN) ! return EINVAL; ! ! ktruser(p, "FreeBSD utrace", SCARG(uap, addr), SCARG(uap, len), 0); ! return 0; #else ! return ENOSYS; #endif } Index: src/sys/conf/copyright diff -c src/sys/conf/copyright:1.1 src/sys/conf/copyright:1.1.2.1 *** src/sys/conf/copyright:1.1 Mon Jan 5 03:33:06 2004 --- src/sys/conf/copyright Tue Sep 13 16:01:21 2005 *************** *** 1,4 **** ! Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. --- 1,4 ---- ! Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Index: src/sys/dev/audio.c diff -c src/sys/dev/audio.c:1.182.2.1 src/sys/dev/audio.c:1.182.2.2 *** src/sys/dev/audio.c:1.182.2.1 Fri Jul 23 23:05:50 2004 --- src/sys/dev/audio.c Sun Jun 12 21:28:27 2005 *************** *** 1,4 **** ! /* $NetBSD: audio.c,v 1.182.2.1 2004/07/23 23:05:50 he Exp $ */ /* * Copyright (c) 1991-1993 Regents of the University of California. --- 1,4 ---- ! /* $NetBSD: audio.c,v 1.182.2.2 2005/06/12 21:28:27 tron Exp $ */ /* * Copyright (c) 1991-1993 Regents of the University of California. *************** *** 61,67 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.182.2.1 2004/07/23 23:05:50 he Exp $"); #include "audio.h" #if NAUDIO > 0 --- 61,67 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.182.2.2 2005/06/12 21:28:27 tron Exp $"); #include "audio.h" #if NAUDIO > 0 *************** *** 2847,2853 **** audiosetinfo(struct audio_softc *sc, struct audio_info *ai) { struct audio_prinfo *r = &ai->record, *p = &ai->play; ! int cleared; int s, setmode, modechange = 0; int error; struct audio_hw_if *hw = sc->hw_if; --- 2847,2853 ---- audiosetinfo(struct audio_softc *sc, struct audio_info *ai) { struct audio_prinfo *r = &ai->record, *p = &ai->play; ! int cleared, pausechange; int s, setmode, modechange = 0; int error; struct audio_hw_if *hw = sc->hw_if; *************** *** 2866,2871 **** --- 2866,2872 ---- pbus = sc->sc_pbus; error = 0; cleared = 0; + pausechange = 0; pp = sc->sc_pparams; /* Temporary encoding storage in */ rp = sc->sc_rparams; /* case setting the modes fails. */ *************** *** 3091,3114 **** if (p->pause != (u_char)~0) { sc->sc_pr.pause = p->pause; ! if (!p->pause && !sc->sc_pbus && (sc->sc_mode & AUMODE_PLAY)) { ! s = splaudio(); ! error = audiostartp(sc); ! splx(s); ! if (error) ! return error; ! } } if (r->pause != (u_char)~0) { sc->sc_rr.pause = r->pause; ! if (!r->pause && !sc->sc_rbus && ! (sc->sc_mode & AUMODE_RECORD)) { ! s = splaudio(); ! error = audiostartr(sc); ! splx(s); ! if (error) ! return error; ! } } if (ai->blocksize != ~0) { --- 3092,3104 ---- if (p->pause != (u_char)~0) { sc->sc_pr.pause = p->pause; ! pbus = !p->pause; ! pausechange=1; } if (r->pause != (u_char)~0) { sc->sc_rr.pause = r->pause; ! rbus = !r->pause; ! pausechange=1; } if (ai->blocksize != ~0) { *************** *** 3140,3146 **** return (error); } ! if (cleared) { s = splaudio(); error = audio_initbufs(sc); if (error) goto err; --- 3130,3136 ---- return (error); } ! if (cleared || pausechange) { s = splaudio(); error = audio_initbufs(sc); if (error) goto err; Index: src/sys/dev/cgd_crypto.c diff -c src/sys/dev/cgd_crypto.c:1.3 src/sys/dev/cgd_crypto.c:1.3.2.1 *** src/sys/dev/cgd_crypto.c:1.3 Thu Mar 18 10:42:08 2004 --- src/sys/dev/cgd_crypto.c Sun Mar 20 12:02:49 2005 *************** *** 1,4 **** ! /* $NetBSD: cgd_crypto.c,v 1.3 2004/03/18 10:42:08 dan Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: cgd_crypto.c,v 1.3.2.1 2005/03/20 12:02:49 tron Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. *************** *** 44,50 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: cgd_crypto.c,v 1.3 2004/03/18 10:42:08 dan Exp $"); #include #include --- 44,50 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: cgd_crypto.c,v 1.3.2.1 2005/03/20 12:02:49 tron Exp $"); #include #include *************** *** 202,207 **** --- 202,208 ---- { struct aes_privdata *apd = (void *)data; + memset(apd, 0, sizeof(*apd)); free(apd, M_DEVBUF); } *************** *** 300,305 **** --- 301,307 ---- error |= des_key_sched((des_cblock *)key + 1, cp->cp_key2); error |= des_key_sched((des_cblock *)key + 2, cp->cp_key3); if (error) { + memset(cp, 0, sizeof(*cp)); free(cp, M_DEVBUF); return NULL; } *************** *** 311,316 **** --- 313,319 ---- { struct c3des_privdata *cp = (void *)data; + memset(cp, 0, sizeof(*cp)); free(cp, M_DEVBUF); } *************** *** 410,415 **** --- 413,419 ---- { struct bf_privdata *bp = (void *)data; + memset(bp, 0, sizeof(*bp)); free(bp, M_DEVBUF); } Index: src/sys/dev/verified_exec.c diff -c src/sys/dev/verified_exec.c:1.4 src/sys/dev/verified_exec.c:1.4.2.1 *** src/sys/dev/verified_exec.c:1.4 Mon Jul 14 15:47:04 2003 --- src/sys/dev/verified_exec.c Sat Jun 11 12:31:41 2005 *************** *** 1,4 **** ! /* $NetBSD: verified_exec.c,v 1.4 2003/07/14 15:47:04 lukem Exp $ */ /*- * Copyright (c) 1998-1999 Brett Lymn --- 1,4 ---- ! /* $NetBSD: verified_exec.c,v 1.4.2.1 2005/06/11 12:31:41 tron Exp $ */ /*- * Copyright (c) 1998-1999 Brett Lymn *************** *** 30,36 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: verified_exec.c,v 1.4 2003/07/14 15:47:04 lukem Exp $"); #include #include --- 30,36 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: verified_exec.c,v 1.4.2.1 2005/06/11 12:31:41 tron Exp $"); #include #include *************** *** 212,218 **** * along with it's fingerprint in a list for * exec to use later. */ ! NDINIT(&nid, LOOKUP, FOLLOW, UIO_USERSPACE, params->file, p); if ((error = vn_open(&nid, FREAD, 0)) != 0) { return(error); --- 212,218 ---- * along with it's fingerprint in a list for * exec to use later. */ ! NDINIT(&nid, LOOKUP, FOLLOW, UIO_SYSSPACE, params->file, p); if ((error = vn_open(&nid, FREAD, 0)) != 0) { return(error); Index: src/sys/dev/ata/ata.c diff -c src/sys/dev/ata/ata.c:1.27.2.1 src/sys/dev/ata/ata.c:1.27.2.2 *** src/sys/dev/ata/ata.c:1.27.2.1 Sun Apr 18 02:23:45 2004 --- src/sys/dev/ata/ata.c Tue May 24 19:54:47 2005 *************** *** 1,4 **** ! /* $NetBSD: ata.c,v 1.27.2.1 2004/04/18 02:23:45 jmc Exp $ */ /* * Copyright (c) 1998, 2001 Manuel Bouyer. All rights reserved. --- 1,4 ---- ! /* $NetBSD: ata.c,v 1.27.2.2 2005/05/24 19:54:47 riz Exp $ */ /* * Copyright (c) 1998, 2001 Manuel Bouyer. All rights reserved. *************** *** 30,36 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: ata.c,v 1.27.2.1 2004/04/18 02:23:45 jmc Exp $"); #ifndef WDCDEBUG #define WDCDEBUG --- 30,36 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: ata.c,v 1.27.2.2 2005/05/24 19:54:47 riz Exp $"); #ifndef WDCDEBUG #define WDCDEBUG *************** *** 129,136 **** /* Configure the devices on the bus. */ atabusconfig(sc); for (;;) { - s = splbio(); if ((chp->ch_flags & (WDCF_TH_RESET | WDCF_SHUTDOWN)) == 0 && ((chp->ch_flags & WDCF_ACTIVE) == 0 || chp->ch_queue->queue_freeze == 0)) { --- 129,136 ---- /* Configure the devices on the bus. */ atabusconfig(sc); + s = splbio(); for (;;) { if ((chp->ch_flags & (WDCF_TH_RESET | WDCF_SHUTDOWN)) == 0 && ((chp->ch_flags & WDCF_ACTIVE) == 0 || chp->ch_queue->queue_freeze == 0)) { *************** *** 138,147 **** (void) tsleep(&chp->ch_thread, PRIBIO, "atath", 0); chp->ch_flags |= WDCF_TH_RUN; } - splx(s); if (chp->ch_flags & WDCF_SHUTDOWN) break; - s = splbio(); if (chp->ch_flags & WDCF_TH_RESET) { int drive; --- 138,145 ---- *************** *** 162,169 **** (*xfer->c_start)(chp, xfer); } else if (chp->ch_queue->queue_freeze > 1) panic("ata_thread: queue_freeze"); - splx(s); } chp->ch_thread = NULL; wakeup((void *)&chp->ch_flags); kthread_exit(0); --- 160,167 ---- (*xfer->c_start)(chp, xfer); } else if (chp->ch_queue->queue_freeze > 1) panic("ata_thread: queue_freeze"); } + splx(s); chp->ch_thread = NULL; wakeup((void *)&chp->ch_flags); kthread_exit(0); Index: src/sys/dev/ic/tulip.c diff -c src/sys/dev/ic/tulip.c:1.126 src/sys/dev/ic/tulip.c:1.126.2.1 *** src/sys/dev/ic/tulip.c:1.126 Thu Dec 18 18:39:36 2003 --- src/sys/dev/ic/tulip.c Tue Jan 11 06:44:30 2005 *************** *** 1,4 **** ! /* $NetBSD: tulip.c,v 1.126 2003/12/18 18:39:36 thorpej Exp $ */ /*- * Copyright (c) 1998, 1999, 2000, 2002 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: tulip.c,v 1.126.2.1 2005/01/11 06:44:30 jmc Exp $ */ /*- * Copyright (c) 1998, 1999, 2000, 2002 The NetBSD Foundation, Inc. *************** *** 43,49 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: tulip.c,v 1.126 2003/12/18 18:39:36 thorpej Exp $"); #include "bpfilter.h" --- 43,49 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: tulip.c,v 1.126.2.1 2005/01/11 06:44:30 jmc Exp $"); #include "bpfilter.h" *************** *** 3037,3042 **** --- 3037,3043 ---- switch (sc->sc_chip) { case TULIP_CHIP_AN983: case TULIP_CHIP_AN985: + case TULIP_CHIP_DM9102A: /* * Filter the message out on noisy chips. */ Index: src/sys/dev/mii/igphy.c diff -c src/sys/dev/mii/igphy.c:1.1 src/sys/dev/mii/igphy.c:1.1.2.1 *** src/sys/dev/mii/igphy.c:1.1 Tue Oct 28 00:15:40 2003 --- src/sys/dev/mii/igphy.c Fri Jan 7 11:42:14 2005 *************** *** 1,4 **** ! /* $NetBSD: igphy.c,v 1.1 2003/10/28 00:15:40 fvdl Exp $ */ /* * The Intel copyright applies to the analog register setup, and the --- 1,4 ---- ! /* $NetBSD: igphy.c,v 1.1.2.1 2005/01/07 11:42:14 jdc Exp $ */ /* * The Intel copyright applies to the analog register setup, and the *************** *** 77,83 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: igphy.c,v 1.1 2003/10/28 00:15:40 fvdl Exp $"); #include "opt_mii.h" --- 77,83 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: igphy.c,v 1.1.2.1 2005/01/07 11:42:14 jdc Exp $"); #include "opt_mii.h" *************** *** 97,112 **** #include static void igphy_reset(struct mii_softc *); static void igphy_load_dspcode(struct mii_softc *); - #if 0 static void igphy_smartspeed_workaround(struct mii_softc *sc); - #endif int igphymatch(struct device *, struct cfdata *, void *); void igphyattach(struct device *, struct device *, void *); ! CFATTACH_DECL(igphy, sizeof(struct mii_softc), igphymatch, igphyattach, mii_phy_detach, mii_phy_activate); int igphy_service(struct mii_softc *, struct mii_data *, int); --- 97,115 ---- #include + struct igphy_softc { + struct mii_softc sc_mii; + int sc_smartspeed; + }; + static void igphy_reset(struct mii_softc *); static void igphy_load_dspcode(struct mii_softc *); static void igphy_smartspeed_workaround(struct mii_softc *sc); int igphymatch(struct device *, struct cfdata *, void *); void igphyattach(struct device *, struct device *, void *); ! CFATTACH_DECL(igphy, sizeof(struct igphy_softc), igphymatch, igphyattach, mii_phy_detach, mii_phy_activate); int igphy_service(struct mii_softc *, struct mii_data *, int); *************** *** 278,286 **** if (IFM_INST(ife->ifm_media) != sc->mii_inst) return (0); - #if 0 igphy_smartspeed_workaround(sc); - #endif if (mii_phy_tick(sc) == EJUSTRETURN) return (0); --- 281,287 ---- *************** *** 364,378 **** mii->mii_media_active = ife->ifm_media; } - #if 0 static void igphy_smartspeed_workaround(struct mii_softc *sc) { ! uint16_t reg, gtsr, gctr; reg = PHY_READ(sc, MII_BMSR) | PHY_READ(sc, MII_BMSR); ! if (!(reg & BMSR_LINK)) { ! switch (sc->mii_ticks) { case 0: gtsr = PHY_READ(sc, MII_100T2SR); if (!(gtsr & GTSR_MAN_MS_FLT)) --- 365,384 ---- mii->mii_media_active = ife->ifm_media; } static void igphy_smartspeed_workaround(struct mii_softc *sc) { ! struct igphy_softc *igsc = (struct igphy_softc *) sc; ! uint16_t reg, gtsr, gtcr; ! ! if ((PHY_READ(sc, MII_BMCR) & BMCR_AUTOEN) == 0) ! return; ! ! /* XXX Assume 1000TX-FDX is advertized if doing autonegotiation. */ reg = PHY_READ(sc, MII_BMSR) | PHY_READ(sc, MII_BMSR); ! if ((reg & BMSR_LINK) == 0) { ! switch (igsc->sc_smartspeed) { case 0: gtsr = PHY_READ(sc, MII_100T2SR); if (!(gtsr & GTSR_MAN_MS_FLT)) *************** *** 386,392 **** gtcr); } mii_phy_auto(sc, 0); - sc->mii_ticks++; } break; case IGPHY_TICK_DOWNSHIFT: --- 392,397 ---- *************** *** 398,403 **** default: break; } ! } } - #endif --- 403,410 ---- default: break; } ! if (igsc->sc_smartspeed++ == IGPHY_TICK_MAX) ! igsc->sc_smartspeed = 0; ! } else ! igsc->sc_smartspeed = 0; } Index: src/sys/dev/mii/igphyreg.h diff -c src/sys/dev/mii/igphyreg.h:1.1 src/sys/dev/mii/igphyreg.h:1.1.2.1 *** src/sys/dev/mii/igphyreg.h:1.1 Tue Oct 28 00:15:40 2003 --- src/sys/dev/mii/igphyreg.h Fri Jan 7 11:42:45 2005 *************** *** 1,4 **** ! /* $NetBSD: igphyreg.h,v 1.1 2003/10/28 00:15:40 fvdl Exp $ */ /******************************************************************************* --- 1,4 ---- ! /* $NetBSD: igphyreg.h,v 1.1.2.1 2005/01/07 11:42:45 jdc Exp $ */ /******************************************************************************* *************** *** 162,165 **** PHY_WRITE(sc, (reg) & 0x1f, val); \ } while (/*CONSTCOND*/0) ! #define IGPHY_TICK_DOWNSHIFT 3 --- 162,166 ---- PHY_WRITE(sc, (reg) & 0x1f, val); \ } while (/*CONSTCOND*/0) ! #define IGPHY_TICK_DOWNSHIFT 3 ! #define IGPHY_TICK_MAX 15 Index: src/sys/dev/pci/if_sk.c diff -c src/sys/dev/pci/if_sk.c:1.7.2.3 src/sys/dev/pci/if_sk.c:1.7.2.4 *** src/sys/dev/pci/if_sk.c:1.7.2.3 Tue May 25 01:32:30 2004 --- src/sys/dev/pci/if_sk.c Fri Jan 7 12:13:50 2005 *************** *** 1,4 **** ! /* $NetBSD: if_sk.c,v 1.7.2.3 2004/05/25 01:32:30 jmc Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: if_sk.c,v 1.7.2.4 2005/01/07 12:13:50 jdc Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. *************** *** 407,413 **** sc->sk_vpd_readonly = malloc(res.vr_len, M_DEVBUF, M_NOWAIT); if (sc->sk_vpd_readonly == NULL) panic("sk_vpd_read"); ! for (i = 0; i < res.vr_len + 1; i++) sc->sk_vpd_readonly[i] = sk_vpd_readbyte(sc, i + pos); } --- 407,413 ---- sc->sk_vpd_readonly = malloc(res.vr_len, M_DEVBUF, M_NOWAIT); if (sc->sk_vpd_readonly == NULL) panic("sk_vpd_read"); ! for (i = 0; i < res.vr_len ; i++) sc->sk_vpd_readonly[i] = sk_vpd_readbyte(sc, i + pos); } *************** *** 624,629 **** --- 624,631 ---- SK_XM_WRITE_4(sc_if, XM_MAR2, 0); break; case SK_YUKON: + case SK_YUKON_LITE: + case SK_YUKON_LP: SK_YU_WRITE_2(sc_if, YUKON_MCAH1, 0); SK_YU_WRITE_2(sc_if, YUKON_MCAH2, 0); SK_YU_WRITE_2(sc_if, YUKON_MCAH3, 0); *************** *** 663,668 **** --- 665,672 ---- h = sk_xmac_hash(enm->enm_addrlo); break; case SK_YUKON: + case SK_YUKON_LITE: + case SK_YUKON_LP: h = sk_yukon_hash(enm->enm_addrlo); break; } *************** *** 684,689 **** --- 688,695 ---- SK_XM_WRITE_4(sc_if, XM_MAR2, hashes[1]); break; case SK_YUKON: + case SK_YUKON_LITE: + case SK_YUKON_LP: SK_YU_WRITE_2(sc_if, YUKON_MCAH1, hashes[0] & 0xffff); SK_YU_WRITE_2(sc_if, YUKON_MCAH2, (hashes[0] >> 16) & 0xffff); SK_YU_WRITE_2(sc_if, YUKON_MCAH3, hashes[1] & 0xffff); *************** *** 879,884 **** --- 885,892 ---- XM_MODE_RX_PROMISC); break; case SK_YUKON: + case SK_YUKON_LITE: + case SK_YUKON_LP: SK_YU_CLRBIT_2(sc_if, YUKON_RCR, YU_RCR_UFLEN | YU_RCR_MUFLEN); break; *************** *** 893,898 **** --- 901,908 ---- XM_MODE_RX_PROMISC); break; case SK_YUKON: + case SK_YUKON_LITE: + case SK_YUKON_LP: SK_YU_SETBIT_2(sc_if, YUKON_RCR, YU_RCR_UFLEN | YU_RCR_MUFLEN); break; *************** *** 977,990 **** CSR_WRITE_2(sc, SK_CSR, SK_CSR_SW_RESET); CSR_WRITE_2(sc, SK_CSR, SK_CSR_MASTER_RESET); ! if (sc->sk_type == SK_YUKON) CSR_WRITE_2(sc, SK_LINK_CTRL, SK_LINK_RESET_SET); DELAY(1000); CSR_WRITE_2(sc, SK_CSR, SK_CSR_SW_UNRESET); DELAY(2); CSR_WRITE_2(sc, SK_CSR, SK_CSR_MASTER_UNRESET); ! if (sc->sk_type == SK_YUKON) CSR_WRITE_2(sc, SK_LINK_CTRL, SK_LINK_RESET_CLEAR); DPRINTFN(2, ("sk_reset: sk_csr=%x\n", CSR_READ_2(sc, SK_CSR))); --- 987,1000 ---- CSR_WRITE_2(sc, SK_CSR, SK_CSR_SW_RESET); CSR_WRITE_2(sc, SK_CSR, SK_CSR_MASTER_RESET); ! if (SK_YUKON_FAMILY(sc->sk_type)) CSR_WRITE_2(sc, SK_LINK_CTRL, SK_LINK_RESET_SET); DELAY(1000); CSR_WRITE_2(sc, SK_CSR, SK_CSR_SW_UNRESET); DELAY(2); CSR_WRITE_2(sc, SK_CSR, SK_CSR_MASTER_UNRESET); ! if (SK_YUKON_FAMILY(sc->sk_type)) CSR_WRITE_2(sc, SK_LINK_CTRL, SK_LINK_RESET_CLEAR); DPRINTFN(2, ("sk_reset: sk_csr=%x\n", CSR_READ_2(sc, SK_CSR))); *************** *** 1011,1017 **** * register represents 18.825ns, so to specify a timeout in * microseconds, we have to multiply by 54. */ ! sk_win_write_4(sc, SK_IMTIMERINIT, SK_IM_USECS(200)); sk_win_write_4(sc, SK_IMMR, SK_ISR_TX1_S_EOF|SK_ISR_TX2_S_EOF| SK_ISR_RX1_EOF|SK_ISR_RX2_EOF); sk_win_write_1(sc, SK_IMTIMERCTL, SK_IMCTL_START); --- 1021,1027 ---- * register represents 18.825ns, so to specify a timeout in * microseconds, we have to multiply by 54. */ ! sk_win_write_4(sc, SK_IMTIMERINIT, SK_IM_USECS(100)); sk_win_write_4(sc, SK_IMMR, SK_ISR_TX1_S_EOF|SK_ISR_TX2_S_EOF| SK_ISR_RX1_EOF|SK_ISR_RX2_EOF); sk_win_write_1(sc, SK_IMTIMERCTL, SK_IMCTL_START); *************** *** 1168,1174 **** for (i = 0; i < SK_RX_RING_CNT; i++) sc_if->sk_cdata.sk_rx_chain[i].sk_mbuf = NULL; ! SLIST_INIT(&sc_if->sk_txmap_listhead); for (i = 0; i < SK_TX_RING_CNT; i++) { sc_if->sk_cdata.sk_tx_chain[i].sk_mbuf = NULL; --- 1178,1184 ---- for (i = 0; i < SK_RX_RING_CNT; i++) sc_if->sk_cdata.sk_rx_chain[i].sk_mbuf = NULL; ! SIMPLEQ_INIT(&sc_if->sk_txmap_head); for (i = 0; i < SK_TX_RING_CNT; i++) { sc_if->sk_cdata.sk_tx_chain[i].sk_mbuf = NULL; *************** *** 1197,1203 **** goto fail; } entry->dmamap = dmamap; ! SLIST_INSERT_HEAD(&sc_if->sk_txmap_listhead, entry, link); } sc_if->sk_rdata = (struct sk_ring_data *)kva; --- 1207,1213 ---- goto fail; } entry->dmamap = dmamap; ! SIMPLEQ_INSERT_HEAD(&sc_if->sk_txmap_head, entry, link); } sc_if->sk_rdata = (struct sk_ring_data *)kva; *************** *** 1229,1234 **** --- 1239,1246 ---- sk_init_xmac(sc_if); break; case SK_YUKON: + case SK_YUKON_LITE: + case SK_YUKON_LP: sk_init_yukon(sc_if); break; default: *************** *** 1246,1251 **** --- 1258,1265 ---- sc_if->sk_mii.mii_statchg = sk_xmac_miibus_statchg; break; case SK_YUKON: + case SK_YUKON_LITE: + case SK_YUKON_LP: sc_if->sk_mii.mii_readreg = sk_marv_miibus_readreg; sc_if->sk_mii.mii_writereg = sk_marv_miibus_writereg; sc_if->sk_mii.mii_statchg = sk_marv_miibus_statchg; *************** *** 1322,1327 **** --- 1336,1342 ---- bus_size_t iosize; int s; u_int32_t command; + char *revstr; DPRINTFN(2, ("begin skc_attach\n")); *************** *** 1367,1388 **** pci_conf_write(pc, pa->pa_tag, PCI_COMMAND_STATUS_REG, command); command = pci_conf_read(pc, pa->pa_tag, PCI_COMMAND_STATUS_REG); - switch (PCI_PRODUCT(pa->pa_id)) { - case PCI_PRODUCT_SCHNEIDERKOCH_SKNET_GE: - sc->sk_type = SK_GENESIS; - break; - case PCI_PRODUCT_SCHNEIDERKOCH_SK9821v2: - case PCI_PRODUCT_3COM_3C940: - case PCI_PRODUCT_DLINK_DGE530T: - case PCI_PRODUCT_LINKSYS_EG1032: - case PCI_PRODUCT_LINKSYS_EG1064: - sc->sk_type = SK_YUKON; - break; - default: - aprint_error(": unknown device!\n"); - goto fail; - } - #ifdef SK_USEIOSPACE if (!(command & PCI_COMMAND_IO_ENABLE)) { aprint_error(": failed to enable I/O ports!\n"); --- 1382,1387 ---- *************** *** 1419,1424 **** --- 1418,1431 ---- #endif sc->sc_dmatag = pa->pa_dmat; + sc->sk_type = sk_win_read_1(sc, SK_CHIPVER); + sc->sk_rev = (sk_win_read_1(sc, SK_CONFIG) >> 4); + + /* bail out here if chip is not recognized */ + if ( sc->sk_type != SK_GENESIS && ! SK_YUKON_FAMILY(sc->sk_type)) { + aprint_error("%s: unknown chip type\n",sc->sk_dev.dv_xname); + goto fail; + } DPRINTFN(2, ("skc_attach: allocate interrupt\n")); /* Allocate interrupt */ *************** *** 1474,1480 **** sc->sk_ramsize, sc->sk_ramsize / 1024, sc->sk_rboff)); } else { ! sc->sk_ramsize = 0x20000; sc->sk_rboff = SK_RBOFF_0; DPRINTFN(2, ("skc_attach: ramsize=%dk (%d), rboff=%d\n", --- 1481,1488 ---- sc->sk_ramsize, sc->sk_ramsize / 1024, sc->sk_rboff)); } else { ! u_int8_t val = sk_win_read_1(sc, SK_EPROM0); ! sc->sk_ramsize = ( val == 0 ) ? 0x20000 : (( val * 4 )*1024); sc->sk_rboff = SK_RBOFF_0; DPRINTFN(2, ("skc_attach: ramsize=%dk (%d), rboff=%d\n", *************** *** 1502,1509 **** goto fail; } /* Announce the product name. */ ! aprint_normal("%s: %s\n", sc->sk_dev.dv_xname, sc->sk_vpd_prodname); skca.skc_port = SK_PORT_A; (void)config_found(&sc->sk_dev, &skca, skcprint); --- 1510,1600 ---- goto fail; } + /* determine whether to name it with vpd or just make it up */ + /* Marvell Yukon VPD's can freqently be bogus */ + + switch (pa->pa_id) { + case PCI_ID_CODE(PCI_VENDOR_SCHNEIDERKOCH, + PCI_PRODUCT_SCHNEIDERKOCH_SKNET_GE): + case PCI_PRODUCT_SCHNEIDERKOCH_SK9821v2: + case PCI_PRODUCT_3COM_3C940: + case PCI_PRODUCT_DLINK_DGE530T: + case PCI_PRODUCT_LINKSYS_EG1032: + case PCI_PRODUCT_LINKSYS_EG1064: + case PCI_ID_CODE(PCI_VENDOR_SCHNEIDERKOCH, + PCI_PRODUCT_SCHNEIDERKOCH_SK9821v2): + case PCI_ID_CODE(PCI_VENDOR_3COM,PCI_PRODUCT_3COM_3C940): + case PCI_ID_CODE(PCI_VENDOR_DLINK,PCI_PRODUCT_DLINK_DGE530T): + case PCI_ID_CODE(PCI_VENDOR_LINKSYS,PCI_PRODUCT_LINKSYS_EG1032): + case PCI_ID_CODE(PCI_VENDOR_LINKSYS,PCI_PRODUCT_LINKSYS_EG1064): + sc->sk_name = sc->sk_vpd_prodname; + break; + case PCI_ID_CODE(PCI_VENDOR_GALILEO,PCI_PRODUCT_GALILEO_SKNET): + /* whoops yukon vpd prodname bears no resemblance to reality */ + switch (sc->sk_type) { + case SK_GENESIS: + sc->sk_name = sc->sk_vpd_prodname; + break; + case SK_YUKON: + sc->sk_name = "Marvell Yukon Gigabit Ethernet"; + break; + case SK_YUKON_LITE: + sc->sk_name = "Marvell Yukon Lite Gigabit Ethernet"; + break; + case SK_YUKON_LP: + sc->sk_name = "Marvell Yukon LP Gigabit Ethernet"; + break; + default: + sc->sk_name = "Marvell Yukon (Unknown) Gigabit Ethernet"; + } + + /* Yukon Lite Rev A0 needs special test, from sk98lin driver */ + + if ( sc->sk_type == SK_YUKON ) { + uint32_t flashaddr; + uint8_t testbyte; + + flashaddr = sk_win_read_4(sc,SK_EP_ADDR); + + /* test Flash-Address Register */ + sk_win_write_1(sc,SK_EP_ADDR+3, 0xff); + testbyte = sk_win_read_1(sc, SK_EP_ADDR+3); + + if (testbyte != 0) { + /* this is yukon lite Rev. A0 */ + sc->sk_type = SK_YUKON_LITE; + sc->sk_rev = SK_YUKON_LITE_REV_A0; + /* restore Flash-Address Register */ + sk_win_write_4(sc,SK_EP_ADDR,flashaddr); + } + } + break; + default: + sc->sk_name = "Unkown Marvell"; + } + + + if ( sc->sk_type == SK_YUKON_LITE ) { + switch (sc->sk_rev) { + case SK_YUKON_LITE_REV_A0: + revstr = "A0"; + break; + case SK_YUKON_LITE_REV_A1: + revstr = "A1"; + break; + case SK_YUKON_LITE_REV_A3: + revstr = "A3"; + break; + default: + revstr = ""; + } + } else { + revstr = ""; + } + /* Announce the product name. */ ! aprint_normal("%s: %s rev. %s(0x%x)\n", sc->sk_dev.dv_xname, ! sc->sk_name, revstr, sc->sk_rev); skca.skc_port = SK_PORT_A; (void)config_found(&sc->sk_dev, &skca, skcprint); *************** *** 1532,1538 **** DPRINTFN(3, ("sk_encap\n")); ! entry = SLIST_FIRST(&sc_if->sk_txmap_listhead); if (entry == NULL) { DPRINTFN(3, ("sk_encap: no txmap available\n")); return ENOBUFS; --- 1623,1629 ---- DPRINTFN(3, ("sk_encap\n")); ! entry = SIMPLEQ_FIRST(&sc_if->sk_txmap_head); if (entry == NULL) { DPRINTFN(3, ("sk_encap: no txmap available\n")); return ENOBUFS; *************** *** 1582,1588 **** } sc_if->sk_cdata.sk_tx_chain[cur].sk_mbuf = m_head; ! SLIST_REMOVE_HEAD(&sc_if->sk_txmap_listhead, link); sc_if->sk_cdata.sk_tx_map[cur] = entry; sc_if->sk_rdata->sk_tx_ring[cur].sk_ctl |= SK_TXCTL_LASTFRAG|SK_TXCTL_EOF_INTR; --- 1673,1680 ---- } sc_if->sk_cdata.sk_tx_chain[cur].sk_mbuf = m_head; ! SIMPLEQ_REMOVE_HEAD(&sc_if->sk_txmap_head, link); ! sc_if->sk_cdata.sk_tx_map[cur] = entry; sc_if->sk_rdata->sk_tx_ring[cur].sk_ctl |= SK_TXCTL_LASTFRAG|SK_TXCTL_EOF_INTR; *************** *** 1827,1833 **** entry->dmamap->dm_mapsize, BUS_DMASYNC_POSTWRITE); bus_dmamap_unload(sc->sc_dmatag, entry->dmamap); ! SLIST_INSERT_HEAD(&sc_if->sk_txmap_listhead, entry, link); sc_if->sk_cdata.sk_tx_map[idx] = NULL; } --- 1919,1925 ---- entry->dmamap->dm_mapsize, BUS_DMASYNC_POSTWRITE); bus_dmamap_unload(sc->sc_dmatag, entry->dmamap); ! SIMPLEQ_INSERT_TAIL(&sc_if->sk_txmap_head, entry, link); sc_if->sk_cdata.sk_tx_map[idx] = NULL; } *************** *** 1836,1841 **** --- 1928,1935 ---- } if (sc_if->sk_cdata.sk_tx_cnt == 0) ifp->if_timer = 0; + else /* nudge chip to keep tx ring moving */ + CSR_WRITE_4(sc, sc_if->sk_tx_bmu, SK_TXBMU_TX_START); sc_if->sk_cdata.sk_tx_cons = idx; *************** *** 2390,2395 **** --- 2484,2491 ---- sk_init_xmac(sc_if); break; case SK_YUKON: + case SK_YUKON_LITE: + case SK_YUKON_LP: sk_init_yukon(sc_if); break; } *************** *** 2475,2481 **** XM_MMUCMD_TX_ENB|XM_MMUCMD_RX_ENB); } ! if (sc->sk_type == SK_YUKON) { u_int16_t reg = SK_YU_READ_2(sc_if, YUKON_GPCR); reg |= YU_GPCR_TXEN | YU_GPCR_RXEN; reg &= ~(YU_GPCR_SPEED_EN | YU_GPCR_DPLX_EN); --- 2571,2577 ---- XM_MMUCMD_TX_ENB|XM_MMUCMD_RX_ENB); } ! if (SK_YUKON_FAMILY(sc->sk_type)) { u_int16_t reg = SK_YU_READ_2(sc_if, YUKON_GPCR); reg |= YU_GPCR_TXEN | YU_GPCR_RXEN; reg &= ~(YU_GPCR_SPEED_EN | YU_GPCR_DPLX_EN); *************** *** 2525,2530 **** --- 2621,2628 ---- SK_IF_WRITE_4(sc_if, 0, SK_RXF1_CTL, SK_FIFO_RESET); break; case SK_YUKON: + case SK_YUKON_LITE: + case SK_YUKON_LP: SK_IF_WRITE_1(sc_if,0, SK_RXMF1_CTRL_TEST, SK_RFCTL_RESET_SET); SK_IF_WRITE_1(sc_if,0, SK_TXMF1_CTRL_TEST, SK_TFCTL_RESET_SET); break; Index: src/sys/dev/pci/if_skreg.h diff -c src/sys/dev/pci/if_skreg.h:1.2 src/sys/dev/pci/if_skreg.h:1.2.2.1 *** src/sys/dev/pci/if_skreg.h:1.2 Tue Aug 26 21:14:08 2003 --- src/sys/dev/pci/if_skreg.h Fri Jan 7 12:15:18 2005 *************** *** 1,4 **** ! /* $NetBSD: if_skreg.h,v 1.2 2003/08/26 21:14:08 jdolecek Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: if_skreg.h,v 1.2.2.1 2005/01/07 12:15:18 jdc Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. *************** *** 94,102 **** #include #include - /* Values to keep the different chip revisions apart */ - #define SK_GENESIS 0 - #define SK_YUKON 1 /* * GEnesis registers. The GEnesis chip has a 256-byte I/O window --- 94,99 ---- *************** *** 355,360 **** --- 352,368 ---- #define SK_BLNKSTS 0x0179 #define SK_BLNKTST 0x017A + /* values for SK_CHIPVER */ + #define SK_GENESIS 0x0A + #define SK_YUKON 0xB0 + #define SK_YUKON_LITE 0xB1 + #define SK_YUKON_LP 0xB2 + #define SK_YUKON_FAMILY(x) ((x) & 0xB0) + /* known revisions in SK_CONFIG */ + #define SK_YUKON_LITE_REV_A0 0x0 /* invented, see test in skc_attach */ + #define SK_YUKON_LITE_REV_A1 0x3 + #define SK_YUKON_LITE_REV_A3 0x7 + #define SK_IMCTL_STOP 0x02 #define SK_IMCTL_START 0x04 Index: src/sys/dev/pci/if_skvar.h diff -c src/sys/dev/pci/if_skvar.h:1.3 src/sys/dev/pci/if_skvar.h:1.3.2.1 *** src/sys/dev/pci/if_skvar.h:1.3 Sun Nov 2 10:31:06 2003 --- src/sys/dev/pci/if_skvar.h Fri Jan 7 12:16:04 2005 *************** *** 1,4 **** ! /* $NetBSD: if_skvar.h,v 1.3 2003/11/02 10:31:06 wiz Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: if_skvar.h,v 1.3.2.1 2005/01/07 12:16:04 jdc Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. *************** *** 114,120 **** struct sk_txmap_entry { bus_dmamap_t dmamap; ! SLIST_ENTRY(sk_txmap_entry) link; }; struct sk_chain_data { --- 114,120 ---- struct sk_txmap_entry { bus_dmamap_t dmamap; ! SIMPLEQ_ENTRY(sk_txmap_entry) link; }; struct sk_chain_data { *************** *** 198,203 **** --- 198,205 ---- struct resource *sk_irq; /* IRQ resource handle */ struct resource *sk_res; /* I/O or shared mem handle */ u_int8_t sk_type; + u_int8_t sk_rev; + char *sk_name; char *sk_vpd_prodname; char *sk_vpd_readonly; u_int32_t sk_rboff; /* RAMbuffer offset */ *************** *** 233,239 **** int sk_if_flags; LIST_HEAD(__sk_jfreehead, sk_jpool_entry) sk_jfree_listhead; LIST_HEAD(__sk_jinusehead, sk_jpool_entry) sk_jinuse_listhead; ! SLIST_HEAD(__sk_txmaphead, sk_txmap_entry) sk_txmap_listhead; }; struct skc_attach_args { --- 235,241 ---- int sk_if_flags; LIST_HEAD(__sk_jfreehead, sk_jpool_entry) sk_jfree_listhead; LIST_HEAD(__sk_jinusehead, sk_jpool_entry) sk_jinuse_listhead; ! SIMPLEQ_HEAD(__sk_txmaphead, sk_txmap_entry) sk_txmap_head; }; struct skc_attach_args { Index: src/sys/dev/pci/if_wm.c diff -c src/sys/dev/pci/if_wm.c:1.68.2.3 src/sys/dev/pci/if_wm.c:1.68.2.5 *** src/sys/dev/pci/if_wm.c:1.68.2.3 Fri Jul 16 21:21:07 2004 --- src/sys/dev/pci/if_wm.c Sat Jan 8 08:59:16 2005 *************** *** 1,4 **** ! /* $NetBSD: if_wm.c,v 1.68.2.3 2004/07/16 21:21:07 he Exp $ */ /* * Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc. --- 1,4 ---- ! /* $NetBSD: if_wm.c,v 1.68.2.5 2005/01/08 08:59:16 jdc Exp $ */ /* * Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc. *************** *** 47,53 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.68.2.3 2004/07/16 21:21:07 he Exp $"); #include "bpfilter.h" #include "rnd.h" --- 47,53 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.68.2.5 2005/01/08 08:59:16 jdc Exp $"); #include "bpfilter.h" #include "rnd.h" *************** *** 249,254 **** --- 249,255 ---- /* Event counters. */ struct evcnt sc_ev_txsstall; /* Tx stalled due to no txs */ struct evcnt sc_ev_txdstall; /* Tx stalled due to no txd */ + struct evcnt sc_ev_txfifo_stall;/* Tx FIFO stalls (82547) */ struct evcnt sc_ev_txforceintr; /* Tx interrupts forced */ struct evcnt sc_ev_txdw; /* Tx descriptor interrupts */ struct evcnt sc_ev_txqe; /* Tx queue empty interrupts */ *************** *** 279,284 **** --- 280,292 ---- int sc_txsnext; /* next free Tx job */ int sc_txsdirty; /* dirty Tx jobs */ + /* These 5 variables are used only on the 82547. */ + int sc_txfifo_size; /* Tx FIFO size */ + int sc_txfifo_head; /* current head of FIFO */ + uint32_t sc_txfifo_addr; /* internal address of start of FIFO */ + int sc_txfifo_stall; /* Tx FIFO is stalled */ + struct callout sc_txfifo_ch; /* Tx FIFO stall work-around timer */ + uint32_t sc_txctx_ipcs; /* cached Tx IP cksum ctx */ uint32_t sc_txctx_tucs; /* cached Tx TCP/UDP cksum ctx */ *************** *** 300,305 **** --- 308,314 ---- uint32_t sc_rctl; /* prototype RCTL register */ uint32_t sc_txcw; /* prototype TXCW register */ uint32_t sc_tipg; /* prototype TIPG register */ + uint32_t sc_pba; /* prototype PBA register */ int sc_tbi_linkup; /* TBI link status */ int sc_tbi_anstate; /* autonegotiation state */ *************** *** 343,348 **** --- 352,359 ---- bus_space_read_4((sc)->sc_st, (sc)->sc_sh, (reg)) #define CSR_WRITE(sc, reg, val) \ bus_space_write_4((sc)->sc_st, (sc)->sc_sh, (reg), (val)) + #define CSR_WRITE_FLUSH(sc) \ + (void) CSR_READ((sc), WMREG_STATUS) #define WM_CDTXADDR(sc, x) ((sc)->sc_cddma + WM_CDTXOFF((x))) #define WM_CDRXADDR(sc, x) ((sc)->sc_cddma + WM_CDRXOFF((x))) *************** *** 458,463 **** --- 469,476 ---- CFATTACH_DECL(wm, sizeof(struct wm_softc), wm_match, wm_attach, NULL, NULL); + static void wm_82547_txfifo_stall(void *); + /* * Devices supported by this driver. */ *************** *** 843,848 **** --- 856,868 ---- sc->sc_bus_speed = 66; aprint_verbose("%s: Communication Streaming Architecture\n", sc->sc_dev.dv_xname); + if (sc->sc_type == WM_T_82547) { + callout_init(&sc->sc_txfifo_ch); + callout_setfunc(&sc->sc_txfifo_ch, + wm_82547_txfifo_stall, sc); + aprint_verbose("%s: using 82547 Tx FIFO stall " + "work-around\n", sc->sc_dev.dv_xname); + } } else { reg = CSR_READ(sc, WMREG_STATUS); if (reg & STATUS_BUS64) *************** *** 1199,1204 **** --- 1219,1226 ---- NULL, sc->sc_dev.dv_xname, "txsstall"); evcnt_attach_dynamic(&sc->sc_ev_txdstall, EVCNT_TYPE_MISC, NULL, sc->sc_dev.dv_xname, "txdstall"); + evcnt_attach_dynamic(&sc->sc_ev_txfifo_stall, EVCNT_TYPE_MISC, + NULL, sc->sc_dev.dv_xname, "txfifo_stall"); evcnt_attach_dynamic(&sc->sc_ev_txforceintr, EVCNT_TYPE_MISC, NULL, sc->sc_dev.dv_xname, "txforceintr"); evcnt_attach_dynamic(&sc->sc_ev_txdw, EVCNT_TYPE_INTR, *************** *** 1418,1423 **** --- 1440,1536 ---- } /* + * wm_82547_txfifo_stall: + * + * Callout used to wait for the 82547 Tx FIFO to drain, + * reset the FIFO pointers, and restart packet transmission. + */ + static void + wm_82547_txfifo_stall(void *arg) + { + struct wm_softc *sc = arg; + int s; + + s = splnet(); + + if (sc->sc_txfifo_stall) { + if (CSR_READ(sc, WMREG_TDT) == CSR_READ(sc, WMREG_TDH) && + CSR_READ(sc, WMREG_TDFT) == CSR_READ(sc, WMREG_TDFH) && + CSR_READ(sc, WMREG_TDFTS) == CSR_READ(sc, WMREG_TDFHS)) { + /* + * Packets have drained. Stop transmitter, reset + * FIFO pointers, restart transmitter, and kick + * the packet queue. + */ + uint32_t tctl = CSR_READ(sc, WMREG_TCTL); + CSR_WRITE(sc, WMREG_TCTL, tctl & ~TCTL_EN); + CSR_WRITE(sc, WMREG_TDFT, sc->sc_txfifo_addr); + CSR_WRITE(sc, WMREG_TDFH, sc->sc_txfifo_addr); + CSR_WRITE(sc, WMREG_TDFTS, sc->sc_txfifo_addr); + CSR_WRITE(sc, WMREG_TDFHS, sc->sc_txfifo_addr); + CSR_WRITE(sc, WMREG_TCTL, tctl); + CSR_WRITE_FLUSH(sc); + + sc->sc_txfifo_head = 0; + sc->sc_txfifo_stall = 0; + wm_start(&sc->sc_ethercom.ec_if); + } else { + /* + * Still waiting for packets to drain; try again in + * another tick. + */ + callout_schedule(&sc->sc_txfifo_ch, 1); + } + } + + splx(s); + } + + /* + * wm_82547_txfifo_bugchk: + * + * Check for bug condition in the 82547 Tx FIFO. We need to + * prevent enqueueing a packet that would wrap around the end + * if the Tx FIFO ring buffer, otherwise the chip will croak. + * + * We do this by checking the amount of space before the end + * of the Tx FIFO buffer. If the packet will not fit, we "stall" + * the Tx FIFO, wait for all remaining packets to drain, reset + * the internal FIFO pointers to the beginning, and restart + * transmission on the interface. + */ + #define WM_FIFO_HDR 0x10 + #define WM_82547_PAD_LEN 0x3e0 + static int + wm_82547_txfifo_bugchk(struct wm_softc *sc, struct mbuf *m0) + { + int space = sc->sc_txfifo_size - sc->sc_txfifo_head; + int len = roundup(m0->m_pkthdr.len + WM_FIFO_HDR, WM_FIFO_HDR); + + /* Just return if already stalled. */ + if (sc->sc_txfifo_stall) + return (1); + + if (sc->sc_mii.mii_media_active & IFM_FDX) { + /* Stall only occurs in half-duplex mode. */ + goto send_packet; + } + + if (len >= WM_82547_PAD_LEN + space) { + sc->sc_txfifo_stall = 1; + callout_schedule(&sc->sc_txfifo_ch, 1); + return (1); + } + + send_packet: + sc->sc_txfifo_head += len; + if (sc->sc_txfifo_head >= sc->sc_txfifo_size) + sc->sc_txfifo_head -= sc->sc_txfifo_size; + + return (0); + } + + /* * wm_start: [ifnet interface function] * * Start packet transmission on the interface. *************** *** 1528,1533 **** --- 1641,1662 ---- break; } + /* + * Check for 82547 Tx FIFO bug. We need to do this + * once we know we can transmit the packet, since we + * do some internal FIFO space accounting here. + */ + if (sc->sc_type == WM_T_82547 && + wm_82547_txfifo_bugchk(sc, m0)) { + DPRINTF(WM_DEBUG_TX, + ("%s: TX: 82547 Tx FIFO bug detected\n", + sc->sc_dev.dv_xname)); + ifp->if_flags |= IFF_OACTIVE; + bus_dmamap_unload(sc->sc_dmat, dmamap); + WM_EVCNT_INCR(&sc->sc_ev_txfifo_stall); + break; + } + IFQ_DEQUEUE(&ifp->if_snd, m0); /* *************** *** 2205,2210 **** --- 2334,2358 ---- { int i; + /* + * Allocate on-chip memory according to the MTU size. + * The Packet Buffer Allocation register must be written + * before the chip is reset. + */ + if (sc->sc_type < WM_T_82547) { + sc->sc_pba = sc->sc_ethercom.ec_if.if_mtu > 8192 ? + PBA_40K : PBA_48K; + } else { + sc->sc_pba = sc->sc_ethercom.ec_if.if_mtu > 8192 ? + PBA_22K : PBA_30K; + sc->sc_txfifo_head = 0; + sc->sc_txfifo_addr = sc->sc_pba << PBA_ADDR_SHIFT; + sc->sc_txfifo_size = + (PBA_40K - sc->sc_pba) << PBA_BYTE_SHIFT; + sc->sc_txfifo_stall = 0; + } + CSR_WRITE(sc, WMREG_PBA, sc->sc_pba); + switch (sc->sc_type) { case WM_T_82544: case WM_T_82540: *************** *** 2555,2560 **** --- 2703,2712 ---- /* Stop the one second clock. */ callout_stop(&sc->sc_tick_ch); + /* Stop the 82547 Tx FIFO stall check timer. */ + if (sc->sc_type == WM_T_82547) + callout_stop(&sc->sc_txfifo_ch); + if (sc->sc_flags & WM_F_HAS_MII) { /* Down the MII. */ mii_down(&sc->sc_mii); Index: src/sys/dev/pci/if_wmreg.h diff -c src/sys/dev/pci/if_wmreg.h:1.10 src/sys/dev/pci/if_wmreg.h:1.10.2.2 *** src/sys/dev/pci/if_wmreg.h:1.10 Thu Feb 19 05:19:52 2004 --- src/sys/dev/pci/if_wmreg.h Sat Jan 8 08:59:16 2005 *************** *** 1,4 **** ! /* $NetBSD: if_wmreg.h,v 1.10 2004/02/19 05:19:52 thorpej Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. --- 1,4 ---- ! /* $NetBSD: if_wmreg.h,v 1.10.2.2 2005/01/08 08:59:16 jdc Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. *************** *** 490,495 **** --- 490,513 ---- #define WMREG_TQC 0x0418 + #define WMREG_RDFH 0x2410 /* Receive Data FIFO Head */ + + #define WMREG_RDFT 0x2418 /* Receive Data FIFO Tail */ + + #define WMREG_RDFHS 0x2420 /* Receive Data FIFO Head Saved */ + + #define WMREG_RDFTS 0x2428 /* Receive Data FIFO Tail Saved */ + + #define WMREG_TDFH 0x3410 /* Transmit Data FIFO Head */ + + #define WMREG_TDFT 0x3418 /* Transmit Data FIFO Tail */ + + #define WMREG_TDFHS 0x3420 /* Transmit Data FIFO Head Saved */ + + #define WMREG_TDFTS 0x3428 /* Transmit Data FIFO Tail Saved */ + + #define WMREG_TDFPC 0x3430 /* Transmit Data FIFO Packet Count */ + #define WMREG_OLD_TBDAL 0x0420 /* Transmit Descriptor Base Lo */ #define WMREG_TBDAL 0x3800 *************** *** 521,526 **** --- 539,552 ---- #define WM_VLAN_TABSIZE 128 #define WMREG_PBA 0x1000 /* Packet Buffer Allocation */ + #define PBA_BYTE_SHIFT 10 /* KB -> bytes */ + #define PBA_ADDR_SHIFT 7 /* KB -> quadwords */ + #define PBA_16K 0x0010 /* 16K, default Tx allocation */ + #define PBA_22K 0x0016 + #define PBA_24K 0x0018 + #define PBA_30K 0x001e + #define PBA_40K 0x0028 + #define PBA_48K 0x0030 /* 48K, default Rx allocation */ #define WMREG_TXDMAC 0x3000 /* Transfer DMA Control */ #define TXDMAC_DPP (1U << 0) /* disable packet prefetch */ Index: src/sys/dev/tc/px.c diff -c src/sys/dev/tc/px.c:1.21 src/sys/dev/tc/px.c:1.21.2.1 *** src/sys/dev/tc/px.c:1.21 Mon Oct 27 07:07:35 2003 --- src/sys/dev/tc/px.c Wed Mar 16 19:52:30 2005 *************** *** 1,4 **** ! /* $NetBSD: px.c,v 1.21 2003/10/27 07:07:35 chs Exp $ */ /*- * Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: px.c,v 1.21.2.1 2005/03/16 19:52:30 tron Exp $ */ /*- * Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc. *************** *** 41,47 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: px.c,v 1.21 2003/10/27 07:07:35 chs Exp $"); #include #include --- 41,47 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: px.c,v 1.21.2.1 2005/03/16 19:52:30 tron Exp $"); #include #include *************** *** 202,208 **** * directly from vm_physmem[]. */ bva = (caddr_t)uvm_pageboot_alloc(PX_BUF_SIZE + PX_BUF_ALIGN); ! bpa = (STIC_KSEG_TO_PHYS(kva) + PX_BUF_ALIGN - 1) & ~(PX_BUF_ALIGN - 1); if (bpa + PX_BUF_SIZE > 8192*1024) panic("px_init: allocation out of bounds"); --- 202,208 ---- * directly from vm_physmem[]. */ bva = (caddr_t)uvm_pageboot_alloc(PX_BUF_SIZE + PX_BUF_ALIGN); ! bpa = (STIC_KSEG_TO_PHYS(bva) + PX_BUF_ALIGN - 1) & ~(PX_BUF_ALIGN - 1); if (bpa + PX_BUF_SIZE > 8192*1024) panic("px_init: allocation out of bounds"); Index: src/sys/fs/msdosfs/denode.h diff -c src/sys/fs/msdosfs/denode.h:1.4 src/sys/fs/msdosfs/denode.h:1.4.2.1 *** src/sys/fs/msdosfs/denode.h:1.4 Sun Sep 7 22:09:11 2003 --- src/sys/fs/msdosfs/denode.h Tue Sep 6 16:11:14 2005 *************** *** 1,4 **** ! /* $NetBSD: denode.h,v 1.4 2003/09/07 22:09:11 itojun Exp $ */ /*- * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank. --- 1,4 ---- ! /* $NetBSD: denode.h,v 1.4.2.1 2005/09/06 16:11:14 riz Exp $ */ /*- * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank. *************** *** 177,182 **** --- 177,185 ---- */ #define WIN_MAXLEN 255 + /* Maximum size of a file on a FAT filesystem */ + #define MSDOSFS_FILESIZE_MAX 0xFFFFFFFFLL + /* * Transfer directory entries between internal and external form. * dep is a struct denode * (internal form), Index: src/sys/fs/msdosfs/msdosfs_vnops.c diff -c src/sys/fs/msdosfs/msdosfs_vnops.c:1.9 src/sys/fs/msdosfs/msdosfs_vnops.c:1.9.2.1 *** src/sys/fs/msdosfs/msdosfs_vnops.c:1.9 Mon Jan 26 10:39:30 2004 --- src/sys/fs/msdosfs/msdosfs_vnops.c Tue Sep 6 16:11:14 2005 *************** *** 1,4 **** ! /* $NetBSD: msdosfs_vnops.c,v 1.9 2004/01/26 10:39:30 hannken Exp $ */ /*- * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank. --- 1,4 ---- ! /* $NetBSD: msdosfs_vnops.c,v 1.9.2.1 2005/09/06 16:11:14 riz Exp $ */ /*- * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank. *************** *** 48,54 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.9 2004/01/26 10:39:30 hannken Exp $"); #include #include --- 48,54 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.9.2.1 2005/09/06 16:11:14 riz Exp $"); #include #include *************** *** 596,601 **** --- 596,605 ---- if (uio->uio_resid == 0) return (0); + /* Don't bother to try to write files larger than the fs limit */ + if (uio->uio_offset + uio->uio_resid > MSDOSFS_FILESIZE_MAX) + return (EFBIG); + /* * If they've exceeded their filesize limit, tell them about it. */ Index: src/sys/kern/kern_descrip.c diff -c src/sys/kern/kern_descrip.c:1.123.2.1 src/sys/kern/kern_descrip.c:1.123.2.3 *** src/sys/kern/kern_descrip.c:1.123.2.1 Sat Jul 10 14:21:25 2004 --- src/sys/kern/kern_descrip.c Tue May 24 19:38:34 2005 *************** *** 1,4 **** ! /* $NetBSD: kern_descrip.c,v 1.123.2.1 2004/07/10 14:21:25 tron Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1991, 1993 --- 1,4 ---- ! /* $NetBSD: kern_descrip.c,v 1.123.2.3 2005/05/24 19:38:34 riz Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1991, 1993 *************** *** 37,43 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: kern_descrip.c,v 1.123.2.1 2004/07/10 14:21:25 tron Exp $"); #include #include --- 37,43 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: kern_descrip.c,v 1.123.2.3 2005/05/24 19:38:34 riz Exp $"); #include #include *************** *** 138,144 **** off--; if (off < 0) ! return (0); i = ((off + 1) << NDENTRYSHIFT) - 1; if (i >= last) --- 138,144 ---- off--; if (off < 0) ! return (-1); i = ((off + 1) << NDENTRYSHIFT) - 1; if (i >= last) *************** *** 1068,1073 **** --- 1068,1074 ---- newfdp->fd_fd.fd_knlistsize = -1; newfdp->fd_fd.fd_himap = newfdp->fd_dhimap; newfdp->fd_fd.fd_lomap = newfdp->fd_dlomap; + newfdp->fd_fd.fd_lastfile = -1; } /* *************** *** 1209,1215 **** *fpp = NULL; simple_lock(&fp->f_slock); FILE_USE(fp); ! if (i < fdp->fd_knlistsize) knote_fdclose(p, fdp->fd_lastfile - i); (void) closef(fp, p); } --- 1210,1216 ---- *fpp = NULL; simple_lock(&fp->f_slock); FILE_USE(fp); ! if ((fdp->fd_lastfile - i) < fdp->fd_knlistsize) knote_fdclose(p, fdp->fd_lastfile - i); (void) closef(fp, p); } Index: src/sys/kern/kern_sa.c diff -c src/sys/kern/kern_sa.c:1.50.2.1 src/sys/kern/kern_sa.c:1.50.2.2 *** src/sys/kern/kern_sa.c:1.50.2.1 Sat Jul 10 13:54:25 2004 --- src/sys/kern/kern_sa.c Sun Mar 20 11:58:47 2005 *************** *** 1,4 **** ! /* $NetBSD: kern_sa.c,v 1.50.2.1 2004/07/10 13:54:25 tron Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: kern_sa.c,v 1.50.2.2 2005/03/20 11:58:47 tron Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. *************** *** 37,43 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: kern_sa.c,v 1.50.2.1 2004/07/10 13:54:25 tron Exp $"); #include #include --- 37,43 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: kern_sa.c,v 1.50.2.2 2005/03/20 11:58:47 tron Exp $"); #include #include *************** *** 799,805 **** --- 799,807 ---- { if (l) { + l->l_flag |= L_SA_SWITCHING; getucontext(l, &ss->ss_captured.ss_ctx); + l->l_flag &= ~L_SA_SWITCHING; ss->ss_captured.ss_sa.sa_context = (ucontext_t *) (intptr_t)((_UC_MACHINE_SP(&ss->ss_captured.ss_ctx) - sizeof(ucontext_t)) Index: src/sys/kern/uipc_mbuf2.c diff -c src/sys/kern/uipc_mbuf2.c:1.16 src/sys/kern/uipc_mbuf2.c:1.16.2.1 *** src/sys/kern/uipc_mbuf2.c:1.16 Thu Nov 13 01:48:12 2003 --- src/sys/kern/uipc_mbuf2.c Fri May 6 23:50:22 2005 *************** *** 1,4 **** ! /* $NetBSD: uipc_mbuf2.c,v 1.16 2003/11/13 01:48:12 jonathan Exp $ */ /* $KAME: uipc_mbuf2.c,v 1.29 2001/02/14 13:42:10 itojun Exp $ */ /* --- 1,4 ---- ! /* $NetBSD: uipc_mbuf2.c,v 1.16.2.1 2005/05/06 23:50:22 snj Exp $ */ /* $KAME: uipc_mbuf2.c,v 1.29 2001/02/14 13:42:10 itojun Exp $ */ /* *************** *** 62,68 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: uipc_mbuf2.c,v 1.16 2003/11/13 01:48:12 jonathan Exp $"); #include #include --- 62,68 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: uipc_mbuf2.c,v 1.16.2.1 2005/05/06 23:50:22 snj Exp $"); #include #include *************** *** 173,179 **** goto ok; } if ((off == 0 || offp) && M_LEADINGSPACE(n->m_next) >= hlen && ! !sharedcluster) { n->m_next->m_data -= hlen; n->m_next->m_len += hlen; memcpy(mtod(n->m_next, caddr_t), mtod(n, caddr_t) + off, hlen); --- 173,179 ---- goto ok; } if ((off == 0 || offp) && M_LEADINGSPACE(n->m_next) >= hlen && ! !sharedcluster && n->m_next->m_len >= tlen) { n->m_next->m_data -= hlen; n->m_next->m_len += hlen; memcpy(mtod(n->m_next, caddr_t), mtod(n, caddr_t) + off, hlen); Index: src/sys/kern/uipc_usrreq.c diff -c src/sys/kern/uipc_usrreq.c:1.74 src/sys/kern/uipc_usrreq.c:1.74.2.1 *** src/sys/kern/uipc_usrreq.c:1.74 Tue Mar 23 13:22:05 2004 --- src/sys/kern/uipc_usrreq.c Mon Jul 18 04:03:05 2005 *************** *** 1,4 **** ! /* $NetBSD: uipc_usrreq.c,v 1.74 2004/03/23 13:22:05 junyoung Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: uipc_usrreq.c,v 1.74.2.1 2005/07/18 04:03:05 riz Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. *************** *** 103,109 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.74 2004/03/23 13:22:05 junyoung Exp $"); #include #include --- 103,109 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.74.2.1 2005/07/18 04:03:05 riz Exp $"); #include #include *************** *** 309,316 **** * has the side-effect of preventing a caller from * forging SCM_CREDS. */ ! if (control && (error = unp_internalize(control, p))) ! break; switch (so->so_type) { case SOCK_DGRAM: { --- 309,317 ---- * has the side-effect of preventing a caller from * forging SCM_CREDS. */ ! if (control && (error = unp_internalize(control, p))) { ! goto die; ! } switch (so->so_type) { case SOCK_DGRAM: { Index: src/sys/kern/vfs_lookup.c diff -c src/sys/kern/vfs_lookup.c:1.54 src/sys/kern/vfs_lookup.c:1.54.2.1 *** src/sys/kern/vfs_lookup.c:1.54 Mon Dec 8 14:23:33 2003 --- src/sys/kern/vfs_lookup.c Wed Mar 16 12:59:03 2005 *************** *** 1,4 **** ! /* $NetBSD: vfs_lookup.c,v 1.54 2003/12/08 14:23:33 hannken Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 --- 1,4 ---- ! /* $NetBSD: vfs_lookup.c,v 1.54.2.1 2005/03/16 12:59:03 tron Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 *************** *** 37,43 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c,v 1.54 2003/12/08 14:23:33 hannken Exp $"); #include "opt_ktrace.h" #include "opt_systrace.h" --- 37,43 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c,v 1.54.2.1 2005/03/16 12:59:03 tron Exp $"); #include "opt_ktrace.h" #include "opt_systrace.h" *************** *** 528,533 **** --- 528,536 ---- goto unionlookup; } + if (cnp->cn_flags & PDIRUNLOCK) + dpunlocked = 1; + if (error != EJUSTRETURN) goto bad; /* Index: src/sys/lib/libz/inftrees.c diff -c src/sys/lib/libz/inftrees.c:1.7 src/sys/lib/libz/inftrees.c:1.7.2.1 *** src/sys/lib/libz/inftrees.c:1.7 Sun Aug 31 22:40:49 2003 --- src/sys/lib/libz/inftrees.c Fri Aug 5 20:22:25 2005 *************** *** 1,4 **** ! /* $NetBSD: inftrees.c,v 1.7 2003/08/31 22:40:49 fvdl Exp $ */ /* inftrees.c -- generate Huffman trees for efficient decoding * Copyright (C) 1995-2002 Mark Adler --- 1,4 ---- ! /* $NetBSD: inftrees.c,v 1.7.2.1 2005/08/05 20:22:25 snj Exp $ */ /* inftrees.c -- generate Huffman trees for efficient decoding * Copyright (C) 1995-2002 Mark Adler *************** *** 144,150 **** { *t = (inflate_huft *)Z_NULL; *m = 0; ! return Z_OK; } --- 144,150 ---- { *t = (inflate_huft *)Z_NULL; *m = 0; ! return Z_NEED_DICT; } Index: src/sys/miscfs/kernfs/kernfs.h diff -c src/sys/miscfs/kernfs/kernfs.h:1.20.2.3 src/sys/miscfs/kernfs/kernfs.h:1.20.2.4 *** src/sys/miscfs/kernfs/kernfs.h:1.20.2.3 Sun May 23 10:46:05 2004 --- src/sys/miscfs/kernfs/kernfs.h Tue May 24 19:50:41 2005 *************** *** 1,4 **** ! /* $NetBSD: kernfs.h,v 1.20.2.3 2004/05/23 10:46:05 tron Exp $ */ /* * Copyright (c) 1992, 1993 --- 1,4 ---- ! /* $NetBSD: kernfs.h,v 1.20.2.4 2005/05/24 19:50:41 riz Exp $ */ /* * Copyright (c) 1992, 1993 *************** *** 148,154 **** KERNFS_FILEOP_CLOSE, KERNFS_FILEOP_GETATTR, KERNFS_FILEOP_IOCTL, - KERNFS_FILEOP_MMAP, KERNFS_FILEOP_OPEN, KERNFS_FILEOP_WRITE, } kfsfileop; --- 148,153 ---- Index: src/sys/miscfs/kernfs/kernfs_vnops.c diff -c src/sys/miscfs/kernfs/kernfs_vnops.c:1.98.2.3 src/sys/miscfs/kernfs/kernfs_vnops.c:1.98.2.6 *** src/sys/miscfs/kernfs/kernfs_vnops.c:1.98.2.3 Sat May 15 13:35:27 2004 --- src/sys/miscfs/kernfs/kernfs_vnops.c Thu Sep 1 17:53:25 2005 *************** *** 1,4 **** ! /* $NetBSD: kernfs_vnops.c,v 1.98.2.3 2004/05/15 13:35:27 tron Exp $ */ /* * Copyright (c) 1992, 1993 --- 1,4 ---- ! /* $NetBSD: kernfs_vnops.c,v 1.98.2.6 2005/09/01 17:53:25 riz Exp $ */ /* * Copyright (c) 1992, 1993 *************** *** 39,45 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: kernfs_vnops.c,v 1.98.2.3 2004/05/15 13:35:27 tron Exp $"); #ifdef _KERNEL_OPT #include "opt_ipsec.h" --- 39,45 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: kernfs_vnops.c,v 1.98.2.6 2005/09/01 17:53:25 riz Exp $"); #ifdef _KERNEL_OPT #include "opt_ipsec.h" *************** *** 164,170 **** { .kf_fileop = KERNFS_FILEOP_GETATTR, .kf_genop = {kernfs_default_fileop_getattr} }, { .kf_fileop = KERNFS_FILEOP_IOCTL }, - { .kf_fileop = KERNFS_FILEOP_MMAP }, { .kf_fileop = KERNFS_FILEOP_CLOSE }, { .kf_fileop = KERNFS_FILEOP_WRITE, .kf_genop = {kernfs_default_xwrite} }, }; --- 164,169 ---- *************** *** 183,189 **** int kernfs_ioctl __P((void *)); #define kernfs_poll genfs_poll #define kernfs_revoke genfs_revoke - int kernfs_mmap __P((void *)); #define kernfs_fsync genfs_nullop #define kernfs_seek genfs_nullop #define kernfs_remove genfs_eopnotsupp --- 182,187 ---- *************** *** 233,239 **** { &vop_ioctl_desc, kernfs_ioctl }, /* ioctl */ { &vop_poll_desc, kernfs_poll }, /* poll */ { &vop_revoke_desc, kernfs_revoke }, /* revoke */ - { &vop_mmap_desc, kernfs_mmap }, /* mmap */ { &vop_fsync_desc, kernfs_fsync }, /* fsync */ { &vop_seek_desc, kernfs_seek }, /* seek */ { &vop_remove_desc, kernfs_remove }, /* remove */ --- 231,236 ---- *************** *** 941,946 **** --- 938,947 ---- if (ap->a_vp->v_type == VDIR) return (EOPNOTSUPP); + /* Don't allow negative offsets */ + if (uio->uio_offset < 0) + return EINVAL; + off = uio->uio_offset; buf = strbuf; if ((error = kernfs_xread(kfs, off, &buf, sizeof(strbuf), &len)) == 0) *************** *** 1012,1033 **** EPASSTHROUGH); } - int - kernfs_mmap(v) - void *v; - { - struct vop_mmap_args /* { - const struct vnodeop_desc *a_desc; - struct vnode *a_vp; - int a_fflags; - struct ucred *a_cred; - struct proc *a_p; - } */ *ap = v; - struct kernfs_node *kfs = VTOKERN(ap->a_vp); - - return kernfs_try_fileop(kfs->kfs_type, KERNFS_FILEOP_MMAP, v, 0); - } - static int kernfs_setdirentfileno_kt(struct dirent *d, const struct kern_target *kt, u_int32_t value, struct vop_readdir_args *ap) --- 1013,1018 ---- Index: src/sys/miscfs/procfs/procfs_subr.c diff -c src/sys/miscfs/procfs/procfs_subr.c:1.58 src/sys/miscfs/procfs/procfs_subr.c:1.58.2.1 *** src/sys/miscfs/procfs/procfs_subr.c:1.58 Sat Sep 27 13:29:02 2003 --- src/sys/miscfs/procfs/procfs_subr.c Wed Aug 31 13:41:38 2005 *************** *** 1,4 **** ! /* $NetBSD: procfs_subr.c,v 1.58 2003/09/27 13:29:02 darcy Exp $ */ /* * Copyright (c) 1993 --- 1,4 ---- ! /* $NetBSD: procfs_subr.c,v 1.58.2.1 2005/08/31 13:41:38 tron Exp $ */ /* * Copyright (c) 1993 *************** *** 73,79 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: procfs_subr.c,v 1.58 2003/09/27 13:29:02 darcy Exp $"); #include #include --- 73,79 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: procfs_subr.c,v 1.58.2.1 2005/08/31 13:41:38 tron Exp $"); #include #include *************** *** 299,307 **** struct lwp *l; struct proc *p; p = PFIND(pfs->pfs_pid); if (p == 0) ! return (EINVAL); /* XXX NJWLWP * The entire procfs interface needs work to be useful to --- 299,315 ---- struct lwp *l; struct proc *p; + if (uio->uio_offset < 0) + return EINVAL; p = PFIND(pfs->pfs_pid); if (p == 0) ! return ESRCH; ! /* ! * Do not allow init to be modified while in secure mode; it ! * could be duped into changing the security level. ! */ ! if (uio->uio_rw == UIO_WRITE && p == initproc && securelevel > -1) ! return EPERM; /* XXX NJWLWP * The entire procfs interface needs work to be useful to *************** *** 311,336 **** l = proc_representative_lwp(p); switch (pfs->pfs_type) { - case PFSregs: - case PFSfpregs: - case PFSmem: - #if defined(__HAVE_PROCFS_MACHDEP) && defined(PROCFS_MACHDEP_PROTECT_CASES) - PROCFS_MACHDEP_PROTECT_CASES - #endif - /* - * Do not allow init to be modified while in secure mode; it - * could be duped into changing the security level. - */ - if (uio->uio_rw == UIO_WRITE && - p == initproc && securelevel > -1) - return (EPERM); - break; - - default: - break; - } - - switch (pfs->pfs_type) { case PFSnote: case PFSnotepg: return (procfs_donote(curp, p, pfs, uio)); --- 319,324 ---- Index: src/sys/net/if_media.c diff -c src/sys/net/if_media.c:1.21 src/sys/net/if_media.c:1.21.2.1 *** src/sys/net/if_media.c:1.21 Thu Feb 19 11:58:30 2004 --- src/sys/net/if_media.c Fri Jan 7 15:26:53 2005 *************** *** 1,4 **** ! /* $NetBSD: if_media.c,v 1.21 2004/02/19 11:58:30 ragge Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: if_media.c,v 1.21.2.1 2005/01/07 15:26:53 jdc Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. *************** *** 83,89 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: if_media.c,v 1.21 2004/02/19 11:58:30 ragge Exp $"); #include #include --- 83,89 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: if_media.c,v 1.21.2.1 2005/01/07 15:26:53 jdc Exp $"); #include #include *************** *** 108,113 **** --- 108,115 ---- static void ifmedia_printword __P((int)); #endif + MALLOC_DEFINE(M_IFMEDIA, "ifmedia", "interface media state"); + /* * Initialize if_media struct for a specific interface instance. */ *************** *** 151,157 **** } #endif ! entry = malloc(sizeof(*entry), M_IFADDR, M_NOWAIT); if (entry == NULL) panic("ifmedia_add: can't malloc entry"); --- 153,159 ---- } #endif ! entry = malloc(sizeof(*entry), M_IFMEDIA, M_NOWAIT); if (entry == NULL) panic("ifmedia_add: can't malloc entry"); *************** *** 414,420 **** if (inst == IFM_INST_ANY || inst == IFM_INST(ife->ifm_media)) { TAILQ_REMOVE(&ifm->ifm_list, ife, ifm_list); ! free(ife, M_DEVBUF); } } } --- 416,422 ---- if (inst == IFM_INST_ANY || inst == IFM_INST(ife->ifm_media)) { TAILQ_REMOVE(&ifm->ifm_list, ife, ifm_list); ! free(ife, M_IFMEDIA); } } } Index: src/sys/netinet/fil.c diff -c src/sys/netinet/fil.c:1.61.2.9 src/sys/netinet/fil.c:1.61.2.10 *** src/sys/netinet/fil.c:1.61.2.9 Fri Nov 12 04:40:32 2004 --- src/sys/netinet/fil.c Mon Jan 10 22:03:57 2005 *************** *** 1,4 **** ! /* $NetBSD: fil.c,v 1.61.2.9 2004/11/12 04:40:32 jmc Exp $ */ /* * Copyright (C) 1993-2003 by Darren Reed. --- 1,4 ---- ! /* $NetBSD: fil.c,v 1.61.2.10 2005/01/10 22:03:57 jmc Exp $ */ /* * Copyright (C) 1993-2003 by Darren Reed. *************** *** 135,141 **** #if !defined(lint) #if defined(__NetBSD__) #include ! __KERNEL_RCSID(0, "$NetBSD: fil.c,v 1.61.2.9 2004/11/12 04:40:32 jmc Exp $"); #else static const char sccsid[] = "@(#)fil.c 1.36 6/5/96 (C) 1993-2000 Darren Reed"; static const char rcsid[] = "@(#)Id: fil.c,v 2.243.2.25 2004/06/30 11:26:08 darrenr Exp"; --- 135,141 ---- #if !defined(lint) #if defined(__NetBSD__) #include ! __KERNEL_RCSID(0, "$NetBSD: fil.c,v 1.61.2.10 2005/01/10 22:03:57 jmc Exp $"); #else static const char sccsid[] = "@(#)fil.c 1.36 6/5/96 (C) 1993-2000 Darren Reed"; static const char rcsid[] = "@(#)Id: fil.c,v 2.243.2.25 2004/06/30 11:26:08 darrenr Exp"; *************** *** 419,425 **** * Actually, hop by hop header is only allowed right * after IPv6 header! */ ! if (coalesced == 0) { coalesced = fr_coalesce(fin); if (coalesced == -1) return; --- 419,425 ---- * Actually, hop by hop header is only allowed right * after IPv6 header! */ ! if ((fin->fin_m != NULL) && (coalesced == 0)) { coalesced = fr_coalesce(fin); if (coalesced == -1) return; *************** *** 430,436 **** frpr_hopopts6(fin); break; case IPPROTO_DSTOPTS : ! if (coalesced == 0) { coalesced = fr_coalesce(fin); if (coalesced == -1) return; --- 430,436 ---- frpr_hopopts6(fin); break; case IPPROTO_DSTOPTS : ! if ((fin->fin_m != NULL) && (coalesced == 0)) { coalesced = fr_coalesce(fin); if (coalesced == -1) return; *************** *** 438,444 **** frpr_dstopts6(fin); break; case IPPROTO_ROUTING : ! if (coalesced == 0) { coalesced = fr_coalesce(fin); if (coalesced == -1) return; --- 438,444 ---- frpr_dstopts6(fin); break; case IPPROTO_ROUTING : ! if ((fin->fin_m != NULL) && (coalesced == 0)) { coalesced = fr_coalesce(fin); if (coalesced == -1) return; *************** *** 460,466 **** go = 0; break; case IPPROTO_FRAGMENT : ! if (coalesced == 0) { coalesced = fr_coalesce(fin); if (coalesced == -1) return; --- 460,466 ---- go = 0; break; case IPPROTO_FRAGMENT : ! if ((fin->fin_m != NULL) && (coalesced == 0)) { coalesced = fr_coalesce(fin); if (coalesced == -1) return; *************** *** 2021,2030 **** --- 2021,2039 ---- ATOMIC_INCL(frstats[out].fr_ads); } else { ATOMIC_INCL(frstats[out].fr_bads); + #ifdef notdef + /* + * This blocks ICMP ECHOREPLY. fr_addstate returning + * NULL is not necessary a bad thing because there + * is no state to be added on some packets, eg. + * icmp reply packets. XXX: but for others this + * is wrong. + */ if (FR_ISPASS(pass)) { pass &= ~FR_CMDMASK; pass |= FR_BLOCK; } + #endif } } *************** *** 2756,2762 **** --- 2765,2775 ---- m->m_off += hlen; # endif m->m_len -= hlen; + #ifdef INET sum2 = in_cksum(m, slen); + #else + sum2 = 0; + #endif m->m_len += hlen; # if BSD >= 199103 m->m_data -= hlen; *************** *** 3967,3979 **** frentry_t frd, *fp, *f, **fprev, **ftail; int error = 0, in, v; u_int *p, *pp; ! frgroup_t *fg; char *group; ! void *ptr; - fg = NULL; - fp = &frd; if (makecopy != 0) { error = fr_inobj(data, fp, IPFOBJ_FRENTRY); if (error) return EFAULT; --- 3980,3991 ---- frentry_t frd, *fp, *f, **fprev, **ftail; int error = 0, in, v; u_int *p, *pp; ! frgroup_t *fg = NULL; char *group; ! void *ptr = NULL; if (makecopy != 0) { + fp = &frd; error = fr_inobj(data, fp, IPFOBJ_FRENTRY); if (error) return EFAULT; *************** *** 4020,4026 **** return error; } - ptr = NULL; /* * Check that the group number does exist and that its use (in/out) * matches what the rule is. --- 4032,4037 ---- Index: src/sys/netinet/ip_state.c diff -c src/sys/netinet/ip_state.c:1.44.2.3 src/sys/netinet/ip_state.c:1.44.2.4 *** src/sys/netinet/ip_state.c:1.44.2.3 Fri Oct 8 03:13:47 2004 --- src/sys/netinet/ip_state.c Wed Mar 16 12:01:12 2005 *************** *** 1,4 **** ! /* $NetBSD: ip_state.c,v 1.44.2.3 2004/10/08 03:13:47 jmc Exp $ */ /* * Copyright (C) 1995-2003 by Darren Reed. --- 1,4 ---- ! /* $NetBSD: ip_state.c,v 1.44.2.4 2005/03/16 12:01:12 tron Exp $ */ /* * Copyright (C) 1995-2003 by Darren Reed. *************** *** 110,116 **** #if !defined(lint) #if defined(__NetBSD__) #include ! __KERNEL_RCSID(0, "$NetBSD: ip_state.c,v 1.44.2.3 2004/10/08 03:13:47 jmc Exp $"); #else static const char sccsid[] = "@(#)ip_state.c 1.8 6/5/96 (C) 1993-2000 Darren Reed"; static const char rcsid[] = "@(#)Id: ip_state.c,v 2.186.2.13 2004/06/13 23:49:34 darrenr Exp"; --- 110,116 ---- #if !defined(lint) #if defined(__NetBSD__) #include ! __KERNEL_RCSID(0, "$NetBSD: ip_state.c,v 1.44.2.4 2005/03/16 12:01:12 tron Exp $"); #else static const char sccsid[] = "@(#)ip_state.c 1.8 6/5/96 (C) 1993-2000 Darren Reed"; static const char rcsid[] = "@(#)Id: ip_state.c,v 2.186.2.13 2004/06/13 23:49:34 darrenr Exp"; *************** *** 1352,1357 **** --- 1352,1358 ---- tcphdr_t *tcp; int flags; { + #ifdef BROKEN_TCP_WINDOW_CHECK tcp_seq seq, ack, end; int ackskew, tcpflags; u_32_t win, maxwin; *************** *** 1468,1473 **** --- 1469,1477 ---- return 1; } return 0; + #else + return 1; + #endif } Index: src/sys/netinet/tcp_input.c diff -c src/sys/netinet/tcp_input.c:1.190.2.6 src/sys/netinet/tcp_input.c:1.190.2.8 *** src/sys/netinet/tcp_input.c:1.190.2.6 Sun Sep 19 15:38:01 2004 --- src/sys/netinet/tcp_input.c Fri Apr 22 06:58:40 2005 *************** *** 1,4 **** ! /* $NetBSD: tcp_input.c,v 1.190.2.6 2004/09/19 15:38:01 he Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. --- 1,4 ---- ! /* $NetBSD: tcp_input.c,v 1.190.2.8 2005/04/22 06:58:40 tron Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. *************** *** 148,154 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.190.2.6 2004/09/19 15:38:01 he Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" --- 148,154 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.190.2.8 2005/04/22 06:58:40 tron Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" *************** *** 1445,1450 **** --- 1445,1465 ---- if (optp) tcp_dooptions(tp, optp, optlen, th, &opti); + if (opti.ts_present && opti.ts_ecr) { + u_int32_t now; + + /* + * Calculate the RTT from the returned time stamp and the + * connection's time base. If the time stamp is later than + * the current time, fall back to non-1323 RTT calculation. + */ + now = TCP_TIMESTAMP(tp); + if (SEQ_GEQ(now, opti.ts_ecr)) + opti.ts_ecr = now - opti.ts_ecr + 1; + else + opti.ts_ecr = 0; + } + /* * Header prediction: check for the two common cases * of a uni-directional data xfer. If the packet has *************** *** 1487,1494 **** */ ++tcpstat.tcps_predack; if (opti.ts_present && opti.ts_ecr) ! tcp_xmit_timer(tp, ! TCP_TIMESTAMP(tp) - opti.ts_ecr + 1); else if (tp->t_rtttime && SEQ_GT(th->th_ack, tp->t_rtseq)) tcp_xmit_timer(tp, --- 1502,1508 ---- */ ++tcpstat.tcps_predack; if (opti.ts_present && opti.ts_ecr) ! tcp_xmit_timer(tp, opti.ts_ecr); else if (tp->t_rtttime && SEQ_GT(th->th_ack, tp->t_rtseq)) tcp_xmit_timer(tp, *************** *** 2117,2123 **** * Recompute the initial retransmit timer. */ if (opti.ts_present && opti.ts_ecr) ! tcp_xmit_timer(tp, TCP_TIMESTAMP(tp) - opti.ts_ecr + 1); else if (tp->t_rtttime && SEQ_GT(th->th_ack, tp->t_rtseq)) tcp_xmit_timer(tp, tcp_now - tp->t_rtttime); --- 2131,2137 ---- * Recompute the initial retransmit timer. */ if (opti.ts_present && opti.ts_ecr) ! tcp_xmit_timer(tp, opti.ts_ecr); else if (tp->t_rtttime && SEQ_GT(th->th_ack, tp->t_rtseq)) tcp_xmit_timer(tp, tcp_now - tp->t_rtttime); Index: src/sys/netinet6/ah_aesxcbcmac.c diff -c src/sys/netinet6/ah_aesxcbcmac.c:1.1 src/sys/netinet6/ah_aesxcbcmac.c:1.1.2.1 *** src/sys/netinet6/ah_aesxcbcmac.c:1.1 Fri Jul 25 09:48:17 2003 --- src/sys/netinet6/ah_aesxcbcmac.c Thu Jul 28 20:27:52 2005 *************** *** 1,5 **** ! /* $NetBSD: ah_aesxcbcmac.c,v 1.1 2003/07/25 09:48:17 itojun Exp $ */ ! /* $KAME: ah_aesxcbcmac.c,v 1.2 2003/07/20 00:29:37 itojun Exp $ */ /* * Copyright (C) 1995, 1996, 1997, 1998 and 2003 WIDE Project. --- 1,5 ---- ! /* $NetBSD: ah_aesxcbcmac.c,v 1.1.2.1 2005/07/28 20:27:52 jdc Exp $ */ ! /* $KAME: ah_aesxcbcmac.c,v 1.7 2004/06/02 05:53:14 itojun Exp $ */ /* * Copyright (C) 1995, 1996, 1997, 1998 and 2003 WIDE Project. *************** *** 31,37 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: ah_aesxcbcmac.c,v 1.1 2003/07/25 09:48:17 itojun Exp $"); #include #include --- 31,37 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: ah_aesxcbcmac.c,v 1.1.2.1 2005/07/28 20:27:52 jdc Exp $"); #include #include *************** *** 79,84 **** --- 79,85 ---- u_int8_t k3seed[AES_BLOCKSIZE] = { 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 }; u_int32_t r_ks[(RIJNDAEL_MAXNR+1)*4]; aesxcbc_ctx *ctx; + u_int8_t k1[AES_BLOCKSIZE]; if (!state) panic("ah_aes_xcbc_mac_init: what?"); *************** *** 94,107 **** if ((ctx->r_nr = rijndaelKeySetupEnc(r_ks, (char *)_KEYBUF(sav->key_auth), AES_BLOCKSIZE * 8)) == 0) return -1; ! if (rijndaelKeySetupEnc(ctx->r_k1s, k1seed, AES_BLOCKSIZE * 8) == 0) return -1; ! if (rijndaelKeySetupEnc(ctx->r_k2s, k2seed, AES_BLOCKSIZE * 8) == 0) return -1; ! if (rijndaelKeySetupEnc(ctx->r_k3s, k3seed, AES_BLOCKSIZE * 8) == 0) return -1; - rijndaelEncrypt(r_ks, ctx->r_nr, k2seed, ctx->k2); - rijndaelEncrypt(r_ks, ctx->r_nr, k3seed, ctx->k3); return 0; } --- 95,109 ---- if ((ctx->r_nr = rijndaelKeySetupEnc(r_ks, (char *)_KEYBUF(sav->key_auth), AES_BLOCKSIZE * 8)) == 0) return -1; ! rijndaelEncrypt(r_ks, ctx->r_nr, k1seed, k1); ! rijndaelEncrypt(r_ks, ctx->r_nr, k2seed, ctx->k2); ! rijndaelEncrypt(r_ks, ctx->r_nr, k3seed, ctx->k3); ! if (rijndaelKeySetupEnc(ctx->r_k1s, k1, AES_BLOCKSIZE * 8) == 0) return -1; ! if (rijndaelKeySetupEnc(ctx->r_k2s, ctx->k2, AES_BLOCKSIZE * 8) == 0) return -1; ! if (rijndaelKeySetupEnc(ctx->r_k3s, ctx->k3, AES_BLOCKSIZE * 8) == 0) return -1; return 0; } *************** *** 152,159 **** addr += AES_BLOCKSIZE; } if (addr < ep) { ! bcopy(addr, ctx->buf, ep - addr); ! ctx->buflen = ep - addr; } } --- 154,161 ---- addr += AES_BLOCKSIZE; } if (addr < ep) { ! bcopy(addr, ctx->buf + ctx->buflen, ep - addr); ! ctx->buflen += ep - addr; } } Index: src/sys/netinet6/esp_aesctr.c diff -c src/sys/netinet6/esp_aesctr.c:1.1 src/sys/netinet6/esp_aesctr.c:1.1.2.1 *** src/sys/netinet6/esp_aesctr.c:1.1 Fri Jul 25 09:48:18 2003 --- src/sys/netinet6/esp_aesctr.c Tue Oct 11 16:29:31 2005 *************** *** 1,4 **** ! /* $NetBSD: esp_aesctr.c,v 1.1 2003/07/25 09:48:18 itojun Exp $ */ /* $KAME: esp_aesctr.c,v 1.2 2003/07/20 00:29:37 itojun Exp $ */ /* --- 1,4 ---- ! /* $NetBSD: esp_aesctr.c,v 1.1.2.1 2005/10/11 16:29:31 riz Exp $ */ /* $KAME: esp_aesctr.c,v 1.2 2003/07/20 00:29:37 itojun Exp $ */ /* *************** *** 31,37 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: esp_aesctr.c,v 1.1 2003/07/25 09:48:18 itojun Exp $"); #include #include --- 31,37 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: esp_aesctr.c,v 1.1.2.1 2005/10/11 16:29:31 riz Exp $"); #include #include *************** *** 61,67 **** union cblock { struct { u_int8_t nonce[4]; ! u_int8_t iv[16]; u_int32_t ctr; } v __attribute__((__packed__)); u_int8_t cblock[16]; --- 61,67 ---- union cblock { struct { u_int8_t nonce[4]; ! u_int8_t iv[8]; u_int32_t ctr; } v __attribute__((__packed__)); u_int8_t cblock[16]; Index: src/sys/netinet6/icmp6.c diff -c src/sys/netinet6/icmp6.c:1.106.2.1 src/sys/netinet6/icmp6.c:1.106.2.2 *** src/sys/netinet6/icmp6.c:1.106.2.1 Fri May 28 07:24:47 2004 --- src/sys/netinet6/icmp6.c Fri Oct 28 22:58:43 2005 *************** *** 1,4 **** ! /* $NetBSD: icmp6.c,v 1.106.2.1 2004/05/28 07:24:47 tron Exp $ */ /* $KAME: icmp6.c,v 1.217 2001/06/20 15:03:29 jinmei Exp $ */ /* --- 1,4 ---- ! /* $NetBSD: icmp6.c,v 1.106.2.2 2005/10/28 22:58:43 riz Exp $ */ /* $KAME: icmp6.c,v 1.217 2001/06/20 15:03:29 jinmei Exp $ */ /* *************** *** 62,68 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: icmp6.c,v 1.106.2.1 2004/05/28 07:24:47 tron Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" --- 62,68 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: icmp6.c,v 1.106.2.2 2005/10/28 22:58:43 riz Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" *************** *** 2620,2625 **** --- 2620,2626 ---- m0 = NULL; } + sip6 = mtod(m, struct ip6_hdr *); if (IN6_IS_ADDR_LINKLOCAL(&sip6->ip6_src)) sip6->ip6_src.s6_addr16[1] = 0; if (IN6_IS_ADDR_LINKLOCAL(&sip6->ip6_dst)) Index: src/sys/netinet6/ipsec.c diff -c src/sys/netinet6/ipsec.c:1.95.2.1 src/sys/netinet6/ipsec.c:1.95.2.2 *** src/sys/netinet6/ipsec.c:1.95.2.1 Fri May 28 07:24:28 2004 --- src/sys/netinet6/ipsec.c Wed Mar 16 22:59:06 2005 *************** *** 1,4 **** ! /* $NetBSD: ipsec.c,v 1.95.2.1 2004/05/28 07:24:28 tron Exp $ */ /* $KAME: ipsec.c,v 1.136 2002/05/19 00:36:39 itojun Exp $ */ /* --- 1,4 ---- ! /* $NetBSD: ipsec.c,v 1.95.2.2 2005/03/16 22:59:06 tron Exp $ */ /* $KAME: ipsec.c,v 1.136 2002/05/19 00:36:39 itojun Exp $ */ /* *************** *** 35,41 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.95.2.1 2004/05/28 07:24:28 tron Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" --- 35,41 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.95.2.2 2005/03/16 22:59:06 tron Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" *************** *** 1008,1014 **** uh.uh_dport; return; case IPPROTO_AH: ! if (m->m_pkthdr.len > off + sizeof(ip6e)) return; m_copydata(m, off, sizeof(ip6e), (caddr_t)&ip6e); off += (ip6e.ip6e_len + 2) << 2; --- 1008,1014 ---- uh.uh_dport; return; case IPPROTO_AH: ! if (off + sizeof(ip6e) > m->m_pkthdr.len) return; m_copydata(m, off, sizeof(ip6e), (caddr_t)&ip6e); off += (ip6e.ip6e_len + 2) << 2; *************** *** 1689,1694 **** --- 1689,1699 ---- */ level = IPSEC_LEVEL_USE; break; + case IPPROTO_IPV4: + case IPPROTO_IPV6: + /* should never go into here */ + level = IPSEC_LEVEL_REQUIRE; + break; default: panic("ipsec_get_reqlevel: " "Illegal protocol defined %u\n", *************** *** 1781,1786 **** --- 1786,1798 ---- * should always be treated as being in "use" level. */ break; + case IPPROTO_IPV4: + case IPPROTO_IPV6: + /* + * XXX what shall we do, until introducing more complex + * policy checking code? + */ + break; } } *************** *** 1954,1959 **** --- 1966,1976 ---- case IPPROTO_IPCOMP: clen = sizeof(struct ipcomp); break; + case IPPROTO_IPV4: + case IPPROTO_IPV6: + /* the next "if" clause will compute it */ + clen = 0; + break; } if (isr->saidx.mode == IPSEC_MODE_TUNNEL) { *************** *** 2653,2658 **** --- 2670,2678 ---- case IPSEC_LEVEL_USE: continue; case IPSEC_LEVEL_REQUIRE: + if (isr->saidx.proto == AF_INET || + isr->saidx.proto == AF_INET6) + break; /* must be not reached here. */ panic("ipsec4_output: no SA found, but required."); } *************** *** 2768,2773 **** --- 2788,2801 ---- goto bad; } break; + case IPPROTO_IPV4: + break; + case IPPROTO_IPV6: + ipseclog((LOG_ERR, "ipsec4_output: " + "family mismatched between inner and outer " + "header\n")); + error = EAFNOSUPPORT; + goto bad; default: ipseclog((LOG_ERR, "ipsec4_output: unknown ipsec protocol %d\n", Index: src/sys/netinet6/nd6.c diff -c src/sys/netinet6/nd6.c:1.89 src/sys/netinet6/nd6.c:1.89.2.1 *** src/sys/netinet6/nd6.c:1.89 Wed Feb 11 10:37:33 2004 --- src/sys/netinet6/nd6.c Thu Apr 7 15:33:01 2005 *************** *** 1,4 **** ! /* $NetBSD: nd6.c,v 1.89 2004/02/11 10:37:33 itojun Exp $ */ /* $KAME: nd6.c,v 1.279 2002/06/08 11:16:51 itojun Exp $ */ /* --- 1,4 ---- ! /* $NetBSD: nd6.c,v 1.89.2.1 2005/04/07 15:33:01 he Exp $ */ /* $KAME: nd6.c,v 1.279 2002/06/08 11:16:51 itojun Exp $ */ /* *************** *** 31,37 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.89 2004/02/11 10:37:33 itojun Exp $"); #include "opt_ipsec.h" --- 31,37 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.89.2.1 2005/04/07 15:33:01 he Exp $"); #include "opt_ipsec.h" *************** *** 640,645 **** --- 640,652 ---- npr = pr->ndpr_next; if (pr->ndpr_ifp == ifp) { /* + * Because if_detach() does *not* release prefixes + * while purging addresses the reference count will + * still be above zero. We therefore reset it to + * make sure that the prefix really gets purged. + */ + pr->ndpr_refcnt = 0; + /* * Previously, pr->ndpr_addr is removed as well, * but I strongly believe we don't have to do it. * nd6_purge() is only called from in6_ifdetach(), Index: src/sys/nfs/nfs.h diff -c src/sys/nfs/nfs.h:1.44 src/sys/nfs/nfs.h:1.44.2.1 *** src/sys/nfs/nfs.h:1.44 Sat Dec 6 02:48:35 2003 --- src/sys/nfs/nfs.h Tue Jan 11 06:39:46 2005 *************** *** 1,4 **** ! /* $NetBSD: nfs.h,v 1.44 2003/12/06 02:48:35 jonathan Exp $ */ /* * Copyright (c) 1989, 1993, 1995 * The Regents of the University of California. All rights reserved. --- 1,4 ---- ! /* $NetBSD: nfs.h,v 1.44.2.1 2005/01/11 06:39:46 jmc Exp $ */ /* * Copyright (c) 1989, 1993, 1995 * The Regents of the University of California. All rights reserved. *************** *** 340,345 **** --- 340,346 ---- #define R_TPRINTFMSG 0x20 /* Did a tprintf msg. */ #define R_MUSTRESEND 0x40 /* Must resend request */ #define R_GETONEREP 0x80 /* Probe for one reply only */ + #define R_REXMITTED 0x100 /* retransmitted after reconnect */ /* * A list of nfssvc_sock structures is maintained with all the sockets Index: src/sys/nfs/nfs_socket.c diff -c src/sys/nfs/nfs_socket.c:1.102.2.3 src/sys/nfs/nfs_socket.c:1.102.2.4 *** src/sys/nfs/nfs_socket.c:1.102.2.3 Mon Aug 30 10:11:47 2004 --- src/sys/nfs/nfs_socket.c Tue Jan 11 06:39:49 2005 *************** *** 1,4 **** ! /* $NetBSD: nfs_socket.c,v 1.102.2.3 2004/08/30 10:11:47 tron Exp $ */ /* * Copyright (c) 1989, 1991, 1993, 1995 --- 1,4 ---- ! /* $NetBSD: nfs_socket.c,v 1.102.2.4 2005/01/11 06:39:49 jmc Exp $ */ /* * Copyright (c) 1989, 1991, 1993, 1995 *************** *** 39,45 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: nfs_socket.c,v 1.102.2.3 2004/08/30 10:11:47 tron Exp $"); #include "fs_nfs.h" #include "opt_nfs.h" --- 39,45 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: nfs_socket.c,v 1.102.2.4 2005/01/11 06:39:49 jmc Exp $"); #include "fs_nfs.h" #include "opt_nfs.h" *************** *** 356,362 **** */ TAILQ_FOREACH(rp, &nfs_reqq, r_chain) { if (rp->r_nmp == nmp) { ! rp->r_flags |= R_MUSTRESEND; rp->r_rexmit = 0; } } --- 356,363 ---- */ TAILQ_FOREACH(rp, &nfs_reqq, r_chain) { if (rp->r_nmp == nmp) { ! if ((rp->r_flags & R_MUSTRESEND) == 0) ! rp->r_flags |= R_MUSTRESEND | R_REXMITTED; rp->r_rexmit = 0; } } *************** *** 927,933 **** * nb: always frees up mreq mbuf list */ int ! nfs_request(np, mrest, procnum, procp, cred, mrp, mdp, dposp) struct nfsnode *np; struct mbuf *mrest; int procnum; --- 928,934 ---- * nb: always frees up mreq mbuf list */ int ! nfs_request(np, mrest, procnum, procp, cred, mrp, mdp, dposp, rexmitp) struct nfsnode *np; struct mbuf *mrest; int procnum; *************** *** 936,941 **** --- 937,943 ---- struct mbuf **mrp; struct mbuf **mdp; caddr_t *dposp; + int *rexmitp; { struct mbuf *m, *mrep; struct nfsreq *rep; *************** *** 962,967 **** --- 964,972 ---- boolean_t retry_cred = TRUE; boolean_t use_opencred = (np->n_flag & NUSEOPENCRED) != 0; + if (rexmitp != NULL) + *rexmitp = 0; + tryagain_cred: KASSERT(cred != NULL); MALLOC(rep, struct nfsreq *, sizeof(struct nfsreq), M_NFSREQ, M_WAITOK); *************** *** 1136,1141 **** --- 1141,1156 ---- nmp->nm_sent -= NFS_CWNDSCALE; } + if (rexmitp != NULL) { + int rexmit; + + if (nmp->nm_sotype != SOCK_DGRAM) + rexmit = (rep->r_flags & R_REXMITTED) != 0; + else + rexmit = rep->r_rexmit; + *rexmitp = rexmit; + } + /* * If there was a successful reply and a tprintf msg. * tprintf a response. Index: src/sys/nfs/nfs_subs.c diff -c src/sys/nfs/nfs_subs.c:1.132.2.3 src/sys/nfs/nfs_subs.c:1.132.2.5 *** src/sys/nfs/nfs_subs.c:1.132.2.3 Mon Oct 4 06:05:30 2004 --- src/sys/nfs/nfs_subs.c Wed Mar 16 11:54:49 2005 *************** *** 1,4 **** ! /* $NetBSD: nfs_subs.c,v 1.132.2.3 2004/10/04 06:05:30 jmc Exp $ */ /* * Copyright (c) 1989, 1993 --- 1,4 ---- ! /* $NetBSD: nfs_subs.c,v 1.132.2.5 2005/03/16 11:54:49 tron Exp $ */ /* * Copyright (c) 1989, 1993 *************** *** 70,76 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: nfs_subs.c,v 1.132.2.3 2004/10/04 06:05:30 jmc Exp $"); #include "fs_nfs.h" #include "opt_nfs.h" --- 70,76 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: nfs_subs.c,v 1.132.2.5 2005/03/16 11:54:49 tron Exp $"); #include "fs_nfs.h" #include "opt_nfs.h" *************** *** 1825,1839 **** } else { np->n_size = vap->va_size; if (vap->va_type == VREG) { ! if ((flags & NAC_NOTRUNC) ! && np->n_size < vp->v_size) { ! /* ! * we can't free pages now because ! * the pages can be owned by ourselves. ! */ np->n_flag |= NTRUNCDELAYED; ! } ! else { uvm_vnp_setsize(vp, np->n_size); } } --- 1825,1841 ---- } else { np->n_size = vap->va_size; if (vap->va_type == VREG) { ! /* ! * we can't free pages if NAC_NOTRUNC because ! * the pages can be owned by ourselves. ! */ ! if (flags & NAC_NOTRUNC) { np->n_flag |= NTRUNCDELAYED; ! } else { ! simple_lock(&vp->v_interlock); ! (void)VOP_PUTPAGES(vp, 0, ! 0, PGO_SYNCIO | PGO_CLEANIT | ! PGO_FREE | PGO_ALLPAGES); uvm_vnp_setsize(vp, np->n_size); } } *************** *** 1903,1908 **** --- 1905,1913 ---- if (np->n_flag & NTRUNCDELAYED) { np->n_flag &= ~NTRUNCDELAYED; + simple_lock(&vp->v_interlock); + (void)VOP_PUTPAGES(vp, 0, + 0, PGO_SYNCIO | PGO_CLEANIT | PGO_FREE | PGO_ALLPAGES); uvm_vnp_setsize(vp, np->n_size); } } *************** *** 2590,2596 **** LIST_FOREACH(vp, &mp->mnt_vnodelist, v_mntvnodes) { KASSERT(vp->v_mount == mp); ! if (vp->v_type == VNON) continue; np = VTONFS(vp); np->n_pushlo = np->n_pushhi = np->n_pushedlo = --- 2595,2601 ---- LIST_FOREACH(vp, &mp->mnt_vnodelist, v_mntvnodes) { KASSERT(vp->v_mount == mp); ! if (vp->v_type != VREG) continue; np = VTONFS(vp); np->n_pushlo = np->n_pushhi = np->n_pushedlo = Index: src/sys/nfs/nfs_var.h diff -c src/sys/nfs/nfs_var.h:1.42.2.2 src/sys/nfs/nfs_var.h:1.42.2.3 *** src/sys/nfs/nfs_var.h:1.42.2.2 Sat Sep 18 19:22:19 2004 --- src/sys/nfs/nfs_var.h Tue Jan 11 06:39:55 2005 *************** *** 1,4 **** ! /* $NetBSD: nfs_var.h,v 1.42.2.2 2004/09/18 19:22:19 he Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: nfs_var.h,v 1.42.2.3 2005/01/11 06:39:55 jmc Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. *************** *** 220,226 **** int nfs_reply __P((struct nfsreq *)); int nfs_request __P((struct nfsnode *, struct mbuf *, int, struct proc *, struct ucred *, struct mbuf **, struct mbuf **, ! caddr_t *)); int nfs_rephead __P((int, struct nfsrv_descript *, struct nfssvc_sock *, int, int, u_quad_t *, struct mbuf **, struct mbuf **, caddr_t *)); void nfs_timer __P((void *)); --- 220,226 ---- int nfs_reply __P((struct nfsreq *)); int nfs_request __P((struct nfsnode *, struct mbuf *, int, struct proc *, struct ucred *, struct mbuf **, struct mbuf **, ! caddr_t *, int *)); int nfs_rephead __P((int, struct nfsrv_descript *, struct nfssvc_sock *, int, int, u_quad_t *, struct mbuf **, struct mbuf **, caddr_t *)); void nfs_timer __P((void *)); Index: src/sys/nfs/nfs_vnops.c diff -c src/sys/nfs/nfs_vnops.c:1.186.2.6 src/sys/nfs/nfs_vnops.c:1.186.2.10 *** src/sys/nfs/nfs_vnops.c:1.186.2.6 Sat Jul 10 20:03:55 2004 --- src/sys/nfs/nfs_vnops.c Wed Mar 16 12:50:30 2005 *************** *** 1,4 **** ! /* $NetBSD: nfs_vnops.c,v 1.186.2.6 2004/07/10 20:03:55 tron Exp $ */ /* * Copyright (c) 1989, 1993 --- 1,4 ---- ! /* $NetBSD: nfs_vnops.c,v 1.186.2.10 2005/03/16 12:50:30 tron Exp $ */ /* * Copyright (c) 1989, 1993 *************** *** 39,45 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.186.2.6 2004/07/10 20:03:55 tron Exp $"); #include "opt_nfs.h" #include "opt_uvmhist.h" --- 39,45 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.186.2.10 2005/03/16 12:50:30 tron Exp $"); #include "opt_nfs.h" #include "opt_uvmhist.h" *************** *** 273,290 **** nfs_cache_enter(struct vnode *dvp, struct vnode *vp, struct componentname *cnp) { if (vp != NULL) { struct nfsnode *np = VTONFS(vp); np->n_ctime = np->n_vattr->va_ctime.tv_sec; - } else { - struct nfsnode *dnp = VTONFS(dvp); - - if (!timespecisset(&dnp->n_nctime)) - dnp->n_nctime = dnp->n_vattr->va_mtime; } cache_enter(dvp, vp, cnp); } --- 273,289 ---- nfs_cache_enter(struct vnode *dvp, struct vnode *vp, struct componentname *cnp) { + struct nfsnode *dnp = VTONFS(dvp); if (vp != NULL) { struct nfsnode *np = VTONFS(vp); np->n_ctime = np->n_vattr->va_ctime.tv_sec; } + if (!timespecisset(&dnp->n_nctime)) + dnp->n_nctime = dnp->n_vattr->va_mtime; + cache_enter(dvp, vp, cnp); } *************** *** 886,901 **** return err2; } ! if (error == ENOENT) { ! if (!VOP_GETATTR(dvp, &vattr, cnp->cn_cred, ! cnp->cn_proc) && timespeccmp(&vattr.va_mtime, ! &VTONFS(dvp)->n_nctime, ==)) ! return ENOENT; cache_purge1(dvp, NULL, PURGE_CHILDREN); timespecclear(&np->n_nctime); goto dorpc; } newvp = *vpp; if (!VOP_GETATTR(newvp, &vattr, cnp->cn_cred, cnp->cn_proc) && vattr.va_ctime.tv_sec == VTONFS(newvp)->n_ctime) --- 885,909 ---- return err2; } ! if (VOP_GETATTR(dvp, &vattr, cnp->cn_cred, ! cnp->cn_proc) || timespeccmp(&vattr.va_mtime, ! &VTONFS(dvp)->n_nctime, !=)) { ! if (error == 0) { ! if (*vpp != dvp) ! vput(*vpp); ! else ! vrele(*vpp); ! *vpp = NULLVP; ! } cache_purge1(dvp, NULL, PURGE_CHILDREN); timespecclear(&np->n_nctime); goto dorpc; } + if (error == ENOENT) { + return ENOENT; + } + newvp = *vpp; if (!VOP_GETATTR(newvp, &vattr, cnp->cn_cred, cnp->cn_proc) && vattr.va_ctime.tv_sec == VTONFS(newvp)->n_ctime) *************** *** 1785,1798 **** if (error != EINTR) error = nfs_removerpc(dvp, cnp->cn_nameptr, cnp->cn_namelen, cnp->cn_cred, cnp->cn_proc); - /* - * Kludge City: If the first reply to the remove rpc is lost.. - * the reply to the retransmitted request will be ENOENT - * since the file was in fact removed - * Therefore, we cheat and return success. - */ - if (error == ENOENT) - error = 0; } else if (!np->n_sillyrename) error = nfs_sillyrename(dvp, vp, cnp); PNBUF_PUT(cnp->cn_pnbuf); --- 1793,1798 ---- *************** *** 1841,1846 **** --- 1841,1847 ---- int error = 0, wccflag = NFSV3_WCCRATTR; struct mbuf *mreq, *mrep, *md, *mb; const int v3 = NFS_ISV3(dvp); + int rexmit; struct nfsnode *dnp = VTONFS(dvp); nfsstats.rpccnt[NFSPROC_REMOVE]++; *************** *** 1848,1860 **** NFSX_FH(v3) + NFSX_UNSIGNED + nfsm_rndup(namelen)); nfsm_fhtom(dnp, v3); nfsm_strtom(name, namelen, NFS_MAXNAMLEN); ! nfsm_request(dnp, NFSPROC_REMOVE, proc, cred); if (v3) nfsm_wcc_data(dvp, wccflag, 0); nfsm_reqdone; VTONFS(dvp)->n_flag |= NMODIFIED; if (!wccflag) NFS_INVALIDATE_ATTRCACHE(VTONFS(dvp)); return (error); } --- 1849,1869 ---- NFSX_FH(v3) + NFSX_UNSIGNED + nfsm_rndup(namelen)); nfsm_fhtom(dnp, v3); nfsm_strtom(name, namelen, NFS_MAXNAMLEN); ! nfsm_request1(dnp, NFSPROC_REMOVE, proc, cred, &rexmit); if (v3) nfsm_wcc_data(dvp, wccflag, 0); nfsm_reqdone; VTONFS(dvp)->n_flag |= NMODIFIED; if (!wccflag) NFS_INVALIDATE_ATTRCACHE(VTONFS(dvp)); + /* + * Kludge City: If the first reply to the remove rpc is lost.. + * the reply to the retransmitted request will be ENOENT + * since the file was in fact removed + * Therefore, we cheat and return success. + */ + if (rexmit && error == ENOENT) + error = 0; return (error); } *************** *** 1924,1934 **** vput(tvp); vrele(fdvp); vrele(fvp); - /* - * Kludge: Map ENOENT => 0 assuming that it is a reply to a retry. - */ - if (error == ENOENT) - error = 0; return (error); } --- 1933,1938 ---- *************** *** 1966,1971 **** --- 1970,1976 ---- int error = 0, fwccflag = NFSV3_WCCRATTR, twccflag = NFSV3_WCCRATTR; struct mbuf *mreq, *mrep, *md, *mb; const int v3 = NFS_ISV3(fdvp); + int rexmit; struct nfsnode *fdnp = VTONFS(fdvp); nfsstats.rpccnt[NFSPROC_RENAME]++; *************** *** 1976,1982 **** nfsm_strtom(fnameptr, fnamelen, NFS_MAXNAMLEN); nfsm_fhtom(VTONFS(tdvp), v3); nfsm_strtom(tnameptr, tnamelen, NFS_MAXNAMLEN); ! nfsm_request(fdnp, NFSPROC_RENAME, proc, cred); if (v3) { nfsm_wcc_data(fdvp, fwccflag, 0); nfsm_wcc_data(tdvp, twccflag, 0); --- 1981,1987 ---- nfsm_strtom(fnameptr, fnamelen, NFS_MAXNAMLEN); nfsm_fhtom(VTONFS(tdvp), v3); nfsm_strtom(tnameptr, tnamelen, NFS_MAXNAMLEN); ! nfsm_request1(fdnp, NFSPROC_RENAME, proc, cred, &rexmit); if (v3) { nfsm_wcc_data(fdvp, fwccflag, 0); nfsm_wcc_data(tdvp, twccflag, 0); *************** *** 1988,1993 **** --- 1993,2003 ---- NFS_INVALIDATE_ATTRCACHE(VTONFS(fdvp)); if (!twccflag) NFS_INVALIDATE_ATTRCACHE(VTONFS(tdvp)); + /* + * Kludge: Map ENOENT => 0 assuming that it is a reply to a retry. + */ + if (rexmit && error == ENOENT) + error = 0; return (error); } *************** *** 2014,2019 **** --- 2024,2030 ---- struct mbuf *mreq, *mrep, *md, *mb; /* XXX Should be const and initialised? */ int v3; + int rexmit; struct nfsnode *np; if (dvp->v_mount != vp->v_mount) { *************** *** 2045,2051 **** nfsm_fhtom(np, v3); nfsm_fhtom(VTONFS(dvp), v3); nfsm_strtom(cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN); ! nfsm_request(np, NFSPROC_LINK, cnp->cn_proc, cnp->cn_cred); if (v3) { nfsm_postop_attr(vp, attrflag, 0); nfsm_wcc_data(dvp, wccflag, 0); --- 2056,2062 ---- nfsm_fhtom(np, v3); nfsm_fhtom(VTONFS(dvp), v3); nfsm_strtom(cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN); ! nfsm_request1(np, NFSPROC_LINK, cnp->cn_proc, cnp->cn_cred, &rexmit); if (v3) { nfsm_postop_attr(vp, attrflag, 0); nfsm_wcc_data(dvp, wccflag, 0); *************** *** 2065,2071 **** /* * Kludge: Map EEXIST => 0 assuming that it is a reply to a retry. */ ! if (error == EEXIST) error = 0; return (error); } --- 2076,2082 ---- /* * Kludge: Map EEXIST => 0 assuming that it is a reply to a retry. */ ! if (rexmit && error == EEXIST) error = 0; return (error); } *************** *** 2096,2101 **** --- 2107,2113 ---- struct mbuf *mreq, *mrep, *md, *mb; struct vnode *newvp = (struct vnode *)0; const int v3 = NFS_ISV3(dvp); + int rexmit; struct nfsnode *dnp = VTONFS(dvp); *ap->a_vpp = NULL; *************** *** 2117,2123 **** txdr_nfsv2time(&vap->va_atime, &sp->sa_atime); txdr_nfsv2time(&vap->va_mtime, &sp->sa_mtime); } ! nfsm_request(dnp, NFSPROC_SYMLINK, cnp->cn_proc, cnp->cn_cred); if (v3) { if (!error) nfsm_mtofh(dvp, newvp, v3, gotvp); --- 2129,2136 ---- txdr_nfsv2time(&vap->va_atime, &sp->sa_atime); txdr_nfsv2time(&vap->va_mtime, &sp->sa_mtime); } ! nfsm_request1(dnp, NFSPROC_SYMLINK, cnp->cn_proc, cnp->cn_cred, ! &rexmit); if (v3) { if (!error) nfsm_mtofh(dvp, newvp, v3, gotvp); *************** *** 2127,2133 **** /* * Kludge: Map EEXIST => 0 assuming that it is a reply to a retry. */ ! if (error == EEXIST) error = 0; if (error == 0 && newvp == NULL) { struct nfsnode *np = NULL; --- 2140,2146 ---- /* * Kludge: Map EEXIST => 0 assuming that it is a reply to a retry. */ ! if (rexmit && error == EEXIST) error = 0; if (error == 0 && newvp == NULL) { struct nfsnode *np = NULL; *************** *** 2178,2183 **** --- 2191,2197 ---- caddr_t bpos, dpos, cp2; int error = 0, wccflag = NFSV3_WCCRATTR; int gotvp = 0; + int rexmit; struct mbuf *mreq, *mrep, *md, *mb; const int v3 = NFS_ISV3(dvp); *************** *** 2198,2204 **** txdr_nfsv2time(&vap->va_atime, &sp->sa_atime); txdr_nfsv2time(&vap->va_mtime, &sp->sa_mtime); } ! nfsm_request(dnp, NFSPROC_MKDIR, cnp->cn_proc, cnp->cn_cred); if (!error) nfsm_mtofh(dvp, newvp, v3, gotvp); if (v3) --- 2212,2218 ---- txdr_nfsv2time(&vap->va_atime, &sp->sa_atime); txdr_nfsv2time(&vap->va_mtime, &sp->sa_mtime); } ! nfsm_request1(dnp, NFSPROC_MKDIR, cnp->cn_proc, cnp->cn_cred, &rexmit); if (!error) nfsm_mtofh(dvp, newvp, v3, gotvp); if (v3) *************** *** 2211,2217 **** * Kludge: Map EEXIST => 0 assuming that you have a reply to a retry * if we can succeed in looking up the directory. */ ! if (error == EEXIST || (!error && !gotvp)) { if (newvp) { vput(newvp); newvp = (struct vnode *)0; --- 2225,2231 ---- * Kludge: Map EEXIST => 0 assuming that you have a reply to a retry * if we can succeed in looking up the directory. */ ! if ((rexmit && error == EEXIST) || (!error && !gotvp)) { if (newvp) { vput(newvp); newvp = (struct vnode *)0; *************** *** 2258,2263 **** --- 2272,2278 ---- int32_t t1, t2; caddr_t bpos, dpos, cp2; int error = 0, wccflag = NFSV3_WCCRATTR; + int rexmit; struct mbuf *mreq, *mrep, *md, *mb; const int v3 = NFS_ISV3(dvp); struct nfsnode *dnp; *************** *** 2274,2280 **** NFSX_FH(v3) + NFSX_UNSIGNED + nfsm_rndup(cnp->cn_namelen)); nfsm_fhtom(dnp, v3); nfsm_strtom(cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN); ! nfsm_request(dnp, NFSPROC_RMDIR, cnp->cn_proc, cnp->cn_cred); if (v3) nfsm_wcc_data(dvp, wccflag, 0); nfsm_reqdone; --- 2289,2295 ---- NFSX_FH(v3) + NFSX_UNSIGNED + nfsm_rndup(cnp->cn_namelen)); nfsm_fhtom(dnp, v3); nfsm_strtom(cnp->cn_nameptr, cnp->cn_namelen, NFS_MAXNAMLEN); ! nfsm_request1(dnp, NFSPROC_RMDIR, cnp->cn_proc, cnp->cn_cred, &rexmit); if (v3) nfsm_wcc_data(dvp, wccflag, 0); nfsm_reqdone; *************** *** 2290,2296 **** /* * Kludge: Map ENOENT => 0 assuming that you have a reply to a retry. */ ! if (error == ENOENT) error = 0; return (error); } --- 2305,2311 ---- /* * Kludge: Map ENOENT => 0 assuming that you have a reply to a retry. */ ! if (rexmit && error == ENOENT) error = 0; return (error); } *************** *** 2411,2417 **** * Should be called from buffer cache, so only amount of * NFS_DIRBLKSIZ will be requested. */ ! if (uiop->uio_iovcnt != 1 || (uiop->uio_resid & (NFS_DIRBLKSIZ - 1))) panic("nfs readdirrpc bad uio"); #endif --- 2426,2432 ---- * Should be called from buffer cache, so only amount of * NFS_DIRBLKSIZ will be requested. */ ! if (uiop->uio_iovcnt != 1 || uiop->uio_resid != NFS_DIRBLKSIZ) panic("nfs readdirrpc bad uio"); #endif *************** *** 2560,2565 **** --- 2575,2591 ---- if (!more_dirs) { nfsm_dissect(tl, u_int32_t *, NFSX_UNSIGNED); more_dirs = (fxdr_unsigned(int, *tl) == 0); + + /* + * kludge: if we got no entries, treat it as EOF. + * some server sometimes send a reply without any + * entries or EOF. + * although it might mean the server has very long name, + * we can't handle such entries anyway. + */ + + if (uiop->uio_resid >= NFS_DIRBLKSIZ) + more_dirs = 0; } m_freem(mrep); } *************** *** 2615,2621 **** struct nfs_fattr fattr, *fp; #ifdef DIAGNOSTIC ! if (uiop->uio_iovcnt != 1 || (uiop->uio_resid & (NFS_DIRBLKSIZ - 1))) panic("nfs readdirplusrpc bad uio"); #endif ndp->ni_dvp = vp; --- 2641,2647 ---- struct nfs_fattr fattr, *fp; #ifdef DIAGNOSTIC ! if (uiop->uio_iovcnt != 1 || uiop->uio_resid != NFS_DIRBLKSIZ) panic("nfs readdirplusrpc bad uio"); #endif ndp->ni_dvp = vp; *************** *** 2790,2795 **** --- 2816,2828 ---- if (!more_dirs) { nfsm_dissect(tl, u_int32_t *, NFSX_UNSIGNED); more_dirs = (fxdr_unsigned(int, *tl) == 0); + + /* + * kludge: see a comment in nfs_readdirrpc. + */ + + if (uiop->uio_resid >= NFS_DIRBLKSIZ) + more_dirs = 0; } m_freem(mrep); } *************** *** 3005,3011 **** tl += 2; *tl = txdr_unsigned(cnt); nfsm_request(np, NFSPROC_COMMIT, procp, np->n_wcred); ! nfsm_wcc_data(vp, wccflag, 0); if (!error) { nfsm_dissect(tl, u_int32_t *, NFSX_V3WRITEVERF); simple_lock(&nmp->nm_slock); --- 3038,3044 ---- tl += 2; *tl = txdr_unsigned(cnt); nfsm_request(np, NFSPROC_COMMIT, procp, np->n_wcred); ! nfsm_wcc_data(vp, wccflag, NAC_NOTRUNC); if (!error) { nfsm_dissect(tl, u_int32_t *, NFSX_V3WRITEVERF); simple_lock(&nmp->nm_slock); Index: src/sys/nfs/nfsm_subs.h diff -c src/sys/nfs/nfsm_subs.h:1.34.2.2 src/sys/nfs/nfsm_subs.h:1.34.2.3 *** src/sys/nfs/nfsm_subs.h:1.34.2.2 Sat Jul 10 14:30:15 2004 --- src/sys/nfs/nfsm_subs.h Tue Jan 11 06:40:04 2005 *************** *** 1,4 **** ! /* $NetBSD: nfsm_subs.h,v 1.34.2.2 2004/07/10 14:30:15 tron Exp $ */ /* * Copyright (c) 1989, 1993 --- 1,4 ---- ! /* $NetBSD: nfsm_subs.h,v 1.34.2.3 2005/01/11 06:40:04 jmc Exp $ */ /* * Copyright (c) 1989, 1993 *************** *** 395,409 **** #define nfsm_rndup(a) (((a)+3)&(~0x3)) #define nfsm_padlen(a) (nfsm_rndup(a) - (a)) ! #define nfsm_request(v, t, p, c) \ if ((error = nfs_request((v), mreq, (t), (p), \ ! (c), &mrep, &md, &dpos)) != 0) { \ if (error & NFSERR_RETERR) \ error &= ~NFSERR_RETERR; \ else \ goto nfsmout; \ } #define nfsm_strtom(a,s,m) \ if ((s) > (m)) { \ m_freem(mreq); \ --- 395,411 ---- #define nfsm_rndup(a) (((a)+3)&(~0x3)) #define nfsm_padlen(a) (nfsm_rndup(a) - (a)) ! #define nfsm_request1(v, t, p, c, rexmitp) \ if ((error = nfs_request((v), mreq, (t), (p), \ ! (c), &mrep, &md, &dpos, (rexmitp))) != 0) { \ if (error & NFSERR_RETERR) \ error &= ~NFSERR_RETERR; \ else \ goto nfsmout; \ } + #define nfsm_request(v, t, p, c) nfsm_request1((v), (t), (p), (c), NULL) + #define nfsm_strtom(a,s,m) \ if ((s) > (m)) { \ m_freem(mreq); \ Index: src/sys/nfs/nfsnode.h diff -c src/sys/nfs/nfsnode.h:1.46.2.2 src/sys/nfs/nfsnode.h:1.46.2.4 *** src/sys/nfs/nfsnode.h:1.46.2.2 Sat Sep 18 19:22:41 2004 --- src/sys/nfs/nfsnode.h Tue Jan 11 06:41:38 2005 *************** *** 1,4 **** ! /* $NetBSD: nfsnode.h,v 1.46.2.2 2004/09/18 19:22:41 he Exp $ */ /* * Copyright (c) 1989, 1993 --- 1,4 ---- ! /* $NetBSD: nfsnode.h,v 1.46.2.4 2005/01/11 06:41:38 jmc Exp $ */ /* * Copyright (c) 1989, 1993 *************** *** 119,125 **** daddr_t ndir_dblkno; /* faked dir blkno */ struct nfsdirhashhead *ndir_dircache; /* offset -> cache hash heads */ struct nfsdirchainhead ndir_dirchain; /* Chain of dir cookies */ ! struct timespec ndir_nctime; /* Last neg cache entry */ unsigned ndir_dircachesize; /* Size of dir cookie cache */ }; --- 119,125 ---- daddr_t ndir_dblkno; /* faked dir blkno */ struct nfsdirhashhead *ndir_dircache; /* offset -> cache hash heads */ struct nfsdirchainhead ndir_dirchain; /* Chain of dir cookies */ ! struct timespec ndir_nctime; /* Last name cache entry */ unsigned ndir_dircachesize; /* Size of dir cookie cache */ }; *************** *** 205,211 **** #define NACC 0x0100 /* Special file accessed */ #define NUPD 0x0200 /* Special file updated */ #define NCHG 0x0400 /* Special file times changed */ ! #define NTRUNCDELAYED 0x1000 /* Should be truncated later */ #define NREMOVED 0x2000 /* Has been removed */ #define NUSEOPENCRED 0x4000 /* Try open cred first rather than owner's */ --- 205,212 ---- #define NACC 0x0100 /* Special file accessed */ #define NUPD 0x0200 /* Special file updated */ #define NCHG 0x0400 /* Special file times changed */ ! #define NTRUNCDELAYED 0x1000 /* Should be truncated later; ! implies stale cache */ #define NREMOVED 0x2000 /* Has been removed */ #define NUSEOPENCRED 0x4000 /* Try open cred first rather than owner's */ Index: src/sys/sys/lwp.h diff -c src/sys/sys/lwp.h:1.21 src/sys/sys/lwp.h:1.21.2.1 *** src/sys/sys/lwp.h:1.21 Sun Mar 14 01:08:47 2004 --- src/sys/sys/lwp.h Sun Mar 20 11:58:55 2005 *************** *** 1,4 **** ! /* $NetBSD: lwp.h,v 1.21 2004/03/14 01:08:47 cl Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. --- 1,4 ---- ! /* $NetBSD: lwp.h,v 1.21.2.1 2005/03/20 11:58:55 tron Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. *************** *** 118,123 **** --- 118,124 ---- #define L_SA_PAGEFAULT 0x4000000 /* SA LWP in pagefault handler */ #define L_SA_YIELD 0x10000000 /* LWP on VP is yielding */ #define L_SA_IDLE 0x20000000 /* VP is idle */ + #define L_SA_SWITCHING 0x80000000 /* SA LWP in context switch */ /* * Status values. Index: src/sys/sys/param.h diff -c src/sys/sys/param.h:1.188.2.9 src/sys/sys/param.h:1.188.2.18 *** src/sys/sys/param.h:1.188.2.9 Mon Nov 29 06:24:21 2004 --- src/sys/sys/param.h Sat Oct 29 23:38:48 2005 *************** *** 1,4 **** ! /* $NetBSD: param.h,v 1.188.2.9 2004/11/29 06:24:21 jmc Exp $ */ /*- * Copyright (c) 1982, 1986, 1989, 1993 --- 1,4 ---- ! /* $NetBSD: param.h,v 1.188.2.18 2005/10/29 23:38:48 jmc Exp $ */ /*- * Copyright (c) 1982, 1986, 1989, 1993 *************** *** 63,69 **** * 2.99.9 (299000900) */ ! #define __NetBSD_Version__ 200000000 /* NetBSD 2.0 */ #define __NetBSD_Prereq__(M,m,p) (((((M) * 100000000) + \ (m) * 1000000) + (p) * 100) >= __NetBSD_Version__) --- 63,69 ---- * 2.99.9 (299000900) */ ! #define __NetBSD_Version__ 200000300 /* NetBSD 2.0.3 */ #define __NetBSD_Prereq__(M,m,p) (((((M) * 100000000) + \ (m) * 1000000) + (p) * 100) >= __NetBSD_Version__) Index: src/sys/ufs/ext2fs/ext2fs_bmap.c diff -c src/sys/ufs/ext2fs/ext2fs_bmap.c:1.15 src/sys/ufs/ext2fs/ext2fs_bmap.c:1.15.2.1 *** src/sys/ufs/ext2fs/ext2fs_bmap.c:1.15 Mon Mar 22 19:23:08 2004 --- src/sys/ufs/ext2fs/ext2fs_bmap.c Wed May 11 13:43:46 2005 *************** *** 1,4 **** ! /* $NetBSD: ext2fs_bmap.c,v 1.15 2004/03/22 19:23:08 bouyer Exp $ */ /* * Copyright (c) 1989, 1991, 1993 --- 1,4 ---- ! /* $NetBSD: ext2fs_bmap.c,v 1.15.2.1 2005/05/11 13:43:46 riz Exp $ */ /* * Copyright (c) 1989, 1991, 1993 *************** *** 70,76 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: ext2fs_bmap.c,v 1.15 2004/03/22 19:23:08 bouyer Exp $"); #include #include --- 70,76 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: ext2fs_bmap.c,v 1.15.2.1 2005/05/11 13:43:46 riz Exp $"); #include #include *************** *** 225,230 **** --- 225,240 ---- xap->in_exists = 1; bp = getblk(vp, metalbn, mp->mnt_stat.f_iosize, 0, 0); + if (bp == NULL) { + + /* + * getblk() above returns NULL only iff we are + * pagedaemon. See the implementation of getblk + * for detail. + */ + + return (ENOMEM); + } if (bp->b_flags & (B_DONE | B_DELWRI)) { trace(TR_BREADHIT, pack(vp, size), metalbn); } Index: src/sys/ufs/ufs/ufs_bmap.c diff -c src/sys/ufs/ufs/ufs_bmap.c:1.28.2.2 src/sys/ufs/ufs/ufs_bmap.c:1.28.2.3 *** src/sys/ufs/ufs/ufs_bmap.c:1.28.2.2 Sat Sep 18 19:25:53 2004 --- src/sys/ufs/ufs/ufs_bmap.c Wed Apr 6 11:38:21 2005 *************** *** 1,4 **** ! /* $NetBSD: ufs_bmap.c,v 1.28.2.2 2004/09/18 19:25:53 he Exp $ */ /* * Copyright (c) 1989, 1991, 1993 --- 1,4 ---- ! /* $NetBSD: ufs_bmap.c,v 1.28.2.3 2005/04/06 11:38:21 tron Exp $ */ /* * Copyright (c) 1989, 1991, 1993 *************** *** 37,43 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: ufs_bmap.c,v 1.28.2.2 2004/09/18 19:25:53 he Exp $"); #include #include --- 37,43 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: ufs_bmap.c,v 1.28.2.3 2005/04/06 11:38:21 tron Exp $"); #include #include *************** *** 157,177 **** if (nump != NULL) *nump = 0; if (ip->i_ump->um_fstype == UFS1) ! *bnp = blkptrtodb(ump, ! (int32_t)ufs_rw32(ip->i_ffs1_db[bn], ! UFS_MPNEEDSWAP(vp->v_mount))); else ! *bnp = blkptrtodb(ump, ufs_rw64(ip->i_ffs2_db[bn], ! UFS_MPNEEDSWAP(vp->v_mount))); if (*bnp == 0) *bnp = -1; ! if (runp) { if (ip->i_ump->um_fstype == UFS1) { for (++bn; bn < NDADDR && *runp < maxrun && is_sequential(ump, ! (int32_t)ufs_rw32(ip->i_ffs1_db[bn - 1], UFS_MPNEEDSWAP(vp->v_mount)), ! (int32_t)ufs_rw32(ip->i_ffs1_db[bn], UFS_MPNEEDSWAP(vp->v_mount))); ++bn, ++*runp); } else { --- 157,177 ---- if (nump != NULL) *nump = 0; if (ip->i_ump->um_fstype == UFS1) ! daddr = ufs_rw32(ip->i_ffs1_db[bn], ! UFS_MPNEEDSWAP(vp->v_mount)); else ! daddr = ufs_rw64(ip->i_ffs2_db[bn], ! UFS_MPNEEDSWAP(vp->v_mount)); ! *bnp = blkptrtodb(ump, daddr); if (*bnp == 0) *bnp = -1; ! else if (runp) { if (ip->i_ump->um_fstype == UFS1) { for (++bn; bn < NDADDR && *runp < maxrun && is_sequential(ump, ! ufs_rw32(ip->i_ffs1_db[bn - 1], UFS_MPNEEDSWAP(vp->v_mount)), ! ufs_rw32(ip->i_ffs1_db[bn], UFS_MPNEEDSWAP(vp->v_mount))); ++bn, ++*runp); } else { *************** *** 197,203 **** /* Get disk address out of indirect block array */ if (ip->i_ump->um_fstype == UFS1) ! daddr = (int32_t)ufs_rw32(ip->i_ffs1_ib[xap->in_off], UFS_MPNEEDSWAP(vp->v_mount)); else daddr = ufs_rw64(ip->i_ffs2_ib[xap->in_off], --- 197,203 ---- /* Get disk address out of indirect block array */ if (ip->i_ump->um_fstype == UFS1) ! daddr = ufs_rw32(ip->i_ffs1_ib[xap->in_off], UFS_MPNEEDSWAP(vp->v_mount)); else daddr = ufs_rw64(ip->i_ffs2_ib[xap->in_off], *************** *** 252,276 **** } } if (ip->i_ump->um_fstype == UFS1) { ! daddr = (int32_t)ufs_rw32( ! ((int32_t *)bp->b_data)[xap->in_off], UFS_MPNEEDSWAP(mp)); ! if (num == 1 && runp) { for (bn = xap->in_off + 1; bn < MNINDIR(ump) && *runp < maxrun && is_sequential(ump, ! (int32_t)ufs_rw32( ! ((int32_t *)bp->b_data)[bn-1], UFS_MPNEEDSWAP(mp)), ! (int32_t)ufs_rw32( ! ((int32_t *)bp->b_data)[bn], UFS_MPNEEDSWAP(mp))); ++bn, ++*runp); } } else { daddr = ufs_rw64(((int64_t *)bp->b_data)[xap->in_off], UFS_MPNEEDSWAP(mp)); ! if (num == 1 && runp) { for (bn = xap->in_off + 1; bn < MNINDIR(ump) && *runp < maxrun && is_sequential(ump, --- 252,273 ---- } } if (ip->i_ump->um_fstype == UFS1) { ! daddr = ufs_rw32(((int32_t *)bp->b_data)[xap->in_off], UFS_MPNEEDSWAP(mp)); ! if (num == 1 && daddr && runp) { for (bn = xap->in_off + 1; bn < MNINDIR(ump) && *runp < maxrun && is_sequential(ump, ! ufs_rw32(((int32_t *)bp->b_data)[bn-1], UFS_MPNEEDSWAP(mp)), ! ufs_rw32(((int32_t *)bp->b_data)[bn], UFS_MPNEEDSWAP(mp))); ++bn, ++*runp); } } else { daddr = ufs_rw64(((int64_t *)bp->b_data)[xap->in_off], UFS_MPNEEDSWAP(mp)); ! if (num == 1 && daddr && runp) { for (bn = xap->in_off + 1; bn < MNINDIR(ump) && *runp < maxrun && is_sequential(ump, *************** *** 285,292 **** if (bp) brelse(bp); ! daddr = blkptrtodb(ump, daddr); ! *bnp = daddr == 0 ? -1 : daddr; return (0); } --- 282,290 ---- if (bp) brelse(bp); ! *bnp = blkptrtodb(ump, daddr); ! if (*bnp == 0) ! *bnp = -1; return (0); } Index: src/sys/uvm/uvm_amap.c diff -c src/sys/uvm/uvm_amap.c:1.53 src/sys/uvm/uvm_amap.c:1.53.2.1 *** src/sys/uvm/uvm_amap.c:1.53 Wed Mar 24 07:50:48 2004 --- src/sys/uvm/uvm_amap.c Wed Mar 16 12:11:08 2005 *************** *** 1,4 **** ! /* $NetBSD: uvm_amap.c,v 1.53 2004/03/24 07:50:48 junyoung Exp $ */ /* * --- 1,4 ---- ! /* $NetBSD: uvm_amap.c,v 1.53.2.1 2005/03/16 12:11:08 tron Exp $ */ /* * *************** *** 42,48 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: uvm_amap.c,v 1.53 2004/03/24 07:50:48 junyoung Exp $"); #undef UVM_AMAP_INLINE /* enable/disable amap inlines */ --- 42,48 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: uvm_amap.c,v 1.53.2.1 2005/03/16 12:11:08 tron Exp $"); #undef UVM_AMAP_INLINE /* enable/disable amap inlines */ *************** *** 220,225 **** --- 220,236 ---- free(amap->am_slots, M_UVMAMAP); fail1: pool_put(&uvm_amap_pool, amap); + + /* + * XXX hack to tell the pagedaemon how many pages we need, + * since we can need more than it would normally free. + */ + if (waitf == M_NOWAIT) { + extern int uvm_extrapages; + uvm_extrapages += ((sizeof(int) * 2 + + sizeof(struct vm_anon *)) * + totalslots) >> PAGE_SHIFT; + } return (NULL); } Index: src/sys/uvm/uvm_pdaemon.c diff -c src/sys/uvm/uvm_pdaemon.c:1.59.2.1 src/sys/uvm/uvm_pdaemon.c:1.59.2.2 *** src/sys/uvm/uvm_pdaemon.c:1.59.2.1 Fri Oct 8 03:25:21 2004 --- src/sys/uvm/uvm_pdaemon.c Wed Mar 16 12:11:02 2005 *************** *** 1,4 **** ! /* $NetBSD: uvm_pdaemon.c,v 1.59.2.1 2004/10/08 03:25:21 jmc Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. --- 1,4 ---- ! /* $NetBSD: uvm_pdaemon.c,v 1.59.2.2 2005/03/16 12:11:02 tron Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. *************** *** 71,77 **** */ #include ! __KERNEL_RCSID(0, "$NetBSD: uvm_pdaemon.c,v 1.59.2.1 2004/10/08 03:25:21 jmc Exp $"); #include "opt_uvmhist.h" --- 71,77 ---- */ #include ! __KERNEL_RCSID(0, "$NetBSD: uvm_pdaemon.c,v 1.59.2.2 2005/03/16 12:11:02 tron Exp $"); #include "opt_uvmhist.h" *************** *** 104,109 **** --- 104,114 ---- void uvmpd_tune(void); /* + * XXX hack to avoid hangs when large processes fork. + */ + int uvm_extrapages; + + /* * uvm_wait: wait (sleep) for the page daemon to free some pages * * => should be called with all locks released *************** *** 183,188 **** --- 188,196 ---- if (uvmexp.freetarg <= uvmexp.freemin) uvmexp.freetarg = uvmexp.freemin + 1; + uvmexp.freetarg += uvm_extrapages; + uvm_extrapages = 0; + /* uvmexp.inactarg: computed in main daemon loop */ uvmexp.wiredmax = uvmexp.npages / 3; *************** *** 198,203 **** --- 206,212 ---- uvm_pageout(void *arg) { int bufcnt, npages = 0; + int extrapages = 0; UVMHIST_FUNC("uvm_pageout"); UVMHIST_CALLED(pdhist); UVMHIST_LOG(pdhist,"", 0, 0, 0, 0); *************** *** 230,237 **** */ uvm_lock_pageq(); ! if (npages != uvmexp.npages) { /* check for new pages? */ npages = uvmexp.npages; uvmpd_tune(); } --- 239,247 ---- */ uvm_lock_pageq(); ! if (npages != uvmexp.npages || extrapages != uvm_extrapages) { npages = uvmexp.npages; + extrapages = uvm_extrapages; uvmpd_tune(); } Index: src/usr.bin/su/su.1 diff -c src/usr.bin/su/su.1:1.36.2.1 src/usr.bin/su/su.1:1.36.2.2 *** src/usr.bin/su/su.1:1.36.2.1 Thu Apr 29 04:13:18 2004 --- src/usr.bin/su/su.1 Mon Jul 18 03:45:41 2005 *************** *** 26,32 **** .\" SUCH DAMAGE. .\" .\" from: @(#)su.1 8.2 (Berkeley) 4/18/94 ! .\" $NetBSD: su.1,v 1.36.2.1 2004/04/29 04:13:18 jmc Exp $ .\" .Dd August 20, 2003 .Dt SU 1 --- 26,32 ---- .\" SUCH DAMAGE. .\" .\" from: @(#)su.1 8.2 (Berkeley) 4/18/94 ! .\" $NetBSD: su.1,v 1.36.2.2 2005/07/18 03:45:41 riz Exp $ .\" .Dd August 20, 2003 .Dt SU 1 *************** *** 66,71 **** --- 66,72 ---- S/Key is a Trademark of Bellcore. .Pp By default, the environment is unmodified with the exception of + .Ev LOGNAME , .Ev USER , .Ev HOME , .Ev SHELL , *************** *** 75,83 **** and .Ev SHELL are set to the target login's default values. .Ev USER ! is set to the target login, unless the target login has a user ID of 0, ! in which case it is unmodified. .Ev SU_FROM is set to the caller's login. The invoked shell is the target login's. --- 76,86 ---- and .Ev SHELL are set to the target login's default values. + .Ev LOGNAME + and .Ev USER ! are set to the target login, unless the target login has a user ID of 0, ! in which case they are unmodified. .Ev SU_FROM is set to the caller's login. The invoked shell is the target login's. *************** *** 121,126 **** --- 124,130 ---- .Ev SHELL , .Ev PATH , .Ev TERM , + .Ev LOGNAME , .Ev USER , and .Ev SU_FROM . *************** *** 129,136 **** and .Ev SU_FROM are modified as above. .Ev USER ! is set to the target login. .Ev PATH is set to the path specified in the .Pa /etc/login.conf --- 133,142 ---- and .Ev SU_FROM are modified as above. + .Ev LOGNAME + and .Ev USER ! are set to the target login. .Ev PATH is set to the path specified in the .Pa /etc/login.conf *************** *** 232,237 **** --- 238,247 ---- .It Ev HOME Default home directory of real user ID unless modified as specified above. + .It Ev LOGNAME + The user ID is always the effective ID (the target user ID) after an + .Nm + unless the user ID is 0 (root). .It Ev PATH Default search path of real user ID unless modified as specified above. .It Ev TERM Index: src/usr.bin/su/su.c diff -c src/usr.bin/su/su.c:1.58 src/usr.bin/su/su.c:1.58.2.1 *** src/usr.bin/su/su.c:1.58 Mon Jan 5 23:23:37 2004 --- src/usr.bin/su/su.c Mon Jul 18 03:45:40 2005 *************** *** 1,4 **** ! /* $NetBSD: su.c,v 1.58 2004/01/05 23:23:37 jmmv Exp $ */ /* * Copyright (c) 1988 The Regents of the University of California. --- 1,4 ---- ! /* $NetBSD: su.c,v 1.58.2.1 2005/07/18 03:45:40 riz Exp $ */ /* * Copyright (c) 1988 The Regents of the University of California. *************** *** 40,46 **** #if 0 static char sccsid[] = "@(#)su.c 8.3 (Berkeley) 4/2/94";*/ #else ! __RCSID("$NetBSD: su.c,v 1.58 2004/01/05 23:23:37 jmmv Exp $"); #endif #endif /* not lint */ --- 40,46 ---- #if 0 static char sccsid[] = "@(#)su.c 8.3 (Berkeley) 4/2/94";*/ #else ! __RCSID("$NetBSD: su.c,v 1.58.2.1 2005/07/18 03:45:40 riz Exp $"); #endif #endif /* not lint */ *************** *** 346,353 **** errx(1, "no directory"); } ! if (asthem || pwd->pw_uid) (void)setenv("USER", pwd->pw_name, 1); (void)setenv("HOME", pwd->pw_dir, 1); (void)setenv("SHELL", shell, 1); } --- 346,355 ---- errx(1, "no directory"); } ! if (asthem || pwd->pw_uid) { ! (void)setenv("LOGNAME", pwd->pw_name, 1); (void)setenv("USER", pwd->pw_name, 1); + } (void)setenv("HOME", pwd->pw_dir, 1); (void)setenv("SHELL", shell, 1); } Index: src/usr.bin/telnet/telnet.c diff -c src/usr.bin/telnet/telnet.c:1.28 src/usr.bin/telnet/telnet.c:1.28.2.1 *** src/usr.bin/telnet/telnet.c:1.28 Sat Mar 20 23:26:05 2004 --- src/usr.bin/telnet/telnet.c Fri Apr 8 10:44:32 2005 *************** *** 1,4 **** ! /* $NetBSD: telnet.c,v 1.28 2004/03/20 23:26:05 heas Exp $ */ /* * Copyright (c) 1988, 1990, 1993 --- 1,4 ---- ! /* $NetBSD: telnet.c,v 1.28.2.1 2005/04/08 10:44:32 he Exp $ */ /* * Copyright (c) 1988, 1990, 1993 *************** *** 34,40 **** #if 0 static char sccsid[] = "@(#)telnet.c 8.4 (Berkeley) 5/30/95"; #else ! __RCSID("$NetBSD: telnet.c,v 1.28 2004/03/20 23:26:05 heas Exp $"); #endif #endif /* not lint */ --- 34,40 ---- #if 0 static char sccsid[] = "@(#)telnet.c 8.4 (Berkeley) 5/30/95"; #else ! __RCSID("$NetBSD: telnet.c,v 1.28.2.1 2005/04/08 10:44:32 he Exp $"); #endif #endif /* not lint */ *************** *** 1440,1445 **** --- 1440,1447 ---- void slc_add_reply(unsigned int func, unsigned int flags, cc_t value) { + if ((slc_replyp - slc_reply) + 6 > sizeof(slc_reply)) + return; if ((*slc_replyp++ = func) == IAC) *slc_replyp++ = IAC; if ((*slc_replyp++ = flags) == IAC) *************** *** 1453,1463 **** { int len; - *slc_replyp++ = IAC; - *slc_replyp++ = SE; len = slc_replyp - slc_reply; ! if (len <= 6) return; if (NETROOM() > len) { ring_supply_data(&netoring, slc_reply, slc_replyp - slc_reply); printsub('>', &slc_reply[2], slc_replyp - slc_reply - 2); --- 1455,1466 ---- { int len; len = slc_replyp - slc_reply; ! if (len <= 4 || (len + 2 > sizeof(slc_reply))) return; + *slc_replyp++ = IAC; + *slc_replyp++ = SE; + len += 2; if (NETROOM() > len) { ring_supply_data(&netoring, slc_reply, slc_replyp - slc_reply); printsub('>', &slc_reply[2], slc_replyp - slc_reply - 2); *************** *** 1612,1617 **** --- 1615,1621 ---- env_opt_add(unsigned char *ep) { unsigned char *vp, c; + unsigned int len, olen, elen; if (opt_reply == NULL) /*XXX*/ return; /*XXX*/ *************** *** 1629,1641 **** return; } vp = env_getvalue(ep); ! if (opt_replyp + (vp ? strlen((char *)vp) : 0) + ! strlen((char *)ep) + 6 > opt_replyend) { - int len; unsigned char *p; ! opt_replyend += OPT_REPLY_SIZE; ! len = opt_replyend - opt_reply; p = (unsigned char *)realloc(opt_reply, len); if (p == NULL) free(opt_reply); --- 1633,1645 ---- return; } vp = env_getvalue(ep); ! elen = 2 * (vp ? strlen((char *)vp) : 0) + ! 2 * strlen((char *)ep) + 6; ! if ((opt_replyend - opt_replyp) < elen) { unsigned char *p; ! len = opt_replyend - opt_reply + elen; ! olen = opt_replyp - opt_reply; p = (unsigned char *)realloc(opt_reply, len); if (p == NULL) free(opt_reply); *************** *** 1645,1651 **** opt_reply = opt_replyp = opt_replyend = NULL; return; } ! opt_replyp = opt_reply + len - (opt_replyend - opt_replyp); opt_replyend = opt_reply + len; } if (opt_welldefined(ep)) --- 1649,1655 ---- opt_reply = opt_replyp = opt_replyend = NULL; return; } ! opt_replyp = opt_reply + olen; opt_replyend = opt_reply + len; } if (opt_welldefined(ep)) Index: src/usr.bin/vi/cl/cl_bsd.c diff -c src/usr.bin/vi/cl/cl_bsd.c:1.7 src/usr.bin/vi/cl/cl_bsd.c:1.7.4.2 *** src/usr.bin/vi/cl/cl_bsd.c:1.7 Tue Apr 9 01:47:30 2002 --- src/usr.bin/vi/cl/cl_bsd.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: cl_bsd.c,v 1.7 2002/04/09 01:47:30 thorpej Exp $ */ /*- * Copyright (c) 1995, 1996 --- 1,4 ---- ! /* $NetBSD: cl_bsd.c,v 1.7.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1995, 1996 Index: src/usr.bin/vi/cl/cl_funcs.c diff -c src/usr.bin/vi/cl/cl_funcs.c:1.7 src/usr.bin/vi/cl/cl_funcs.c:1.7.4.2 *** src/usr.bin/vi/cl/cl_funcs.c:1.7 Tue Apr 9 01:47:30 2002 --- src/usr.bin/vi/cl/cl_funcs.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: cl_funcs.c,v 1.7 2002/04/09 01:47:30 thorpej Exp $ */ /*- * Copyright (c) 1993, 1994 --- 1,4 ---- ! /* $NetBSD: cl_funcs.c,v 1.7.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1993, 1994 Index: src/usr.bin/vi/ex/ex.c diff -c src/usr.bin/vi/ex/ex.c:1.12 src/usr.bin/vi/ex/ex.c:1.12.4.2 *** src/usr.bin/vi/ex/ex.c:1.12 Tue Apr 9 01:47:32 2002 --- src/usr.bin/vi/ex/ex.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex.c,v 1.12 2002/04/09 01:47:32 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex.c,v 1.12.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_abbrev.c diff -c src/usr.bin/vi/ex/ex_abbrev.c:1.8 src/usr.bin/vi/ex/ex_abbrev.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_abbrev.c:1.8 Tue Apr 9 01:47:32 2002 --- src/usr.bin/vi/ex/ex_abbrev.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_abbrev.c,v 1.8 2002/04/09 01:47:32 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_abbrev.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_append.c diff -c src/usr.bin/vi/ex/ex_append.c:1.10 src/usr.bin/vi/ex/ex_append.c:1.10.2.2 *** src/usr.bin/vi/ex/ex_append.c:1.10 Fri Dec 6 03:24:42 2002 --- src/usr.bin/vi/ex/ex_append.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_append.c,v 1.10 2002/12/06 03:24:42 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_append.c,v 1.10.2.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_args.c diff -c src/usr.bin/vi/ex/ex_args.c:1.9 src/usr.bin/vi/ex/ex_args.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_args.c:1.9 Tue Apr 9 01:47:32 2002 --- src/usr.bin/vi/ex/ex_args.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_args.c,v 1.9 2002/04/09 01:47:32 thorpej Exp $ */ /*- * Copyright (c) 1991, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_args.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1991, 1993, 1994 Index: src/usr.bin/vi/ex/ex_argv.c diff -c src/usr.bin/vi/ex/ex_argv.c:1.10 src/usr.bin/vi/ex/ex_argv.c:1.10.4.2 *** src/usr.bin/vi/ex/ex_argv.c:1.10 Tue Apr 9 01:47:32 2002 --- src/usr.bin/vi/ex/ex_argv.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_argv.c,v 1.10 2002/04/09 01:47:32 thorpej Exp $ */ /*- * Copyright (c) 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_argv.c,v 1.10.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1993, 1994 Index: src/usr.bin/vi/ex/ex_at.c diff -c src/usr.bin/vi/ex/ex_at.c:1.9 src/usr.bin/vi/ex/ex_at.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_at.c:1.9 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_at.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_at.c,v 1.9 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_at.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_bang.c diff -c src/usr.bin/vi/ex/ex_bang.c:1.9 src/usr.bin/vi/ex/ex_bang.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_bang.c:1.9 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_bang.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_bang.c,v 1.9 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_bang.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_cd.c diff -c src/usr.bin/vi/ex/ex_cd.c:1.11 src/usr.bin/vi/ex/ex_cd.c:1.11.4.2 *** src/usr.bin/vi/ex/ex_cd.c:1.11 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_cd.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_cd.c,v 1.11 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_cd.c,v 1.11.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_cmd.c diff -c src/usr.bin/vi/ex/ex_cmd.c:1.5 src/usr.bin/vi/ex/ex_cmd.c:1.5.4.2 *** src/usr.bin/vi/ex/ex_cmd.c:1.5 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_cmd.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_cmd.c,v 1.5 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_cmd.c,v 1.5.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_cscope.c diff -c src/usr.bin/vi/ex/ex_cscope.c:1.7 src/usr.bin/vi/ex/ex_cscope.c:1.7.2.2 *** src/usr.bin/vi/ex/ex_cscope.c:1.7 Mon Jan 20 16:10:51 2003 --- src/usr.bin/vi/ex/ex_cscope.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_cscope.c,v 1.7 2003/01/20 16:10:51 aymeric Exp $ */ /*- * Copyright (c) 1994, 1996 --- 1,4 ---- ! /* $NetBSD: ex_cscope.c,v 1.7.2.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1994, 1996 Index: src/usr.bin/vi/ex/ex_delete.c diff -c src/usr.bin/vi/ex/ex_delete.c:1.9 src/usr.bin/vi/ex/ex_delete.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_delete.c:1.9 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_delete.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_delete.c,v 1.9 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_delete.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_display.c diff -c src/usr.bin/vi/ex/ex_display.c:1.8 src/usr.bin/vi/ex/ex_display.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_display.c:1.8 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_display.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_display.c,v 1.8 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_display.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_edit.c diff -c src/usr.bin/vi/ex/ex_edit.c:1.8 src/usr.bin/vi/ex/ex_edit.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_edit.c:1.8 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_edit.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_edit.c,v 1.8 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_edit.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_equal.c diff -c src/usr.bin/vi/ex/ex_equal.c:1.10 src/usr.bin/vi/ex/ex_equal.c:1.10.4.2 *** src/usr.bin/vi/ex/ex_equal.c:1.10 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_equal.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_equal.c,v 1.10 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_equal.c,v 1.10.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_file.c diff -c src/usr.bin/vi/ex/ex_file.c:1.9 src/usr.bin/vi/ex/ex_file.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_file.c:1.9 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_file.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_file.c,v 1.9 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_file.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_filter.c diff -c src/usr.bin/vi/ex/ex_filter.c:1.4 src/usr.bin/vi/ex/ex_filter.c:1.4.4.2 *** src/usr.bin/vi/ex/ex_filter.c:1.4 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_filter.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_filter.c,v 1.4 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1991, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_filter.c,v 1.4.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1991, 1993, 1994 Index: src/usr.bin/vi/ex/ex_global.c diff -c src/usr.bin/vi/ex/ex_global.c:1.10 src/usr.bin/vi/ex/ex_global.c:1.10.4.2 *** src/usr.bin/vi/ex/ex_global.c:1.10 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_global.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_global.c,v 1.10 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_global.c,v 1.10.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_init.c diff -c src/usr.bin/vi/ex/ex_init.c:1.10 src/usr.bin/vi/ex/ex_init.c:1.10.2.2 *** src/usr.bin/vi/ex/ex_init.c:1.10 Mon Jan 6 20:30:41 2003 --- src/usr.bin/vi/ex/ex_init.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_init.c,v 1.10 2003/01/06 20:30:41 wiz Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_init.c,v 1.10.2.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_join.c diff -c src/usr.bin/vi/ex/ex_join.c:1.9 src/usr.bin/vi/ex/ex_join.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_join.c:1.9 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_join.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_join.c,v 1.9 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_join.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_map.c diff -c src/usr.bin/vi/ex/ex_map.c:1.8 src/usr.bin/vi/ex/ex_map.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_map.c:1.8 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_map.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_map.c,v 1.8 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_map.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_mark.c diff -c src/usr.bin/vi/ex/ex_mark.c:1.8 src/usr.bin/vi/ex/ex_mark.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_mark.c:1.8 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_mark.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_mark.c,v 1.8 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_mark.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_mkexrc.c diff -c src/usr.bin/vi/ex/ex_mkexrc.c:1.8 src/usr.bin/vi/ex/ex_mkexrc.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_mkexrc.c:1.8 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_mkexrc.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_mkexrc.c,v 1.8 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_mkexrc.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_move.c diff -c src/usr.bin/vi/ex/ex_move.c:1.10 src/usr.bin/vi/ex/ex_move.c:1.10.4.2 *** src/usr.bin/vi/ex/ex_move.c:1.10 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_move.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_move.c,v 1.10 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_move.c,v 1.10.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_open.c diff -c src/usr.bin/vi/ex/ex_open.c:1.8 src/usr.bin/vi/ex/ex_open.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_open.c:1.8 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_open.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_open.c,v 1.8 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_open.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1993, 1994 Index: src/usr.bin/vi/ex/ex_perl.c diff -c src/usr.bin/vi/ex/ex_perl.c:1.4 src/usr.bin/vi/ex/ex_perl.c:1.4.4.2 *** src/usr.bin/vi/ex/ex_perl.c:1.4 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_perl.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_perl.c,v 1.4 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_perl.c,v 1.4.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_preserve.c diff -c src/usr.bin/vi/ex/ex_preserve.c:1.8 src/usr.bin/vi/ex/ex_preserve.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_preserve.c:1.8 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_preserve.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_preserve.c,v 1.8 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_preserve.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1993, 1994 Index: src/usr.bin/vi/ex/ex_print.c diff -c src/usr.bin/vi/ex/ex_print.c:1.10 src/usr.bin/vi/ex/ex_print.c:1.10.4.2 *** src/usr.bin/vi/ex/ex_print.c:1.10 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_print.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_print.c,v 1.10 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_print.c,v 1.10.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_put.c diff -c src/usr.bin/vi/ex/ex_put.c:1.8 src/usr.bin/vi/ex/ex_put.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_put.c:1.8 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_put.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_put.c,v 1.8 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_put.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_quit.c diff -c src/usr.bin/vi/ex/ex_quit.c:1.3 src/usr.bin/vi/ex/ex_quit.c:1.3.4.2 *** src/usr.bin/vi/ex/ex_quit.c:1.3 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_quit.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_quit.c,v 1.3 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_quit.c,v 1.3.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_read.c diff -c src/usr.bin/vi/ex/ex_read.c:1.11 src/usr.bin/vi/ex/ex_read.c:1.11.4.2 *** src/usr.bin/vi/ex/ex_read.c:1.11 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_read.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_read.c,v 1.11 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_read.c,v 1.11.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_screen.c diff -c src/usr.bin/vi/ex/ex_screen.c:1.9 src/usr.bin/vi/ex/ex_screen.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_screen.c:1.9 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_screen.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_screen.c,v 1.9 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_screen.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1993, 1994 Index: src/usr.bin/vi/ex/ex_script.c diff -c src/usr.bin/vi/ex/ex_script.c:1.9 src/usr.bin/vi/ex/ex_script.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_script.c:1.9 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_script.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_script.c,v 1.9 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_script.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_set.c diff -c src/usr.bin/vi/ex/ex_set.c:1.8 src/usr.bin/vi/ex/ex_set.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_set.c:1.8 Tue Apr 9 01:47:33 2002 --- src/usr.bin/vi/ex/ex_set.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_set.c,v 1.8 2002/04/09 01:47:33 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_set.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_shell.c diff -c src/usr.bin/vi/ex/ex_shell.c:1.12 src/usr.bin/vi/ex/ex_shell.c:1.12.4.2 *** src/usr.bin/vi/ex/ex_shell.c:1.12 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_shell.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_shell.c,v 1.12 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_shell.c,v 1.12.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_shift.c diff -c src/usr.bin/vi/ex/ex_shift.c:1.9 src/usr.bin/vi/ex/ex_shift.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_shift.c:1.9 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_shift.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_shift.c,v 1.9 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_shift.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_source.c diff -c src/usr.bin/vi/ex/ex_source.c:1.9 src/usr.bin/vi/ex/ex_source.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_source.c:1.9 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_source.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_source.c,v 1.9 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_source.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_stop.c diff -c src/usr.bin/vi/ex/ex_stop.c:1.8 src/usr.bin/vi/ex/ex_stop.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_stop.c:1.8 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_stop.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_stop.c,v 1.8 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_stop.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1993, 1994 Index: src/usr.bin/vi/ex/ex_subst.c diff -c src/usr.bin/vi/ex/ex_subst.c:1.15 src/usr.bin/vi/ex/ex_subst.c:1.15.2.2 *** src/usr.bin/vi/ex/ex_subst.c:1.15 Fri Feb 13 17:56:18 2004 --- src/usr.bin/vi/ex/ex_subst.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_subst.c,v 1.15 2004/02/13 17:56:18 wiz Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_subst.c,v 1.15.2.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_tag.c diff -c src/usr.bin/vi/ex/ex_tag.c:1.14 src/usr.bin/vi/ex/ex_tag.c:1.14.2.2 *** src/usr.bin/vi/ex/ex_tag.c:1.14 Tue Sep 9 21:03:15 2003 --- src/usr.bin/vi/ex/ex_tag.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_tag.c,v 1.14 2003/09/09 21:03:15 erh Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_tag.c,v 1.14.2.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_tcl.c diff -c src/usr.bin/vi/ex/ex_tcl.c:1.4 src/usr.bin/vi/ex/ex_tcl.c:1.4.4.2 *** src/usr.bin/vi/ex/ex_tcl.c:1.4 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_tcl.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_tcl.c,v 1.4 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_tcl.c,v 1.4.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_txt.c diff -c src/usr.bin/vi/ex/ex_txt.c:1.6 src/usr.bin/vi/ex/ex_txt.c:1.6.4.2 *** src/usr.bin/vi/ex/ex_txt.c:1.6 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_txt.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_txt.c,v 1.6 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_txt.c,v 1.6.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_undo.c diff -c src/usr.bin/vi/ex/ex_undo.c:1.8 src/usr.bin/vi/ex/ex_undo.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_undo.c:1.8 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_undo.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_undo.c,v 1.8 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_undo.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_usage.c diff -c src/usr.bin/vi/ex/ex_usage.c:1.8 src/usr.bin/vi/ex/ex_usage.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_usage.c:1.8 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_usage.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_usage.c,v 1.8 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_usage.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_util.c diff -c src/usr.bin/vi/ex/ex_util.c:1.11 src/usr.bin/vi/ex/ex_util.c:1.11.4.2 *** src/usr.bin/vi/ex/ex_util.c:1.11 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_util.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_util.c,v 1.11 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_util.c,v 1.11.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1993, 1994 Index: src/usr.bin/vi/ex/ex_version.c diff -c src/usr.bin/vi/ex/ex_version.c:1.9 src/usr.bin/vi/ex/ex_version.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_version.c:1.9 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_version.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_version.c,v 1.9 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1991, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_version.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1991, 1993, 1994 Index: src/usr.bin/vi/ex/ex_visual.c diff -c src/usr.bin/vi/ex/ex_visual.c:1.10 src/usr.bin/vi/ex/ex_visual.c:1.10.4.2 *** src/usr.bin/vi/ex/ex_visual.c:1.10 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_visual.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_visual.c,v 1.10 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_visual.c,v 1.10.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_write.c diff -c src/usr.bin/vi/ex/ex_write.c:1.9 src/usr.bin/vi/ex/ex_write.c:1.9.4.2 *** src/usr.bin/vi/ex/ex_write.c:1.9 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_write.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_write.c,v 1.9 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_write.c,v 1.9.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_yank.c diff -c src/usr.bin/vi/ex/ex_yank.c:1.8 src/usr.bin/vi/ex/ex_yank.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_yank.c:1.8 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_yank.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_yank.c,v 1.8 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_yank.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1992, 1993, 1994 Index: src/usr.bin/vi/ex/ex_z.c diff -c src/usr.bin/vi/ex/ex_z.c:1.8 src/usr.bin/vi/ex/ex_z.c:1.8.4.2 *** src/usr.bin/vi/ex/ex_z.c:1.8 Tue Apr 9 01:47:34 2002 --- src/usr.bin/vi/ex/ex_z.c Sat Feb 12 12:46:26 2005 *************** *** 1,4 **** ! /* $NetBSD: ex_z.c,v 1.8 2002/04/09 01:47:34 thorpej Exp $ */ /*- * Copyright (c) 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ex_z.c,v 1.8.4.2 2005/02/12 12:46:26 aymeric Exp $ */ /*- * Copyright (c) 1993, 1994 Index: src/usr.sbin/amd/libamu/mkconf diff -c src/usr.sbin/amd/libamu/mkconf:1.3 src/usr.sbin/amd/libamu/mkconf:1.3.2.1 *** src/usr.sbin/amd/libamu/mkconf:1.3 Sun Jan 11 18:37:35 2004 --- src/usr.sbin/amd/libamu/mkconf Sat Aug 13 23:14:48 2005 *************** *** 1,4 **** ! # $NetBSD: mkconf,v 1.3 2004/01/11 18:37:35 christos Exp $ # # mkconf # Generate local configuration parameters for amd --- 1,4 ---- ! # $NetBSD: mkconf,v 1.3.2.1 2005/08/13 23:14:48 riz Exp $ # # mkconf # Generate local configuration parameters for amd *************** *** 8,17 **** /* Automatically generated file, do not edit! */ /* Define name of host machine's architecture (eg. sun4) */ ! #define HOST_ARCH "`uname -m`" /* Define name of host machine's cpu (eg. sparc) */ ! #define HOST_CPU "`uname -p`" /* Define the header version of (linux) hosts (eg. 2.2.10) */ #define HOST_HEADER_VERSION "$1" --- 8,17 ---- /* Automatically generated file, do not edit! */ /* Define name of host machine's architecture (eg. sun4) */ ! #define HOST_ARCH MACHINE /* Define name of host machine's cpu (eg. sparc) */ ! #define HOST_CPU MACHINE_ARCH /* Define the header version of (linux) hosts (eg. 2.2.10) */ #define HOST_HEADER_VERSION "$1" Index: src/usr.sbin/user/user.c diff -c src/usr.sbin/user/user.c:1.75 src/usr.sbin/user/user.c:1.75.2.1 *** src/usr.sbin/user/user.c:1.75 Wed Jan 14 09:35:33 2004 --- src/usr.sbin/user/user.c Tue Jul 5 19:06:57 2005 *************** *** 1,4 **** ! /* $NetBSD: user.c,v 1.75 2004/01/14 09:35:33 agc Exp $ */ /* * Copyright (c) 1999 Alistair G. Crooks. All rights reserved. --- 1,4 ---- ! /* $NetBSD: user.c,v 1.75.2.1 2005/07/05 19:06:57 riz Exp $ */ /* * Copyright (c) 1999 Alistair G. Crooks. All rights reserved. *************** *** 35,41 **** #ifndef lint __COPYRIGHT("@(#) Copyright (c) 1999 \ The NetBSD Foundation, Inc. All rights reserved."); ! __RCSID("$NetBSD: user.c,v 1.75 2004/01/14 09:35:33 agc Exp $"); #endif #include --- 35,41 ---- #ifndef lint __COPYRIGHT("@(#) Copyright (c) 1999 \ The NetBSD Foundation, Inc. All rights reserved."); ! __RCSID("$NetBSD: user.c,v 1.75.2.1 2005/07/05 19:06:57 riz Exp $"); #endif #include *************** *** 1977,1982 **** --- 1977,1985 ---- if (argc != 1) { usermgmt_usage("groupdel"); } + if (getgrnam(*argv) == NULL) { + errx(EXIT_FAILURE, "No such group `%s'", *argv); + } checkeuid(); openlog("groupdel", LOG_PID, LOG_USER); if (!modify_gid(*argv, NULL)) { *************** *** 2044,2050 **** err(EXIT_FAILURE, "Duplicate which gid?"); } if ((grp = getgrnam(*argv)) == NULL) { ! err(EXIT_FAILURE, "can't find group `%s' to modify", *argv); } if (!is_local(*argv, _PATH_GROUP)) { errx(EXIT_FAILURE, "Group `%s' must be a local group", *argv); --- 2047,2053 ---- err(EXIT_FAILURE, "Duplicate which gid?"); } if ((grp = getgrnam(*argv)) == NULL) { ! errx(EXIT_FAILURE, "can't find group `%s' to modify", *argv); } if (!is_local(*argv, _PATH_GROUP)) { errx(EXIT_FAILURE, "Group `%s' must be a local group", *argv); Index: src/x11/Xserver/hw/xfree86/bin/kbd_mode/Makefile diff -c src/x11/Xserver/hw/xfree86/bin/kbd_mode/Makefile:1.1 src/x11/Xserver/hw/xfree86/bin/kbd_mode/Makefile:1.1.2.2 *** src/x11/Xserver/hw/xfree86/bin/kbd_mode/Makefile:1.1 Fri Dec 26 05:23:15 2003 --- src/x11/Xserver/hw/xfree86/bin/kbd_mode/Makefile Mon Nov 29 18:34:15 2004 *************** *** 1,4 **** ! # $NetBSD: Makefile,v 1.1 2003/12/26 05:23:15 rtr Exp $ .include --- 1,4 ---- ! # $NetBSD: Makefile,v 1.1.2.2 2004/11/29 18:34:15 jmc Exp $ .include Index: src/x11/Xserver/hw/xfree86/bin/xf86cfg/Makefile diff -c src/x11/Xserver/hw/xfree86/bin/xf86cfg/Makefile:1.4 src/x11/Xserver/hw/xfree86/bin/xf86cfg/Makefile:1.4.2.2 *** src/x11/Xserver/hw/xfree86/bin/xf86cfg/Makefile:1.4 Sun Mar 28 15:19:30 2004 --- src/x11/Xserver/hw/xfree86/bin/xf86cfg/Makefile Mon Nov 29 18:34:15 2004 *************** *** 1,4 **** ! # $NetBSD: Makefile,v 1.4 2004/03/28 15:19:30 chris Exp $ .include --- 1,4 ---- ! # $NetBSD: Makefile,v 1.4.2.2 2004/11/29 18:34:15 jmc Exp $ .include Index: src/x11/Xserver/hw/xfree86/bin/xf86config/Makefile diff -c src/x11/Xserver/hw/xfree86/bin/xf86config/Makefile:1.4 src/x11/Xserver/hw/xfree86/bin/xf86config/Makefile:1.4.2.2 *** src/x11/Xserver/hw/xfree86/bin/xf86config/Makefile:1.4 Wed Mar 17 23:19:48 2004 --- src/x11/Xserver/hw/xfree86/bin/xf86config/Makefile Mon Nov 29 18:34:15 2004 *************** *** 1,4 **** ! # $NetBSD: Makefile,v 1.4 2004/03/17 23:19:48 rtr Exp $ .include --- 1,4 ---- ! # $NetBSD: Makefile,v 1.4.2.2 2004/11/29 18:34:15 jmc Exp $ .include Index: src/x11/Xserver/hw/xfree86/xf86/Makefile diff -c src/x11/Xserver/hw/xfree86/xf86/Makefile:1.5 src/x11/Xserver/hw/xfree86/xf86/Makefile:1.5.2.2 *** src/x11/Xserver/hw/xfree86/xf86/Makefile:1.5 Sat Mar 6 03:31:08 2004 --- src/x11/Xserver/hw/xfree86/xf86/Makefile Mon Nov 29 18:34:15 2004 *************** *** 1,4 **** ! # $NetBSD: Makefile,v 1.5 2004/03/06 03:31:08 rtr Exp $ .include # for HOST_SH --- 1,4 ---- ! # $NetBSD: Makefile,v 1.5.2.2 2004/11/29 18:34:15 jmc Exp $ .include # for HOST_SH Index: src/x11/Xserver/hw/xfree86/xf86_os/Makefile diff -c src/x11/Xserver/hw/xfree86/xf86_os/Makefile:1.7.2.1 src/x11/Xserver/hw/xfree86/xf86_os/Makefile:1.7.2.3 *** src/x11/Xserver/hw/xfree86/xf86_os/Makefile:1.7.2.1 Tue May 11 13:25:26 2004 --- src/x11/Xserver/hw/xfree86/xf86_os/Makefile Mon Nov 29 18:34:15 2004 *************** *** 1,4 **** ! # $NetBSD: Makefile,v 1.7.2.1 2004/05/11 13:25:26 tron Exp $ .include "../../../Makefile.serverlib" --- 1,4 ---- ! # $NetBSD: Makefile,v 1.7.2.3 2004/11/29 18:34:15 jmc Exp $ .include "../../../Makefile.serverlib" Index: src/x11/bin/xdm/config/Makefile diff -c src/x11/bin/xdm/config/Makefile:1.5.2.2 src/x11/bin/xdm/config/Makefile:1.5.2.5 *** src/x11/bin/xdm/config/Makefile:1.5.2.2 Sun Jun 27 13:15:00 2004 --- src/x11/bin/xdm/config/Makefile Sat Jun 18 04:02:39 2005 *************** *** 1,4 **** ! # $NetBSD: Makefile,v 1.5.2.2 2004/06/27 13:15:00 he Exp $ .include --- 1,4 ---- ! # $NetBSD: Makefile,v 1.5.2.5 2005/06/18 04:02:39 riz Exp $ .include *************** *** 26,31 **** --- 26,36 ---- FILESDIR= ${X11LIBDIR}/xdm FILESDIR_XFree86.xpm= ${X11LIBDIR}/xdm/pixmaps FILESDIR_XFree86bw.xpm= ${X11LIBDIR}/xdm/pixmaps + FILESMODE_GiveConsole= ${BINMODE} + FILESMODE_TakeConsole= ${BINMODE} + FILESMODE_Xsetup_0= ${BINMODE} + FILESMODE_Xsession= ${BINMODE} + FILESMODE_Xwilling= ${BINMODE} SYMLINKS= Xservers.ws ${X11LIBDIR}/xdm/Xservers Index: xsrc/xfree/xc/config/cf/NetBSD.cf diff -c xsrc/xfree/xc/config/cf/NetBSD.cf:1.66.2.1 xsrc/xfree/xc/config/cf/NetBSD.cf:1.66.2.2 *** xsrc/xfree/xc/config/cf/NetBSD.cf:1.66.2.1 Mon Apr 12 05:17:56 2004 --- xsrc/xfree/xc/config/cf/NetBSD.cf Tue Sep 13 11:33:44 2005 *************** *** 514,522 **** file.0:: file.$(MANNEWSUFFIX) @@\ @if [ -f file.$(MANNEWSUFFIX) ]; \ @@\ then \ @@\ ! cat file.$(MANNEWSUFFIX) | $(NEQN) | $(TBL) | $(NROFF) $(MANMACROS) | $(COL) >/tmp/$$$$.man; \ @@\ ! cp /tmp/$$$$.man file.0; \ @@\ ! $(RM) /tmp/$$$$.man; \ @@\ fi @@\ @@\ install.man:: @@\ --- 514,520 ---- file.0:: file.$(MANNEWSUFFIX) @@\ @if [ -f file.$(MANNEWSUFFIX) ]; \ @@\ then \ @@\ ! cat file.$(MANNEWSUFFIX) | $(NEQN) | $(TBL) | $(NROFF) $(MANMACROS) | $(COL) > file.0; \ @@\ fi @@\ @@\ install.man:: @@\ Index: xsrc/xfree/xc/extras/Xpm/lib/Attrib.c diff -c xsrc/xfree/xc/extras/Xpm/lib/Attrib.c:1.1.1.1.4.2 xsrc/xfree/xc/extras/Xpm/lib/Attrib.c:1.1.1.1.4.3 *** xsrc/xfree/xc/extras/Xpm/lib/Attrib.c:1.1.1.1.4.2 Sun Sep 19 15:45:11 2004 --- xsrc/xfree/xc/extras/Xpm/lib/Attrib.c Wed Mar 16 15:18:46 2005 *************** *** 32,44 **** * Developed by Arnaud Le Hors * \*****************************************************************************/ #include "XpmI.h" /* 3.2 backward compatibility code */ LFUNC(CreateOldColorTable, int, (XpmColor *ct, unsigned int ncolors, XpmColor ***oldct)); ! LFUNC(FreeOldColorTable, void, (XpmColor **colorTable, int ncolors)); /* * Create a colortable compatible with the old style colortable --- 32,46 ---- * Developed by Arnaud Le Hors * \*****************************************************************************/ + /* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" /* 3.2 backward compatibility code */ LFUNC(CreateOldColorTable, int, (XpmColor *ct, unsigned int ncolors, XpmColor ***oldct)); ! LFUNC(FreeOldColorTable, void, (XpmColor **colorTable, unsigned int ncolors)); /* * Create a colortable compatible with the old style colortable *************** *** 50,56 **** XpmColor ***oldct; { XpmColor **colorTable, **color; ! int a; if (ncolors >= UINT_MAX / sizeof(XpmColor *)) return XpmNoMemory; --- 52,58 ---- XpmColor ***oldct; { XpmColor **colorTable, **color; ! unsigned int a; if (ncolors >= UINT_MAX / sizeof(XpmColor *)) return XpmNoMemory; *************** *** 69,77 **** static void FreeOldColorTable(colorTable, ncolors) XpmColor **colorTable; ! int ncolors; { ! int a, b; XpmColor **color; char **sptr; --- 71,79 ---- static void FreeOldColorTable(colorTable, ncolors) XpmColor **colorTable; ! unsigned int ncolors; { ! unsigned int a, b; XpmColor **color; char **sptr; *************** *** 122,128 **** XpmExtension *ext; char **sptr; ! if (extensions) { for (i = 0, ext = extensions; i < nextensions; i++, ext++) { if (ext->name) XpmFree(ext->name); --- 124,130 ---- XpmExtension *ext; char **sptr; ! if (extensions && nextensions > 0) { for (i = 0, ext = extensions; i < nextensions; i++, ext++) { if (ext->name) XpmFree(ext->name); Index: xsrc/xfree/xc/extras/Xpm/lib/CrBufFrI.c diff -c xsrc/xfree/xc/extras/Xpm/lib/CrBufFrI.c:1.1.1.2.4.1 xsrc/xfree/xc/extras/Xpm/lib/CrBufFrI.c:1.1.1.2.4.2 *** xsrc/xfree/xc/extras/Xpm/lib/CrBufFrI.c:1.1.1.2.4.1 Fri Sep 17 03:58:51 2004 --- xsrc/xfree/xc/extras/Xpm/lib/CrBufFrI.c Wed Mar 16 15:19:03 2005 *************** *** 31,36 **** --- 31,39 ---- * * * Developed by Arnaud Le Hors * \*****************************************************************************/ + + /* October 2004, source code review by Thomas Biege */ + /* $XFree86$ */ #include "XpmI.h" *************** *** 39,53 **** unsigned int *used_size, XpmColor *colors, unsigned int ncolors, unsigned int cpp)); ! LFUNC(WritePixels, void, (char *dataptr, unsigned int *used_size, unsigned int width, unsigned int height, unsigned int cpp, unsigned int *pixels, XpmColor *colors)); ! LFUNC(WriteExtensions, void, (char *dataptr, unsigned int *used_size, XpmExtension *ext, unsigned int num)); ! LFUNC(ExtensionsSize, int, (XpmExtension *ext, unsigned int num)); LFUNC(CommentsSize, int, (XpmInfo *info)); int --- 42,58 ---- unsigned int *used_size, XpmColor *colors, unsigned int ncolors, unsigned int cpp)); ! LFUNC(WritePixels, void, (char *dataptr, unsigned int data_size, ! unsigned int *used_size, unsigned int width, unsigned int height, unsigned int cpp, unsigned int *pixels, XpmColor *colors)); ! LFUNC(WriteExtensions, void, (char *dataptr, unsigned int data_size, ! unsigned int *used_size, XpmExtension *ext, unsigned int num)); ! LFUNC(ExtensionsSize, unsigned int, (XpmExtension *ext, unsigned int num)); LFUNC(CommentsSize, int, (XpmInfo *info)); int *************** *** 90,99 **** #undef RETURN #define RETURN(status) \ { \ ErrorStatus = status; \ goto error; \ ! } int XpmCreateBufferFromXpmImage(buffer_return, image, info) --- 95,105 ---- #undef RETURN #define RETURN(status) \ + do \ { \ ErrorStatus = status; \ goto error; \ ! }while(0) int XpmCreateBufferFromXpmImage(buffer_return, image, info) *************** *** 107,113 **** unsigned int cmts, extensions, ext_size = 0; unsigned int l, cmt_size = 0; char *ptr = NULL, *p; ! unsigned int ptr_size, used_size; *buffer_return = NULL; --- 113,119 ---- unsigned int cmts, extensions, ext_size = 0; unsigned int l, cmt_size = 0; char *ptr = NULL, *p; ! unsigned int ptr_size, used_size, tmp; *buffer_return = NULL; *************** *** 129,135 **** #ifdef VOID_SPRINTF used_size = strlen(buf); #endif ! ptr_size = used_size + ext_size + cmt_size + 1; ptr = (char *) XpmMalloc(ptr_size); if (!ptr) return XpmNoMemory; --- 135,147 ---- #ifdef VOID_SPRINTF used_size = strlen(buf); #endif ! ptr_size = used_size + ext_size + cmt_size + 1; /* ptr_size can't be 0 */ ! if(ptr_size <= used_size || ! ptr_size <= ext_size || ! ptr_size <= cmt_size) ! { ! return XpmNoMemory; ! } ptr = (char *) XpmMalloc(ptr_size); if (!ptr) return XpmNoMemory; *************** *** 140,146 **** #ifndef VOID_SPRINTF used_size += #endif ! sprintf(ptr + used_size, "/*%s*/\n", info->hints_cmt); #ifdef VOID_SPRINTF used_size += strlen(info->hints_cmt) + 5; #endif --- 152,158 ---- #ifndef VOID_SPRINTF used_size += #endif ! snprintf(ptr + used_size, ptr_size-used_size, "/*%s*/\n", info->hints_cmt); #ifdef VOID_SPRINTF used_size += strlen(info->hints_cmt) + 5; #endif *************** *** 158,164 **** #ifndef VOID_SPRINTF l += #endif ! sprintf(buf + l, " %d %d", info->x_hotspot, info->y_hotspot); #ifdef VOID_SPRINTF l = strlen(buf); #endif --- 170,176 ---- #ifndef VOID_SPRINTF l += #endif ! snprintf(buf + l, sizeof(buf)-l, " %d %d", info->x_hotspot, info->y_hotspot); #ifdef VOID_SPRINTF l = strlen(buf); #endif *************** *** 180,185 **** --- 192,199 ---- l = strlen(buf); #endif ptr_size += l; + if(ptr_size <= l) + RETURN(XpmNoMemory); p = (char *) XpmRealloc(ptr, ptr_size); if (!p) RETURN(XpmNoMemory); *************** *** 192,198 **** #ifndef VOID_SPRINTF used_size += #endif ! sprintf(ptr + used_size, "/*%s*/\n", info->colors_cmt); #ifdef VOID_SPRINTF used_size += strlen(info->colors_cmt) + 5; #endif --- 206,212 ---- #ifndef VOID_SPRINTF used_size += #endif ! snprintf(ptr + used_size, ptr_size-used_size, "/*%s*/\n", info->colors_cmt); #ifdef VOID_SPRINTF used_size += strlen(info->colors_cmt) + 5; #endif *************** *** 208,214 **** * 4 = 1 (for '"') + 3 (for '",\n') * 1 = - 2 (because the last line does not end with ',\n') + 3 (for '};\n') */ ! ptr_size += image->height * (image->width * image->cpp + 4) + 1; p = (char *) XpmRealloc(ptr, ptr_size); if (!p) --- 222,233 ---- * 4 = 1 (for '"') + 3 (for '",\n') * 1 = - 2 (because the last line does not end with ',\n') + 3 (for '};\n') */ ! if(image->width > UINT_MAX / image->cpp || ! (tmp = image->width * image->cpp + 4) <= 4 || ! image->height > UINT_MAX / tmp || ! (tmp = image->height * tmp + 1) <= 1 || ! (ptr_size += tmp) <= tmp) ! RETURN(XpmNoMemory); p = (char *) XpmRealloc(ptr, ptr_size); if (!p) *************** *** 220,236 **** #ifndef VOID_SPRINTF used_size += #endif ! sprintf(ptr + used_size, "/*%s*/\n", info->pixels_cmt); #ifdef VOID_SPRINTF used_size += strlen(info->pixels_cmt) + 5; #endif } ! WritePixels(ptr + used_size, &used_size, image->width, image->height, image->cpp, image->data, image->colorTable); /* print extensions */ if (extensions) ! WriteExtensions(ptr + used_size, &used_size, info->extensions, info->nextensions); /* close the array */ --- 239,255 ---- #ifndef VOID_SPRINTF used_size += #endif ! snprintf(ptr + used_size, ptr_size-used_size, "/*%s*/\n", info->pixels_cmt); #ifdef VOID_SPRINTF used_size += strlen(info->pixels_cmt) + 5; #endif } ! WritePixels(ptr + used_size, ptr_size - used_size, &used_size, image->width, image->height, image->cpp, image->data, image->colorTable); /* print extensions */ if (extensions) ! WriteExtensions(ptr + used_size, ptr_size-used_size, &used_size, info->extensions, info->nextensions); /* close the array */ *************** *** 247,252 **** --- 266,272 ---- return (ErrorStatus); } + static int WriteColors(dataptr, data_size, used_size, colors, ncolors, cpp) char **dataptr; *************** *** 256,262 **** unsigned int ncolors; unsigned int cpp; { ! char buf[BUFSIZ]; unsigned int a, key, l; char *s, *s2; char **defaults; --- 276,282 ---- unsigned int ncolors; unsigned int cpp; { ! char buf[BUFSIZ] = {0}; unsigned int a, key, l; char *s, *s2; char **defaults; *************** *** 266,271 **** --- 286,293 ---- defaults = (char **) colors; s = buf + 1; + if(cpp > (sizeof(buf) - (s-buf))) + return(XpmNoMemory); strncpy(s, *defaults++, cpp); s += cpp; *************** *** 274,287 **** #ifndef VOID_SPRINTF s += #endif ! sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2); #ifdef VOID_SPRINTF s += strlen(s); #endif } } strcpy(s, "\",\n"); l = s + 3 - buf; s = (char *) XpmRealloc(*dataptr, *data_size + l); if (!s) return (XpmNoMemory); --- 296,319 ---- #ifndef VOID_SPRINTF s += #endif ! /* assume C99 compliance */ ! snprintf(s, sizeof(buf) - (s-buf), "\t%s %s", xpmColorKeys[key - 1], s2); #ifdef VOID_SPRINTF s += strlen(s); #endif + /* now let's check if s points out-of-bounds */ + if((s-buf) > sizeof(buf)) + return(XpmNoMemory); } } + if(sizeof(buf) - (s-buf) < 4) + return(XpmNoMemory); strcpy(s, "\",\n"); l = s + 3 - buf; + if( *data_size >= UINT_MAX-l || + *data_size + l <= *used_size || + (*data_size + l - *used_size) <= sizeof(buf)) + return(XpmNoMemory); s = (char *) XpmRealloc(*dataptr, *data_size + l); if (!s) return (XpmNoMemory); *************** *** 294,301 **** } static void ! WritePixels(dataptr, used_size, width, height, cpp, pixels, colors) char *dataptr; unsigned int *used_size; unsigned int width; unsigned int height; --- 326,334 ---- } static void ! WritePixels(dataptr, data_size, used_size, width, height, cpp, pixels, colors) char *dataptr; + unsigned int data_size; unsigned int *used_size; unsigned int width; unsigned int height; *************** *** 306,332 **** char *s = dataptr; unsigned int x, y, h; h = height - 1; for (y = 0; y < h; y++) { *s++ = '"'; for (x = 0; x < width; x++, pixels++) { ! strncpy(s, colors[*pixels].string, cpp); s += cpp; } strcpy(s, "\",\n"); s += 3; } /* duplicate some code to avoid a test in the loop */ *s++ = '"'; for (x = 0; x < width; x++, pixels++) { ! strncpy(s, colors[*pixels].string, cpp); s += cpp; } *s++ = '"'; *used_size += s - dataptr; } ! static int ExtensionsSize(ext, num) XpmExtension *ext; unsigned int num; --- 339,374 ---- char *s = dataptr; unsigned int x, y, h; + if(height <= 1) + return; + h = height - 1; for (y = 0; y < h; y++) { *s++ = '"'; for (x = 0; x < width; x++, pixels++) { ! if(cpp >= (data_size - (s-dataptr))) ! return; ! strncpy(s, colors[*pixels].string, cpp); /* how can we trust *pixels? :-\ */ s += cpp; } + if((data_size - (s-dataptr)) < 4) + return; strcpy(s, "\",\n"); s += 3; } /* duplicate some code to avoid a test in the loop */ *s++ = '"'; for (x = 0; x < width; x++, pixels++) { ! if(cpp >= (data_size - (s-dataptr))) ! return; ! strncpy(s, colors[*pixels].string, cpp); /* how can we trust *pixels? */ s += cpp; } *s++ = '"'; *used_size += s - dataptr; } ! static unsigned int ExtensionsSize(ext, num) XpmExtension *ext; unsigned int num; *************** *** 335,355 **** char **line; size = 0; for (x = 0; x < num; x++, ext++) { /* 11 = 10 (for ',\n"XPMEXT ') + 1 (for '"') */ size += strlen(ext->name) + 11; ! a = ext->nlines; for (y = 0, line = ext->lines; y < a; y++, line++) /* 4 = 3 (for ',\n"') + 1 (for '"') */ size += strlen(*line) + 4; } /* 13 is for ',\n"XPMENDEXT"' */ return size + 13; } static void ! WriteExtensions(dataptr, used_size, ext, num) char *dataptr; unsigned int *used_size; XpmExtension *ext; unsigned int num; --- 377,402 ---- char **line; size = 0; + if(num == 0) + return(0); /* ok? */ for (x = 0; x < num; x++, ext++) { /* 11 = 10 (for ',\n"XPMEXT ') + 1 (for '"') */ size += strlen(ext->name) + 11; ! a = ext->nlines; /* how can we trust ext->nlines to be not out-of-bounds? */ for (y = 0, line = ext->lines; y < a; y++, line++) /* 4 = 3 (for ',\n"') + 1 (for '"') */ size += strlen(*line) + 4; } /* 13 is for ',\n"XPMENDEXT"' */ + if(size > UINT_MAX - 13) /* unlikely */ + return(0); return size + 13; } static void ! WriteExtensions(dataptr, data_size, used_size, ext, num) char *dataptr; + unsigned int data_size; unsigned int *used_size; XpmExtension *ext; unsigned int num; *************** *** 362,368 **** #ifndef VOID_SPRINTF s += #endif ! sprintf(s, ",\n\"XPMEXT %s\"", ext->name); #ifdef VOID_SPRINTF s += strlen(ext->name) + 11; #endif --- 409,415 ---- #ifndef VOID_SPRINTF s += #endif ! snprintf(s, data_size - (s-dataptr), ",\n\"XPMEXT %s\"", ext->name); #ifdef VOID_SPRINTF s += strlen(ext->name) + 11; #endif *************** *** 371,383 **** #ifndef VOID_SPRINTF s += #endif ! sprintf(s, ",\n\"%s\"", *line); #ifdef VOID_SPRINTF s += strlen(*line) + 4; #endif } } ! strcpy(s, ",\n\"XPMENDEXT\""); *used_size += s - dataptr + 13; } --- 418,430 ---- #ifndef VOID_SPRINTF s += #endif ! snprintf(s, data_size - (s-dataptr), ",\n\"%s\"", *line); #ifdef VOID_SPRINTF s += strlen(*line) + 4; #endif } } ! strncpy(s, ",\n\"XPMENDEXT\"", data_size - (s-dataptr)-1); *used_size += s - dataptr + 13; } *************** *** 388,393 **** --- 435,441 ---- int size = 0; /* 5 = 2 (for "/_*") + 3 (for "*_/\n") */ + /* wrap possible but *very* unlikely */ if (info->hints_cmt) size += 5 + strlen(info->hints_cmt); Index: xsrc/xfree/xc/extras/Xpm/lib/CrDatFrI.c diff -c xsrc/xfree/xc/extras/Xpm/lib/CrDatFrI.c:1.1.1.2.4.2 xsrc/xfree/xc/extras/Xpm/lib/CrDatFrI.c:1.1.1.2.4.3 *** xsrc/xfree/xc/extras/Xpm/lib/CrDatFrI.c:1.1.1.2.4.2 Sun Sep 19 15:45:11 2004 --- xsrc/xfree/xc/extras/Xpm/lib/CrDatFrI.c Wed Mar 16 15:18:46 2005 *************** *** 33,45 **** \*****************************************************************************/ /* $XFree86$ */ #include "XpmI.h" LFUNC(CreateColors, int, (char **dataptr, unsigned int *data_size, XpmColor *colors, unsigned int ncolors, unsigned int cpp)); ! LFUNC(CreatePixels, void, (char **dataptr, unsigned int width, unsigned int height, unsigned int cpp, unsigned int *pixels, XpmColor *colors)); --- 33,48 ---- \*****************************************************************************/ /* $XFree86$ */ + /* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" LFUNC(CreateColors, int, (char **dataptr, unsigned int *data_size, XpmColor *colors, unsigned int ncolors, unsigned int cpp)); ! LFUNC(CreatePixels, void, (char **dataptr, unsigned int data_size, ! unsigned int width, unsigned int height, unsigned int cpp, unsigned int *pixels, XpmColor *colors)); *************** *** 47,53 **** unsigned int *ext_size, unsigned int *ext_nlines)); ! LFUNC(CreateExtensions, void, (char **dataptr, unsigned int offset, XpmExtension *ext, unsigned int num, unsigned int ext_nlines)); --- 50,57 ---- unsigned int *ext_size, unsigned int *ext_nlines)); ! LFUNC(CreateExtensions, void, (char **dataptr, unsigned int data_size, ! unsigned int offset, XpmExtension *ext, unsigned int num, unsigned int ext_nlines)); *************** *** 88,97 **** #undef RETURN #define RETURN(status) \ { \ ErrorStatus = status; \ goto exit; \ ! } int XpmCreateDataFromXpmImage(data_return, image, info) --- 92,102 ---- #undef RETURN #define RETURN(status) \ + do \ { \ ErrorStatus = status; \ goto exit; \ ! } while(0) int XpmCreateDataFromXpmImage(data_return, image, info) *************** *** 122,132 **** * alloc a temporary array of char pointer for the header section which * is the hints line + the color table lines */ ! header_nlines = 1 + image->ncolors; header_size = sizeof(char *) * header_nlines; if (header_size >= UINT_MAX / sizeof(char *)) return (XpmNoMemory); ! header = (char **) XpmCalloc(header_size, sizeof(char *)); if (!header) return (XpmNoMemory); --- 127,143 ---- * alloc a temporary array of char pointer for the header section which * is the hints line + the color table lines */ ! header_nlines = 1 + image->ncolors; /* this may wrap and/or become 0 */ ! ! /* 2nd check superfluous if we do not need header_nlines any further */ ! if(header_nlines <= image->ncolors || ! header_nlines >= UINT_MAX / sizeof(char *)) ! return(XpmNoMemory); ! header_size = sizeof(char *) * header_nlines; if (header_size >= UINT_MAX / sizeof(char *)) return (XpmNoMemory); ! header = (char **) XpmCalloc(header_size, sizeof(char *)); /* can we trust image->ncolors */ if (!header) return (XpmNoMemory); *************** *** 170,177 **** /* now we know the size needed, alloc the data and copy the header lines */ offset = image->width * image->cpp + 1; ! data_size = header_size + (image->height + ext_nlines) * sizeof(char *) ! + image->height * offset + ext_size; data = (char **) XpmMalloc(data_size); if (!data) --- 181,202 ---- /* now we know the size needed, alloc the data and copy the header lines */ offset = image->width * image->cpp + 1; ! ! if(offset <= image->width || offset <= image->cpp) ! RETURN(XpmNoMemory); ! ! if( (image->height + ext_nlines) >= UINT_MAX / sizeof(char *)) ! RETURN(XpmNoMemory); ! data_size = (image->height + ext_nlines) * sizeof(char *); ! ! if (image->height > UINT_MAX / offset || ! image->height * offset > UINT_MAX - data_size) ! RETURN(XpmNoMemory); ! data_size += image->height * offset; ! ! if( (header_size + ext_size) >= (UINT_MAX - data_size) ) ! RETURN(XpmNoMemory); ! data_size += header_size + ext_size; data = (char **) XpmMalloc(data_size); if (!data) *************** *** 179,186 **** data_nlines = header_nlines + image->height + ext_nlines; *data = (char *) (data + data_nlines); n = image->ncolors; ! for (l = 0, sptr = data, sptr2 = header; l <= n; l++, sptr++, sptr2++) { strcpy(*sptr, *sptr2); *(sptr + 1) = *sptr + strlen(*sptr2) + 1; } --- 204,213 ---- data_nlines = header_nlines + image->height + ext_nlines; *data = (char *) (data + data_nlines); + + /* can header have less elements then n suggests? */ n = image->ncolors; ! for (l = 0, sptr = data, sptr2 = header; l <= n && sptr && sptr2; l++, sptr++, sptr2++) { strcpy(*sptr, *sptr2); *(sptr + 1) = *sptr + strlen(*sptr2) + 1; } *************** *** 189,200 **** data[header_nlines] = (char *) data + header_size + (image->height + ext_nlines) * sizeof(char *); ! CreatePixels(data + header_nlines, image->width, image->height, image->cpp, image->data, image->colorTable); /* print extensions */ if (extensions) ! CreateExtensions(data + header_nlines + image->height - 1, offset, info->extensions, info->nextensions, ext_nlines); --- 216,228 ---- data[header_nlines] = (char *) data + header_size + (image->height + ext_nlines) * sizeof(char *); ! CreatePixels(data + header_nlines, data_size-header_nlines, image->width, image->height, image->cpp, image->data, image->colorTable); /* print extensions */ if (extensions) ! CreateExtensions(data + header_nlines + image->height - 1, ! data_size - header_nlines - image->height + 1, offset, info->extensions, info->nextensions, ext_nlines); *************** *** 225,247 **** char *s, *s2; char **defaults; for (a = 0; a < ncolors; a++, colors++, dataptr++) { defaults = (char **) colors; strncpy(buf, *defaults++, cpp); s = buf + cpp; for (key = 1; key <= NKEYS; key++, defaults++) { if ((s2 = *defaults)) { #ifndef VOID_SPRINTF s += #endif ! sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2); #ifdef VOID_SPRINTF s += strlen(s); #endif } } l = s - buf + 1; s = (char *) XpmMalloc(l); if (!s) --- 253,286 ---- char *s, *s2; char **defaults; + /* can ncolors be trusted here? */ for (a = 0; a < ncolors; a++, colors++, dataptr++) { defaults = (char **) colors; + if(sizeof(buf) <= cpp) + return(XpmNoMemory); strncpy(buf, *defaults++, cpp); s = buf + cpp; + if(sizeof(buf) <= (s-buf)) + return XpmNoMemory; + for (key = 1; key <= NKEYS; key++, defaults++) { if ((s2 = *defaults)) { #ifndef VOID_SPRINTF s += #endif ! /* assume C99 compliance */ ! snprintf(s, sizeof(buf)-(s-buf), "\t%s %s", xpmColorKeys[key - 1], s2); #ifdef VOID_SPRINTF s += strlen(s); #endif + /* does s point out-of-bounds? */ + if(sizeof(buf) < (s-buf)) + return XpmNoMemory; } } + /* what about using strdup()? */ l = s - buf + 1; s = (char *) XpmMalloc(l); if (!s) *************** *** 253,260 **** } static void ! CreatePixels(dataptr, width, height, cpp, pixels, colors) char **dataptr; unsigned int width; unsigned int height; unsigned int cpp; --- 292,300 ---- } static void ! CreatePixels(dataptr, data_size, width, height, cpp, pixels, colors) char **dataptr; + unsigned int data_size; unsigned int width; unsigned int height; unsigned int cpp; *************** *** 264,284 **** char *s; unsigned int x, y, h, offset; h = height - 1; offset = width * cpp + 1; for (y = 0; y < h; y++, dataptr++) { s = *dataptr; for (x = 0; x < width; x++, pixels++) { ! strncpy(s, colors[*pixels].string, cpp); s += cpp; } *s = '\0'; *(dataptr + 1) = *dataptr + offset; } /* duplicate some code to avoid a test in the loop */ s = *dataptr; for (x = 0; x < width; x++, pixels++) { ! strncpy(s, colors[*pixels].string, cpp); s += cpp; } *s = '\0'; --- 304,341 ---- char *s; unsigned int x, y, h, offset; + if(height <= 1) + return; + h = height - 1; + offset = width * cpp + 1; + + if(offset <= width || offset <= cpp) + return; + + /* why trust h? */ for (y = 0; y < h; y++, dataptr++) { s = *dataptr; + /* why trust width? */ for (x = 0; x < width; x++, pixels++) { ! if(cpp > (data_size - (s - *dataptr))) ! return; ! strncpy(s, colors[*pixels].string, cpp); /* why trust pixel? */ s += cpp; } *s = '\0'; + if(offset > data_size) + return; *(dataptr + 1) = *dataptr + offset; } /* duplicate some code to avoid a test in the loop */ s = *dataptr; + /* why trust width? */ for (x = 0; x < width; x++, pixels++) { ! if(cpp > data_size - (s - *dataptr)) ! return; ! strncpy(s, colors[*pixels].string, cpp); /* why should we trust *pixel? */ s += cpp; } *s = '\0'; *************** *** 311,318 **** } static void ! CreateExtensions(dataptr, offset, ext, num, ext_nlines) char **dataptr; unsigned int offset; XpmExtension *ext; unsigned int num; --- 368,376 ---- } static void ! CreateExtensions(dataptr, data_size, offset, ext, num, ext_nlines) char **dataptr; + unsigned int data_size; unsigned int offset; XpmExtension *ext; unsigned int num; *************** *** 325,336 **** dataptr++; a = 0; for (x = 0; x < num; x++, ext++) { ! sprintf(*dataptr, "XPMEXT %s", ext->name); a++; if (a < ext_nlines) *(dataptr + 1) = *dataptr + strlen(ext->name) + 8; dataptr++; ! b = ext->nlines; for (y = 0, line = ext->lines; y < b; y++, line++) { strcpy(*dataptr, *line); a++; --- 383,394 ---- dataptr++; a = 0; for (x = 0; x < num; x++, ext++) { ! snprintf(*dataptr, data_size, "XPMEXT %s", ext->name); a++; if (a < ext_nlines) *(dataptr + 1) = *dataptr + strlen(ext->name) + 8; dataptr++; ! b = ext->nlines; /* can we trust these values? */ for (y = 0, line = ext->lines; y < b; y++, line++) { strcpy(*dataptr, *line); a++; Index: xsrc/xfree/xc/extras/Xpm/lib/Imakefile diff -c xsrc/xfree/xc/extras/Xpm/lib/Imakefile:1.1.1.1 xsrc/xfree/xc/extras/Xpm/lib/Imakefile:1.1.1.1.4.1 *** xsrc/xfree/xc/extras/Xpm/lib/Imakefile:1.1.1.1 Mon Jan 1 12:49:15 2001 --- xsrc/xfree/xc/extras/Xpm/lib/Imakefile Wed Mar 16 15:18:57 2005 *************** *** 104,116 **** CrBufFrI.c CrDatFrP.c CrPFrBuf.c RdFToI.c WrFFrI.c \ CrBufFrP.c CrIFrBuf.c CrPFrDat.c RdFToP.c WrFFrP.c \ CrDatFrI.c CrIFrDat.c RdFToDat.c WrFFrDat.c \ ! Attrib.c CrIFrP.c CrPFrI.c Image.c Info.c RdFToBuf.c WrFFrBuf.c OBJS = data.o create.o misc.o rgb.o scan.o parse.o hashtab.o \ CrBufFrI.o CrDatFrP.o CrPFrBuf.o RdFToI.o WrFFrI.o \ CrBufFrP.o CrIFrBuf.o CrPFrDat.o RdFToP.o WrFFrP.o \ CrDatFrI.o CrIFrDat.o RdFToDat.o WrFFrDat.o \ ! Attrib.o CrIFrP.o CrPFrI.o Image.o Info.o RdFToBuf.o WrFFrBuf.o INCLUDES = -I. LINTLIBS = $(LINTXTOLL) $(LINTXLIB) --- 104,118 ---- CrBufFrI.c CrDatFrP.c CrPFrBuf.c RdFToI.c WrFFrI.c \ CrBufFrP.c CrIFrBuf.c CrPFrDat.c RdFToP.c WrFFrP.c \ CrDatFrI.c CrIFrDat.c RdFToDat.c WrFFrDat.c \ ! Attrib.c CrIFrP.c CrPFrI.c Image.c Info.c RdFToBuf.c WrFFrBuf.c \ ! s_popen.c OBJS = data.o create.o misc.o rgb.o scan.o parse.o hashtab.o \ CrBufFrI.o CrDatFrP.o CrPFrBuf.o RdFToI.o WrFFrI.o \ CrBufFrP.o CrIFrBuf.o CrPFrDat.o RdFToP.o WrFFrP.o \ CrDatFrI.o CrIFrDat.o RdFToDat.o WrFFrDat.o \ ! Attrib.o CrIFrP.o CrPFrI.o Image.o Info.o RdFToBuf.o WrFFrBuf.o \ ! s_popen.o INCLUDES = -I. LINTLIBS = $(LINTXTOLL) $(LINTXLIB) Index: xsrc/xfree/xc/extras/Xpm/lib/RdFToBuf.c diff -c xsrc/xfree/xc/extras/Xpm/lib/RdFToBuf.c:1.1.1.1 xsrc/xfree/xc/extras/Xpm/lib/RdFToBuf.c:1.1.1.1.4.1 *** xsrc/xfree/xc/extras/Xpm/lib/RdFToBuf.c:1.1.1.1 Mon Jan 1 12:49:15 2001 --- xsrc/xfree/xc/extras/Xpm/lib/RdFToBuf.c Wed Mar 16 15:18:57 2005 *************** *** 37,42 **** --- 37,44 ---- * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 */ + /* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" #include #if !defined(FOR_MSW) && !defined(WIN32) *************** *** 58,64 **** char *filename; char **buffer_return; { ! int fd, fcheck, len; char *ptr; struct stat stats; FILE *fp; --- 60,67 ---- char *filename; char **buffer_return; { ! int fd, fcheck; ! off_t len; char *ptr; struct stat stats; FILE *fp; *************** *** 82,88 **** close(fd); return XpmOpenFailed; } ! len = (int) stats.st_size; ptr = (char *) XpmMalloc(len + 1); if (!ptr) { fclose(fp); --- 85,91 ---- close(fd); return XpmOpenFailed; } ! len = stats.st_size; ptr = (char *) XpmMalloc(len + 1); if (!ptr) { fclose(fp); Index: xsrc/xfree/xc/extras/Xpm/lib/RdFToI.c diff -c xsrc/xfree/xc/extras/Xpm/lib/RdFToI.c:1.1.1.2.4.1 xsrc/xfree/xc/extras/Xpm/lib/RdFToI.c:1.1.1.2.4.2 *** xsrc/xfree/xc/extras/Xpm/lib/RdFToI.c:1.1.1.2.4.1 Fri Sep 17 03:58:57 2004 --- xsrc/xfree/xc/extras/Xpm/lib/RdFToI.c Wed Mar 16 15:19:03 2005 *************** *** 33,48 **** \*****************************************************************************/ /* $XFree86$ */ #include "XpmI.h" ! #include ! #if !defined(NO_ZPIPE) && defined(WIN32) ! # define popen _popen ! # define pclose _pclose ! # if defined(STAT_ZFILE) ! # include ! # define stat _stat ! # define fstat _fstat ! # endif #endif LFUNC(OpenReadFile, int, (char *filename, xpmData *mdata)); --- 33,46 ---- \*****************************************************************************/ /* $XFree86$ */ + /* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" ! #ifndef NO_ZPIPE ! #include ! #include ! #include ! #include #endif LFUNC(OpenReadFile, int, (char *filename, xpmData *mdata)); *************** *** 120,199 **** } #endif /* CXPMPROG */ /* * open the given file to be read as an xpmData which is returned. */ static int OpenReadFile(filename, mdata) char *filename; xpmData *mdata; { - #ifndef NO_ZPIPE - char buf[BUFSIZ]; - # ifdef STAT_ZFILE - char *compressfile; - struct stat status; - # endif - #endif - if (!filename) { mdata->stream.file = (stdin); mdata->type = XPMFILE; } else { ! #ifndef NO_ZPIPE ! int len = strlen(filename); ! if ((len > 2) && !strcmp(".Z", filename + (len - 2))) { ! mdata->type = XPMPIPE; ! sprintf(buf, "uncompress -c \"%s\"", filename); ! if (!(mdata->stream.file = popen(buf, "r"))) ! return (XpmOpenFailed); ! ! } else if ((len > 3) && !strcmp(".gz", filename + (len - 3))) { ! mdata->type = XPMPIPE; ! sprintf(buf, "gunzip -qc \"%s\"", filename); ! if (!(mdata->stream.file = popen(buf, "r"))) ! return (XpmOpenFailed); ! ! } else { ! # ifdef STAT_ZFILE ! if (!(compressfile = (char *) XpmMalloc(len + 4))) return (XpmNoMemory); ! ! sprintf(compressfile, "%s.Z", filename); ! if (!stat(compressfile, &status)) { ! sprintf(buf, "uncompress -c \"%s\"", compressfile); ! if (!(mdata->stream.file = popen(buf, "r"))) { XpmFree(compressfile); ! return (XpmOpenFailed); ! } ! mdata->type = XPMPIPE; ! } else { ! sprintf(compressfile, "%s.gz", filename); ! if (!stat(compressfile, &status)) { ! sprintf(buf, "gunzip -c \"%s\"", compressfile); ! if (!(mdata->stream.file = popen(buf, "r"))) { ! XpmFree(compressfile); ! return (XpmOpenFailed); ! } ! mdata->type = XPMPIPE; ! } else { ! # endif ! #endif ! if (!(mdata->stream.file = fopen(filename, "r"))) { ! #if !defined(NO_ZPIPE) && defined(STAT_ZFILE) ! XpmFree(compressfile); ! #endif ! return (XpmOpenFailed); ! } ! mdata->type = XPMFILE; ! #ifndef NO_ZPIPE ! # ifdef STAT_ZFILE } } XpmFree(compressfile); - # endif } #endif } mdata->CommentLength = 0; #ifdef CXPMPROG --- 118,254 ---- } #endif /* CXPMPROG */ + #ifndef NO_ZPIPE + /* Do not depend on errno after read_through */ + FILE* + xpmPipeThrough(fd, cmd, arg1, mode) + int fd; + const char* cmd; + const char* arg1; + const char* mode; + { + FILE* fp; + int status, fds[2], in = 0, out = 1; + pid_t pid; + if ( 'w' == *mode ) + out = 0, in = 1; + if ( pipe(fds) < 0 ) + return NULL; + pid = fork(); + if ( pid < 0 ) + goto fail1; + if ( 0 == pid ) + { + close(fds[in]); + if ( dup2(fds[out], out) < 0 ) + goto err; + close(fds[out]); + if ( dup2(fd, in) < 0 ) + goto err; + close(fd); + pid = fork(); + if ( pid < 0 ) + goto err; + if ( 0 == pid ) + { + execlp(cmd, cmd, arg1, NULL); + perror(cmd); + goto err; + } + _exit(0); + err: + _exit(1); + } + close(fds[out]); + /* calling process: wait for first child */ + while ( waitpid(pid, &status, 0) < 0 && EINTR == errno ) + ; + if ( WIFSIGNALED(status) || + (WIFEXITED(status) && WEXITSTATUS(status) != 0) ) + goto fail2; + fp = fdopen(fds[in], mode); + if ( !fp ) + goto fail2; + close(fd); /* still open in 2nd child */ + return fp; + fail1: + close(fds[out]); + fail2: + close(fds[in]); + return NULL; + } + #endif + /* * open the given file to be read as an xpmData which is returned. */ + #ifndef NO_ZPIPE + FILE *s_popen(char *cmd, const char *type); + #else + # define s_popen popen + #endif + static int OpenReadFile(filename, mdata) char *filename; xpmData *mdata; { if (!filename) { mdata->stream.file = (stdin); mdata->type = XPMFILE; } else { ! int fd = open(filename, O_RDONLY); ! #if defined(NO_ZPIPE) ! if ( fd < 0 ) ! return XpmOpenFailed; ! #else ! const char* ext = NULL; ! if ( fd >= 0 ) ! ext = strrchr(filename, '.'); ! #ifdef STAT_ZFILE /* searching for z-files if the given name not found */ ! else ! { ! size_t len = strlen(filename); ! char *compressfile = (char *) XpmMalloc(len + 4); ! if ( !compressfile ) return (XpmNoMemory); ! strcpy(compressfile, filename); ! strcpy(compressfile + len, ext = ".Z"); ! fd = open(compressfile, O_RDONLY); ! if ( fd < 0 ) ! { ! strcpy(compressfile + len, ext = ".gz"); ! fd = open(compressfile, O_RDONLY); ! if ( fd < 0 ) ! { XpmFree(compressfile); ! return XpmOpenFailed; } } XpmFree(compressfile); } #endif + if ( ext && !strcmp(ext, ".Z") ) + { + mdata->type = XPMPIPE; + mdata->stream.file = xpmPipeThrough(fd, "uncompress", "-c", "r"); + } + else if ( ext && !strcmp(ext, ".gz") ) + { + mdata->type = XPMPIPE; + mdata->stream.file = xpmPipeThrough(fd, "gunzip", "-qc", "r"); + } + else + #endif /* z-files */ + { + mdata->type = XPMFILE; + mdata->stream.file = fdopen(fd, "r"); + } + if (!mdata->stream.file) + { + close(fd); + return (XpmOpenFailed); + } } mdata->CommentLength = 0; #ifdef CXPMPROG *************** *** 210,224 **** xpmDataClose(mdata) xpmData *mdata; { ! switch (mdata->type) { ! case XPMFILE: ! if (mdata->stream.file != (stdin)) ! fclose(mdata->stream.file); ! break; ! #ifndef NO_ZPIPE ! case XPMPIPE: ! pclose(mdata->stream.file); ! break; ! #endif ! } } --- 265,270 ---- xpmDataClose(mdata) xpmData *mdata; { ! if (mdata->stream.file != (stdin)) ! fclose(mdata->stream.file); } Index: xsrc/xfree/xc/extras/Xpm/lib/WrFFrBuf.c diff -c xsrc/xfree/xc/extras/Xpm/lib/WrFFrBuf.c:1.1.1.1 xsrc/xfree/xc/extras/Xpm/lib/WrFFrBuf.c:1.1.1.1.4.1 *** xsrc/xfree/xc/extras/Xpm/lib/WrFFrBuf.c:1.1.1.1 Mon Jan 1 12:49:16 2001 --- xsrc/xfree/xc/extras/Xpm/lib/WrFFrBuf.c Wed Mar 16 15:18:57 2005 *************** *** 32,37 **** --- 32,39 ---- * Developed by Arnaud Le Hors * \*****************************************************************************/ + /* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" int *************** *** 49,55 **** fcheck = fwrite(buffer, len, 1, fp); fclose(fp); if (fcheck != 1) ! return XpmOpenFailed; return XpmSuccess; } --- 51,57 ---- fcheck = fwrite(buffer, len, 1, fp); fclose(fp); if (fcheck != 1) ! return XpmOpenFailed; /* maybe use a better return value */ return XpmSuccess; } Index: xsrc/xfree/xc/extras/Xpm/lib/WrFFrI.c diff -c xsrc/xfree/xc/extras/Xpm/lib/WrFFrI.c:1.1.1.2.4.1 xsrc/xfree/xc/extras/Xpm/lib/WrFFrI.c:1.1.1.2.4.2 *** xsrc/xfree/xc/extras/Xpm/lib/WrFFrI.c:1.1.1.2.4.1 Fri Sep 17 03:59:01 2004 --- xsrc/xfree/xc/extras/Xpm/lib/WrFFrI.c Wed Mar 16 15:19:03 2005 *************** *** 39,47 **** */ #include "XpmI.h" ! #if !defined(NO_ZPIPE) && defined(WIN32) ! # define popen _popen ! # define pclose _pclose #endif /* MS Windows define a function called WriteFile @#%#&!!! */ --- 39,51 ---- */ #include "XpmI.h" ! ! #ifndef NO_ZPIPE ! #include "sys/wait.h" ! #include "sys/types.h" ! #include "fcntl.h" ! #include "unistd.h" ! #include "errno.h" #endif /* MS Windows define a function called WriteFile @#%#&!!! */ *************** *** 98,104 **** XpmInfo *info; { xpmData mdata; ! char *name, *dot, *s, new_name[BUFSIZ]; int ErrorStatus; /* open file to write */ --- 102,108 ---- XpmInfo *info; { xpmData mdata; ! char *name, *dot, *s, new_name[BUFSIZ] = {0}; int ErrorStatus; /* open file to write */ *************** *** 121,127 **** #endif /* let's try to make a valid C syntax name */ if (index(name, '.')) { ! strcpy(new_name, name); /* change '.' to '_' */ name = s = new_name; while ((dot = index(s, '.'))) { --- 125,132 ---- #endif /* let's try to make a valid C syntax name */ if (index(name, '.')) { ! strncpy(new_name, name, sizeof(new_name)); ! new_name[sizeof(new_name)-1] = '\0'; /* change '.' to '_' */ name = s = new_name; while ((dot = index(s, '.'))) { *************** *** 248,254 **** unsigned int x, y, h; h = height - 1; ! if (cpp != 0 && width >= (SIZE_MAX - 3)/cpp) return XpmNoMemory; p = buf = (char *) XpmMalloc(width * cpp + 3); if (!buf) --- 253,259 ---- unsigned int x, y, h; h = height - 1; ! if (cpp != 0 && width >= (UINT_MAX - 3)/cpp) return XpmNoMemory; p = buf = (char *) XpmMalloc(width * cpp + 3); if (!buf) *************** *** 297,302 **** --- 302,315 ---- fprintf(file, ",\n\"XPMENDEXT\""); } + + #ifndef NO_ZPIPE + FUNC(xpmPipeThrough, FILE*, (int fd, + const char* cmd, + const char* arg1, + const char* mode)); + #endif + /* * open the given file to be written as an xpmData which is returned */ *************** *** 305,342 **** char *filename; xpmData *mdata; { - #ifndef NO_ZPIPE - char buf[BUFSIZ]; - - #endif - if (!filename) { mdata->stream.file = (stdout); mdata->type = XPMFILE; } else { #ifndef NO_ZPIPE ! int len = strlen(filename); if (len > 2 && !strcmp(".Z", filename + (len - 2))) { ! sprintf(buf, "compress > \"%s\"", filename); ! if (!(mdata->stream.file = popen(buf, "w"))) ! return (XpmOpenFailed); ! mdata->type = XPMPIPE; } else if (len > 3 && !strcmp(".gz", filename + (len - 3))) { ! sprintf(buf, "gzip -q > \"%s\"", filename); ! if (!(mdata->stream.file = popen(buf, "w"))) ! return (XpmOpenFailed); ! mdata->type = XPMPIPE; ! } else { #endif ! if (!(mdata->stream.file = fopen(filename, "w"))) ! return (XpmOpenFailed); ! mdata->type = XPMFILE; - #ifndef NO_ZPIPE } ! #endif } return (XpmSuccess); } --- 318,349 ---- char *filename; xpmData *mdata; { if (!filename) { mdata->stream.file = (stdout); mdata->type = XPMFILE; } else { #ifndef NO_ZPIPE ! size_t len; ! #endif ! int fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0644); ! if ( fd < 0 ) ! return(XpmOpenFailed); ! #ifndef NO_ZPIPE ! len = strlen(filename); if (len > 2 && !strcmp(".Z", filename + (len - 2))) { ! mdata->stream.file = xpmPipeThrough(fd, "compress", NULL, "w"); mdata->type = XPMPIPE; } else if (len > 3 && !strcmp(".gz", filename + (len - 3))) { ! mdata->stream.file = xpmPipeThrough(fd, "gzip", "-q", "w"); mdata->type = XPMPIPE; ! } else #endif ! { ! mdata->stream.file = fdopen(fd, "w"); mdata->type = XPMFILE; } ! if (!mdata->stream.file) ! return (XpmOpenFailed); } return (XpmSuccess); } *************** *** 348,362 **** xpmDataClose(mdata) xpmData *mdata; { ! switch (mdata->type) { ! case XPMFILE: ! if (mdata->stream.file != (stdout)) ! fclose(mdata->stream.file); ! break; ! #ifndef NO_ZPIPE ! case XPMPIPE: ! pclose(mdata->stream.file); ! break; ! #endif ! } } --- 355,361 ---- xpmDataClose(mdata) xpmData *mdata; { ! if (mdata->stream.file != (stdout)) ! fclose(mdata->stream.file); } + Index: xsrc/xfree/xc/extras/Xpm/lib/XpmI.h diff -c xsrc/xfree/xc/extras/Xpm/lib/XpmI.h:1.1.1.5.2.1 xsrc/xfree/xc/extras/Xpm/lib/XpmI.h:1.1.1.5.2.2 *** xsrc/xfree/xc/extras/Xpm/lib/XpmI.h:1.1.1.5.2.1 Fri Sep 17 03:59:09 2004 --- xsrc/xfree/xc/extras/Xpm/lib/XpmI.h Wed Mar 16 15:19:03 2005 *************** *** 49,56 **** --- 49,58 ---- * lets try to solve include files */ + #include #include #include + #include /* stdio.h doesn't declare popen on a Sequent DYNIX OS */ #ifdef sequent extern FILE *popen(); Index: xsrc/xfree/xc/extras/Xpm/lib/create.c diff -c xsrc/xfree/xc/extras/Xpm/lib/create.c:1.3.2.2 xsrc/xfree/xc/extras/Xpm/lib/create.c:1.3.2.3 *** xsrc/xfree/xc/extras/Xpm/lib/create.c:1.3.2.2 Sun Sep 19 15:44:38 2004 --- xsrc/xfree/xc/extras/Xpm/lib/create.c Wed Mar 16 15:18:51 2005 *************** *** 1,4 **** ! /* $XdotOrg: pre-CVS proposed fix for CESA-2004-003 alanc 7/25/2004 $ */ /* * Copyright (C) 1989-95 GROUPE BULL * --- 1,4 ---- ! /* $XdotOrg: xc/extras/Xpm/lib/create.c,v 1.4 2004/11/25 21:19:11 herrb Exp $ */ /* * Copyright (C) 1989-95 GROUPE BULL * *************** *** 45,50 **** --- 45,52 ---- * Lorens Younes (d93-hyo@nada.kth.se) 4/96 */ + /* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" #include *************** *** 586,592 **** */ } else { #endif ! int i; #ifndef AMIGA ncols = visual->map_entries; --- 588,594 ---- */ } else { #endif ! unsigned int i; #ifndef AMIGA ncols = visual->map_entries; *************** *** 746,757 **** /* function call in case of error */ #undef RETURN #define RETURN(status) \ { \ ErrorStatus = status; \ goto error; \ ! } int XpmCreateImageFromXpmImage(display, image, --- 748,761 ---- /* function call in case of error */ + #undef RETURN #define RETURN(status) \ + do \ { \ ErrorStatus = status; \ goto error; \ ! } while(0) int XpmCreateImageFromXpmImage(display, image, *************** *** 992,1000 **** return (XpmNoMemory); #if !defined(FOR_MSW) && !defined(AMIGA) ! if (height != 0 && (*image_return)->bytes_per_line >= UINT_MAX / height) return XpmNoMemory; /* now that bytes_per_line must have been set properly alloc data */ (*image_return)->data = (char *) XpmMalloc((*image_return)->bytes_per_line * height); --- 996,1008 ---- return (XpmNoMemory); #if !defined(FOR_MSW) && !defined(AMIGA) ! if (height != 0 && (*image_return)->bytes_per_line >= INT_MAX / height) { ! XDestroyImage(*image_return); return XpmNoMemory; + } /* now that bytes_per_line must have been set properly alloc data */ + if((*image_return)->bytes_per_line == 0 || height == 0) + return XpmNoMemory; (*image_return)->data = (char *) XpmMalloc((*image_return)->bytes_per_line * height); *************** *** 1023,1029 **** LFUNC(_putbits, void, (register char *src, int dstoffset, register int numbits, register char *dst)); ! LFUNC(_XReverse_Bytes, int, (register unsigned char *bpt, register int nb)); static unsigned char Const _reverse_byte[0x100] = { 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, --- 1031,1037 ---- LFUNC(_putbits, void, (register char *src, int dstoffset, register int numbits, register char *dst)); ! LFUNC(_XReverse_Bytes, int, (register unsigned char *bpt, register unsigned int nb)); static unsigned char Const _reverse_byte[0x100] = { 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, *************** *** 1063,1074 **** static int _XReverse_Bytes(bpt, nb) register unsigned char *bpt; ! register int nb; { do { *bpt = _reverse_byte[*bpt]; bpt++; ! } while (--nb > 0); return 0; } --- 1071,1082 ---- static int _XReverse_Bytes(bpt, nb) register unsigned char *bpt; ! register unsigned int nb; { do { *bpt = _reverse_byte[*bpt]; bpt++; ! } while (--nb > 0); /* is nb user-controled? */ return 0; } *************** *** 1207,1224 **** register char *src; register char *dst; register unsigned int *iptr; ! register int x, y, i; register char *data; Pixel pixel, px; ! int nbytes, depth, ibu, ibpp; data = image->data; iptr = pixelindex; depth = image->depth; if (depth == 1) { ibu = image->bitmap_unit; ! for (y = 0; y < height; y++) ! for (x = 0; x < width; x++, iptr++) { pixel = pixels[*iptr]; for (i = 0, px = pixel; i < sizeof(unsigned long); i++, px >>= 8) --- 1215,1232 ---- register char *src; register char *dst; register unsigned int *iptr; ! register unsigned int x, y; register char *data; Pixel pixel, px; ! int nbytes, depth, ibu, ibpp, i; data = image->data; iptr = pixelindex; depth = image->depth; if (depth == 1) { ibu = image->bitmap_unit; ! for (y = 0; y < height; y++) /* how can we trust height */ ! for (x = 0; x < width; x++, iptr++) { /* how can we trust width */ pixel = pixels[*iptr]; for (i = 0, px = pixel; i < sizeof(unsigned long); i++, px >>= 8) *************** *** 1293,1304 **** { unsigned char *data; unsigned int *iptr; ! int y; Pixel pixel; #ifdef WITHOUT_SPEEDUPS ! int x; unsigned char *addr; data = (unsigned char *) image->data; --- 1301,1312 ---- { unsigned char *data; unsigned int *iptr; ! unsigned int y; Pixel pixel; #ifdef WITHOUT_SPEEDUPS ! unsigned int x; unsigned char *addr; data = (unsigned char *) image->data; *************** *** 1335,1341 **** #else /* WITHOUT_SPEEDUPS */ ! int bpl = image->bytes_per_line; unsigned char *data_ptr, *max_data; data = (unsigned char *) image->data; --- 1343,1349 ---- #else /* WITHOUT_SPEEDUPS */ ! unsigned int bpl = image->bytes_per_line; unsigned char *data_ptr, *max_data; data = (unsigned char *) image->data; *************** *** 1403,1413 **** { unsigned char *data; unsigned int *iptr; ! int y; #ifdef WITHOUT_SPEEDUPS ! int x; unsigned char *addr; data = (unsigned char *) image->data; --- 1411,1421 ---- { unsigned char *data; unsigned int *iptr; ! unsigned int y; #ifdef WITHOUT_SPEEDUPS ! unsigned int x; unsigned char *addr; data = (unsigned char *) image->data; *************** *** 1431,1437 **** Pixel pixel; ! int bpl = image->bytes_per_line; unsigned char *data_ptr, *max_data; data = (unsigned char *) image->data; --- 1439,1445 ---- Pixel pixel; ! unsigned int bpl = image->bytes_per_line; unsigned char *data_ptr, *max_data; data = (unsigned char *) image->data; *************** *** 1484,1494 **** { char *data; unsigned int *iptr; ! int y; #ifdef WITHOUT_SPEEDUPS ! int x; data = image->data; iptr = pixelindex; --- 1492,1502 ---- { char *data; unsigned int *iptr; ! unsigned int y; #ifdef WITHOUT_SPEEDUPS ! unsigned int x; data = image->data; iptr = pixelindex; *************** *** 1498,1504 **** #else /* WITHOUT_SPEEDUPS */ ! int bpl = image->bytes_per_line; char *data_ptr, *max_data; data = image->data; --- 1506,1512 ---- #else /* WITHOUT_SPEEDUPS */ ! unsigned int bpl = image->bytes_per_line; char *data_ptr, *max_data; data = image->data; *************** *** 1533,1544 **** PutImagePixels(image, width, height, pixelindex, pixels); else { unsigned int *iptr; ! int y; char *data; #ifdef WITHOUT_SPEEDUPS ! int x; data = image->data; iptr = pixelindex; --- 1541,1552 ---- PutImagePixels(image, width, height, pixelindex, pixels); else { unsigned int *iptr; ! unsigned int y; char *data; #ifdef WITHOUT_SPEEDUPS ! unsigned int x; data = image->data; iptr = pixelindex; *************** *** 1761,1766 **** --- 1769,1777 ---- Pixel px; int nbytes; + if(x < 0 || y < 0) + return 0; + for (i=0, px=pixel; i>=8) ((unsigned char *)&pixel)[i] = px; src = &ximage->data[XYINDEX(x, y, ximage)]; *************** *** 1791,1797 **** register char *dst; register int i; Pixel px; ! int nbytes, ibpp; ibpp = ximage->bits_per_pixel; if (ximage->depth == 4) --- 1802,1811 ---- register char *dst; register int i; Pixel px; ! unsigned int nbytes, ibpp; ! ! if(x < 0 || y < 0) ! return 0; ibpp = ximage->bits_per_pixel; if (ximage->depth == 4) *************** *** 1825,1830 **** --- 1839,1847 ---- { unsigned char *addr; + if(x < 0 || y < 0) + return 0; + addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)]; *((unsigned long *)addr) = pixel; return 1; *************** *** 1840,1845 **** --- 1857,1865 ---- { unsigned char *addr; + if(x < 0 || y < 0) + return 0; + addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)]; addr[0] = pixel >> 24; addr[1] = pixel >> 16; *************** *** 1857,1862 **** --- 1877,1885 ---- { unsigned char *addr; + if(x < 0 || y < 0) + return 0; + addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)]; addr[3] = pixel >> 24; addr[2] = pixel >> 16; *************** *** 1874,1879 **** --- 1897,1905 ---- { unsigned char *addr; + if(x < 0 || y < 0) + return 0; + addr = &((unsigned char *)ximage->data) [ZINDEX16(x, y, ximage)]; addr[0] = pixel >> 8; addr[1] = pixel; *************** *** 1889,1894 **** --- 1915,1923 ---- { unsigned char *addr; + if(x < 0 || y < 0) + return 0; + addr = &((unsigned char *)ximage->data) [ZINDEX16(x, y, ximage)]; addr[1] = pixel >> 8; addr[0] = pixel; *************** *** 1902,1907 **** --- 1931,1939 ---- int y; unsigned long pixel; { + if(x < 0 || y < 0) + return 0; + ximage->data[ZINDEX8(x, y, ximage)] = pixel; return 1; } *************** *** 1913,1918 **** --- 1945,1953 ---- int y; unsigned long pixel; { + if(x < 0 || y < 0) + return 0; + if (pixel & 1) ximage->data[ZINDEX1(x, y, ximage)] |= 0x80 >> (x & 7); else *************** *** 1927,1932 **** --- 1962,1970 ---- int y; unsigned long pixel; { + if(x < 0 || y < 0) + return 0; + if (pixel & 1) ximage->data[ZINDEX1(x, y, ximage)] |= 1 << (x & 7); else *************** *** 2062,2068 **** /* malloc pixels index tables */ if (ncolors >= UINT_MAX / sizeof(Pixel)) ! return XpmNoMemory; image_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * ncolors); if (!image_pixels) --- 2100,2106 ---- /* malloc pixels index tables */ if (ncolors >= UINT_MAX / sizeof(Pixel)) ! RETURN(XpmNoMemory); image_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * ncolors); if (!image_pixels) *************** *** 2174,2180 **** * free the hastable */ if (ErrorStatus != XpmSuccess) ! RETURN(ErrorStatus) else if (USE_HASHTABLE) xpmHashTableFree(&hashtable); --- 2212,2218 ---- * free the hastable */ if (ErrorStatus != XpmSuccess) ! RETURN(ErrorStatus); else if (USE_HASHTABLE) xpmHashTableFree(&hashtable); *************** *** 2366,2376 **** /* array of pointers malloced by need */ unsigned short *cidx[256]; ! int char1; bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */ for (a = 0; a < ncolors; a++) { ! char1 = colorTable[a].string[0]; if (cidx[char1] == NULL) { /* get new memory */ cidx[char1] = (unsigned short *) XpmCalloc(256, sizeof(unsigned short)); --- 2404,2414 ---- /* array of pointers malloced by need */ unsigned short *cidx[256]; ! unsigned int char1; bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */ for (a = 0; a < ncolors; a++) { ! char1 = (unsigned char) colorTable[a].string[0]; if (cidx[char1] == NULL) { /* get new memory */ cidx[char1] = (unsigned short *) XpmCalloc(256, sizeof(unsigned short)); Index: xsrc/xfree/xc/extras/Xpm/lib/data.c diff -c xsrc/xfree/xc/extras/Xpm/lib/data.c:1.1.1.2.4.1 xsrc/xfree/xc/extras/Xpm/lib/data.c:1.1.1.2.4.2 *** xsrc/xfree/xc/extras/Xpm/lib/data.c:1.1.1.2.4.1 Fri Sep 17 03:59:03 2004 --- xsrc/xfree/xc/extras/Xpm/lib/data.c Wed Mar 16 15:19:03 2005 *************** *** 33,38 **** --- 33,40 ---- \*****************************************************************************/ /* $XFree86: xc/extras/Xpm/lib/data.c,v 1.3 2001/10/28 03:32:10 tsi Exp $ */ + /* October 2004, source code review by Thomas Biege */ + #ifndef CXPMPROG #if 0 /* Official version number */ *************** *** 262,268 **** } Ungetc(data, c, file); } ! return (n); } /* --- 264,270 ---- } Ungetc(data, c, file); } ! return (n); /* this returns bytes read + 1 */ } /* *************** *** 375,382 **** { if (!data->type) *cmt = NULL; ! else if (data->CommentLength != 0 && data->CommentLength < SIZE_MAX - 1) { ! *cmt = (char *) XpmMalloc(data->CommentLength + 1); strncpy(*cmt, data->Comment, data->CommentLength); (*cmt)[data->CommentLength] = '\0'; data->CommentLength = 0; --- 377,385 ---- { if (!data->type) *cmt = NULL; ! else if (data->CommentLength != 0 && data->CommentLength < UINT_MAX - 1) { ! if( (*cmt = (char *) XpmMalloc(data->CommentLength + 1)) == NULL) ! return XpmNoMemory; strncpy(*cmt, data->Comment, data->CommentLength); (*cmt)[data->CommentLength] = '\0'; data->CommentLength = 0; *************** *** 400,406 **** xpmParseHeader(data) xpmData *data; { ! char buf[BUFSIZ]; int l, n = 0; if (data->type) { --- 403,409 ---- xpmParseHeader(data) xpmData *data; { ! char buf[BUFSIZ+1] = {0}; int l, n = 0; if (data->type) { Index: xsrc/xfree/xc/extras/Xpm/lib/hashtab.c diff -c xsrc/xfree/xc/extras/Xpm/lib/hashtab.c:1.1.1.1.4.2 xsrc/xfree/xc/extras/Xpm/lib/hashtab.c:1.1.1.1.4.3 *** xsrc/xfree/xc/extras/Xpm/lib/hashtab.c:1.1.1.1.4.2 Sun Sep 19 15:45:11 2004 --- xsrc/xfree/xc/extras/Xpm/lib/hashtab.c Wed Mar 16 15:18:46 2005 *************** *** 138,144 **** unsigned int size = table->size; xpmHashAtom *t, *p; int i; ! int oldSize = size; t = atomTable; HASH_TABLE_GROWS --- 138,144 ---- unsigned int size = table->size; xpmHashAtom *t, *p; int i; ! unsigned int oldSize = size; t = atomTable; HASH_TABLE_GROWS Index: xsrc/xfree/xc/extras/Xpm/lib/misc.c diff -c xsrc/xfree/xc/extras/Xpm/lib/misc.c:1.1.1.1 xsrc/xfree/xc/extras/Xpm/lib/misc.c:1.1.1.1.4.1 *** xsrc/xfree/xc/extras/Xpm/lib/misc.c:1.1.1.1 Mon Jan 1 12:49:16 2001 --- xsrc/xfree/xc/extras/Xpm/lib/misc.c Wed Mar 16 15:18:57 2005 *************** *** 44,50 **** char *s1; { char *s2; ! int l = strlen(s1) + 1; if (s2 = (char *) XpmMalloc(l)) strcpy(s2, s1); --- 44,50 ---- char *s1; { char *s2; ! size_t l = strlen(s1) + 1; if (s2 = (char *) XpmMalloc(l)) strcpy(s2, s1); Index: xsrc/xfree/xc/extras/Xpm/lib/parse.c diff -c xsrc/xfree/xc/extras/Xpm/lib/parse.c:1.1.1.4.4.2 xsrc/xfree/xc/extras/Xpm/lib/parse.c:1.1.1.4.4.3 *** xsrc/xfree/xc/extras/Xpm/lib/parse.c:1.1.1.4.4.2 Sun Sep 19 15:45:11 2004 --- xsrc/xfree/xc/extras/Xpm/lib/parse.c Wed Mar 16 15:18:46 2005 *************** *** 1,4 **** ! /* $XdotOrg: pre-CVS proposed fix for CESA-2004-003 alanc 7/25/2004 $ */ /* * Copyright (C) 1989-95 GROUPE BULL * --- 1,4 ---- ! /* $XdotOrg: xc/extras/Xpm/lib/parse.c,v 1.4 2004/11/25 21:19:11 herrb Exp $ */ /* * Copyright (C) 1989-95 GROUPE BULL * *************** *** 41,66 **** * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 */ #include "XpmI.h" #include #include #ifdef HAS_STRLCAT ! # define STRLCAT(dst, src, dstsize) { \ if (strlcat(dst, src, dstsize) >= (dstsize)) \ ! return (XpmFileInvalid); } ! # define STRLCPY(dst, src, dstsize) { \ if (strlcpy(dst, src, dstsize) >= (dstsize)) \ ! return (XpmFileInvalid); } #else ! # define STRLCAT(dst, src, dstsize) { \ if ((strlen(dst) + strlen(src)) < (dstsize)) \ strcat(dst, src); \ ! else return (XpmFileInvalid); } ! # define STRLCPY(dst, src, dstsize) { \ if (strlen(src) < (dstsize)) \ strcpy(dst, src); \ ! else return (XpmFileInvalid); } #endif LFUNC(ParsePixels, int, (xpmData *data, unsigned int width, --- 41,68 ---- * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 */ + /* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" #include #include #ifdef HAS_STRLCAT ! # define STRLCAT(dst, src, dstsize) do { \ if (strlcat(dst, src, dstsize) >= (dstsize)) \ ! return (XpmFileInvalid); } while(0) ! # define STRLCPY(dst, src, dstsize) do { \ if (strlcpy(dst, src, dstsize) >= (dstsize)) \ ! return (XpmFileInvalid); } while(0) #else ! # define STRLCAT(dst, src, dstsize) do { \ if ((strlen(dst) + strlen(src)) < (dstsize)) \ strcat(dst, src); \ ! else return (XpmFileInvalid); } while(0) ! # define STRLCPY(dst, src, dstsize) do { \ if (strlen(src) < (dstsize)) \ strcpy(dst, src); \ ! else return (XpmFileInvalid); } while(0) #endif LFUNC(ParsePixels, int, (xpmData *data, unsigned int width, *************** *** 277,285 **** return (XpmFileInvalid); } if (!lastwaskey) ! STRLCAT(curbuf, " ", sizeof(curbuf)); /* append space */ buf[l] = '\0'; ! STRLCAT(curbuf, buf, sizeof(curbuf));/* append buf */ lastwaskey = 0; } } --- 279,287 ---- return (XpmFileInvalid); } if (!lastwaskey) ! STRLCAT(curbuf, " ", sizeof(curbuf));/* append space */ buf[l] = '\0'; ! STRLCAT(curbuf, buf, sizeof(curbuf)); /* append buf */ lastwaskey = 0; } } *************** *** 287,293 **** xpmFreeColorTable(colorTable, ncolors); return (XpmFileInvalid); } ! len = strlen(curbuf) + 1; s = defaults[curkey] = (char *) XpmMalloc(len); if (!s) { xpmFreeColorTable(colorTable, ncolors); --- 289,295 ---- xpmFreeColorTable(colorTable, ncolors); return (XpmFileInvalid); } ! len = strlen(curbuf) + 1; /* integer overflow just theoretically possible */ s = defaults[curkey] = (char *) XpmMalloc(len); if (!s) { xpmFreeColorTable(colorTable, ncolors); *************** *** 351,357 **** memcpy(s, curbuf, len); color->c_color = s; *curbuf = '\0'; /* reset curbuf */ ! if (a < ncolors - 1) xpmNextString(data); /* get to the next string */ } } --- 353,359 ---- memcpy(s, curbuf, len); color->c_color = s; *curbuf = '\0'; /* reset curbuf */ ! if (a < ncolors - 1) /* can we trust ncolors -> leave data's bounds */ xpmNextString(data); /* get to the next string */ } } *************** *** 370,379 **** xpmHashTable *hashtable; unsigned int **pixels; { ! unsigned int *iptr, *iptr2; unsigned int a, x, y; ! if ((height > 0 && width >= SIZE_MAX / height) || width * height >= UINT_MAX / sizeof(unsigned int)) return XpmNoMemory; #ifndef FOR_MSW --- 372,381 ---- xpmHashTable *hashtable; unsigned int **pixels; { ! unsigned int *iptr, *iptr2 = NULL; /* found by Egbert Eich */ unsigned int a, x, y; ! if ((height > 0 && width >= UINT_MAX / height) || width * height >= UINT_MAX / sizeof(unsigned int)) return XpmNoMemory; #ifndef FOR_MSW *************** *** 399,406 **** { unsigned short colidx[256]; ! if (ncolors > 256) return (XpmFileInvalid); bzero((char *)colidx, 256 * sizeof(short)); for (a = 0; a < ncolors; a++) --- 401,410 ---- { unsigned short colidx[256]; ! if (ncolors > 256) { ! XpmFree(iptr2); /* found by Egbert Eich */ return (XpmFileInvalid); + } bzero((char *)colidx, 256 * sizeof(short)); for (a = 0; a < ncolors; a++) *************** *** 427,442 **** { /* free all allocated pointers at all exits */ ! #define FREE_CIDX {int f; for (f = 0; f < 256; f++) \ ! if (cidx[f]) XpmFree(cidx[f]);} /* array of pointers malloced by need */ unsigned short *cidx[256]; ! int char1; bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */ for (a = 0; a < ncolors; a++) { ! char1 = colorTable[a].string[0]; if (cidx[char1] == NULL) { /* get new memory */ cidx[char1] = (unsigned short *) XpmCalloc(256, sizeof(unsigned short)); --- 431,450 ---- { /* free all allocated pointers at all exits */ ! #define FREE_CIDX \ ! do \ ! { \ ! int f; for (f = 0; f < 256; f++) \ ! if (cidx[f]) XpmFree(cidx[f]); \ ! } while(0) /* array of pointers malloced by need */ unsigned short *cidx[256]; ! unsigned int char1; bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */ for (a = 0; a < ncolors; a++) { ! char1 = (unsigned char) colorTable[a].string[0]; if (cidx[char1] == NULL) { /* get new memory */ cidx[char1] = (unsigned short *) XpmCalloc(256, sizeof(unsigned short)); *************** *** 480,487 **** char *s; char buf[BUFSIZ]; ! if (cpp >= sizeof(buf)) return (XpmFileInvalid); buf[cpp] = '\0'; if (USE_HASHTABLE) { --- 488,497 ---- char *s; char buf[BUFSIZ]; ! if (cpp >= sizeof(buf)) { ! XpmFree(iptr2); /* found by Egbert Eich */ return (XpmFileInvalid); + } buf[cpp] = '\0'; if (USE_HASHTABLE) { *************** *** 491,497 **** xpmNextString(data); for (x = 0; x < width; x++, iptr++) { for (a = 0, s = buf; a < cpp; a++, s++) ! *s = xpmGetC(data); slot = xpmHashSlot(hashtable, buf); if (!*slot) { /* no color matches */ XpmFree(iptr2); --- 501,507 ---- xpmNextString(data); for (x = 0; x < width; x++, iptr++) { for (a = 0, s = buf; a < cpp; a++, s++) ! *s = xpmGetC(data); /* int assigned to char, not a problem here */ slot = xpmHashSlot(hashtable, buf); if (!*slot) { /* no color matches */ XpmFree(iptr2); *************** *** 505,511 **** xpmNextString(data); for (x = 0; x < width; x++, iptr++) { for (a = 0, s = buf; a < cpp; a++, s++) ! *s = xpmGetC(data); for (a = 0; a < ncolors; a++) if (!strcmp(colorTable[a].string, buf)) break; --- 515,521 ---- xpmNextString(data); for (x = 0; x < width; x++, iptr++) { for (a = 0, s = buf; a < cpp; a++, s++) ! *s = xpmGetC(data); /* int assigned to char, not a problem here */ for (a = 0; a < ncolors; a++) if (!strcmp(colorTable[a].string, buf)) break; *************** *** 560,566 **** while (!notstart && notend) { /* there starts an extension */ ext = (XpmExtension *) ! XpmRealloc(exts, (num + 1) * sizeof(XpmExtension)); if (!ext) { XpmFree(string); XpmFreeExtensions(exts, num); --- 570,576 ---- while (!notstart && notend) { /* there starts an extension */ ext = (XpmExtension *) ! XpmRealloc(exts, (num + 1) * sizeof(XpmExtension)); /* can the loop be forced to iterate often enough to make "(num + 1) * sizeof(XpmExtension)" wrapping? */ if (!ext) { XpmFree(string); XpmFreeExtensions(exts, num); *************** *** 597,603 **** while ((notstart = strncmp("XPMEXT", string, 6)) && (notend = strncmp("XPMENDEXT", string, 9))) { sp = (char **) ! XpmRealloc(ext->lines, (nlines + 1) * sizeof(char *)); if (!sp) { XpmFree(string); ext->nlines = nlines; --- 607,613 ---- while ((notstart = strncmp("XPMEXT", string, 6)) && (notend = strncmp("XPMENDEXT", string, 9))) { sp = (char **) ! XpmRealloc(ext->lines, (nlines + 1) * sizeof(char *)); /* can we iterate enough for a wrapping? */ if (!sp) { XpmFree(string); ext->nlines = nlines; *************** *** 637,645 **** /* function call in case of error */ #undef RETURN #define RETURN(status) \ ! { \ goto error; \ ! } /* * This function parses an Xpm file or data and store the found informations --- 647,655 ---- /* function call in case of error */ #undef RETURN #define RETURN(status) \ ! do { \ goto error; \ ! } while(0) /* * This function parses an Xpm file or data and store the found informations Index: xsrc/xfree/xc/extras/Xpm/lib/scan.c diff -c xsrc/xfree/xc/extras/Xpm/lib/scan.c:1.1.1.2.4.2 xsrc/xfree/xc/extras/Xpm/lib/scan.c:1.1.1.2.4.3 *** xsrc/xfree/xc/extras/Xpm/lib/scan.c:1.1.1.2.4.2 Sun Sep 19 15:45:11 2004 --- xsrc/xfree/xc/extras/Xpm/lib/scan.c Wed Mar 16 15:18:46 2005 *************** *** 43,48 **** --- 43,50 ---- * Lorens Younes (d93-hyo@nada.kth.se) 4/96 */ + /* October 2004, source code review by Thomas Biege */ + #include "XpmI.h" #define MAXPRINTABLE 92 /* number of printable ascii chars *************** *** 172,181 **** /* function call in case of error */ #undef RETURN #define RETURN(status) \ ! { \ ErrorStatus = status; \ goto error; \ ! } /* * This function scans the given image and stores the found informations in --- 174,183 ---- /* function call in case of error */ #undef RETURN #define RETURN(status) \ ! do { \ ErrorStatus = status; \ goto error; \ ! } while(0) /* * This function scans the given image and stores the found informations in *************** *** 619,626 **** char *dst; unsigned int *iptr; char *data; ! int x, y, i; ! int bits, depth, ibu, ibpp, offset; unsigned long lbt; Pixel pixel, px; --- 621,628 ---- char *dst; unsigned int *iptr; char *data; ! unsigned int x, y; ! int bits, depth, ibu, ibpp, offset, i; unsigned long lbt; Pixel pixel, px; *************** *** 631,636 **** --- 633,641 ---- ibpp = image->bits_per_pixel; offset = image->xoffset; + if (image->bitmap_unit < 0) + return (XpmNoMemory); + if ((image->bits_per_pixel | image->depth) == 1) { ibu = image->bitmap_unit; for (y = 0; y < height; y++) *************** *** 721,727 **** unsigned char *addr; unsigned char *data; unsigned int *iptr; ! int x, y; unsigned long lbt; Pixel pixel; int depth; --- 726,732 ---- unsigned char *addr; unsigned char *data; unsigned int *iptr; ! unsigned int x, y; unsigned long lbt; Pixel pixel; int depth; *************** *** 786,792 **** unsigned char *addr; unsigned char *data; unsigned int *iptr; ! int x, y; unsigned long lbt; Pixel pixel; int depth; --- 791,797 ---- unsigned char *addr; unsigned char *data; unsigned int *iptr; ! unsigned int x, y; unsigned long lbt; Pixel pixel; int depth; *************** *** 831,837 **** { unsigned int *iptr; unsigned char *data; ! int x, y; unsigned long lbt; Pixel pixel; int depth; --- 836,842 ---- { unsigned int *iptr; unsigned char *data; ! unsigned int x, y; unsigned long lbt; Pixel pixel; int depth; *************** *** 864,870 **** storeFuncPtr storeFunc; { unsigned int *iptr; ! int x, y; char *data; Pixel pixel; int xoff, yoff, offset, bpl; --- 869,875 ---- storeFuncPtr storeFunc; { unsigned int *iptr; ! unsigned int x, y; char *data; Pixel pixel; int xoff, yoff, offset, bpl; *************** *** 900,910 **** # else /* AMIGA */ #define CLEAN_UP(status) \ ! {\ if (pixels) XpmFree (pixels);\ if (tmp_img) FreeXImage (tmp_img);\ return (status);\ ! } static int AGetImagePixels ( --- 905,915 ---- # else /* AMIGA */ #define CLEAN_UP(status) \ ! do {\ if (pixels) XpmFree (pixels);\ if (tmp_img) FreeXImage (tmp_img);\ return (status);\ ! } while(0) static int AGetImagePixels ( *************** *** 925,931 **** tmp_img = AllocXImage ((((width+15)>>4)<<4), 1, image->rp->BitMap->Depth); if (tmp_img == NULL) ! CLEAN_UP (XpmNoMemory) iptr = pmap->pixelindex; for (y = 0; y < height; ++y) --- 930,936 ---- tmp_img = AllocXImage ((((width+15)>>4)<<4), 1, image->rp->BitMap->Depth); if (tmp_img == NULL) ! CLEAN_UP (XpmNoMemory); iptr = pmap->pixelindex; for (y = 0; y < height; ++y) *************** *** 934,944 **** for (x = 0; x < width; ++x, ++iptr) { if ((*storeFunc) (pixels[x], pmap, iptr)) ! CLEAN_UP (XpmNoMemory) } } ! CLEAN_UP (XpmSuccess) } #undef CLEAN_UP --- 939,949 ---- for (x = 0; x < width; ++x, ++iptr) { if ((*storeFunc) (pixels[x], pmap, iptr)) ! CLEAN_UP (XpmNoMemory); } } ! CLEAN_UP (XpmSuccess); } #undef CLEAN_UP Index: xsrc/xfree/xc/extras/Xpm/lib/xpm.h diff -c xsrc/xfree/xc/extras/Xpm/lib/xpm.h:1.1.1.3.2.1 xsrc/xfree/xc/extras/Xpm/lib/xpm.h:1.1.1.3.2.2 *** xsrc/xfree/xc/extras/Xpm/lib/xpm.h:1.1.1.3.2.1 Fri Sep 17 03:59:18 2004 --- xsrc/xfree/xc/extras/Xpm/lib/xpm.h Wed Mar 16 15:19:03 2005 *************** *** 284,292 **** * functions declarations */ ! #ifdef __cplusplus ! extern "C" { ! #endif /* FOR_MSW, all ..Pixmap.. are excluded, only the ..XImage.. are used */ /* Same for Amiga! */ --- 284,290 ---- * functions declarations */ ! _XFUNCPROTOBEGIN /* FOR_MSW, all ..Pixmap.. are excluded, only the ..XImage.. are used */ /* Same for Amiga! */ *************** *** 440,449 **** FUNC(XpmFree, void, (void *ptr)); ! #ifdef __cplusplus ! } /* for C++ V2.0 */ ! #endif ! /* backward compatibility */ --- 438,444 ---- FUNC(XpmFree, void, (void *ptr)); ! _XFUNCPROTOEND /* backward compatibility */ Index: xsrc/xfree/xc/programs/Xserver/afb/afbpixmap.c diff -c xsrc/xfree/xc/programs/Xserver/afb/afbpixmap.c:1.1.1.3 xsrc/xfree/xc/programs/Xserver/afb/afbpixmap.c:1.1.1.3.4.1 *** xsrc/xfree/xc/programs/Xserver/afb/afbpixmap.c:1.1.1.3 Sat Jun 9 15:01:54 2001 --- xsrc/xfree/xc/programs/Xserver/afb/afbpixmap.c Sun Sep 18 16:48:52 2005 *************** *** 76,81 **** --- 76,84 ---- int datasize; int paddedWidth; + if ((width > MAXSHORT) || (height > MAXSHORT)) + return NullPixmap; + paddedWidth = BitmapBytePad(width); datasize = height * paddedWidth * depth; pPixmap = AllocatePixmap(pScreen, datasize); Index: xsrc/xfree/xc/programs/Xserver/cfb/cfbpixmap.c diff -c xsrc/xfree/xc/programs/Xserver/cfb/cfbpixmap.c:1.1.1.4 xsrc/xfree/xc/programs/Xserver/cfb/cfbpixmap.c:1.1.1.4.4.1 *** xsrc/xfree/xc/programs/Xserver/cfb/cfbpixmap.c:1.1.1.4 Sat Jan 19 15:04:27 2002 --- xsrc/xfree/xc/programs/Xserver/cfb/cfbpixmap.c Sun Sep 18 16:48:53 2005 *************** *** 73,78 **** --- 73,81 ---- int datasize; int paddedWidth; + if ((width > MAXSHORT) || (height > MAXSHORT)) + return NullPixmap; + paddedWidth = PixmapBytePad(width, depth); datasize = height * paddedWidth; pPixmap = AllocatePixmap(pScreen, datasize); Index: xsrc/xfree/xc/programs/Xserver/dix/pixmap.c diff -c xsrc/xfree/xc/programs/Xserver/dix/pixmap.c:1.1.1.4 xsrc/xfree/xc/programs/Xserver/dix/pixmap.c:1.1.1.4.4.1 *** xsrc/xfree/xc/programs/Xserver/dix/pixmap.c:1.1.1.4 Sat Jan 19 15:04:42 2002 --- xsrc/xfree/xc/programs/Xserver/dix/pixmap.c Sun Sep 18 16:48:52 2005 *************** *** 126,132 **** unsigned size; int i; ! pPixmap = (PixmapPtr)xalloc(pScreen->totalPixmapSize + pixDataSize); if (!pPixmap) return NullPixmap; ppriv = (DevUnion *)(pPixmap + 1); --- 126,134 ---- unsigned size; int i; ! if (((unsigned)(-1) - pScreen->totalPixmapSize) < (unsigned)pixDataSize) ! return NullPixmap; ! pPixmap = xalloc(pScreen->totalPixmapSize + (unsigned)pixDataSize); if (!pPixmap) return NullPixmap; ppriv = (DevUnion *)(pPixmap + 1); *************** *** 144,150 **** ppriv->ptr = (pointer)NULL; } #else ! pPixmap = (PixmapPtr)xalloc(sizeof(PixmapRec) + pixDataSize); #endif return pPixmap; } --- 146,152 ---- ppriv->ptr = (pointer)NULL; } #else ! pPixmap = xalloc(sizeof(PixmapRec) + (unsigned)pixDataSize); #endif return pPixmap; } Index: xsrc/xfree/xc/programs/Xserver/fb/fbpixmap.c diff -c xsrc/xfree/xc/programs/Xserver/fb/fbpixmap.c:1.1.1.5 xsrc/xfree/xc/programs/Xserver/fb/fbpixmap.c:1.1.1.5.4.1 *** xsrc/xfree/xc/programs/Xserver/fb/fbpixmap.c:1.1.1.5 Fri Feb 28 13:19:59 2003 --- xsrc/xfree/xc/programs/Xserver/fb/fbpixmap.c Sun Sep 18 16:48:52 2005 *************** *** 21,27 **** * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ ! /* $XFree86: xc/programs/Xserver/fb/fbpixmap.c,v 1.11 2002/09/16 18:05:34 eich Exp $ */ #include "fb.h" #ifdef IN_MODULE --- 21,27 ---- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ ! /* $XFree86: xc/programs/Xserver/fb/fbpixmap.c,v 1.12 2005/09/14 15:13:49 tsi Exp $ */ #include "fb.h" #ifdef IN_MODULE *************** *** 37,42 **** --- 37,45 ---- int adjust; int base; + if ((width > MAXSHORT) || (height > MAXSHORT)) + return NullPixmap; + paddedWidth = ((width * bpp + FB_MASK) >> FB_SHIFT) * sizeof (FbBits); datasize = height * paddedWidth; #ifdef PIXPRIV Index: xsrc/xfree/xc/programs/Xserver/hw/xfree86/xaa/xaaInit.c diff -c xsrc/xfree/xc/programs/Xserver/hw/xfree86/xaa/xaaInit.c:1.1.1.4 xsrc/xfree/xc/programs/Xserver/hw/xfree86/xaa/xaaInit.c:1.1.1.4.4.1 *** xsrc/xfree/xc/programs/Xserver/hw/xfree86/xaa/xaaInit.c:1.1.1.4 Sat Jan 19 15:12:59 2002 --- xsrc/xfree/xc/programs/Xserver/hw/xfree86/xaa/xaaInit.c Sun Sep 18 16:48:53 2005 *************** *** 1,4 **** ! /* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaInit.c,v 1.35 2001/07/19 18:50:16 mvojkovi Exp $ */ #include "misc.h" #include "xf86.h" --- 1,4 ---- ! /* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaInit.c,v 1.36 2005/09/14 15:13:51 tsi Exp $ */ #include "misc.h" #include "xf86.h" *************** *** 479,486 **** ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; XAAPixmapPtr pPriv; PixmapPtr pPix = NULL; ! int size = w * h; if (!infoRec->offscreenDepthsInitialized) XAAInitializeOffscreenDepths (pScreen); --- 479,490 ---- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; XAAPixmapPtr pPriv; PixmapPtr pPix = NULL; ! int size; ! ! if ((w > MAXSHORT) || (h > MAXSHORT)) ! return NullPixmap; + size = w * h; if (!infoRec->offscreenDepthsInitialized) XAAInitializeOffscreenDepths (pScreen); Index: xsrc/xfree/xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPixmap.c diff -c xsrc/xfree/xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPixmap.c:1.1.1.3 xsrc/xfree/xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPixmap.c:1.1.1.3.4.1 *** xsrc/xfree/xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPixmap.c:1.1.1.3 Sat Jun 9 15:09:14 2001 --- xsrc/xfree/xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPixmap.c Sun Sep 18 16:48:53 2005 *************** *** 89,96 **** TRACE(("xf4bppCreatePixmap(pScreen=0x%x, width=%d, height=%d, depth=%d)\n", pScreen, width, height, depth)) ; ! if ( depth > 8 ) ! return (PixmapPtr) NULL ; size = PixmapBytePad(width, depth); pPixmap = AllocatePixmap (pScreen, (height * size)); --- 89,96 ---- TRACE(("xf4bppCreatePixmap(pScreen=0x%x, width=%d, height=%d, depth=%d)\n", pScreen, width, height, depth)) ; ! if ((depth > 8) || (width > MAXSHORT) || (height > MAXSHORT)) ! return NullPixmap; size = PixmapBytePad(width, depth); pPixmap = AllocatePixmap (pScreen, (height * size)); Index: xsrc/xfree/xc/programs/Xserver/ilbm/ilbmpixmap.c diff -c xsrc/xfree/xc/programs/Xserver/ilbm/ilbmpixmap.c:1.1.1.3 xsrc/xfree/xc/programs/Xserver/ilbm/ilbmpixmap.c:1.1.1.3.4.1 *** xsrc/xfree/xc/programs/Xserver/ilbm/ilbmpixmap.c:1.1.1.3 Sat Jun 9 15:09:41 2001 --- xsrc/xfree/xc/programs/Xserver/ilbm/ilbmpixmap.c Sun Sep 18 16:48:52 2005 *************** *** 1,4 **** ! /* $XFree86: xc/programs/Xserver/ilbm/ilbmpixmap.c,v 3.0 1996/08/18 01:54:01 dawes Exp $ */ /*********************************************************** Copyright (c) 1987 X Consortium --- 1,4 ---- ! /* $XFree86: xc/programs/Xserver/ilbm/ilbmpixmap.c,v 3.1 2005/09/14 15:13:51 tsi Exp $ */ /*********************************************************** Copyright (c) 1987 X Consortium *************** *** 78,83 **** --- 78,86 ---- int datasize; int paddedWidth; + if ((width > MAXSHORT) || (height > MAXSHORT)) + return NullPixmap; + paddedWidth = BitmapBytePad(width); datasize = height * paddedWidth * depth; pPixmap = AllocatePixmap(pScreen, datasize); Index: xsrc/xfree/xc/programs/Xserver/iplan2p4/iplpixmap.c diff -c xsrc/xfree/xc/programs/Xserver/iplan2p4/iplpixmap.c:1.1.1.4 xsrc/xfree/xc/programs/Xserver/iplan2p4/iplpixmap.c:1.1.1.4.4.1 *** xsrc/xfree/xc/programs/Xserver/iplan2p4/iplpixmap.c:1.1.1.4 Sat Jan 19 15:13:53 2002 --- xsrc/xfree/xc/programs/Xserver/iplan2p4/iplpixmap.c Sun Sep 18 16:48:52 2005 *************** *** 1,4 **** ! /* $XFree86: xc/programs/Xserver/iplan2p4/iplpixmap.c,v 3.1 2001/12/17 20:00:46 dawes Exp $ */ /* $XConsortium: iplpixmap.c,v 5.14 94/04/17 20:28:56 dpw Exp $ */ /*********************************************************** --- 1,4 ---- ! /* $XFree86: xc/programs/Xserver/iplan2p4/iplpixmap.c,v 3.2 2005/09/14 15:13:51 tsi Exp $ */ /* $XConsortium: iplpixmap.c,v 5.14 94/04/17 20:28:56 dpw Exp $ */ /*********************************************************** *************** *** 76,83 **** PixmapPtr pPixmap; int datasize; int paddedWidth; ! int ipad=INTER_PLANES*2 - 1; paddedWidth = PixmapBytePad(width, depth); paddedWidth = (paddedWidth + ipad) & ~ipad; datasize = height * paddedWidth; --- 76,87 ---- PixmapPtr pPixmap; int datasize; int paddedWidth; ! int ipad; + if ((width > MAXSHORT) || (height > MAXSHORT)) + return NullPixmap; + + ipad = INTER_PLANES*2 - 1; paddedWidth = PixmapBytePad(width, depth); paddedWidth = (paddedWidth + ipad) & ~ipad; datasize = height * paddedWidth; Index: xsrc/xfree/xc/programs/Xserver/mfb/mfbpixmap.c diff -c xsrc/xfree/xc/programs/Xserver/mfb/mfbpixmap.c:1.1.1.3 xsrc/xfree/xc/programs/Xserver/mfb/mfbpixmap.c:1.1.1.3.4.1 *** xsrc/xfree/xc/programs/Xserver/mfb/mfbpixmap.c:1.1.1.3 Sat Jan 19 15:14:03 2002 --- xsrc/xfree/xc/programs/Xserver/mfb/mfbpixmap.c Sun Sep 18 16:48:52 2005 *************** *** 75,82 **** int datasize; int paddedWidth; ! if (depth != 1) return NullPixmap; paddedWidth = BitmapBytePad(width); datasize = height * paddedWidth; pPixmap = AllocatePixmap(pScreen, datasize); --- 75,83 ---- int datasize; int paddedWidth; ! if ((depth != 1) || (width > MAXSHORT) || (height > MAXSHORT)) return NullPixmap; + paddedWidth = BitmapBytePad(width); datasize = height * paddedWidth; pPixmap = AllocatePixmap(pScreen, datasize); Index: xsrc/xfree/xc/programs/Xserver/os/utils.c diff -c xsrc/xfree/xc/programs/Xserver/os/utils.c:1.4 xsrc/xfree/xc/programs/Xserver/os/utils.c:1.4.2.1 *** xsrc/xfree/xc/programs/Xserver/os/utils.c:1.4 Sat Mar 6 03:32:17 2004 --- xsrc/xfree/xc/programs/Xserver/os/utils.c Sun Sep 18 16:48:52 2005 *************** *** 1175,1194 **** void * Xalloc(unsigned long amount) { ! register pointer ptr; ! ! if ((long)amount <= 0) { ! return (unsigned long *)NULL; ! } /* aligned extra on long word boundary */ amount = (amount + (sizeof(long) - 1)) & ~(sizeof(long) - 1); #ifdef MEMBUG if (!Must_have_memory && Memory_fail && ((random() % MEM_FAIL_SCALE) < Memory_fail)) return (unsigned long *)NULL; #endif ! if ((ptr = (pointer)malloc(amount))) { ! return (unsigned long *)ptr; } if (Must_have_memory) FatalError("Out of memory"); --- 1175,1194 ---- void * Xalloc(unsigned long amount) { ! pointer ptr; ! /* aligned extra on long word boundary */ amount = (amount + (sizeof(long) - 1)) & ~(sizeof(long) - 1); + + if ((long)amount <= 0) + return NULL; #ifdef MEMBUG if (!Must_have_memory && Memory_fail && ((random() % MEM_FAIL_SCALE) < Memory_fail)) return (unsigned long *)NULL; #endif ! if ((ptr = malloc(amount))) { ! return ptr; } if (Must_have_memory) FatalError("Out of memory"); *************** *** 1205,1217 **** { register pointer ptr; ! if ((long)amount <= 0) ! { ! return (unsigned long *)NULL; ! } /* aligned extra on long word boundary */ amount = (amount + (sizeof(long) - 1)) & ~(sizeof(long) - 1); ! ptr = (pointer)malloc(amount); if (!ptr) { FatalError("Out of memory"); --- 1205,1220 ---- { register pointer ptr; ! if (amount == 0) ! return NULL; ! /* aligned extra on long word boundary */ amount = (amount + (sizeof(long) - 1)) & ~(sizeof(long) - 1); ! ! if ((long)amount <= 0) ! FatalError("Bad request for memory"); ! ! ptr = malloc(amount); if (!ptr) { FatalError("Out of memory"); *************** *** 1226,1236 **** void * Xcalloc(unsigned long amount) { ! unsigned long *ret; ! ret = Xalloc (amount); if (ret) ! bzero ((char *) ret, (int) amount); return ret; } --- 1229,1239 ---- void * Xcalloc(unsigned long amount) { ! pointer ret; ! ret = Xalloc(amount); if (ret) ! bzero (ret, (int) amount); return ret; } *************** *** 1241,1253 **** void * XNFcalloc(unsigned long amount) { ! unsigned long *ret; ! ret = Xalloc (amount); ! if (ret) ! bzero ((char *) ret, (int) amount); ! else if ((long)amount > 0) FatalError("Out of memory"); return ret; } --- 1244,1260 ---- void * XNFcalloc(unsigned long amount) { ! pointer ret; ! if (amount == 0) ! return NULL; ! ! ret = Xalloc(amount); ! if (!ret) FatalError("Out of memory"); + + bzero (ret, (int) amount); + return ret; } *************** *** 1270,1279 **** return (unsigned long *)NULL; } amount = (amount + (sizeof(long) - 1)) & ~(sizeof(long) - 1); if (ptr) ! ptr = (pointer)realloc((char *)ptr, amount); else ! ptr = (pointer)malloc(amount); if (ptr) return (unsigned long *)ptr; if (Must_have_memory) --- 1277,1288 ---- return (unsigned long *)NULL; } amount = (amount + (sizeof(long) - 1)) & ~(sizeof(long) - 1); + if ((long)amount <= 0) + return NULL; if (ptr) ! ptr = realloc(ptr, amount); else ! ptr = malloc(amount); if (ptr) return (unsigned long *)ptr; if (Must_have_memory) *************** *** 1289,1300 **** void * XNFrealloc(pointer ptr, unsigned long amount) { ! if (( ptr = (pointer)Xrealloc( ptr, amount ) ) == NULL) { ! if ((long)amount > 0) FatalError( "Out of memory" ); } ! return ((unsigned long *)ptr); } /***************** --- 1298,1309 ---- void * XNFrealloc(pointer ptr, unsigned long amount) { ! if ((ptr = Xrealloc(ptr, amount)) == NULL) { ! if (amount != 0) FatalError( "Out of memory" ); } ! return ptr; } /*****************