Date: Sat, 3 Apr 2004 12:30:17 -0800 (PST) From: Marcel Moolenaar <marcel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 50275 for review Message-ID: <200404032030.i33KUH2e054051@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=50275 Change 50275 by marcel@marcel_nfs on 2004/04/03 12:30:10 IFC @50274 Affected files ... .. //depot/projects/gdb/bin/ls/print.c#4 integrate .. //depot/projects/gdb/etc/inetd.conf#5 integrate .. //depot/projects/gdb/etc/newsyslog.conf#3 integrate .. //depot/projects/gdb/sbin/growfs/Makefile#3 integrate .. //depot/projects/gdb/sbin/growfs/debug.c#2 integrate .. //depot/projects/gdb/sbin/growfs/growfs.c#3 integrate .. //depot/projects/gdb/share/man/man5/rc.conf.5#8 integrate .. //depot/projects/gdb/sys/conf/files#11 integrate .. //depot/projects/gdb/sys/i386/i386/elan-mmcr.c#5 integrate .. //depot/projects/gdb/sys/kern/imgact_elf.c#6 integrate .. //depot/projects/gdb/sys/nfsclient/nfs_vnops.c#3 integrate .. //depot/projects/gdb/usr.bin/find/extern.h#2 integrate .. //depot/projects/gdb/usr.bin/find/function.c#2 integrate .. //depot/projects/gdb/usr.bin/find/option.c#2 integrate Differences ... ==== //depot/projects/gdb/bin/ls/print.c#4 (text+ko) ==== @@ -40,7 +40,7 @@ #endif /* not lint */ #endif #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/bin/ls/print.c,v 1.68 2004/03/01 19:25:27 cperciva Exp $"); +__FBSDID("$FreeBSD: src/bin/ls/print.c,v 1.69 2004/04/03 16:55:56 bmilekic Exp $"); #include <sys/param.h> #include <sys/stat.h> @@ -694,11 +694,17 @@ *haveacls = 1; if ((facl = acl_get_file(name, ACL_TYPE_ACCESS)) != NULL) { if (acl_get_entry(facl, ACL_FIRST_ENTRY, &ae) == 1) { - entries = 0; - do - entries++; - while (acl_get_entry(facl, ACL_NEXT_ENTRY, &ae) == 1); - if (entries != 3) + entries = 1; + while (acl_get_entry(facl, ACL_NEXT_ENTRY, &ae) == 1) + if (++entries > 3) + break; + /* + * POSIX.1e requires that ACLs of type ACL_TYPE_ACCESS + * must have at least three entries (owner, group, + * and other). So anything with more than 3 ACLs looks + * interesting to us. + */ + if (entries > 3) buf[10] = '+'; } acl_free(facl); ==== //depot/projects/gdb/etc/inetd.conf#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/inetd.conf,v 1.67 2004/03/11 22:15:28 des Exp $ +# $FreeBSD: src/etc/inetd.conf,v 1.68 2004/04/03 17:52:29 mlaier Exp $ # # Internet server configuration database # @@ -122,4 +122,4 @@ # N.B.: inetd binds to * in the default installation so you should add # an appropriate block rule to your pf.conf # -#ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy +#ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy ==== //depot/projects/gdb/etc/newsyslog.conf#3 (text+ko) ==== @@ -1,5 +1,5 @@ # configuration file for newsyslog -# $FreeBSD: src/etc/newsyslog.conf,v 1.48 2004/04/02 19:25:27 mlaier Exp $ +# $FreeBSD: src/etc/newsyslog.conf,v 1.49 2004/04/03 17:52:29 mlaier Exp $ # # Entries which do not specify the '/pid_file' field will cause the # syslogd process to be signalled when that log file is rotated. This @@ -29,6 +29,7 @@ /var/log/maillog 640 7 * @T00 J /var/log/messages 644 5 100 * J /var/log/monthly.log 640 12 * $M1D0 JN +/var/log/pflog 600 3 100 * JB /var/run/pflogd.pid /var/log/ppp.log root:network 640 3 100 * J /var/log/security 600 10 100 * J /var/log/sendmail.st 640 10 * 168 B @@ -36,5 +37,3 @@ /var/log/weekly.log 640 5 1 $W6D0 JN /var/log/wtmp 644 3 * @01T05 B /var/log/xferlog 600 7 100 * J -# pflogd sample entry -#/var/log/pflog 600 3 100 * JB /var/run/pflogd.pid ==== //depot/projects/gdb/sbin/growfs/Makefile#3 (text+ko) ==== @@ -1,7 +1,7 @@ # @(#)Makefile 8.8 (Berkeley) 6/21/2000 # # $TSHeader: src/sbin/growfs/Makefile,v 1.4 2000/12/05 19:45:24 tomsoft Exp $ -# $FreeBSD: src/sbin/growfs/Makefile,v 1.6 2004/04/01 20:31:49 johan Exp $ +# $FreeBSD: src/sbin/growfs/Makefile,v 1.7 2004/04/03 17:40:19 le Exp $ # #GFSDBG=YES @@ -10,7 +10,7 @@ SRCS= growfs.c MAN= growfs.8 -WARNS?= 0 +WARNS?= 6 .if defined(GFSDBG) SRCS+= debug.c ==== //depot/projects/gdb/sbin/growfs/debug.c#2 (text+ko) ==== @@ -41,7 +41,7 @@ #ifndef lint static const char rcsid[] = - "$FreeBSD: src/sbin/growfs/debug.c,v 1.8 2003/08/14 18:40:59 rwatson Exp $"; + "$FreeBSD: src/sbin/growfs/debug.c,v 1.9 2004/04/03 17:40:19 le Exp $"; #endif /* not lint */ /* ********************************************************** INCLUDES ***** */ @@ -49,6 +49,7 @@ #include <limits.h> #include <stdio.h> +#include <string.h> #include <ufs/ufs/dinode.h> #include <ufs/ffs/fs.h> @@ -783,10 +784,10 @@ fprintf(dbg_log, "blocks u_int64_t 0x%08x%08x\n", ((unsigned int *)&(ino->di_blocks))[1], ((unsigned int *)&(ino->di_blocks))[0]); - fprintf(dbg_log, "atime ufs_time_t %10u\n", ino->di_atime); - fprintf(dbg_log, "mtime ufs_time_t %10u\n", ino->di_mtime); - fprintf(dbg_log, "ctime ufs_time_t %10u\n", ino->di_ctime); - fprintf(dbg_log, "birthtime ufs_time_t %10u\n", ino->di_birthtime); + fprintf(dbg_log, "atime ufs_time_t %10jd\n", ino->di_atime); + fprintf(dbg_log, "mtime ufs_time_t %10jd\n", ino->di_mtime); + fprintf(dbg_log, "ctime ufs_time_t %10jd\n", ino->di_ctime); + fprintf(dbg_log, "birthtime ufs_time_t %10jd\n", ino->di_birthtime); fprintf(dbg_log, "mtimensec int32_t 0x%08x\n", ino->di_mtimensec); fprintf(dbg_log, "atimensec int32_t 0x%08x\n", ino->di_atimensec); fprintf(dbg_log, "ctimensec int32_t 0x%08x\n", ino->di_ctimensec); @@ -800,24 +801,24 @@ remaining_blocks=howmany(ino->di_size, sb->fs_bsize); /* XXX ts - +1? */ for(ictr=0; ictr < MIN(NDADDR, remaining_blocks); ictr++) { - fprintf(dbg_log, "db ufs2_daddr_t[%x] 0x%16x\n", ictr, + fprintf(dbg_log, "db ufs2_daddr_t[%x] 0x%16jx\n", ictr, ino->di_db[ictr]); } remaining_blocks-=NDADDR; if(remaining_blocks>0) { - fprintf(dbg_log, "ib ufs2_daddr_t[0] 0x%16x\n", + fprintf(dbg_log, "ib ufs2_daddr_t[0] 0x%16jx\n", ino->di_ib[0]); } remaining_blocks-=howmany(sb->fs_bsize, sizeof(ufs2_daddr_t)); if(remaining_blocks>0) { - fprintf(dbg_log, "ib ufs2_daddr_t[1] 0x%16x\n", + fprintf(dbg_log, "ib ufs2_daddr_t[1] 0x%16jx\n", ino->di_ib[1]); } #define SQUARE(a) ((a)*(a)) remaining_blocks-=SQUARE(howmany(sb->fs_bsize, sizeof(ufs2_daddr_t))); #undef SQUARE if(remaining_blocks>0) { - fprintf(dbg_log, "ib ufs2_daddr_t[2] 0x%16x\n", + fprintf(dbg_log, "ib ufs2_daddr_t[2] 0x%16jx\n", ino->di_ib[2]); } @@ -835,8 +836,7 @@ void dbg_dump_iblk(struct fs *sb, const char *comment, char *block, size_t length) { - unsigned int *mem; - int i, j, size; + unsigned int *mem, i, j, size; if(!dbg_log) { return; ==== //depot/projects/gdb/sbin/growfs/growfs.c#3 (text+ko) ==== @@ -48,7 +48,7 @@ #ifndef lint static const char rcsid[] = - "$FreeBSD: src/sbin/growfs/growfs.c,v 1.17 2004/03/26 23:42:32 le Exp $"; + "$FreeBSD: src/sbin/growfs/growfs.c,v 1.18 2004/04/03 17:40:19 le Exp $"; #endif /* not lint */ /* ********************************************************** INCLUDES ***** */ @@ -65,6 +65,7 @@ #include <fcntl.h> #include <limits.h> #include <stdlib.h> +#include <stdint.h> #include <string.h> #include <unistd.h> #include <ufs/ufs/dinode.h> @@ -107,10 +108,10 @@ }; #define DIP(dp, field) \ ((sblock.fs_magic == FS_UFS1_MAGIC) ? \ - (dp)->dp1.field : (dp)->dp2.field) + (uint32_t)(dp)->dp1.field : (dp)->dp2.field) static ufs2_daddr_t inoblk; /* inode block address */ static char inobuf[MAXBSIZE]; /* inode block */ -static int maxino; /* last valid inode */ +ino_t maxino; /* last valid inode */ static int unlabeled; /* unlabeled partition, e.g. vinum volume etc. */ /* @@ -366,8 +367,8 @@ { DBG_FUNC("initcg") static caddr_t iobuf; - long i, d, dlower, dupper, blkno, start; - ufs2_daddr_t cbase, dmax; + long d, dlower, dupper, blkno, start; + ufs2_daddr_t i, cbase, dmax; struct ufs1_dinode *dp1; struct ufs2_dinode *dp2; struct csum *cs; @@ -628,9 +629,9 @@ fragnum = fragnum(&sblock, src); *block = dst + fragnum; f->found++; - DBG_PRINT3("scg (%d->%d)[%d] reference updated\n", - f->old, - f->new, + DBG_PRINT3("scg (%jd->%jd)[%d] reference updated\n", + (intmax_t)f->old, + (intmax_t)f->new, fragnum); /* @@ -751,10 +752,12 @@ DBG_PRINT2("jcg dbg: %d %u", cylno, sblock.fs_ncg); +#ifdef FS_DEBUG if (sblock.fs_magic == FS_UFS1_MAGIC) DBG_PRINT2("%d %u", acg.cg_old_ncyl, sblock.fs_old_cpg); +#endif DBG_PRINT0("\n"); acg.cg_ndblk = dmax - cbase; sblock.fs_dsize += acg.cg_ndblk-aocg.cg_ndblk; @@ -1030,8 +1033,8 @@ */ d--; - DBG_PRINT1("d=%d\n", - d); + DBG_PRINT1("d=%jd\n", + (intmax_t)d); if((d+1)%sblock.fs_frag) { /* * The end of the cylinder summary is not a complete @@ -1040,8 +1043,8 @@ DBG_TRC; frag_adjust(d%sblock.fs_fpg, -1); for(; (d+1)%sblock.fs_frag; d--) { - DBG_PRINT1("d=%d\n", - d); + DBG_PRINT1("d=%jd\n", + (intmax_t)d); setbit(cg_blksfree(&acg), d%sblock.fs_fpg); acg.cg_cs.cs_nffree++; sblock.fs_cstotal.cs_nffree++; @@ -1055,7 +1058,7 @@ if(isblock(&sblock, cg_blksfree(&acg), (d%sblock.fs_fpg)/sblock.fs_frag)) { - DBG_PRINT1("d=%d\n", d); + DBG_PRINT1("d=%jd\n", (intmax_t)d); acg.cg_cs.cs_nffree-=sblock.fs_frag; acg.cg_cs.cs_nbfree++; sblock.fs_cstotal.cs_nffree-=sblock.fs_frag; @@ -1080,11 +1083,11 @@ d--; } - DBG_PRINT1("d=%d\n", d); + DBG_PRINT1("d=%jd\n", (intmax_t)d); for(d=rounddown(d, sblock.fs_frag); d >= osblock.fs_csaddr; d-=sblock.fs_frag) { DBG_TRC; - DBG_PRINT1("d=%d\n", d); + DBG_PRINT1("d=%jd\n", (intmax_t)d); setblock(&sblock, cg_blksfree(&acg), (d%sblock.fs_fpg)/sblock.fs_frag); acg.cg_cs.cs_nbfree++; @@ -1256,8 +1259,8 @@ ind=0; frag_adjust(odupper, -1); for(d=odupper; ((d<dupper)&&(d%sblock.fs_frag)); d++) { - DBG_PRINT1("scg first frag check loop d=%d\n", - d); + DBG_PRINT1("scg first frag check loop d=%jd\n", + (intmax_t)d); if(isclr(cg_blksfree(&acg), d)) { if (!ind) { bp[ind].old=d/sblock.fs_frag; @@ -1286,8 +1289,8 @@ * Handle all needed complete blocks here. */ for(; d+sblock.fs_frag<=dupper; d+=sblock.fs_frag) { - DBG_PRINT1("scg block check loop d=%d\n", - d); + DBG_PRINT1("scg block check loop d=%jd\n", + (intmax_t)d); if(!isblock(&sblock, cg_blksfree(&acg), d/sblock.fs_frag)) { for(f=d; f<d+sblock.fs_frag; f++) { if(isset(cg_blksfree(&aocg), f)) { @@ -1355,8 +1358,8 @@ } for(; d<dupper; d++) { - DBG_PRINT1("scg second frag check loop d=%d\n", - d); + DBG_PRINT1("scg second frag check loop d=%jd\n", + (intmax_t)d); if(isclr(cg_blksfree(&acg), d)) { bp[ind].old=d/sblock.fs_frag; bp[ind].flags|=GFS_FL_LAST; @@ -1468,9 +1471,9 @@ "copied full block", (unsigned char *)&ablk); - DBG_PRINT2("scg (%d->%d) block relocated\n", - bp[i].old, - bp[i].new); + DBG_PRINT2("scg (%jd->%jd) block relocated\n", + (intmax_t)bp[i].old, + (intmax_t)bp[i].new); } /* @@ -1493,8 +1496,8 @@ */ for(i=0; i<ind; i++) { if(!bp[i].found || (bp[i].found>sblock.fs_frag)) { - warnx("error: %d refs found for block %d.", - bp[i].found, bp[i].old); + warnx("error: %jd refs found for block %jd.", + (intmax_t)bp[i].found, (intmax_t)bp[i].old); } } @@ -1539,11 +1542,11 @@ DBG_ENTER; if (lseek(fsi, (off_t)bno * DEV_BSIZE, 0) < 0) { - err(33, "rdfs: seek error: %ld", (long)bno); + err(33, "rdfs: seek error: %jd", (intmax_t)bno); } n = read(fsi, bf, size); if (n != (ssize_t)size) { - err(34, "rdfs: read error: %ld", (long)bno); + err(34, "rdfs: read error: %jd", (intmax_t)bno); } DBG_LEAVE; @@ -2046,6 +2049,7 @@ */ cp=device+strlen(device)-1; lp = get_disklabel(fsi); + pp = NULL; if (lp != NULL) { if (isdigit(*cp)) { pp = &lp->d_partitions[2]; @@ -2076,7 +2080,7 @@ (osblock.fs_magic == FS_UFS2_MAGIC && osblock.fs_sblockloc == sblock_try[i])) && osblock.fs_bsize <= MAXBSIZE && - osblock.fs_bsize >= sizeof(struct fs)) + osblock.fs_bsize >= (int32_t) sizeof(struct fs)) break; } if (sblock_try[i] == -1) { @@ -2106,8 +2110,8 @@ * Are we really growing ? */ if(osblock.fs_size >= sblock.fs_size) { - errx(1, "we are not growing (%d->%d)", osblock.fs_size, - sblock.fs_size); + errx(1, "we are not growing (%jd->%jd)", + (intmax_t)osblock.fs_size, (intmax_t)sblock.fs_size); } @@ -2140,7 +2144,7 @@ } } - printf("new file systemsize is: %d frags\n", sblock.fs_size); + printf("new file systemsize is: %jd frags\n", (intmax_t)sblock.fs_size); /* * Try to access our new last block in the file system. Even if we @@ -2182,8 +2186,8 @@ sblock.fs_ncg--; if (sblock.fs_magic == FS_UFS1_MAGIC) sblock.fs_old_ncyl = sblock.fs_ncg * sblock.fs_old_cpg; - printf("Warning: %d sector(s) cannot be allocated.\n", - fsbtodb(&sblock, sblock.fs_size % sblock.fs_fpg)); + printf("Warning: %jd sector(s) cannot be allocated.\n", + (intmax_t)fsbtodb(&sblock, sblock.fs_size % sblock.fs_fpg)); sblock.fs_size = sblock.fs_ncg * sblock.fs_fpg; } @@ -2387,7 +2391,7 @@ DBG_LEAVE; return; /* only check DIR, FILE, LINK */ } - if (mode == IFLNK && DIP(ino, di_size) < sblock.fs_maxsymlinklen) { + if (mode == IFLNK && DIP(ino, di_size) < (u_int64_t) sblock.fs_maxsymlinklen) { DBG_LEAVE; return; /* skip short symlinks */ } ==== //depot/projects/gdb/share/man/man5/rc.conf.5#8 (text+ko) ==== @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.212 2004/04/02 19:25:26 mlaier Exp $ +.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.213 2004/04/03 17:52:29 mlaier Exp $ .\" .Dd March 30, 2004 .Dt RC.CONF 5 @@ -743,7 +743,7 @@ .Pa /var/log/pflog ) . Check .Pa /etc/newsyslog.conf -to enable logfile rotation for this. +to adjust logfile rotation for this. .It Va pflog_program .Pq Vt str Path to ==== //depot/projects/gdb/sys/conf/files#11 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.880 2004/04/01 17:55:50 des Exp $ +# $FreeBSD: src/sys/conf/files,v 1.881 2004/04/03 18:42:05 phk Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -496,7 +496,7 @@ dev/joy/joy.c optional joy dev/joy/joy_isa.c optional joy isa dev/joy/joy_pccard.c optional joy pccard -dev/led/led.c optional cpu_soekris +dev/led/led.c standard dev/lge/if_lge.c optional lge dev/lnc/if_lnc.c optional lnc dev/lnc/if_lnc_pci.c optional lnc pci ==== //depot/projects/gdb/sys/i386/i386/elan-mmcr.c#5 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/i386/i386/elan-mmcr.c,v 1.26 2004/03/15 21:47:34 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/elan-mmcr.c,v 1.27 2004/04/03 18:42:52 phk Exp $"); #include "opt_cpu.h" #include <sys/param.h> @@ -77,7 +77,6 @@ static u_int echo_a, echo_d; #endif /* CPU_ELAN_PPS */ -#ifdef CPU_SOEKRIS static u_int led_cookie[32]; static dev_t led_dev[32]; @@ -93,7 +92,6 @@ v ^= 0xc; mmcrptr[v / 2] = u; } -#endif static int sysctl_machdep_elan_gpio_config(SYSCTL_HANDLER_ARGS) @@ -117,7 +115,9 @@ /* Disallow any disabled pins and count pps and echo */ np = ne = 0; for (i = 0; i < 32; i++) { - if (gpio_config[i] == '-' && (buf[i] != '-' && buf[i] != '.')) + if (gpio_config[i] == '-' && buf[i] == '.') + buf[i] = gpio_config[i]; + if (gpio_config[i] == '-' && buf[i] != '-') return (EPERM); if (buf[i] == 'P') { np++; @@ -149,12 +149,15 @@ else v = 0; #ifdef CPU_SOEKRIS + if (i == 9) + ; + else +#endif if (buf[i] != 'l' && buf[i] != 'L' && led_dev[i] != NULL) { led_destroy(led_dev[i]); led_dev[i] = NULL; mmcrptr[(0xc2a + v) / 2] &= ~u; } -#endif switch (buf[i]) { #ifdef CPU_ELAN_PPS case 'P': @@ -177,7 +180,6 @@ gpio_config[i] = buf[i]; break; #endif /* CPU_ELAN_PPS */ -#ifdef CPU_SOEKRIS case 'l': case 'L': if (buf[i] == 'L') @@ -192,7 +194,6 @@ mmcrptr[(0xc2a + v) / 2] |= u; gpio_config[i] = buf[i]; break; -#endif case '.': gpio_config[i] = buf[i]; break; ==== //depot/projects/gdb/sys/kern/imgact_elf.c#6 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/imgact_elf.c,v 1.145 2004/03/18 16:33:05 nectar Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/imgact_elf.c,v 1.146 2004/04/03 20:25:41 marcel Exp $"); #include <sys/param.h> #include <sys/exec.h> ==== //depot/projects/gdb/sys/nfsclient/nfs_vnops.c#3 (text+ko) ==== @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_vnops.c,v 1.216 2004/03/11 18:02:35 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_vnops.c,v 1.217 2004/04/03 17:23:46 peadar Exp $"); /* * vnode op calls for Sun NFS version 2 and 3 @@ -691,6 +691,7 @@ struct thread *td) { struct nfsv2_sattr *sp; + struct nfsnode *np = VTONFS(vp); caddr_t bpos, dpos; u_int32_t *tl; int error = 0, wccflag = NFSV3_WCCRATTR; @@ -726,6 +727,7 @@ } nfsm_request(vp, NFSPROC_SETATTR, td, cred); if (v3) { + np->n_modestamp = 0; nfsm_wcc_data(vp, wccflag); } else nfsm_loadattr(vp, NULL); ==== //depot/projects/gdb/usr.bin/find/extern.h#2 (text+ko) ==== @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)extern.h 8.3 (Berkeley) 4/16/94 - * $FreeBSD: src/usr.bin/find/extern.h,v 1.19 2003/06/14 13:00:21 markm Exp $ + * $FreeBSD: src/usr.bin/find/extern.h,v 1.20 2004/04/03 17:10:04 bmilekic Exp $ */ #include <sys/cdefs.h> @@ -52,6 +52,7 @@ creat_f c_Xmin; creat_f c_Xtime; +creat_f c_acl; creat_f c_and; creat_f c_delete; creat_f c_depth; @@ -82,6 +83,7 @@ exec_f f_Xmin; exec_f f_Xtime; +exec_f f_acl; exec_f f_always_true; exec_f f_closeparen; exec_f f_delete; ==== //depot/projects/gdb/usr.bin/find/function.c#2 (text+ko) ==== @@ -41,11 +41,13 @@ #endif /* not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/usr.bin/find/function.c,v 1.48 2003/06/14 13:00:21 markm Exp $"); +__FBSDID("$FreeBSD: src/usr.bin/find/function.c,v 1.49 2004/04/03 17:10:04 bmilekic Exp $"); #include <sys/param.h> #include <sys/ucred.h> #include <sys/stat.h> +#include <sys/types.h> +#include <sys/acl.h> #include <sys/wait.h> #include <sys/mount.h> #include <sys/timeb.h> @@ -352,6 +354,55 @@ } /* + * -acl function -- + * + * Show files with EXTENDED ACL attributes. + */ +int +f_acl(PLAN *plan__unused, FTSENT *entry) +{ + int match, entries; + acl_entry_t ae; + acl_t facl; + + if (S_ISLNK(entry->fts_statp->st_mode)) + return 0; + if ((match = pathconf(entry->fts_accpath, _PC_ACL_EXTENDED)) <= 0) { + if (match < 0 && errno != EINVAL) + warn("%s", entry->fts_accpath); + else + return 0; + } + match = 0; + if ((facl = acl_get_file(entry->fts_accpath,ACL_TYPE_ACCESS)) != NULL) { + if (acl_get_entry(facl, ACL_FIRST_ENTRY, &ae) == 1) { + /* + * POSIX.1e requires that ACLs of type ACL_TYPE_ACCESS + * must have at least three entries (owner, group, + * other). + */ + entries = 1; + while (acl_get_entry(facl, ACL_NEXT_ENTRY, &ae) == 1) { + if (++entries > 3) { + match = 1; + break; + } + } + } + acl_free(facl); + } else + warn("%s", entry->fts_accpath); + return match; +} + +PLAN * +c_acl(OPTION *option, char ***argvp__unused) +{ + ftsoptions &= ~FTS_NOSTAT; + return (palloc(option)); +} + +/* * -delete functions -- * * True always. Makes its best shot and continues on regardless. ==== //depot/projects/gdb/usr.bin/find/option.c#2 (text+ko) ==== @@ -41,7 +41,7 @@ #endif /* not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/usr.bin/find/option.c,v 1.20 2003/06/14 13:00:21 markm Exp $"); +__FBSDID("$FreeBSD: src/usr.bin/find/option.c,v 1.21 2004/04/03 17:10:04 bmilekic Exp $"); #include <sys/types.h> #include <sys/stat.h> @@ -63,6 +63,7 @@ { "(", c_simple, f_openparen, 0 }, { ")", c_simple, f_closeparen, 0 }, { "-a", c_and, NULL, 0 }, + { "-acl", c_acl, f_acl, 0 }, { "-amin", c_Xmin, f_Xmin, F_TIME_A }, { "-and", c_and, NULL, 0 }, { "-anewer", c_newer, f_newer, F_TIME_A },
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200404032030.i33KUH2e054051>