Date: Fri, 31 Dec 2004 19:20:41 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 68018 for review Message-ID: <200412311920.iBVJKfj1028720@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=68018 Change 68018 by sam@sam_ebb on 2004/12/31 19:19:47 IFC @ 68017 Affected files ... .. //depot/projects/wifi/MAINTAINERS#3 integrate .. //depot/projects/wifi/Makefile.inc1#10 integrate .. //depot/projects/wifi/games/fortune/datfiles/fortunes2#3 integrate .. //depot/projects/wifi/gnu/usr.bin/send-pr/send-pr.1#2 integrate .. //depot/projects/wifi/lib/libarchive/archive_write_set_format_pax.c#6 integrate .. //depot/projects/wifi/lib/libc/gen/signal.3#3 integrate .. //depot/projects/wifi/lib/libc/gen/syslog.3#2 integrate .. //depot/projects/wifi/lib/libc/gen/syslog.c#4 integrate .. //depot/projects/wifi/lib/libc/net/inet6_option_space.3#2 integrate .. //depot/projects/wifi/lib/libc/regex/engine.c#3 integrate .. //depot/projects/wifi/lib/libc/sys/chmod.2#2 integrate .. //depot/projects/wifi/lib/libdisk/libdisk.3#2 integrate .. //depot/projects/wifi/lib/libipx/ipx.3#2 integrate .. //depot/projects/wifi/lib/libstand/libstand.3#2 integrate .. //depot/projects/wifi/lib/libutil/login_cap.3#2 integrate .. //depot/projects/wifi/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#8 integrate .. //depot/projects/wifi/release/doc/ja_JP.eucJP/early-adopter/article.sgml#2 integrate .. //depot/projects/wifi/release/doc/ja_JP.eucJP/hardware/common/dev.sgml#3 integrate .. //depot/projects/wifi/release/doc/ja_JP.eucJP/hardware/common/intro.sgml#2 integrate .. //depot/projects/wifi/release/doc/ja_JP.eucJP/hardware/i386/proc-i386.sgml#2 integrate .. //depot/projects/wifi/release/doc/ja_JP.eucJP/hardware/ia64/proc-ia64.sgml#2 integrate .. //depot/projects/wifi/release/doc/ja_JP.eucJP/hardware/pc98/proc-pc98.sgml#2 integrate .. //depot/projects/wifi/release/doc/ja_JP.eucJP/share/sgml/release.dsl#2 integrate .. //depot/projects/wifi/release/doc/share/misc/dev.archlist.txt#7 integrate .. //depot/projects/wifi/sbin/dump/optr.c#2 integrate .. //depot/projects/wifi/sbin/geom/core/geom.c#2 integrate .. //depot/projects/wifi/sbin/sconfig/sconfig.8#3 integrate .. //depot/projects/wifi/share/man/man3/pthread_once.3#2 integrate .. //depot/projects/wifi/share/man/man3/pthread_setspecific.3#2 integrate .. //depot/projects/wifi/share/man/man3/queue.3#2 integrate .. //depot/projects/wifi/share/man/man4/ath.4#5 integrate .. //depot/projects/wifi/share/man/man4/bktr.4#2 integrate .. //depot/projects/wifi/share/man/man9/swi.9#2 integrate .. //depot/projects/wifi/share/man/man9/timeout.9#2 integrate .. //depot/projects/wifi/sys/alpha/conf/GENERIC#4 integrate .. //depot/projects/wifi/sys/amd64/conf/GENERIC#3 integrate .. //depot/projects/wifi/sys/compat/ndis/subr_hal.c#2 integrate .. //depot/projects/wifi/sys/conf/NOTES#8 integrate .. //depot/projects/wifi/sys/conf/files#12 integrate .. //depot/projects/wifi/sys/conf/kmod.mk#6 integrate .. //depot/projects/wifi/sys/dev/bktr/CHANGELOG.TXT#2 integrate .. //depot/projects/wifi/sys/dev/md/md.c#5 integrate .. //depot/projects/wifi/sys/dev/usb/ehci.c#7 integrate .. //depot/projects/wifi/sys/dev/usb/ehci_pci.c#2 integrate .. //depot/projects/wifi/sys/dev/usb/ehcivar.h#3 integrate .. //depot/projects/wifi/sys/dev/usb/ohci_pci.c#2 integrate .. //depot/projects/wifi/sys/dev/usb/ugen.c#5 integrate .. //depot/projects/wifi/sys/dev/usb/uhci_pci.c#2 integrate .. //depot/projects/wifi/sys/dev/usb/usbdevs#8 integrate .. //depot/projects/wifi/sys/geom/geom_kern.c#2 integrate .. //depot/projects/wifi/sys/geom/mirror/g_mirror.c#6 integrate .. //depot/projects/wifi/sys/geom/raid3/g_raid3.c#8 integrate .. //depot/projects/wifi/sys/i386/conf/GENERIC#4 integrate .. //depot/projects/wifi/sys/i386/i386/exception.s#2 integrate .. //depot/projects/wifi/sys/i386/i386/sys_machdep.c#3 integrate .. //depot/projects/wifi/sys/i386/i386/vm_machdep.c#7 integrate .. //depot/projects/wifi/sys/kern/kern_intr.c#6 integrate .. //depot/projects/wifi/sys/kern/kern_resource.c#2 integrate .. //depot/projects/wifi/sys/kern/kern_synch.c#4 integrate .. //depot/projects/wifi/sys/kern/kern_sysctl.c#3 integrate .. //depot/projects/wifi/sys/kern/kern_umtx.c#5 integrate .. //depot/projects/wifi/sys/kern/sched_4bsd.c#5 integrate .. //depot/projects/wifi/sys/kern/sched_ule.c#7 integrate .. //depot/projects/wifi/sys/kern/subr_trap.c#3 integrate .. //depot/projects/wifi/sys/kern/subr_turnstile.c#2 integrate .. //depot/projects/wifi/sys/kern/subr_witness.c#4 integrate .. //depot/projects/wifi/sys/kern/sysv_msg.c#3 integrate .. //depot/projects/wifi/sys/kern/tty.c#5 integrate .. //depot/projects/wifi/sys/kern/vfs_cluster.c#6 integrate .. //depot/projects/wifi/sys/modules/bktr/bktr/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/if_ppp/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/if_tun/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/io/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/mac_portacl/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/mem/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/netgraph/bluetooth/ubt/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/netgraph/bluetooth/ubtbcmfw/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/snp/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/sound/driver/uaudio/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/ti/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/ubsa/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/ubser/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/ucom/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/ucycom/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/uftdi/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/ugen/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/uhid/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/ukbd/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/ulpt/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/umct/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/umodem/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/ums/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/uplcom/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/urio/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/usb/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/uscanner/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/uvisor/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/uvscom/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/vkbd/Makefile#2 integrate .. //depot/projects/wifi/sys/netgraph/ng_ether.c#2 integrate .. //depot/projects/wifi/sys/netipx/ipx_input.c#2 integrate .. //depot/projects/wifi/sys/netipx/ipx_pcb.c#2 integrate .. //depot/projects/wifi/sys/netipx/ipx_pcb.h#2 integrate .. //depot/projects/wifi/sys/netipx/ipx_usrreq.c#3 integrate .. //depot/projects/wifi/sys/netipx/ipx_var.h#2 integrate .. //depot/projects/wifi/sys/netipx/spx_usrreq.c#3 integrate .. //depot/projects/wifi/sys/pci/agp_ali.c#2 integrate .. //depot/projects/wifi/sys/pci/agp_intel.c#2 integrate .. //depot/projects/wifi/sys/pci/agp_sis.c#2 integrate .. //depot/projects/wifi/sys/pci/agp_via.c#2 integrate .. //depot/projects/wifi/sys/powerpc/powerpc/pmap.c#4 integrate .. //depot/projects/wifi/sys/sparc64/conf/GENERIC#4 integrate .. //depot/projects/wifi/sys/sys/copyright.h#2 integrate .. //depot/projects/wifi/sys/sys/proc.h#5 integrate .. //depot/projects/wifi/sys/sys/sched.h#2 integrate .. //depot/projects/wifi/sys/sys/turnstile.h#2 integrate .. //depot/projects/wifi/sys/sys/umtx.h#4 integrate .. //depot/projects/wifi/sys/tools/usbdevs2h.awk#2 integrate .. //depot/projects/wifi/sys/vm/vm_page.c#6 integrate .. //depot/projects/wifi/usr.bin/chpass/Makefile#3 integrate .. //depot/projects/wifi/usr.bin/netstat/ipx.c#2 integrate .. //depot/projects/wifi/usr.bin/netstat/main.c#2 integrate .. //depot/projects/wifi/usr.bin/passwd/Makefile#2 integrate .. //depot/projects/wifi/usr.sbin/lpr/common_source/common.c#2 integrate .. //depot/projects/wifi/usr.sbin/lpr/common_source/ctlinfo.c#2 integrate .. //depot/projects/wifi/usr.sbin/lpr/common_source/displayq.c#2 integrate .. //depot/projects/wifi/usr.sbin/lpr/common_source/lp.h#2 integrate .. //depot/projects/wifi/usr.sbin/lpr/common_source/matchjobs.c#2 integrate .. //depot/projects/wifi/usr.sbin/lpr/common_source/rmjob.c#2 integrate .. //depot/projects/wifi/usr.sbin/syslogd/syslogd.c#5 integrate Differences ... ==== //depot/projects/wifi/MAINTAINERS#3 (text+ko) ==== @@ -1,4 +1,4 @@ -$FreeBSD: src/MAINTAINERS,v 1.101 2004/11/30 20:04:47 eik Exp $ +$FreeBSD: src/MAINTAINERS,v 1.102 2004/12/29 03:49:58 gad Exp $ subsystem login notes ----------------------------- @@ -65,7 +65,9 @@ lpr gad Pre-commit review requested, particularly for lpd/recvjob.c and lpd/printjob.c. newsyslog(8) gad Heads-up appreciated. I'm going thru the PR's for it. -patch gad I have a WIP which will change the src a lot. +pkill gad Heads-up appreciated. +ps gad I am working on a number of changes to this. Would + like advance notice of major changes planned to it. cvs peter Heads-up appreciated, try not to break it. ncurses peter Heads-up appreciated, try not to break it. nvi peter Try not to break it. ==== //depot/projects/wifi/Makefile.inc1#10 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.471 2004/12/22 22:00:01 ru Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.472 2004/12/29 19:39:06 obrien Exp $ # # Make command line options: # -DNO_DYNAMICROOT do not link /bin and /sbin dynamically @@ -467,57 +467,6 @@ SPECIAL_INSTALLCHECKS= # -# The following install-time check will see if the installation will -# change the type used for time_t, and if it will, the target makes -# sure that the user is expecting to make that change. -# -.if ${TARGET_ARCH} == "sparc64" -SPECIAL_INSTALLCHECKS+=sparc64_installcheck - -CUR_TIMET!= grep __time_t /usr/include/machine/_types.h | awk '{print $$2}' -SRC_TIMET!= grep __time_t ${.CURDIR}/sys/sparc64/include/_types.h | \ - awk '{print $$2}' -NEWSPARC_TIMETYPE?=${CUR_TIMET} - -sparc64_installcheck: -.if ${CUR_TIMET} != ${SRC_TIMET} - @echo -.if ${NEWSPARC_TIMETYPE} != ${SRC_TIMET} - @echo "*** ERROR: This target would change the type used for time_t!" -.else - @echo "* Note: This installation changes the type used for time_t." -.endif - @echo "* " - @echo "* This host has time_t defined as ${CUR_TIMET}," - @echo "* and this installation would change that to type ${SRC_TIMET}." -.if ${NEWSPARC_TIMETYPE} != ${SRC_TIMET} - @echo "* " - @echo "* If that is *NOT* what you wanted, then you need to change the" - @echo "* typedef of __time_t in ${.CURDIR}/sys/sparc64/include/_types.h" - @echo "* from '${SRC_TIMET}' to '${CUR_TIMET}'. After that you *MUST*" - @echo "* do a complete cleanworld, buildworld, buildkernel before you" - @echo "* retry the 'make' command. Also read /usr/src/UPDATING.64BTT." - @echo "* " - @echo "* If that *is* what you want, then enter the commands:" - @echo " NEWSPARC_TIMETYPE=${SRC_TIMET}" - @echo " export NEWSPARC_TIMETYPE" - @echo "* and repeat your 'make' command." - @echo - false -.endif - @echo -.elif ${NEWSPARC_TIMETYPE} != ${SRC_TIMET} - @echo - @echo "*** ERROR: NEWSPARC_TIMETYPE is set to '${NEWSPARC_TIMETYPE}'" - @echo "*** but ${.CURDIR}/sys/sparc64/include/_types.h" - @echo "*** has __time_t defined as '${SRC_TIMET}'." - false -.else - @# in sparc64_installcheck, all TIMETYPEs == '${CUR_TIMET}' -.endif -.endif - -# # installcheck # # Checks to be sure system is ready for installworld ==== //depot/projects/wifi/games/fortune/datfiles/fortunes2#3 (text+ko) ==== @@ -1,5 +1,5 @@ This fortune brought to you by: -$FreeBSD: src/games/fortune/datfiles/fortunes2,v 1.78 2004/11/12 10:15:43 schweikh Exp $ +$FreeBSD: src/games/fortune/datfiles/fortunes2,v 1.79 2004/12/30 12:18:30 schweikh Exp $ % ======================================================================= || || @@ -51642,7 +51642,7 @@ it is necessary not to make a decision. % When it's dark enough you can see the stars. - -- Ralph Waldo Emerson, + -- Ralph Waldo Emerson % When license fees are too high, users do things by hand. @@ -51736,7 +51736,7 @@ it less and less." -- Louise Andrews Kent % -When oxygen Tech played Hydrogen U. +When Oxygen Tech played Hydrogen U. The Game had just begun, when Hydrogen scored two fast points And Oxygen still had none Then Oxygen scored a single goal @@ -51832,9 +51832,6 @@ When the bosses talk about improving productivity, they are never talking about themselves. % -When the bosses talk about improving productivity, they are never -talking about themselves. -% When the candles are out all women are fair. -- Plutarch % ==== //depot/projects/wifi/gnu/usr.bin/send-pr/send-pr.1#2 (text+ko) ==== @@ -22,7 +22,7 @@ .\" .\" --------------------------------------------------------------------------- .\" -.\" $FreeBSD: src/gnu/usr.bin/send-pr/send-pr.1,v 1.16 2003/06/20 10:48:26 des Exp $ +.\" $FreeBSD: src/gnu/usr.bin/send-pr/send-pr.1,v 1.17 2004/12/29 19:32:21 keramida Exp $ .nh .TH SEND-PR 1 3.113 "February 1993" .SH NAME @@ -102,6 +102,13 @@ .LP The more precise your problem description and the more complete your information, the faster your support team can solve your problems. +.LP +.B send-pr +depends on a correctly configured mail submission system to work correctly. +If, for any reason, sending mail is not working, problem reports can be +submitted over the web, through: +.IP +.I http://www.freebsd.org/send-pr.html .SH OPTIONS .TP .BI \-f " problem-report" ==== //depot/projects/wifi/lib/libarchive/archive_write_set_format_pax.c#6 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_format_pax.c,v 1.24 2004/12/22 02:35:37 kientzle Exp $"); +__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_format_pax.c,v 1.25 2004/12/29 23:26:18 kientzle Exp $"); #include <sys/stat.h> #include <errno.h> @@ -720,99 +720,191 @@ /* * We need a valid name for the regular 'ustar' entry. This routine * tries to hack something more-or-less reasonable. + * + * The approach here tries to preserve leading dir names. We do so by + * breaking the full path into three sections: + * 1) "prefix" directory names, + * 2) "suffix" directory names, + * 3) filename. + * + * These three sections must satisfy the following requirements: + * * Parts 1 & 2 together form an initial portion of the dir name. + * * Part 3 forms an initial portion of the base filename. + * * The filename must be <= 90 chars to fit the ustar 'name' field while + * allowing room for the '/PaxHeader' dir element (see below) + * * Parts 2 & 3 together must be <= 90 chars to fit the ustar 'name' field + * while allowing room for the '/PaxHeader' dir element. + * * Part 1 must be <= 155 chars to fit the ustar 'prefix' field. + * * If the original name ends in a '/', the new name must also end in a '/' + * * Trailing '/.' sequences may be stripped. + * + * Note: Recall that the ustar format does not store the '/' separating + * parts 1 & 2, but does store the '/' separating parts 2 & 3. */ static char * build_ustar_entry_name(char *dest, const char *src) { - const char *basename, *break_point, *prefix; - int basename_length, dirname_length, prefix_length; + const char *prefix, *prefix_end; + const char *suffix, *suffix_end; + const char *filename, *filename_end; + char *p; + size_t s; + int need_slash = 0; /* Was there a trailing slash? */ + size_t suffix_length = 90; - prefix = src; - basename = strrchr(src, '/'); - if (basename == NULL) { - basename = src; - prefix_length = 0; - basename_length = strlen(basename); - if (basename_length > 100) - basename_length = 100; - } else { - basename_length = strlen(basename); - if (basename_length > 100) - basename_length = 100; - dirname_length = basename - src; + /* Step 0: Initial checks. */ + s = strlen(src); + if (s < 100) { + strcpy(dest, src); + return (dest); + } - break_point = - strchr(src + dirname_length + basename_length - 101, '/'); - prefix_length = break_point - prefix - 1; - while (prefix_length > 155) { - prefix = strchr(prefix, '/') + 1; /* Drop 1st dir. */ - prefix_length = break_point - prefix - 1; + /* Step 1: Locate filename and enforce the length restriction. */ + filename_end = src + s; + /* Remove trailing '/' chars and '/.' pairs. */ + for (;;) { + if (filename_end > src && filename_end[-1] == '/') { + filename_end --; + need_slash = 1; /* Remember to restore trailing '/'. */ + continue; + } + if (filename_end > src + 1 && filename_end[-1] == '.' + && filename_end[-2] == '/') { + filename_end -= 2; + continue; } + break; } + filename = filename_end - 1; + if (need_slash) + suffix_length--; + while ((filename > src) && (*filename != '/')) + filename --; + if ((*filename == '/') && (filename < filename_end - 1)) + filename ++; + if (filename_end > filename + suffix_length) + filename_end = filename + suffix_length; + /* Step 2: Locate the "prefix" section of the dirname, including + * trailing '/'. */ + prefix = src; + prefix_end = prefix + 155; + if (prefix_end > filename) + prefix_end = filename; + while (prefix_end > prefix && *prefix_end != '/') + prefix_end--; + if ((prefix_end < filename) && (*prefix_end == '/')) + prefix_end++; + + /* Step 3: Locate the "suffix" section of the dirname, + * including trailing '/'. */ + suffix = prefix_end; + suffix_end = suffix + 89 - (filename_end - filename); + if (suffix_end > filename) + suffix_end = filename; + if (suffix_end < suffix) + suffix_end = suffix; + while (suffix_end > suffix && *suffix_end != '/') + suffix_end--; + if ((suffix_end < filename) && (*suffix_end == '/')) + suffix_end++; + + /* Step 4: Build the new name. */ /* The OpenBSD strlcpy function is safer, but less portable. */ /* Rather than maintain two versions, just use the strncpy version. */ - strncpy(dest, prefix, basename - prefix + basename_length); - dest[basename - prefix + basename_length] = '\0'; + p = dest; + if (prefix_end > prefix) { + strncpy(p, prefix, prefix_end - prefix); + p += prefix_end - prefix; + } + if (suffix_end > suffix) { + strncpy(p, suffix, suffix_end - suffix); + p += suffix_end - suffix; + } + strncpy(p, filename, filename_end - filename); + p += filename_end - filename; + if (need_slash) + *p++ = '/'; + *p++ = '\0'; return (dest); } /* * The ustar header for the pax extended attributes must have a - * reasonable name: SUSv3 suggests 'dirname'/PaxHeaders/'basename' + * reasonable name: SUSv3 suggests 'dirname'/PaxHeader/'filename' * * Joerg Schiling has argued that this is unnecessary because, in practice, * if the pax extended attributes get extracted as regular files, noone is * going to bother reading those attributes to manually restore them. - * This is a tempting argument, but I'm not entirely convinced. + * Based on this, 'star' uses /tmp/PaxHeader/'basename' as the ustar header + * name. This is a tempting argument, but I'm not entirely convinced. + * I'm also uncomfortable with the fact that "/tmp" is a Unix-ism. * - * Of course, adding "PaxHeaders/" might force the name to be too big. - * Here, I start from the (possibly already-trimmed) name used in the - * main ustar header and delete some additional early path elements to - * fit in the extra "PaxHeader/" part. + * The following routine implements the SUSv3 recommendation, and is + * much simpler because we do the initial processing with + * build_ustar_entry_name() above which results in something that is + * already short enough to accomodate the extra '/PaxHeader' + * addition. We just need to separate dir and filename portions and + * handle a few pathological cases. */ static char * -build_pax_attribute_name(const char *abbreviated, /* ustar-compat name */ +build_pax_attribute_name(const char *src, /* ustar-compat name */ struct archive_string *work) { - const char *basename, *break_point, *prefix; - int prefix_length, suffix_length; + const char *filename, *filename_end; - /* - * This is much simpler because I know that "abbreviated" is - * already small enough; I just need to determine if it needs - * any further trimming to fit the "PaxHeader/" portion. - */ + if (*src == '\0') { + archive_strcpy(work, "PaxHeader/blank"); + return (work->s); + } + if (*src == '.' && src[1] == '\0') { + archive_strcpy(work, "PaxHeader/dot"); + return (work->s); + } - /* Identify the final prefix and suffix portions. */ - prefix = abbreviated; /* First guess: prefix starts at beginning */ - if (strlen(abbreviated) > 100) { - break_point = strchr(prefix + strlen(prefix) - 101, '/'); - prefix_length = break_point - prefix - 1; - suffix_length = strlen(break_point + 1); - /* - * The next loop keeps trimming until "/PaxHeader/" can - * be added to either the prefix or the suffix. - */ - while (prefix_length > 144 && suffix_length > 89) { - prefix = strchr(prefix, '/') + 1; /* Drop 1st dir. */ - prefix_length = break_point - prefix - 1; + /* Prune unwanted final path elements. */ + filename_end = src + strlen(src); + for (;;) { + if (filename_end > src && filename_end[-1] == '/') { + filename_end --; + continue; + } + if (filename_end > src + 1 && filename_end[-1] == '.' + && filename_end[-2] == '/') { + filename_end -= 2; + continue; } + break; } + while ((filename_end > src) && (filename_end[-1] == '/')) + filename_end --; - archive_string_empty(work); - basename = strrchr(prefix, '/'); - if (basename == NULL) { - archive_strcpy(work, "PaxHeader/"); - archive_strcat(work, prefix); - } else { - basename++; - archive_strncpy(work, prefix, basename - prefix); - archive_strcat(work, "PaxHeader/"); - archive_strcat(work, basename); + /* Pathological case: Entire 'src' consists of '/' characters. */ + if (filename_end == src) { + archive_strcpy(work, "/PaxHeader/rootdir"); + return (work->s); + } + + /* Find the '/' before the filename portion. */ + filename = filename_end - 1; + while ((filename > src) && (*filename != '/')) + filename --; + if (*filename == '/') + filename ++; + + /* Pathological case: filename is '.' */ + if (filename_end == filename + 2 + && filename[0] == '/' && filename[1] == '.') { + archive_strncpy(work, src, filename - src); + archive_strcat(work, "PaxHeader/dot"); + return (work->s); } + /* Build the new name. */ + archive_strncpy(work, src, filename - src); + archive_strcat(work, "PaxHeader/"); + archive_strncat(work, filename, filename_end - filename); return (work->s); } ==== //depot/projects/wifi/lib/libc/gen/signal.3#3 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)signal.3 8.3 (Berkeley) 4/19/94 -.\" $FreeBSD: src/lib/libc/gen/signal.3,v 1.39 2004/12/23 02:48:20 jkoshy Exp $ +.\" $FreeBSD: src/lib/libc/gen/signal.3,v 1.40 2004/12/29 19:40:56 keramida Exp $ .\" .Dd June 7, 2004 .Dt SIGNAL 3 @@ -255,7 +255,7 @@ An attempt is made to ignore or supply a handler for .Dv SIGKILL or -.Ev SIGSTOP . +.Dv SIGSTOP . .El .Sh SEE ALSO .Xr kill 1 , @@ -271,8 +271,8 @@ .Xr siginterrupt 3 , .Xr tty 4 .Sh HISTORY -This -.Fn signal +The +.Nm facility appeared in .Bx 4.0 . The option to avoid the creation of child zombies through ignoring ==== //depot/projects/wifi/lib/libc/gen/syslog.3#2 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)syslog.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD: src/lib/libc/gen/syslog.3,v 1.23 2002/12/19 09:40:21 ru Exp $ +.\" $FreeBSD: src/lib/libc/gen/syslog.3,v 1.24 2004/12/30 13:09:34 krion Exp $ .\" -.Dd June 4, 1993 +.Dd December 30, 2004 .Dt SYSLOG 3 .Os .Sh NAME @@ -206,6 +206,8 @@ The mail system. .It Dv LOG_NEWS The network news system. +.It Dv LOG_NTP +The network time protocol system. .It Dv LOG_SECURITY Security subsystems, such as .Xr ipfw 4 . ==== //depot/projects/wifi/lib/libc/gen/syslog.c#4 (text+ko) ==== @@ -35,7 +35,7 @@ static char sccsid[] = "@(#)syslog.c 8.5 (Berkeley) 4/29/95"; #endif /* LIBC_SCCS and not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/gen/syslog.c,v 1.33 2004/12/24 09:48:44 glebius Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/gen/syslog.c,v 1.34 2004/12/30 16:05:11 glebius Exp $"); #include "namespace.h" #include <sys/types.h> @@ -48,6 +48,7 @@ #include <errno.h> #include <fcntl.h> #include <paths.h> +#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -66,9 +67,20 @@ static const char *LogTag = NULL; /* string to tag the entry with */ static int LogFacility = LOG_USER; /* default facility code */ static int LogMask = 0xff; /* mask of priorities to be logged */ +static pthread_mutex_t syslog_mutex = PTHREAD_MUTEX_INITIALIZER; + +#define THREAD_LOCK() \ + do { \ + if (__isthreaded) _pthread_mutex_lock(&syslog_mutex); \ + } while(0) +#define THREAD_UNLOCK() \ + do { \ + if (__isthreaded) _pthread_mutex_unlock(&syslog_mutex); \ + } while(0) static void disconnectlog(void); /* disconnect from syslogd */ static void connectlog(void); /* (re)connect to syslogd */ +static void openlog_unlocked(const char *, int, int); enum { NOCONN = 0, @@ -134,7 +146,7 @@ char ch, *p; time_t now; int fd, saved_errno; - char *stdp, tbuf[2048], fmt_cpy[1024], timbuf[26]; + char *stdp, tbuf[2048], fmt_cpy[1024], timbuf[26], errstr[64]; FILE *fp, *fmt_fp; struct bufcookie tbuf_cookie; struct bufcookie fmt_cookie; @@ -147,9 +159,13 @@ pri &= LOG_PRIMASK|LOG_FACMASK; } + THREAD_LOCK(); + /* Check priority against setlogmask values. */ - if (!(LOG_MASK(LOG_PRI(pri)) & LogMask)) + if (!(LOG_MASK(LOG_PRI(pri)) & LogMask)) { + THREAD_UNLOCK(); return; + } saved_errno = errno; @@ -161,8 +177,10 @@ tbuf_cookie.base = tbuf; tbuf_cookie.left = sizeof(tbuf); fp = fwopen(&tbuf_cookie, writehook); - if (fp == NULL) + if (fp == NULL) { + THREAD_UNLOCK(); return; + } /* Build the message. */ (void)time(&now); @@ -192,6 +210,7 @@ fmt_fp = fwopen(&fmt_cookie, writehook); if (fmt_fp == NULL) { fclose(fp); + THREAD_UNLOCK(); return; } @@ -203,7 +222,8 @@ for ( ; (ch = *fmt); ++fmt) { if (ch == '%' && fmt[1] == 'm') { ++fmt; - fputs(strerror(saved_errno), fmt_fp); + strerror_r(saved_errno, errstr, sizeof(errstr)); + fputs(errstr, fmt_fp); } else if (ch == '%' && fmt[1] == '%') { ++fmt; fputc(ch, fmt_fp); @@ -247,7 +267,7 @@ /* Get connected, output the message to the local logger. */ if (!opened) - openlog(LogTag, LogStat | LOG_NDELAY, 0); + openlog_unlocked(LogTag, LogStat | LOG_NDELAY, 0); connectlog(); /* @@ -272,13 +292,17 @@ } do { usleep(1); - if (send(LogFile, tbuf, cnt, 0) >= 0) + if (send(LogFile, tbuf, cnt, 0) >= 0) { + THREAD_UNLOCK(); return; + } if (status == CONNPRIV) break; } while (errno == ENOBUFS); - } else + } else { + THREAD_UNLOCK(); return; + } /* * Output the message to the console; try not to block @@ -299,7 +323,11 @@ (void)_writev(fd, iov, 2); (void)_close(fd); } + + THREAD_UNLOCK(); } + +/* Should be called with mutex acquired */ static void disconnectlog() { @@ -315,6 +343,7 @@ status = NOCONN; /* retry connect */ } +/* Should be called with mutex acquired */ static void connectlog() { @@ -366,8 +395,8 @@ } } -void -openlog(ident, logstat, logfac) +static void +openlog_unlocked(ident, logstat, logfac) const char *ident; int logstat, logfac; { @@ -384,12 +413,25 @@ } void +openlog(ident, logstat, logfac) + const char *ident; + int logstat, logfac; +{ + THREAD_LOCK(); + openlog_unlocked(ident, logstat, logfac); + THREAD_UNLOCK(); +} + + +void closelog() { + THREAD_LOCK(); (void)_close(LogFile); LogFile = -1; LogTag = NULL; status = NOCONN; + THREAD_UNLOCK(); } /* setlogmask -- set the log mask level */ @@ -399,8 +441,10 @@ { int omask; + THREAD_LOCK(); omask = LogMask; if (pmask != 0) LogMask = pmask; + THREAD_UNLOCK(); return (omask); } ==== //depot/projects/wifi/lib/libc/net/inet6_option_space.3#2 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" $Id: inet6_option_space.3,v 1.4 2000/02/05 10:32:24 jinmei Exp $ -.\" $FreeBSD: src/lib/libc/net/inet6_option_space.3,v 1.12 2003/09/10 19:24:32 ru Exp $ +.\" $FreeBSD: src/lib/libc/net/inet6_option_space.3,v 1.13 2004/12/29 02:18:24 trhodes Exp $ .\" .Dd December 10, 1999 .Dt INET6_OPTION_SPACE 3 @@ -397,7 +397,7 @@ .Fa *tptrp must be set to .Dv NULL . -.Pa +.Pp This function starts searching for an option of the specified type beginning after the value of .Fa *tptrp . ==== //depot/projects/wifi/lib/libc/regex/engine.c#3 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/regex/engine.c,v 1.15 2004/11/21 03:14:32 tjr Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/regex/engine.c,v 1.16 2004/12/30 14:27:57 dds Exp $"); /* * The matching engine and friends. This file is #included by regexec.c @@ -255,6 +255,10 @@ for (;;) { endp = fast(m, start, stop, gf, gl); if (endp == NULL) { /* a miss */ + if (m->pmatch != NULL) + free((char *)m->pmatch); + if (m->lastpos != NULL) + free((char *)m->lastpos); STATETEARDOWN(m); return(REG_NOMATCH); } ==== //depot/projects/wifi/lib/libc/sys/chmod.2#2 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)chmod.2 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD: src/lib/libc/sys/chmod.2,v 1.31 2004/07/02 23:52:13 ru Exp $ +.\" $FreeBSD: src/lib/libc/sys/chmod.2,v 1.32 2004/12/29 20:00:29 trhodes Exp $ .\" -.Dd June 4, 1993 +.Dd December 29, 2004 .Dt CHMOD 2 .Os .Sh NAME @@ -101,22 +101,21 @@ #define S_ISUID 0004000 /* set user id on execution */ #define S_ISGID 0002000 /* set group id on execution */ -#define S_ISVTX 0001000 /* sticky bit */ -#ifndef _POSIX_SOURCE -#define S_ISTXT 0001000 +#ifndef __BSD_VISIBLE +#define S_ISTXT 0001000 /* sticky bit */ #endif .Ed .Pp The .Fx VM system totally ignores the sticky bit -.Pq Dv ISVTX +.Pq Dv ISTXT for executables. On UFS-based file systems (FFS, LFS) the sticky bit may only be set upon directories. .Pp If mode -.Dv ISVTX +.Dv ISTXT (the `sticky bit') is set on a directory, an unprivileged user may not delete or rename files of other users in that directory. ==== //depot/projects/wifi/lib/libdisk/libdisk.3#2 (text+ko) ==== @@ -25,7 +25,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libdisk/libdisk.3,v 1.32 2004/07/02 23:52:15 ru Exp $ +.\" $FreeBSD: src/lib/libdisk/libdisk.3,v 1.33 2004/12/29 02:18:24 trhodes Exp $ .\" " .Dd March 15, 1996 .Dt LIBDISK 3 @@ -169,7 +169,7 @@ .Ql whole, unknown, fat, freebsd, extended, part, unused . .Pp These are the valid -.Ql flag +.Ql flags values for a .Ql struct chunk . .Bl -tag -offset indent -width CHUNK_BSD_COMPATXX @@ -293,9 +293,9 @@ up to next track according to the BIOS geometry. .Pp .Fn Prev_Track_Aligned -checks if +rounds .Ql offset -is aligned on a track according to the BIOS geometry. +up to previous track according to the BIOS geometry. .Pp .Fn Create_Chunk_DWIM creates a partition inside the given parent of the given size, and ==== //depot/projects/wifi/lib/libipx/ipx.3#2 (text+ko) ==== @@ -29,7 +29,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libipx/ipx.3,v 1.14 2004/07/02 23:52:15 ru Exp $ +.\" $FreeBSD: src/lib/libipx/ipx.3,v 1.15 2004/12/29 02:18:24 trhodes Exp $ .\" .Dd June 4, 1993 .Dt IPX 3 @@ -91,7 +91,7 @@ quantity to be zero extended in the high-network-order bytes. Next, the field is inspected for hyphens, in which case the field is assumed to be a number in decimal notation -with hyphens separating the millenia. +with hyphens separating the millennia. Next, the field is assumed to be a number: It is interpreted as hexadecimal if there is a leading ==== //depot/projects/wifi/lib/libstand/libstand.3#2 (text+ko) ==== @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libstand/libstand.3,v 1.31 2004/08/06 15:29:54 roam Exp $ +.\" $FreeBSD: src/lib/libstand/libstand.3,v 1.32 2004/12/29 02:18:24 trhodes Exp $ .\" .Dd August 6, 2004 .Dt LIBSTAND 3 @@ -580,6 +580,7 @@ .Ft int .Fn devclose "struct open_file *of" .Xc +.Pp Close the device allocated for .Fa of . The device driver itself will already have been called for the close; this call ==== //depot/projects/wifi/lib/libutil/login_cap.3#2 (text+ko) ==== @@ -17,7 +17,7 @@ .\" 5. Modifications may be freely made to this file providing the above .\" conditions are met. .\" -.\" $FreeBSD: src/lib/libutil/login_cap.3,v 1.33 2004/07/03 22:30:10 ru Exp $ +.\" $FreeBSD: src/lib/libutil/login_cap.3,v 1.34 2004/12/29 02:18:24 trhodes Exp $ .\" .Dd December 27, 1996 .Os @@ -322,7 +322,7 @@ .Fn login_getstyle . .It Fn login_getpath This function returns a list of directories separated by colons -.Ql &: . +.Ql \&: . Capability tags for which this function is called consist of a list of directories separated by spaces. .It Fn login_getcaptime @@ -401,7 +401,7 @@ default to "passwd" as the authorisation list. .It If 'style' is not NULL or empty, look for it in the list of authorisation -methods found from the pprevious step. +methods found from the previous step. If 'style' is NULL or an empty string, then default to "passwd" authorisation. .It ==== //depot/projects/wifi/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#8 (text+ko) ==== @@ -29,7 +29,7 @@ <sect1 id="support"> <sect1info> - <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml,v 1.269 2004/12/17 18:37:58 brueffer Exp $</pubdate> >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200412311920.iBVJKfj1028720>