svn commit: r224173 - stable/8/usr.bin/find
Tai-hwa Liang
avatar at FreeBSD.org
Mon Jul 18 04:54:13 UTC 2011
Author: avatar
Date: Mon Jul 18 04:54:12 2011
New Revision: 224173
URL: http://svn.freebsd.org/changeset/base/224173
Log:
MFC r223035: Using statfs.f_fstypename rather than statfs.f_type whilst
performing fstype comparsion as nullfs will copy f_type from underlayer FS.
PR: bin/156258
Submitted by: Marcin Wisnicki <mwisnicki+freebsd at gmail.com>
Modified:
stable/8/usr.bin/find/function.c
Directory Properties:
stable/8/usr.bin/find/ (props changed)
Modified: stable/8/usr.bin/find/function.c
==============================================================================
--- stable/8/usr.bin/find/function.c Mon Jul 18 03:40:49 2011 (r224172)
+++ stable/8/usr.bin/find/function.c Mon Jul 18 04:54:12 2011 (r224173)
@@ -851,7 +851,8 @@ f_fstype(PLAN *plan, FTSENT *entry)
static dev_t curdev; /* need a guaranteed illegal dev value */
static int first = 1;
struct statfs sb;
- static int val_type, val_flags;
+ static int val_flags;
+ static char fstype[sizeof(sb.f_fstypename)];
char *p, save[2] = {0,0};
if ((plan->flags & F_MTMASK) == F_MTUNKNOWN)
@@ -893,13 +894,13 @@ f_fstype(PLAN *plan, FTSENT *entry)
* always copy both of them.
*/
val_flags = sb.f_flags;
- val_type = sb.f_type;
+ strlcpy(fstype, sb.f_fstypename, sizeof(fstype));
}
switch (plan->flags & F_MTMASK) {
case F_MTFLAG:
return val_flags & plan->mt_data;
case F_MTTYPE:
- return val_type == plan->mt_data;
+ return (strncmp(fstype, plan->c_data, sizeof(fstype)) == 0);
default:
abort();
}
@@ -910,22 +911,11 @@ c_fstype(OPTION *option, char ***argvp)
{
char *fsname;
PLAN *new;
- struct xvfsconf vfc;
fsname = nextarg(option, argvp);
ftsoptions &= ~FTS_NOSTAT;
new = palloc(option);
-
- /*
- * Check first for a filesystem name.
- */
- if (getvfsbyname(fsname, &vfc) == 0) {
- new->flags |= F_MTTYPE;
- new->mt_data = vfc.vfc_typenum;
- return new;
- }
-
switch (*fsname) {
case 'l':
if (!strcmp(fsname, "local")) {
@@ -943,12 +933,8 @@ c_fstype(OPTION *option, char ***argvp)
break;
}
- /*
- * We need to make filesystem checks for filesystems
- * that exists but aren't in the kernel work.
- */
- fprintf(stderr, "Warning: Unknown filesystem type %s\n", fsname);
- new->flags |= F_MTUNKNOWN;
+ new->flags |= F_MTTYPE;
+ new->c_data = fsname;
return new;
}
More information about the svn-src-all
mailing list