From owner-p4-projects Thu Aug 8 23: 0:55 2002 Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7451B37B401; Thu, 8 Aug 2002 22:59:28 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 28F3037B400 for ; Thu, 8 Aug 2002 22:59:28 -0700 (PDT) Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 50B0643E65 for ; Thu, 8 Aug 2002 22:59:27 -0700 (PDT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from freefall.freebsd.org (perforce@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.4/8.12.4) with ESMTP id g795xRJU001110 for ; Thu, 8 Aug 2002 22:59:27 -0700 (PDT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by freefall.freebsd.org (8.12.4/8.12.4/Submit) id g795xQbu001107 for perforce@freebsd.org; Thu, 8 Aug 2002 22:59:26 -0700 (PDT) Date: Thu, 8 Aug 2002 22:59:26 -0700 (PDT) Message-Id: <200208090559.g795xQbu001107@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson Subject: PERFORCE change 15713 for review To: Perforce Change Reviews Sender: owner-p4-projects@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG http://people.freebsd.org/~peter/p4db/chv.cgi?CH=15713 Change 15713 by rwatson@rwatson_tislabs on 2002/08/08 22:59:03 Integ main -CURRENT tree into trustedbsd base. Affected files ... .. //depot/projects/trustedbsd/base/Makefile.inc1#21 integrate .. //depot/projects/trustedbsd/base/bin/kenv/Makefile#1 branch .. //depot/projects/trustedbsd/base/bin/kenv/kenv.1#1 branch .. //depot/projects/trustedbsd/base/bin/kenv/kenv.c#1 branch .. //depot/projects/trustedbsd/base/etc/isdn/Makefile#4 integrate .. //depot/projects/trustedbsd/base/gnu/usr.bin/groff/tmac/koi8-r#4 integrate .. //depot/projects/trustedbsd/base/gnu/usr.bin/man/apropos/apropos.man#4 integrate .. //depot/projects/trustedbsd/base/gnu/usr.bin/man/apropos/apropos.sh#2 integrate .. //depot/projects/trustedbsd/base/include/Makefile#13 integrate .. //depot/projects/trustedbsd/base/include/ulimit.h#1 branch .. //depot/projects/trustedbsd/base/lib/libc/gen/Makefile.inc#10 integrate .. //depot/projects/trustedbsd/base/lib/libc/gen/ulimit.3#1 branch .. //depot/projects/trustedbsd/base/lib/libc/gen/ulimit.c#1 branch .. //depot/projects/trustedbsd/base/lib/libc/i386/sys/sbrk.S#4 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/collate.c#3 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/collate.h#4 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/euc.c#3 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/ldpart.c#6 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/ldpart.h#4 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/lmessages.c#5 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/lmonetary.c#5 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/lnumeric.c#4 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/rune.c#4 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/setlocale.c#6 integrate .. //depot/projects/trustedbsd/base/lib/libc/locale/setrunelocale.c#4 integrate .. //depot/projects/trustedbsd/base/lib/libc/nls/msgcat.c#4 integrate .. //depot/projects/trustedbsd/base/lib/libc/posix1e/mac_te.c#2 integrate .. //depot/projects/trustedbsd/base/lib/libc/posix1e/mac_text.c#2 integrate .. //depot/projects/trustedbsd/base/lib/libc/posix1e/posix1e.3#2 integrate .. //depot/projects/trustedbsd/base/lib/libc/stdtime/timelocal.c#5 integrate .. //depot/projects/trustedbsd/base/lib/libc/string/strsep.3#2 integrate .. //depot/projects/trustedbsd/base/lib/libc/sys/execve.2#5 integrate .. //depot/projects/trustedbsd/base/lib/libc/sys/getrlimit.2#2 integrate .. //depot/projects/trustedbsd/base/libexec/ftpd/ftpd.8#4 integrate .. //depot/projects/trustedbsd/base/libexec/ftpd/ftpd.c#11 integrate .. //depot/projects/trustedbsd/base/libexec/rtld-elf/rtld.c#7 integrate .. //depot/projects/trustedbsd/base/sbin/mount_nfs/mount_nfs.c#6 integrate .. //depot/projects/trustedbsd/base/share/man/man4/nge.4#4 integrate .. //depot/projects/trustedbsd/base/sys/alpha/include/pmap.h#7 integrate .. //depot/projects/trustedbsd/base/sys/boot/i386/libi386/i386_module.c#2 integrate .. //depot/projects/trustedbsd/base/sys/conf/kmod_syms.awk#4 integrate .. //depot/projects/trustedbsd/base/sys/dev/ata/atapi-cd.c#13 integrate .. //depot/projects/trustedbsd/base/sys/dev/ata/atapi-cd.h#5 integrate .. //depot/projects/trustedbsd/base/sys/dev/fxp/if_fxp.c#13 integrate .. //depot/projects/trustedbsd/base/sys/dev/mii/mii.c#4 integrate .. //depot/projects/trustedbsd/base/sys/dev/nge/if_nge.c#10 integrate .. //depot/projects/trustedbsd/base/sys/dev/nge/if_ngereg.h#3 integrate .. //depot/projects/trustedbsd/base/sys/dev/sn/if_sn_pccard.c#5 integrate .. //depot/projects/trustedbsd/base/sys/dev/sound/usb/uaudio.c#4 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/ohci.c#14 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/ucom.c#6 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/udbp.c#6 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/ufm.c#6 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/ugen.c#10 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/uhci.c#18 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/uhid.c#8 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/uhub.c#9 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/ukbd.c#6 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/ulpt.c#8 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/umass.c#14 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/umodem.c#8 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/ums.c#9 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/uplcom.c#5 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/urio.c#8 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/usb.c#11 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/usb_port.h#10 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/uscanner.c#8 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/uvisor.c#4 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/uvscom.c#6 integrate .. //depot/projects/trustedbsd/base/sys/i386/acpica/acpi_wakeup.c#7 integrate .. //depot/projects/trustedbsd/base/sys/i386/conf/GENERIC#16 integrate .. //depot/projects/trustedbsd/base/sys/i386/conf/OLDCARD#4 integrate .. //depot/projects/trustedbsd/base/sys/i386/isa/vesa.c#2 integrate .. //depot/projects/trustedbsd/base/sys/ia64/include/pmap.h#5 integrate .. //depot/projects/trustedbsd/base/sys/kern/init_main.c#15 integrate .. //depot/projects/trustedbsd/base/sys/kern/kern_acct.c#7 integrate .. //depot/projects/trustedbsd/base/sys/kern/kern_fork.c#17 integrate .. //depot/projects/trustedbsd/base/sys/kern/kern_sig.c#19 integrate .. //depot/projects/trustedbsd/base/sys/kern/subr_clock.c#2 integrate .. //depot/projects/trustedbsd/base/sys/kern/subr_mbuf.c#13 integrate .. //depot/projects/trustedbsd/base/sys/kern/tty_cons.c#5 integrate .. //depot/projects/trustedbsd/base/sys/kern/uipc_syscalls.c#16 integrate .. //depot/projects/trustedbsd/base/sys/kern/vfs_aio.c#16 integrate .. //depot/projects/trustedbsd/base/sys/kern/vfs_vnops.c#21 integrate .. //depot/projects/trustedbsd/base/sys/pci/if_sis.c#12 integrate .. //depot/projects/trustedbsd/base/sys/pci/if_ste.c#5 integrate .. //depot/projects/trustedbsd/base/sys/pci/if_stereg.h#2 integrate .. //depot/projects/trustedbsd/base/sys/powerpc/include/pmap.h#5 integrate .. //depot/projects/trustedbsd/base/sys/sparc64/include/pmap.h#11 integrate .. //depot/projects/trustedbsd/base/sys/sys/cdrio.h#4 integrate .. //depot/projects/trustedbsd/base/sys/sys/proc.h#18 integrate .. //depot/projects/trustedbsd/base/sys/sys/vnode.h#20 integrate .. //depot/projects/trustedbsd/base/sys/vm/vm_page.c#16 integrate .. //depot/projects/trustedbsd/base/usr.bin/make/main.c#6 integrate .. //depot/projects/trustedbsd/base/usr.bin/quota/quota.1#3 integrate .. //depot/projects/trustedbsd/base/usr.bin/quota/quota.c#5 integrate .. //depot/projects/trustedbsd/base/usr.bin/su/su.c#7 integrate .. //depot/projects/trustedbsd/base/usr.bin/truss/syscalls.c#7 integrate .. //depot/projects/trustedbsd/base/usr.sbin/burncd/burncd.8#6 integrate .. //depot/projects/trustedbsd/base/usr.sbin/burncd/burncd.c#9 integrate .. //depot/projects/trustedbsd/base/usr.sbin/crunch/crunchgen/crunched_main.c#3 integrate .. //depot/projects/trustedbsd/base/usr.sbin/edquota/edquota.c#4 integrate .. //depot/projects/trustedbsd/base/usr.sbin/inetd/inetd.8#5 integrate .. //depot/projects/trustedbsd/base/usr.sbin/inetd/inetd.c#5 integrate .. //depot/projects/trustedbsd/base/usr.sbin/inetd/inetd.h#3 integrate .. //depot/projects/trustedbsd/base/usr.sbin/sysinstall/anonFTP.c#2 integrate .. //depot/projects/trustedbsd/base/usr.sbin/sysinstall/config.c#7 integrate Differences ... ==== //depot/projects/trustedbsd/base/Makefile.inc1#21 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.300 2002/08/05 08:54:26 ru Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.302 2002/08/08 15:43:23 ru Exp $ # # Make command line options: # -DMAKE_KERBEROS4 to build KerberosIV @@ -131,9 +131,14 @@ TARGET?= ${TARGET_ARCH} TARGET_CPUTYPE?= .endif -_CPUTYPE!= cd ${.CURDIR}; ${MAKE} -m ${.CURDIR}/share/mk \ - CPUTYPE=X${TARGET_CPUTYPE} -V CPUTYPE -.if ${_CPUTYPE} != X${TARGET_CPUTYPE} +.if !empty(TARGET_CPUTYPE) +_TARGET_CPUTYPE=${TARGET_CPUTYPE} +.else +_TARGET_CPUTYPE=dummy +.endif +_CPUTYPE!= ${MAKE} -f /dev/null -m ${.CURDIR}/share/mk \ + CPUTYPE=${_TARGET_CPUTYPE} -V CPUTYPE +.if ${_CPUTYPE} != ${_TARGET_CPUTYPE} .error CPUTYPE global should be set with ?=. .endif .if make(buildworld) ==== //depot/projects/trustedbsd/base/etc/isdn/Makefile#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/isdn/Makefile,v 1.8 2002/07/29 09:40:05 ru Exp $ +# $FreeBSD: src/etc/isdn/Makefile,v 1.9 2002/08/07 16:01:06 ru Exp $ I4BETCPROG= answer \ isdntel.sh \ @@ -23,6 +23,3 @@ for i in ${I4BETCFILE} ; do \ ${INSTALL} -o root -g wheel -m 600 $$i ${DESTDIR}/etc/isdn ; \ done - -# Suck in the ${COPY} definition. -.include ==== //depot/projects/trustedbsd/base/gnu/usr.bin/groff/tmac/koi8-r#4 (text+ko) ==== @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/gnu/usr.bin/groff/tmac/koi8-r,v 1.6 2002/01/11 11:42:16 ru Exp $ +.\" $FreeBSD: src/gnu/usr.bin/groff/tmac/koi8-r,v 1.7 2002/08/07 17:47:24 ru Exp $ .\" .\" %beginstrip% . @@ -119,6 +119,15 @@ .as doc-str-Rv-std0 " а код ошибки сохраняется в глобальной .as doc-str-Rv-std0 " переменной \*[doc-Va-font]errno\f[P]. . +.\" локализация .Ex +.ds doc-str-Ex-std-prefix "Утилита +.ds doc-str-Ex-std-suffix "возвращает\~0 в случае успешного завершения +.as doc-str-Ex-std-suffix " и\~>0 в случае возникновения ошибки. +. +.ds doc-str-Ex-stds-prefix "Утилиты +.ds doc-str-Ex-stds-suffix "возвращают\~0 в случае успешного завершения +.as doc-str-Ex-stds-suffix " и\~>0 в случае возникновения ошибки. +. .\" локализация .Ar .ds doc-str-Ar-default "файл\ .\|.\|. . ==== //depot/projects/trustedbsd/base/gnu/usr.bin/man/apropos/apropos.man#4 (text+ko) ==== @@ -12,7 +12,7 @@ .\" The University of Texas at Austin .\" Austin, Texas 78712 .\" -.\" $FreeBSD: src/gnu/usr.bin/man/apropos/apropos.man,v 1.10 2002/03/12 20:00:52 charnier Exp $ +.\" $FreeBSD: src/gnu/usr.bin/man/apropos/apropos.man,v 1.11 2002/08/07 17:39:35 ru Exp $ .Dd January 15, 1991 .Dt APROPOS 1 .Os @@ -34,7 +34,7 @@ displays only complete word matches. .Pp .Ar keyword -really is a regular expression, please read +really is an extended regular expression, please read .Xr grep 1 manual page for more information about its format. .Sh DIAGNOSTICS ==== //depot/projects/trustedbsd/base/gnu/usr.bin/man/apropos/apropos.sh#2 (text+ko) ==== @@ -15,7 +15,7 @@ # The University of Texas at Austin # Austin, Texas 78712 # -# $FreeBSD: src/gnu/usr.bin/man/apropos/apropos.sh,v 1.14 2001/03/30 10:44:29 wosch Exp $ +# $FreeBSD: src/gnu/usr.bin/man/apropos/apropos.sh,v 1.15 2002/08/07 17:39:35 ru Exp $ PATH=/bin:/usr/bin:$PATH @@ -84,7 +84,7 @@ for manpage do - if grep -hi $grepopt -- "$manpage" $mandir; then : + if grep -Ehi $grepopt -- "$manpage" $mandir; then : else echo "$manpage: nothing appropriate" fi ==== //depot/projects/trustedbsd/base/include/Makefile#13 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.2 (Berkeley) 1/4/94 -# $FreeBSD: src/include/Makefile,v 1.174 2002/08/05 06:49:58 mike Exp $ +# $FreeBSD: src/include/Makefile,v 1.175 2002/08/08 04:50:36 mike Exp $ # # Doing a make install builds /usr/include # @@ -21,7 +21,8 @@ search.h setjmp.h sgtty.h \ signal.h stab.h stdbool.h stddef.h stdio.h stdlib.h strhash.h \ string.h stringlist.h strings.h sysexits.h tar.h time.h timeconv.h \ - timers.h ttyent.h unistd.h utime.h utmp.h vis.h wchar.h wctype.h + timers.h ttyent.h ulimit.h unistd.h utime.h utmp.h vis.h wchar.h \ + wctype.h MHDRS= float.h floatingpoint.h stdarg.h varargs.h ==== //depot/projects/trustedbsd/base/lib/libc/gen/Makefile.inc#10 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile.inc 8.6 (Berkeley) 5/4/95 -# $FreeBSD: src/lib/libc/gen/Makefile.inc,v 1.93 2002/08/05 06:49:58 mike Exp $ +# $FreeBSD: src/lib/libc/gen/Makefile.inc,v 1.94 2002/08/08 04:50:36 mike Exp $ # machine-independent gen sources .PATH: ${.CURDIR}/../libc/${MACHINE_ARCH}/gen ${.CURDIR}/../libc/gen @@ -28,8 +28,8 @@ sigsetops.c sleep.c srand48.c statvfs.c stringlist.c strtofflags.c \ sysconf.c sysctl.c sysctlbyname.c sysctlnametomib.c \ syslog.c telldir.c termios.c time.c times.c timezone.c ttyname.c \ - ttyslot.c ualarm.c uname.c unvis.c usleep.c utime.c valloc.c vis.c \ - wait.c wait3.c waitpid.c + ttyslot.c ualarm.c ulimit.c uname.c unvis.c usleep.c utime.c \ + valloc.c vis.c wait.c wait3.c waitpid.c # machine-dependent gen sources .if exists(${.CURDIR}/../libc/${MACHINE_ARCH}/gen/Makefile.inc) @@ -56,7 +56,7 @@ siginterrupt.3 signal.3 sigsetops.3 sleep.3 statvfs.3 stringlist.3 \ strtofflags.3 sysconf.3 sysctl.3 syslog.3 tcgetpgrp.3 \ tcsendbreak.3 tcsetattr.3 tcsetpgrp.3 time.3 times.3 timezone.3 \ - ttyname.3 tzset.3 ualarm.3 uname.3 unvis.3 usleep.3 utime.3 \ + ttyname.3 tzset.3 ualarm.3 ulimit.3 uname.3 unvis.3 usleep.3 utime.3 \ valloc.3 vis.3 MLINKS+=arc4random.3 arc4random_addrandom.3 arc4random.3 arc4random_stir.3 ==== //depot/projects/trustedbsd/base/lib/libc/i386/sys/sbrk.S#4 (text+ko) ==== @@ -38,17 +38,17 @@ .asciz "@(#)sbrk.s 5.1 (Berkeley) 4/23/90" #endif /* SYSLIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/i386/sys/sbrk.S,v 1.10 2002/03/23 02:10:28 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/i386/sys/sbrk.S,v 1.11 2002/08/08 17:28:07 kan Exp $"); #include "SYS.h" - .globl CNAME(end) + .globl CNAME(_end) .globl HIDENAME(minbrk) .globl HIDENAME(curbrk) .data -HIDENAME(minbrk): .long CNAME(end) -HIDENAME(curbrk): .long CNAME(end) +HIDENAME(minbrk): .long CNAME(_end) +HIDENAME(curbrk): .long CNAME(_end) .text ENTRY(sbrk) ==== //depot/projects/trustedbsd/base/lib/libc/locale/collate.c#3 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libc/locale/collate.c,v 1.24 2002/03/29 22:43:42 markm Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/locale/collate.c,v 1.26 2002/08/08 05:51:54 ache Exp $"); #include "namespace.h" #include @@ -40,68 +40,115 @@ #include "collate.h" #include "setlocale.h" +#include "ldpart.h" #include "libc_private.h" int __collate_load_error = 1; int __collate_substitute_nontrivial; -char __collate_version[STR_LEN]; + u_char __collate_substitute_table[UCHAR_MAX + 1][STR_LEN]; struct __collate_st_char_pri __collate_char_pri_table[UCHAR_MAX + 1]; struct __collate_st_chain_pri __collate_chain_pri_table[TABLE_SIZE]; -#define FREAD(a, b, c, d) \ - do { \ - if (fread(a, b, c, d) != c) { \ - fclose(d); \ - return -1; \ - } \ - } while(0) - void __collate_err(int ex, const char *f) __dead2; int -__collate_load_tables(encoding) - char *encoding; +__collate_load_tables(const char *encoding) { + FILE *fp; + int i, saverr; + char collate_version[STR_LEN]; char buf[PATH_MAX]; - FILE *fp; - int i, save_load_error; + char *TMP_substitute_table, *TMP_char_pri_table, *TMP_chain_pri_table; + static char collate_encoding[ENCODING_LEN + 1]; - save_load_error = __collate_load_error; - __collate_load_error = 1; - if (!encoding) { - __collate_load_error = save_load_error; - return -1; + /* 'encoding' must be already checked. */ + if (strcmp(encoding, "C") == 0 || strcmp(encoding, "POSIX") == 0) { + __collate_load_error = 1; + return (_LDP_CACHE); } - if (!strcmp(encoding, "C") || !strcmp(encoding, "POSIX")) - return 0; - if (!_PathLocale) { - __collate_load_error = save_load_error; - return -1; + + /* + * If the locale name is the same as our cache, use the cache. + */ + if (strcmp(encoding, collate_encoding) == 0) { + __collate_load_error = 0; + return (_LDP_CACHE); } + + /* + * Slurp the locale file into the cache. + */ + + /* 'PathLocale' must be already set & checked. */ /* Range checking not needed, encoding has fixed size */ - (void) strcpy(buf, _PathLocale); - (void) strcat(buf, "/"); - (void) strcat(buf, encoding); - (void) strcat(buf, "/LC_COLLATE"); - if ((fp = fopen(buf, "r")) == NULL) { - __collate_load_error = save_load_error; - return -1; + (void)strcpy(buf, _PathLocale); + (void)strcat(buf, "/"); + (void)strcat(buf, encoding); + (void)strcat(buf, "/LC_COLLATE"); + if ((fp = fopen(buf, "r")) == NULL) + return (_LDP_ERROR); + + if ((TMP_substitute_table = + malloc(sizeof(__collate_substitute_table))) == NULL) { + (void)fclose(fp); + errno = ENOMEM; + return (_LDP_ERROR); + } + if ((TMP_char_pri_table = + malloc(sizeof(__collate_char_pri_table))) == NULL) { + free(TMP_substitute_table); + (void)fclose(fp); + errno = ENOMEM; + return (_LDP_ERROR); + } + if ((TMP_chain_pri_table = + malloc(sizeof(__collate_chain_pri_table))) == NULL) { + free(TMP_substitute_table); + free(TMP_char_pri_table); + (void)fclose(fp); + errno = ENOMEM; + return (_LDP_ERROR); } - FREAD(__collate_version, sizeof(__collate_version), 1, fp); - if (strcmp(__collate_version, COLLATE_VERSION) != 0) { - fclose(fp); - return -1; + +#define FREAD(a, b, c, d) \ +{ \ + if (fread(a, b, c, d) != c) { \ + saverr = errno; \ + free(TMP_substitute_table); \ + free(TMP_char_pri_table); \ + free(TMP_chain_pri_table); \ + (void)fclose(d); \ + errno = saverr; \ + return (_LDP_ERROR); \ + } \ +} + + FREAD(collate_version, sizeof(collate_version), 1, fp); + if (strcmp(collate_version, COLLATE_VERSION) != 0) { + free(TMP_substitute_table); + free(TMP_char_pri_table); + free(TMP_chain_pri_table); + (void)fclose(fp); + errno = EFTYPE; + return (_LDP_ERROR); } - FREAD(__collate_substitute_table, sizeof(__collate_substitute_table), - 1, fp); - FREAD(__collate_char_pri_table, sizeof(__collate_char_pri_table), 1, - fp); - FREAD(__collate_chain_pri_table, sizeof(__collate_chain_pri_table), 1, - fp); - fclose(fp); - __collate_load_error = 0; + FREAD(TMP_substitute_table, sizeof(__collate_substitute_table), 1, fp); + FREAD(TMP_char_pri_table, sizeof(__collate_char_pri_table), 1, fp); + FREAD(TMP_chain_pri_table, sizeof(__collate_chain_pri_table), 1, fp); + (void)fclose(fp); + + (void)strcpy(collate_encoding, encoding); + (void)memcpy(__collate_substitute_table, TMP_substitute_table, + sizeof(__collate_substitute_table)); + (void)memcpy(__collate_char_pri_table, TMP_char_pri_table, + sizeof(__collate_char_pri_table)); + (void)memcpy(__collate_chain_pri_table, TMP_chain_pri_table, + sizeof(__collate_chain_pri_table)); + free(TMP_substitute_table); + free(TMP_char_pri_table); + free(TMP_chain_pri_table); __collate_substitute_nontrivial = 0; for (i = 0; i < UCHAR_MAX + 1; i++) { @@ -111,8 +158,9 @@ break; } } + __collate_load_error = 0; - return 0; + return (_LDP_LOADED); } u_char * @@ -123,24 +171,24 @@ int delta = strlen(s); u_char *dest_str = NULL; - if(s == NULL || *s == '\0') - return __collate_strdup(""); + if (s == NULL || *s == '\0') + return (__collate_strdup("")); delta += delta / 8; dest_str = malloc(dest_len = delta); - if(dest_str == NULL) + if (dest_str == NULL) __collate_err(EX_OSERR, __FUNCTION__); len = 0; - while(*s) { + while (*s) { nlen = len + strlen(__collate_substitute_table[*s]); if (dest_len <= nlen) { dest_str = reallocf(dest_str, dest_len = nlen + delta); - if(dest_str == NULL) + if (dest_str == NULL) __collate_err(EX_OSERR, __FUNCTION__); } - strcpy(dest_str + len, __collate_substitute_table[*s++]); + (void)strcpy(dest_str + len, __collate_substitute_table[*s++]); len = nlen; } - return dest_str; + return (dest_str); } void @@ -152,8 +200,8 @@ *len = 1; *prim = *sec = 0; - for(p2 = __collate_chain_pri_table; p2->str[0]; p2++) { - if(strncmp(t, p2->str, strlen(p2->str)) == 0) { + for (p2 = __collate_chain_pri_table; p2->str[0]; p2++) { + if (strncmp(t, p2->str, strlen(p2->str)) == 0) { *len = strlen(p2->str); *prim = p2->prim; *sec = p2->sec; @@ -172,7 +220,7 @@ if (t == NULL) __collate_err(EX_OSERR, __FUNCTION__); - return t; + return (t); } void ==== //depot/projects/trustedbsd/base/lib/libc/locale/collate.h#4 (text+ko) ==== @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libc/locale/collate.h,v 1.11 2002/03/21 22:46:54 obrien Exp $ + * $FreeBSD: src/lib/libc/locale/collate.h,v 1.12 2002/08/08 05:51:54 ache Exp $ */ #ifndef _COLLATE_H_ @@ -48,7 +48,6 @@ extern int __collate_load_error; extern int __collate_substitute_nontrivial; -extern char __collate_version[STR_LEN]; extern u_char __collate_substitute_table[UCHAR_MAX + 1][STR_LEN]; extern struct __collate_st_char_pri __collate_char_pri_table[UCHAR_MAX + 1]; extern struct __collate_st_chain_pri __collate_chain_pri_table[TABLE_SIZE]; @@ -56,7 +55,7 @@ __BEGIN_DECLS u_char *__collate_strdup(u_char *); u_char *__collate_substitute(const u_char *); -int __collate_load_tables(char *); +int __collate_load_tables(const char *); void __collate_lookup(const u_char *, int *, int *, int *); int __collate_range_cmp(int, int); #ifdef COLLATE_DEBUG ==== //depot/projects/trustedbsd/base/lib/libc/locale/euc.c#3 (text+ko) ==== @@ -38,7 +38,7 @@ static char sccsid[] = "@(#)euc.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/locale/euc.c,v 1.8 2002/04/14 10:55:42 asmodai Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/locale/euc.c,v 1.10 2002/08/08 05:51:54 ache Exp $"); #include @@ -63,40 +63,36 @@ _RuneLocale *rl; { _EucInfo *ei; - int x; + int x, new__mb_cur_max; char *v, *e; rl->sgetrune = _EUC_sgetrune; rl->sputrune = _EUC_sputrune; - if (!rl->variable) { - free(rl); + if (rl->variable == NULL) return (EFTYPE); - } - v = (char *) rl->variable; + + v = (char *)rl->variable; while (*v == ' ' || *v == '\t') ++v; - if ((ei = malloc(sizeof(_EucInfo))) == NULL) { - free(rl); + if ((ei = malloc(sizeof(_EucInfo))) == NULL) return (ENOMEM); - } - __mb_cur_max = 0; + + new__mb_cur_max = 0; for (x = 0; x < 4; ++x) { - ei->count[x] = (int) strtol(v, &e, 0); + ei->count[x] = (int)strtol(v, &e, 0); if (v == e || !(v = e)) { - free(rl); free(ei); return (EFTYPE); } - if (__mb_cur_max < ei->count[x]) - __mb_cur_max = ei->count[x]; + if (new__mb_cur_max < ei->count[x]) + new__mb_cur_max = ei->count[x]; while (*v == ' ' || *v == '\t') ++v; - ei->bits[x] = (int) strtol(v, &e, 0); + ei->bits[x] = (int)strtol(v, &e, 0); if (v == e || !(v = e)) { - free(rl); free(ei); return (EFTYPE); } @@ -105,18 +101,13 @@ } ei->mask = (int)strtol(v, &e, 0); if (v == e || !(v = e)) { - free(rl); free(ei); return (EFTYPE); } - if (sizeof(_EucInfo) <= rl->variable_len) { - memcpy(rl->variable, ei, sizeof(_EucInfo)); - free(ei); - } else { - rl->variable = &ei; - } + rl->variable = ei; rl->variable_len = sizeof(_EucInfo); _CurrentRuneLocale = rl; + __mb_cur_max = new__mb_cur_max; return (0); } ==== //depot/projects/trustedbsd/base/lib/libc/locale/ldpart.c#6 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libc/locale/ldpart.c,v 1.9 2002/08/04 09:37:28 ache Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/locale/ldpart.c,v 1.11 2002/08/08 05:51:54 ache Exp $"); #include "namespace.h" #include @@ -42,7 +42,6 @@ #include "ldpart.h" static int split_lines(char *, const char *); -static void set_from_buf(const char *, int, const char **); int __part_load_locale(const char *name, @@ -53,35 +52,25 @@ int locale_buf_size_min, const char **dst_localebuf) { - static char locale_buf_C[] = "C"; - static int num_lines; - int saverr; - int fd; - char *lbuf; - char *p; - const char *plim; - char filename[PATH_MAX]; - struct stat st; - size_t namesize; - size_t bufsize; - int save_using_locale; - - save_using_locale = *using_locale; - *using_locale = 0; + int saverr, fd, i, num_lines; + char *lbuf, *p; + const char *plim; + char filename[PATH_MAX]; + struct stat st; + size_t namesize, bufsize; /* 'name' must be already checked. */ + if (strcmp(name, "C") == 0 || strcmp(name, "POSIX") == 0) { + *using_locale = 0; + return (_LDP_CACHE); + } - if (!strcmp(name, "C") || !strcmp(name, "POSIX")) - return 0; - /* * If the locale name is the same as our cache, use the cache. */ - lbuf = locale_buf; - if (lbuf != NULL && strcmp(name, lbuf) == 0) { - set_from_buf(lbuf, num_lines, dst_localebuf); + if (locale_buf != NULL && strcmp(name, locale_buf) == 0) { *using_locale = 1; - return 0; + return (_LDP_CACHE); } /* @@ -90,16 +79,14 @@ namesize = strlen(name) + 1; /* 'PathLocale' must be already set & checked. */ - /* Range checking not needed, 'name' size is limited */ strcpy(filename, _PathLocale); strcat(filename, "/"); strcat(filename, name); strcat(filename, "/"); strcat(filename, category_filename); - fd = _open(filename, O_RDONLY); - if (fd < 0) - goto no_locale; + if ((fd = _open(filename, O_RDONLY)) < 0) + return (_LDP_ERROR); if (_fstat(fd, &st) != 0) goto bad_locale; if (st.st_size <= 0) { @@ -107,18 +94,15 @@ goto bad_locale; } bufsize = namesize + st.st_size; - locale_buf = NULL; - lbuf = (lbuf == NULL || lbuf == locale_buf_C) ? - malloc(bufsize) : reallocf(lbuf, bufsize); - if (lbuf == NULL) + if ((lbuf = malloc(bufsize)) == NULL) { + errno = ENOMEM; goto bad_locale; - (void) strcpy(lbuf, name); + } + (void)strcpy(lbuf, name); p = lbuf + namesize; plim = p + st.st_size; if (_read(fd, p, (size_t) st.st_size) != st.st_size) goto bad_lbuf; - if (_close(fd) != 0) - goto bad_lbuf; /* * Parse the locale file into localebuf. */ @@ -133,48 +117,44 @@ num_lines = locale_buf_size_min; else { errno = EFTYPE; - goto reset_locale; + goto bad_lbuf; } - set_from_buf(lbuf, num_lines, dst_localebuf); + (void)_close(fd); /* * Record the successful parse in the cache. */ + if (locale_buf != NULL) + free(locale_buf); locale_buf = lbuf; + for (p = locale_buf, i = 0; i < num_lines; i++) + dst_localebuf[i] = (p += strlen(p) + 1); + for (i = num_lines; i < locale_buf_size_max; i++) + dst_localebuf[i] = NULL; + *using_locale = 1; - *using_locale = 1; - return 0; + return (_LDP_LOADED); -reset_locale: - locale_buf = locale_buf_C; - save_using_locale = 0; bad_lbuf: - saverr = errno; free(lbuf); errno = saverr; + saverr = errno; + free(lbuf); + errno = saverr; bad_locale: - saverr = errno; (void)_close(fd); errno = saverr; -no_locale: - *using_locale = save_using_locale; - return -1; + saverr = errno; + (void)_close(fd); + errno = saverr; + + return (_LDP_ERROR); } static int -split_lines(char *p, const char *plim) { - +split_lines(char *p, const char *plim) +{ int i; for (i = 0; p < plim; i++) { p = strchr(p, '\n'); *p++ = '\0'; } - return i; -} - -static void -set_from_buf(const char *p, int num_lines, const char **dst_localebuf) { - - const char **ap; - int i; - - for (ap = dst_localebuf, i = 0; i < num_lines; ++ap, ++i) - *ap = p += strlen(p) + 1; + return (i); } ==== //depot/projects/trustedbsd/base/lib/libc/locale/ldpart.h#4 (text+ko) ==== @@ -23,12 +23,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libc/locale/ldpart.h,v 1.4 2001/12/20 18:28:52 phantom Exp $ + * $FreeBSD: src/lib/libc/locale/ldpart.h,v 1.5 2002/08/08 05:51:54 ache Exp $ */ #ifndef _LDPART_H_ #define _LDPART_H_ +#define _LDP_LOADED 0 +#define _LDP_ERROR (-1) +#define _LDP_CACHE 1 + int __part_load_locale(const char *, int*, char *, const char *, int, int, const char **); ==== //depot/projects/trustedbsd/base/lib/libc/locale/lmessages.c#5 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libc/locale/lmessages.c,v 1.10 2002/03/22 21:52:18 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/locale/lmessages.c,v 1.12 2002/08/08 05:51:54 ache Exp $"); #include @@ -50,25 +50,26 @@ static char *_messages_locale_buf; int -__messages_load_locale(const char *name) { +__messages_load_locale(const char *name) +{ + int ret; - /* - * Propose that we can have incomplete locale file (w/o "{yes,no}str"). - * Initialize them before loading. In case of complete locale, they'll - * be initialized to loaded value, otherwise they'll not be touched. - */ - _messages_locale.yesstr = empty; - _messages_locale.nostr = empty; - - return __part_load_locale(name, &_messages_using_locale, - _messages_locale_buf, "LC_MESSAGES", - LCMESSAGES_SIZE_FULL, LCMESSAGES_SIZE_MIN, - (const char **)&_messages_locale); + ret = __part_load_locale(name, &_messages_using_locale, + _messages_locale_buf, "LC_MESSAGES", + LCMESSAGES_SIZE_FULL, LCMESSAGES_SIZE_MIN, + (const char **)&_messages_locale); + if (ret == _LDP_LOADED) { + if (_messages_locale.yesstr == NULL) + _messages_locale.yesstr = empty; + if (_messages_locale.nostr == NULL) + _messages_locale.nostr = empty; + } + return (ret); } struct lc_messages_T * -__get_current_messages_locale(void) { - +__get_current_messages_locale(void) +{ return (_messages_using_locale ? &_messages_locale : (struct lc_messages_T *)&_C_messages_locale); ==== //depot/projects/trustedbsd/base/lib/libc/locale/lmonetary.c#5 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libc/locale/lmonetary.c,v 1.13 2002/03/22 21:52:18 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/locale/lmonetary.c,v 1.15 2002/08/08 05:51:54 ache Exp $"); #include #include @@ -63,23 +63,27 @@ static char *_monetary_locale_buf; static char -cnv(const char *str) { +cnv(const char *str) +{ int i = strtol(str, NULL, 10); + if (i == -1) i = CHAR_MAX; - return (char)i; + return ((char)i); } int -__monetary_load_locale(const char *name) { +__monetary_load_locale(const char *name) +{ + int ret; - int ret; - __mlocale_changed = 1; ret = __part_load_locale(name, &_monetary_using_locale, _monetary_locale_buf, "LC_MONETARY", LCMONETARY_SIZE, LCMONETARY_SIZE, (const char **)&_monetary_locale); - if (ret == 0 && _monetary_using_locale) { + if (ret != _LDP_ERROR) + __mlocale_changed = 1; + if (ret == _LDP_LOADED) { _monetary_locale.mon_grouping = __fix_locale_grouping_str(_monetary_locale.mon_grouping); @@ -95,12 +99,12 @@ M_ASSIGN_CHAR(p_sign_posn); M_ASSIGN_CHAR(n_sign_posn); } - return ret; + return (ret); } struct lc_monetary_T * -__get_current_monetary_locale(void) { - +__get_current_monetary_locale(void) +{ return (_monetary_using_locale ? &_monetary_locale : (struct lc_monetary_T *)&_C_monetary_locale); ==== //depot/projects/trustedbsd/base/lib/libc/locale/lnumeric.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libc/locale/lnumeric.c,v 1.11 2002/03/22 21:52:18 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/locale/lnumeric.c,v 1.13 2002/08/08 05:51:54 ache Exp $"); #include #include "lnumeric.h" @@ -49,24 +49,25 @@ static char *_numeric_locale_buf; int -__numeric_load_locale(const char *name) { - +__numeric_load_locale(const char *name) +{ int ret; - __nlocale_changed = 1; ret = __part_load_locale(name, &_numeric_using_locale, _numeric_locale_buf, "LC_NUMERIC", LCNUMERIC_SIZE, LCNUMERIC_SIZE, (const char **)&_numeric_locale); - if (ret == 0 && _numeric_using_locale) + if (ret != _LDP_ERROR) + __nlocale_changed = 1; + if (ret == _LDP_LOADED) _numeric_locale.grouping = >>> TRUNCATED FOR MAIL (1000 lines) <<< To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message