.\"
.\" @(#)searchfs.2
.
-.Dd October 13, 2008
+.Dd November 16, 2017
.Dt SEARCHFS 2
.Os Darwin
.Sh NAME
.Fd #include <sys/attr.h>
.Fd #include <unistd.h>
.Ft int
-.Fn searchfs "const char* path" "struct fssearchblock* searchBlock" "unsigned int* numMatches" "unsigned int scriptCode" "unsigned int options" "struct searchstate* state"
+.Fn searchfs "const char* path" "struct fssearchblock* searchBlock" "unsigned long* numMatches" "unsigned int scriptCode" "unsigned int options" "struct searchstate* state"
.
.Sh DESCRIPTION
The
parameter contains an invalid flag or sizeofsearchparams1/2 is greater than
SEARCHFS_MAX_SEARCHPARMS (see attr.h). Additionally, filesystems that do
not support SRCHFS_SKIPLINKS may return EINVAL if this search option
-is requested.
+is requested. EINVAL may also be returned if you request attributes for either
+searching or to be returned for matched entries if the filesystem does not support
+vending that particular attribute.
.
.It Bq Er EAGAIN
The search terminated with partial results, either because
.Pp
.
.Sh CAVEATS
-The list of searchable attributes currently includes:
+
+The list of attributes valid for searching and returning to the caller may
+be substantially smaller than that of the
+.Xr getattrlist 2
+system call. See the following lists for the currently available search criteria.
+In general, a filesystem that supports
+.Fn searchfs
+will typically supply per-item attributes for matched objects that are also
+supported by the
+.Xr getdirentries 2
+system call. This varies from filesystem to filesystem.
+
+
+.Sh SEARCH ATTRIBUTES
+
+The list of attributes that are valid as search criteria currently includes the
+following list of attributes for a particular filesystem object.
+
.Pp
.
.Bl -item -compact
ATTR_FILE_RSRCALLOCSIZE
.El
.
+
+.Sh RETURN ATTRIBUTES
+
+As mentioned above, the list of attributes that are available to be returned to the caller
+vary by filesystem, but should include the following attributes, in the following order.
+The buffer should be assumed to be packed similar to the output buffer of the
+.Xr getattrlist 2
+system call. Note that again, this list may be substantially smaller than what is available via
+.Xr getattrlist 2
+
+.Pp
+.
+.Bl -item -compact
+.It
+ATTR_CMN_NAME
+.It
+ATTR_CMN_DEVID
+.It
+ATTR_CMN_FSID
+.It
+ATTR_CMN_OBJTYPE
+.It
+ATTR_CMN_OBJTAG
+.It
+ATTR_CMN_OBJID
+.It
+ATTR_CMN_OBJPERMANENTID
+.It
+ATTR_CMN_PAROBJID
+.It
+ATTR_CMN_SCRIPT
+.It
+ATTR_CMN_CRTIME
+.It
+ATTR_CMN_MODTIME
+.It
+ATTR_CMN_CHGTIME
+.It
+ATTR_CMN_ACCTIME
+.It
+ATTR_CMN_BKUPTIME
+.It
+ATTR_CMN_FNDRINFO
+.It
+ATTR_CMN_OWNERID
+.It
+ATTR_CMN_GRPID
+.It
+ATTR_CMN_ACCESSMASK
+.It
+ATTR_CMN_FLAGS
+.It
+ATTR_CMN_USERACCESS
+.It
+ATTR_CMN_FILEID
+.It
+ATTR_CMN_PARENTID
+.Pp
+.
+.It
+ATTR_DIR_LINKCOUNT
+.It
+ATTR_DIR_ENTRYCOUNT
+.It
+ATTR_DIR_MOUNTSTATUS
+.Pp
+.
+.It
+ATTR_FILE_LINKCOUNT
+.It
+ATTR_FILE_TOTALSIZE
+.It
+ATTR_FILE_ALLOCSIZE
+.It
+ATTR_FILE_IOBLOCKSIZE
+.It
+ATTR_FILE_CLUMPSIZE
+.It
+ATTR_FILE_DEVTYPE
+.It
+ATTR_FILE_DATALENGTH
+.It
+ATTR_FILE_DATAALLOCSIZE
+.It
+ATTR_FILE_RSRCLENGTH
+.It
+ATTR_FILE_RSRCALLOCSIZE
+.El
+.
+
+
.Sh EXAMPLES
.
The following code searches a volume for files of the specified type and creator.
SearchAttrBuf lower;
SearchAttrBuf upper;
static const unsigned char kAllOnes[4] = { 0xFF, 0xFF, 0xFF, 0xFF };
- unsigned int matchCount;
- unsigned int matchIndex;
+ unsigned long matchCount;
+ unsigned long matchIndex;
unsigned int options;
searchstate_t state;
ResultAttrBuf * thisEntry;