From owner-p4-projects@FreeBSD.ORG Fri Apr 2 00:18:55 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7EFE416A4D0; Fri, 2 Apr 2004 00:18:55 -0800 (PST) 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 5136416A4CE for ; Fri, 2 Apr 2004 00:18:55 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4462843D31 for ; Fri, 2 Apr 2004 00:18:55 -0800 (PST) (envelope-from dfr@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i328ItGe012585 for ; Fri, 2 Apr 2004 00:18:55 -0800 (PST) (envelope-from dfr@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i328Isau012582 for perforce@freebsd.org; Fri, 2 Apr 2004 00:18:54 -0800 (PST) (envelope-from dfr@freebsd.org) Date: Fri, 2 Apr 2004 00:18:54 -0800 (PST) Message-Id: <200404020818.i328Isau012582@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to dfr@freebsd.org using -f From: Doug Rabson To: Perforce Change Reviews Subject: PERFORCE change 50176 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Apr 2004 08:18:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=50176 Change 50176 by dfr@dfr_home on 2004/04/02 00:18:08 IFC, add tools/regression to branch. Affected files ... .. //depot/projects/kse/bin/ps/ps.1#13 integrate .. //depot/projects/kse/lib/libc/net/nsdispatch.c#3 integrate .. //depot/projects/kse/lib/libc/stdlib/getopt_long.c#3 integrate .. //depot/projects/kse/sys/alpha/alpha/machdep.c#46 integrate .. //depot/projects/kse/sys/conf/files#53 integrate .. //depot/projects/kse/sys/conf/files.i386#32 integrate .. //depot/projects/kse/sys/conf/majors#14 integrate .. //depot/projects/kse/sys/dev/uart/uart_cpu_sparc64.c#2 integrate .. //depot/projects/kse/sys/dev/uart/uart_dev_ns8250.c#2 integrate .. //depot/projects/kse/sys/dev/uart/uart_kbd_sun.c#2 integrate .. //depot/projects/kse/sys/dev/usb/usb_subr.c#11 integrate .. //depot/projects/kse/sys/i386/conf/GENERIC.hints#3 integrate .. //depot/projects/kse/sys/kern/kern_thr.c#3 integrate .. //depot/projects/kse/sys/kern/sys_process.c#34 integrate .. //depot/projects/kse/sys/net/if_sl.c#13 integrate .. //depot/projects/kse/sys/netinet6/udp6_usrreq.c#16 integrate .. //depot/projects/kse/sys/pc98/conf/NOTES#3 integrate .. //depot/projects/kse/sys/pci/if_ste.c#13 integrate .. //depot/projects/kse/tools/regression/README#1 branch .. //depot/projects/kse/tools/regression/atm/Funcs.sh#1 branch .. //depot/projects/kse/tools/regression/atm/README#1 branch .. //depot/projects/kse/tools/regression/atm/RunTest.sh#1 branch .. //depot/projects/kse/tools/regression/atm/harp/atm_udp.ng#1 branch .. //depot/projects/kse/tools/regression/atm/harp/memory_leak.sh#1 branch .. //depot/projects/kse/tools/regression/atm/proto_sscfu/RunTest.sh#1 branch .. //depot/projects/kse/tools/regression/atm/proto_sscop/RunTest.sh#1 branch .. //depot/projects/kse/tools/regression/atm/proto_uni/RunTest.sh#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/Makefile#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/a.c#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/b.c#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ccd.sh#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ccd0.sh#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_0#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.128k_128k_128k_128k_0_4#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_0#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_2#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.128k_128k_128k_128k_4_4#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_0#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_128k_128k_0_4#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_0#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_2#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_128k_128k_4_4#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_0#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_384k_128k_0_4#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_0#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_2#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_384k_128k_16_4#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_0#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_2#1 branch .. //depot/projects/kse/tools/regression/ccd/layout/ref.256k_128k_384k_128k_4_4#1 branch .. //depot/projects/kse/tools/regression/fsx/Makefile#1 branch .. //depot/projects/kse/tools/regression/fsx/fsx.c#1 branch .. //depot/projects/kse/tools/regression/gaithrstress/Makefile#1 branch .. //depot/projects/kse/tools/regression/gaithrstress/gaithrstress.c#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/ConfCmp.c#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/Makefile#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/a1.conf#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/a1a.conf#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/a1b.conf#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/a1c.conf#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/a1d.conf#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/a2.conf#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/a2a.conf#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/a2b.conf#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/a2c.conf#1 branch .. //depot/projects/kse/tools/regression/geom/ConfCmp/a2d.conf#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.alpha.da0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.alpha2.da0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.apple.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.beast.da0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.critter.ad0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.empty.flp.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.far.ad0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.flat.da1.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.kern.flp.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.msdos.ext.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.msdos.flp.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.pc98.wdc0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.sun.da0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.sun.da1.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Data/disk.typo.ad0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/MdLoad/Makefile#1 branch .. //depot/projects/kse/tools/regression/geom/MdLoad/MdLoad.c#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.alpha.da0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.alpha2.da0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.apple.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.beast.da0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.critter.ad0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.empty.flp.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.far.ad0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.flat.da1.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.kern.flp.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.msdos.ext.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.msdos.flp.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.pc98.wdc0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.sun.da0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.sun.da1.xml#1 branch .. //depot/projects/kse/tools/regression/geom/Ref/disk.typo.ad0.xml#1 branch .. //depot/projects/kse/tools/regression/geom/RunTest.sh#1 branch .. //depot/projects/kse/tools/regression/geom_concat/Makefile#1 branch .. //depot/projects/kse/tools/regression/geom_concat/runtests.sh#1 branch .. //depot/projects/kse/tools/regression/geom_concat/test-1.sh#1 branch .. //depot/projects/kse/tools/regression/geom_concat/test-2.sh#1 branch .. //depot/projects/kse/tools/regression/ia64_unaligned/Makefile#1 branch .. //depot/projects/kse/tools/regression/ia64_unaligned/unaligned.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/gen/Makefile#1 branch .. //depot/projects/kse/tools/regression/lib/libc/gen/test-fpclassify.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/gen/test-wordexp.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/Makefile#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-btowc.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-iswctype.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-mblen.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-mbrlen.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-mbrtowc.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-mbsrtowcs.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-mbstowcs.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-mbtowc.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-sgetrune.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-sputrune.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-towctrans.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-wcrtomb.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-wcsrtombs.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-wcstombs.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/locale/test-wctomb.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/stdio/Makefile#1 branch .. //depot/projects/kse/tools/regression/lib/libc/stdio/test-perror.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/stdio/test-printfloat.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/stdio/test-scanfloat.c#1 branch .. //depot/projects/kse/tools/regression/lib/libc/string/Makefile#1 branch .. //depot/projects/kse/tools/regression/lib/libc/string/test-strerror.c#1 branch .. //depot/projects/kse/tools/regression/nfsmmap/Makefile#1 branch .. //depot/projects/kse/tools/regression/nfsmmap/README#1 branch .. //depot/projects/kse/tools/regression/nfsmmap/test1/Makefile#1 branch .. //depot/projects/kse/tools/regression/nfsmmap/test1/test1.c#1 branch .. //depot/projects/kse/tools/regression/nfsmmap/test1/test1.good.uu#1 branch .. //depot/projects/kse/tools/regression/nfsmmap/test1/test1.zeros.uu#1 branch .. //depot/projects/kse/tools/regression/nfsmmap/test2/Makefile#1 branch .. //depot/projects/kse/tools/regression/nfsmmap/test2/test2.c#1 branch .. //depot/projects/kse/tools/regression/nfsmmap/test2/test2.good.uu#1 branch .. //depot/projects/kse/tools/regression/nfsmmap/test2/test2.zeros.uu#1 branch .. //depot/projects/kse/tools/regression/p1003_1b/Makefile#1 branch .. //depot/projects/kse/tools/regression/p1003_1b/README#1 branch .. //depot/projects/kse/tools/regression/p1003_1b/fifo.c#1 branch .. //depot/projects/kse/tools/regression/p1003_1b/main.c#1 branch .. //depot/projects/kse/tools/regression/p1003_1b/memlock.c#1 branch .. //depot/projects/kse/tools/regression/p1003_1b/p26.c#1 branch .. //depot/projects/kse/tools/regression/p1003_1b/prutil.c#1 branch .. //depot/projects/kse/tools/regression/p1003_1b/prutil.h#1 branch .. //depot/projects/kse/tools/regression/p1003_1b/sched.c#1 branch .. //depot/projects/kse/tools/regression/p1003_1b/yield.c#1 branch .. //depot/projects/kse/tools/regression/pipe/Makefile#1 branch .. //depot/projects/kse/tools/regression/pipe/bigpipetest.c#1 branch .. //depot/projects/kse/tools/regression/security/access/Makefile#1 branch .. //depot/projects/kse/tools/regression/security/access/testaccess.c#1 branch .. //depot/projects/kse/tools/regression/security/proc_to_proc/Makefile#1 branch .. //depot/projects/kse/tools/regression/security/proc_to_proc/README#1 branch .. //depot/projects/kse/tools/regression/security/proc_to_proc/scenario.c#1 branch .. //depot/projects/kse/tools/regression/security/proc_to_proc/scenario.h#1 branch .. //depot/projects/kse/tools/regression/security/proc_to_proc/testuid.c#1 branch .. //depot/projects/kse/tools/regression/sysvmsg/Makefile#1 branch .. //depot/projects/kse/tools/regression/sysvmsg/README#1 branch .. //depot/projects/kse/tools/regression/sysvmsg/msgtest.c#1 branch .. //depot/projects/kse/tools/regression/sysvsem/Makefile#1 branch .. //depot/projects/kse/tools/regression/sysvsem/README#1 branch .. //depot/projects/kse/tools/regression/sysvsem/semtest.c#1 branch .. //depot/projects/kse/tools/regression/sysvshm/Makefile#1 branch .. //depot/projects/kse/tools/regression/sysvshm/README#1 branch .. //depot/projects/kse/tools/regression/sysvshm/shmtest.c#1 branch .. //depot/projects/kse/tools/regression/usr.bin/Makefile#1 branch .. //depot/projects/kse/tools/regression/usr.bin/file2c/Makefile#1 branch .. //depot/projects/kse/tools/regression/usr.bin/file2c/regress.in#1 branch .. //depot/projects/kse/tools/regression/usr.bin/file2c/regress.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/file2c/regress.sh#1 branch .. //depot/projects/kse/tools/regression/usr.bin/join/Makefile#1 branch .. //depot/projects/kse/tools/regression/usr.bin/join/regress.1.in#1 branch .. //depot/projects/kse/tools/regression/usr.bin/join/regress.2.in#1 branch .. //depot/projects/kse/tools/regression/usr.bin/join/regress.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/join/regress.sh#1 branch .. //depot/projects/kse/tools/regression/usr.bin/jot/Makefile#1 branch .. //depot/projects/kse/tools/regression/usr.bin/jot/regress.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/jot/regress.sh#1 branch .. //depot/projects/kse/tools/regression/usr.bin/m4/Makefile#1 branch .. //depot/projects/kse/tools/regression/usr.bin/m4/regress.changecom.in#1 branch .. //depot/projects/kse/tools/regression/usr.bin/m4/regress.changecom.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/m4/regress.gchangecom.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/m4/regress.sh#1 branch .. //depot/projects/kse/tools/regression/usr.bin/make/Makefile#1 branch .. //depot/projects/kse/tools/regression/usr.bin/make/regress.sysvmatch.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/make/regress.variables.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/regress.m4#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/Makefile#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.G.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.P.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.bcb.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.in#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.psl.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.s3.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.s4.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.s5.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.sg.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.sh#1 branch .. //depot/projects/kse/tools/regression/usr.bin/sed/regress.y.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/uudecode/Makefile#1 branch .. //depot/projects/kse/tools/regression/usr.bin/uudecode/regress.base64.in#1 branch .. //depot/projects/kse/tools/regression/usr.bin/uudecode/regress.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/uudecode/regress.sh#1 branch .. //depot/projects/kse/tools/regression/usr.bin/uudecode/regress.traditional.in#1 branch .. //depot/projects/kse/tools/regression/usr.bin/uuencode/Makefile#1 branch .. //depot/projects/kse/tools/regression/usr.bin/uuencode/regress.base64.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/uuencode/regress.in#1 branch .. //depot/projects/kse/tools/regression/usr.bin/uuencode/regress.sh#1 branch .. //depot/projects/kse/tools/regression/usr.bin/uuencode/regress.traditional.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/xargs/Makefile#1 branch .. //depot/projects/kse/tools/regression/usr.bin/xargs/regress.I.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/xargs/regress.J.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/xargs/regress.L.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/xargs/regress.R.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/xargs/regress.in#1 branch .. //depot/projects/kse/tools/regression/usr.bin/xargs/regress.normal.out#1 branch .. //depot/projects/kse/tools/regression/usr.bin/xargs/regress.sh#1 branch Differences ... ==== //depot/projects/kse/bin/ps/ps.1#13 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 -.\" $FreeBSD: src/bin/ps/ps.1,v 1.73 2004/03/31 23:51:12 gad Exp $ +.\" $FreeBSD: src/bin/ps/ps.1,v 1.74 2004/04/01 13:28:36 gad Exp $ .\" .Dd March 27, 2004 .Dt PS 1 @@ -73,7 +73,7 @@ .Pp A different set of processes can be selected for display by using any combination of the -.Fl a, G , p , T , t +.Fl a , G , p , T , t and .Fl U options. @@ -93,7 +93,7 @@ terminal, then by process .Tn ID . The -.Fl m, r, u, +.Fl m , r , u , and .Fl v options will change the sort order. ==== //depot/projects/kse/lib/libc/net/nsdispatch.c#3 (text+ko) ==== @@ -68,7 +68,7 @@ * */ #include -__FBSDID("$FreeBSD: src/lib/libc/net/nsdispatch.c,v 1.11 2004/03/30 15:56:15 nectar Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/net/nsdispatch.c,v 1.12 2004/04/01 19:12:45 nectar Exp $"); #include "namespace.h" #include @@ -343,10 +343,8 @@ goto fin2; } _nsyyin = fopen(path, "r"); - if (_nsyyin == NULL) { - result = errno; + if (_nsyyin == NULL) goto fin; - } VECTOR_FREE(_nsmap, &_nsmapsize, sizeof(*_nsmap), (vector_free_elem)ns_dbt_free); VECTOR_FREE(_nsmod, &_nsmodsize, sizeof(*_nsmod), ==== //depot/projects/kse/lib/libc/stdlib/getopt_long.c#3 (text+ko) ==== @@ -62,7 +62,7 @@ #endif /* LIBC_SCCS and not lint */ #endif #include -__FBSDID("$FreeBSD: src/lib/libc/stdlib/getopt_long.c,v 1.9 2004/03/06 14:24:10 ache Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/stdlib/getopt_long.c,v 1.11 2004/04/01 22:32:28 ache Exp $"); #include #include @@ -107,7 +107,7 @@ static int getopt_internal(int, char * const *, const char *, const struct option *, int *, int); static int parse_long_options(char * const *, const char *, - const struct option *, int *, int); + const struct option *, int *, int, int); static int gcd(int, int); static void permute_args(int, int, int, char * const *); @@ -197,14 +197,14 @@ */ static int parse_long_options(char * const *nargv, const char *options, - const struct option *long_options, int *idx, int short_too) + const struct option *long_options, int *idx, int short_too, int flags) { char *current_argv, *has_equal; #ifdef GNU_COMPATIBLE char *current_dash; #endif size_t current_argv_len; - int i, match; + int i, match, exact_match, second_partial_match; current_argv = place; #ifdef GNU_COMPATIBLE @@ -224,6 +224,8 @@ } #endif match = -1; + exact_match = 0; + second_partial_match = 0; optind++; @@ -243,6 +245,7 @@ if (strlen(long_options[i].name) == current_argv_len) { /* exact match */ match = i; + exact_match = 1; break; } /* @@ -252,20 +255,26 @@ if (short_too && current_argv_len == 1) continue; - if (match == -1) /* partial match */ + if (match == -1) /* first partial match */ match = i; - else { - /* ambiguous abbreviation */ - if (PRINT_ERROR) - warnx(ambig, + else if ((flags & FLAG_LONGONLY) || + long_options[i].has_arg != + long_options[match].has_arg || + long_options[i].flag != long_options[match].flag || + long_options[i].val != long_options[match].val) + second_partial_match = 1; + } + if (!exact_match && second_partial_match) { + /* ambiguous abbreviation */ + if (PRINT_ERROR) + warnx(ambig, #ifdef GNU_COMPATIBLE - current_dash, + current_dash, #endif - (int)current_argv_len, - current_argv); - optopt = 0; - return (BADCH); - } + (int)current_argv_len, + current_argv); + optopt = 0; + return (BADCH); } if (match != -1) { /* option found */ if (long_options[match].has_arg == no_argument @@ -492,7 +501,7 @@ short_too = 1; /* could be short option too */ optchar = parse_long_options(nargv, options, long_options, - idx, short_too); + idx, short_too, flags); if (optchar != -1) { place = EMSG; return (optchar); @@ -538,7 +547,7 @@ dash_prefix = W_PREFIX; #endif optchar = parse_long_options(nargv, options, long_options, - idx, 0); + idx, 0, flags); place = EMSG; return (optchar); } ==== //depot/projects/kse/sys/alpha/alpha/machdep.c#46 (text+ko) ==== @@ -88,7 +88,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.218 2004/03/01 19:19:15 kensmith Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.219 2004/04/01 20:56:43 jhb Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -1914,10 +1914,9 @@ if (td->td_md.md_flags & (MDTD_STEP1|MDTD_STEP2)) panic("ptrace_single_step: step breakpoints not removed"); - PROC_UNLOCK(td->td_proc); error = ptrace_read_int(td, pc, &ins.bits); if (error) - goto err; + return (error); switch (ins.branch_format.opcode) { @@ -1957,20 +1956,18 @@ td->td_md.md_sstep[0].addr = addr[0]; error = ptrace_set_bpt(td, &td->td_md.md_sstep[0]); if (error) - goto err; + return (error); if (count == 2) { td->td_md.md_sstep[1].addr = addr[1]; error = ptrace_set_bpt(td, &td->td_md.md_sstep[1]); if (error) { ptrace_clear_bpt(td, &td->td_md.md_sstep[0]); - goto err; + return (error); } td->td_md.md_flags |= MDTD_STEP2; } else td->td_md.md_flags |= MDTD_STEP1; -err: - PROC_LOCK(td->td_proc); return (error); } ==== //depot/projects/kse/sys/conf/files#53 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.877 2004/03/20 02:14:02 marcel Exp $ +# $FreeBSD: src/sys/conf/files,v 1.880 2004/04/01 17:55:50 des Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -668,6 +668,7 @@ dev/sound/midi/sequencer.c optional seq midi dev/sound/midi/timer.c optional seq midi dev/sound/pci/als4000.c optional pcm pci +#dev/sound/pci/au88x0.c optional pcm pci dev/sound/pci/cmi.c optional pcm pci dev/sound/pci/cs4281.c optional pcm pci dev/sound/pci/csa.c optional csa pci @@ -730,6 +731,11 @@ dev/syscons/warp/warp_saver.c optional warp_saver dev/tdfx/tdfx_pci.c optional tdfx pci dev/trm/trm.c optional trm +dev/twa/twa.c optional twa +dev/twa/twa_cam.c optional twa +dev/twa/twa_freebsd.c optional twa +dev/twa/twa_fwimg.c optional twa +dev/twa/twa_globals.c optional twa dev/twe/twe.c optional twe dev/twe/twe_freebsd.c optional twe dev/tx/if_tx.c optional tx ==== //depot/projects/kse/sys/conf/files.i386#32 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.i386,v 1.482 2004/03/30 03:45:59 vkashyap Exp $ +# $FreeBSD: src/sys/conf/files.i386,v 1.483 2004/04/01 10:02:50 des Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -170,11 +170,6 @@ dev/syscons/scvtb.c optional sc dev/syscons/syscons.c optional sc dev/syscons/sysmouse.c optional sc -dev/twa/twa.c optional twa -dev/twa/twa_cam.c optional twa -dev/twa/twa_freebsd.c optional twa -dev/twa/twa_fwimg.c optional twa -dev/twa/twa_globals.c optional twa dev/uart/uart_cpu_i386.c optional uart geom/geom_bsd.c standard geom/geom_bsd_enc.c standard ==== //depot/projects/kse/sys/conf/majors#14 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/majors,v 1.197 2004/02/23 08:55:12 phk Exp $ +# $FreeBSD: src/sys/conf/majors,v 1.198 2004/04/01 10:00:04 des Exp $ # # This list is semi-obsoleted by DEVFS, but for now it still contains # the current allocation of device major numbers. @@ -90,7 +90,6 @@ 183 *smapi SMAPI BIOS interface 185 ce Cronyx Tau-32 E1 adapter 186 sx Specialix I/O8+ driver -187 twa 3ware Apache ATA RAID (controller) 252 ?? entries from 200-252 are reserved for local use 254 internal Used internally by the kernel 255 bad_choice -1 is 255 which has magic meanings internally ==== //depot/projects/kse/sys/dev/uart/uart_cpu_sparc64.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_sparc64.c,v 1.8 2004/03/20 02:14:02 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_sparc64.c,v 1.9 2004/04/02 07:33:35 marcel Exp $"); #include #include @@ -42,8 +42,6 @@ bus_space_tag_t uart_bus_space_io; bus_space_tag_t uart_bus_space_mem; -static phandle_t uart_cpu_getdev_keyboard(phandle_t root); - static struct bus_space_tag bst_store[3]; static int @@ -70,21 +68,79 @@ return ((b1->bsh == b2->bsh) ? 1 : 0); } +/* + * Get the address of the UART that is selected as the console, if the + * console is an UART of course. Note that we enforce that both stdin and + * stdout are selected. For weird configurations, use ofw_console(4). + * Note that the currently active console (i.e. /chosen/stdout and + * /chosen/stdin) may not be the same as the device selected in the + * environment (ie /options/output-device and /options/input-device) because + * the user may have changed the environment. In that case I would assume + * that the user expects that FreeBSD uses the new console setting. There's + * no choice, really. + */ +static phandle_t +uart_cpu_getdev_console(phandle_t options, char *dev, size_t devsz) +{ + char buf[32]; + phandle_t input; + + if (OF_getprop(options, "input-device", dev, devsz) == -1) + return (-1); + if ((input = OF_finddevice(dev)) == -1) + return (-1); + if (OF_getprop(input, "device_type", buf, sizeof(buf)) == -1) + return (-1); + if (strcmp(buf, "serial") != 0) + return (-1); + if (OF_getprop(options, "output-device", buf, sizeof(buf)) == -1) + return (-1); + if (OF_finddevice(buf) != input) + return (-1); + return (input); +} + +/* + * Get the address of the UART that's selected as the debug port. Since + * there's no place for this in the OF, we use the kernel environment + * variable "hw.uart.dbgport". Note however that the variable is not a + * list of attributes. It's single device name or alias, as known by + * the OF. + */ static phandle_t -uart_cpu_getdev_keyboard(phandle_t root) +uart_cpu_getdev_dbgport(phandle_t options, char *dev, size_t devsz) +{ + char buf[32]; + phandle_t input; + + if (!getenv_string("hw.uart.dbgport", dev, devsz)) + return (-1); + if ((input = OF_finddevice(dev)) == -1) + return (-1); + if (OF_getprop(input, "device_type", buf, sizeof(buf)) == -1) + return (-1); + if (strcmp(buf, "serial") != 0) + return (-1); + return (input); +} + +static phandle_t +uart_cpu_getdev_keyboard(phandle_t root, char *dev, size_t devsz) { - phandle_t child; - phandle_t node; char buf[32]; + phandle_t child, node; - for (child = OF_child(root); child != 0 && child != -1; - child = OF_peer(child)) { + child = OF_child(root); + while (child != 0 && child != -1) { if (OF_getprop(child, "device_type", buf, sizeof(buf)) != -1 && !strcmp(buf, "serial") && - OF_getprop(child, "keyboard", buf, sizeof(buf)) != -1) + OF_getprop(child, "keyboard", buf, sizeof(buf)) != -1) { + OF_getprop(child, "name", dev, devsz); return (child); - if ((node = uart_cpu_getdev_keyboard(child)) != -1) + } + if ((node = uart_cpu_getdev_keyboard(child, dev, devsz)) != -1) return (node); + child = OF_peer(child); } return (-1); } @@ -93,47 +149,29 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di) { char buf[32], dev[32], compat[32]; - phandle_t input, options, output; + phandle_t input, options; bus_addr_t addr; int baud, bits, error, space, stop; char flag, par; - /* - * Get the address of the UART that is selected as the console, if - * the console is an UART of course. Note that we enforce that both - * stdin and stdout are selected. For weird configurations, use - * ofw_console(4). - * Note that the currently active console (ie /chosen/stdout and - * /chosen/stdin) may not be the same as the device selected in the - * environment (ie /options/output-device and /options/input-device) - * because the user may have changed the environment. In that case - * I would assume that the user expects that FreeBSD uses the new - * console setting. There's choice choice, really. - */ - if ((options = OF_finddevice("/options")) == -1) - return (ENXIO); - if (devtype == UART_DEV_CONSOLE) { - if (OF_getprop(options, "input-device", dev, sizeof(dev)) == -1) - return (ENXIO); - if ((input = OF_finddevice(dev)) == -1) - return (ENXIO); - if (OF_getprop(input, "device_type", buf, sizeof(buf)) == -1) - return (ENXIO); - if (strcmp(buf, "serial")) - return (ENODEV); - if (OF_getprop(options, "output-device", buf, sizeof(buf)) - == -1) - return (ENXIO); - if ((output = OF_finddevice(buf)) == -1) - return (ENXIO); - if (input != output) - return (ENXIO); - } else if (devtype == UART_DEV_KEYBOARD) { - if ((input = uart_cpu_getdev_keyboard(OF_peer(0))) == -1) - return (ENXIO); - } else - return (ENODEV); - + if ((options = OF_finddevice("/options")) == -1) + return (ENXIO); + switch (devtype) { + case UART_DEV_CONSOLE: + input = uart_cpu_getdev_console(options, dev, sizeof(dev)); + break; + case UART_DEV_DBGPORT: + input = uart_cpu_getdev_dbgport(options, dev, sizeof(dev)); + break; + case UART_DEV_KEYBOARD: + input = uart_cpu_getdev_keyboard(OF_peer(0), dev, sizeof(dev)); + break; + default: + input = -1; + break; + } + if (input == -1) + return (ENXIO); error = OF_decode_addr(input, &space, &addr); if (error) return (error); ==== //depot/projects/kse/sys/dev/uart/uart_dev_ns8250.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_ns8250.c,v 1.5 2003/09/17 03:11:32 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_ns8250.c,v 1.6 2004/04/02 07:37:28 marcel Exp $"); #include #include @@ -304,6 +304,7 @@ while ((uart_getreg(bas, REG_LSR) & LSR_THRE) == 0 && --limit) DELAY(delay); uart_setreg(bas, REG_DATA, c); + uart_barrier(bas); limit = 40; while ((uart_getreg(bas, REG_LSR) & LSR_TEMT) == 0 && --limit) DELAY(delay); ==== //depot/projects/kse/sys/dev/uart/uart_kbd_sun.c#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/uart/uart_kbd_sun.c,v 1.1 2003/11/11 07:33:24 jake Exp $ + * $FreeBSD: src/sys/dev/uart/uart_kbd_sun.c,v 1.2 2004/04/02 05:59:06 marcel Exp $ */ #include "opt_kbd.h" @@ -224,7 +224,9 @@ if (sc->sc_sysdev != NULL) { sunkbd_softc.sc_uart = sc; +#ifdef KBD_INSTALL_CDEV kbd_attach(&sunkbd_softc.sc_kbd); +#endif sunkbd_enable(&sunkbd_softc.sc_kbd); swi_add(&tty_ithd, uart_driver_name, sunkbd_uart_intr, ==== //depot/projects/kse/sys/dev/usb/usb_subr.c#11 (text+ko) ==== @@ -7,7 +7,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/usb/usb_subr.c,v 1.62 2004/03/20 07:31:11 julian Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb/usb_subr.c,v 1.63 2004/04/01 18:55:28 julian Exp $"); /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -1045,8 +1045,19 @@ up->device = dev; /* Set the address. Do this early; some devices need that. */ - err = usbd_set_address(dev, addr); + /* Try a few times in case the device is slow (i.e. outside specs.) */ DPRINTFN(5,("usbd_new_device: setting device address=%d\n", addr)); + for (i = 0; i < 15; i++) { + err = usbd_set_address(dev, addr); + if (!err) + break; + usbd_delay_ms(dev, 200); + if ((i & 3) == 3) { + DPRINTFN(-1,("usb_new_device: set address %d " + "failed - trying a port reset\n", addr)); + usbd_reset_port(up->parent, port, &ps); + } + } if (err) { DPRINTFN(-1,("usb_new_device: set address %d failed\n", addr)); err = USBD_SET_ADDR_FAILED; @@ -1059,16 +1070,8 @@ bus->devices[addr] = dev; dd = &dev->ddesc; - /* Try a few times in case the device is slow (i.e. outside specs.) */ - for (i = 0; i < 15; i++) { - /* Get the first 8 bytes of the device descriptor. */ - err = usbd_get_desc(dev, UDESC_DEVICE, 0, USB_MAX_IPACKET, dd); - if (!err) - break; - usbd_delay_ms(dev, 200); - if ((i & 3) == 3) - usbd_reset_port(up->parent, port, &ps); - } + /* Get the first 8 bytes of the device descriptor. */ + err = usbd_get_desc(dev, UDESC_DEVICE, 0, USB_MAX_IPACKET, dd); if (err) { DPRINTFN(-1, ("usbd_new_device: addr=%d, getting first desc " "failed\n", addr)); ==== //depot/projects/kse/sys/i386/conf/GENERIC.hints#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/i386/conf/GENERIC.hints,v 1.12 2004/03/14 22:38:18 imp Exp $ +# $FreeBSD: src/sys/i386/conf/GENERIC.hints,v 1.13 2004/04/01 21:48:31 alfred Exp $ hint.fdc.0.at="isa" hint.fdc.0.port="0x3F0" hint.fdc.0.irq="6" @@ -25,7 +25,6 @@ hint.atkbdc.0.port="0x060" hint.atkbd.0.at="atkbdc" hint.atkbd.0.irq="1" -hint.atkbd.0.flags="0x1" hint.psm.0.at="atkbdc" hint.psm.0.irq="12" hint.vga.0.at="isa" ==== //depot/projects/kse/sys/kern/kern_thr.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_thr.c,v 1.15 2004/03/27 14:30:43 mtm Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_thr.c,v 1.17 2004/04/02 04:57:40 kris Exp $"); #include #include @@ -81,11 +81,8 @@ /* Clean up cpu resources. */ cpu_thread_exit(td); - /* XXX make thread_unlink() */ - TAILQ_REMOVE(&p->p_threads, td, td_plist); - p->p_numthreads--; - TAILQ_REMOVE(&kg->kg_threads, td, td_kglist); - kg->kg_numthreads--; + /* Unlink the thread from the process and kseg. */ + thread_unlink(td); ke->ke_state = KES_UNQUEUED; ke->ke_thread = NULL; ==== //depot/projects/kse/sys/kern/sys_process.c#34 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/sys_process.c,v 1.119 2004/03/24 23:35:04 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/sys_process.c,v 1.120 2004/04/01 20:56:44 jhb Exp $"); #include #include @@ -154,18 +154,21 @@ vm_prot_t reqprot; int error, writing; - GIANT_REQUIRED; - + mtx_lock(&Giant); /* * if the vmspace is in the midst of being deallocated or the * process is exiting, don't try to grab anything. The page table * usage in that process can be messed up. */ vm = p->p_vmspace; - if ((p->p_flag & P_WEXIT)) + if ((p->p_flag & P_WEXIT)) { + mtx_unlock(&Giant); return (EFAULT); - if (vm->vm_refcnt < 1) + } + if (vm->vm_refcnt < 1) { + mtx_unlock(&Giant); return (EFAULT); + } ++vm->vm_refcnt; /* * The map we want... @@ -274,6 +277,7 @@ } while (error == 0 && uio->uio_resid > 0); vmspace_free(vm); + mtx_unlock(&Giant); return (error); } @@ -602,9 +606,7 @@ uio.uio_segflg = UIO_SYSSPACE; /* i.e.: the uap */ uio.uio_rw = write ? UIO_WRITE : UIO_READ; uio.uio_td = td; - mtx_lock(&Giant); error = proc_rwmem(p, &uio); - mtx_unlock(&Giant); if (uio.uio_resid != 0) { /* * XXX proc_rwmem() doesn't currently return ENOSPC, @@ -645,9 +647,7 @@ default: return (EINVAL); } - mtx_lock(&Giant); error = proc_rwmem(p, &uio); - mtx_unlock(&Giant); piod->piod_len -= uio.uio_resid; return (error); ==== //depot/projects/kse/sys/net/if_sl.c#13 (text+ko) ==== @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)if_sl.c 8.6 (Berkeley) 2/1/94 - * $FreeBSD: src/sys/net/if_sl.c,v 1.112 2004/03/31 22:59:56 rwatson Exp $ + * $FreeBSD: src/sys/net/if_sl.c,v 1.113 2004/04/01 23:54:49 rwatson Exp $ */ /* @@ -469,8 +469,10 @@ return (ENXIO); } if (sc->sc_if.if_dunit != unit) { - if (!slisunitfree(unit)) + if (!slisunitfree(unit)) { + splx(s); return (ENXIO); + } wasup = sc->sc_if.if_flags & IFF_UP; bpfdetach(&sc->sc_if); ==== //depot/projects/kse/sys/netinet6/udp6_usrreq.c#16 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/netinet6/udp6_usrreq.c,v 1.46 2004/03/27 21:05:46 pjd Exp $ */ +/* $FreeBSD: src/sys/netinet6/udp6_usrreq.c,v 1.47 2004/04/01 13:48:23 suz Exp $ */ /* $KAME: udp6_usrreq.c,v 1.27 2001/05/21 05:45:10 jinmei Exp $ */ /* @@ -168,9 +168,11 @@ /* * Checksum extended UDP header and data. */ - if (uh->uh_sum == 0) + if (uh->uh_sum == 0) { udpstat.udps_nosum++; - else if (in6_cksum(m, IPPROTO_UDP, off, ulen) != 0) { + goto bad; + } + if (in6_cksum(m, IPPROTO_UDP, off, ulen) != 0) { udpstat.udps_badsum++; goto bad; } ==== //depot/projects/kse/sys/pc98/conf/NOTES#3 (text+ko) ==== @@ -4,7 +4,7 @@ # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # -# $FreeBSD: src/sys/pc98/conf/NOTES,v 1.30 2004/03/28 12:06:29 nyan Exp $ +# $FreeBSD: src/sys/pc98/conf/NOTES,v 1.31 2004/04/01 14:23:41 nyan Exp $ # # @@ -775,6 +775,7 @@ nodevice mlx # Mylex DAC960 nodevice amr # AMI MegaRAID nodevice twe # 3ware ATA RAID +nodevice twa # 3ware 9000 series PATA/SATA RAID nodevice ataraid nodevice cm nodevice cs @@ -808,6 +809,8 @@ nooption DPT_LOST_IRQ nooption DPT_RESET_HBA nooption DPT_TIMEOUT_FACTOR +nooption TWA_DEBUG +nooption TWA_FLASH_FIRMWARE nooption AAC_DEBUG nooption ACPI_MAX_THREADS ==== //depot/projects/kse/sys/pci/if_ste.c#13 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/pci/if_ste.c,v 1.66 2004/03/31 21:10:01 ru Exp $"); +__FBSDID("$FreeBSD: src/sys/pci/if_ste.c,v 1.67 2004/04/01 12:55:38 ru Exp $"); #include #include @@ -163,8 +163,10 @@ DRIVER_MODULE(ste, pci, ste_driver, ste_devclass, 0, 0); DRIVER_MODULE(miibus, ste, miibus_driver, miibus_devclass, 0, 0); +SYSCTL_NODE(_hw, OID_AUTO, ste, CTLFLAG_RD, 0, "if_ste parameters"); + static int ste_rxsyncs; -SYSCTL_INT(_hw, OID_AUTO, ste_rxsyncs, CTLFLAG_RW, &ste_rxsyncs, 0, ""); +SYSCTL_INT(_hw_ste, OID_AUTO, rxsyncs, CTLFLAG_RW, &ste_rxsyncs, 0, ""); #define STE_SETBIT4(sc, reg, x) \ CSR_WRITE_4(sc, reg, CSR_READ_4(sc, reg) | (x))