findutils-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Findutils-patches] xattr and capability support


From: Dale R. Worley
Subject: Re: [Findutils-patches] xattr and capability support
Date: Thu, 13 Nov 2014 16:26:47 -0500

> From: KillBoy PowerHed <address@hidden>
> 
> >If I understand you correctly, "-xattr regex" is true if the file has
> >an extended attribute whose name is matched by "regex".
> 
> >- Is the matching case sensitive?  (Is there any reason for it to be
> >  case-insensitive?)
> 
> I initially made it case-insensitive as capabilities are defined all
> uppercase in man pages (CAP_XXX) but the output from cap_to_text()
> is lower, it seemed reasonable that users may not know or care what
> case it was stored in, just whether or not it was present. What are
> your feelings on this?

Mostly I want to make sure that you have carefully thought through all
the issues.  But in this case, your response seems to be about
capability values, whereas I was asking about attribute names.

> >- Is the nature of the regex controlled by -regextype (as is -regex)?
> 
> It's currently hardcoded but I plan to support -regextype, maybe
> default to case-insensitive if -regextype is not defined.

My understanding is that all regexes in find are controlled by
-regextype, so the regex handling in any new predicates should work
the same way.  The particular syntax for the regex is set by
-regextype, but whether the regex is case-sensitive is determined by
whether the predicate starts with "i".  (E.g., -iname vs. -name,
-ilname vs. -lname)

The one exception I can see is if the datum you are testing is
inherently case-insensitive.  (E.g., if it is enforced that capability
bit names have only one case) In that case, there's no reason to
provide case-sensitive tests.

> >- If the current file name is a symbolic link, does -xattr test the
> >  symbolic link itself, or the file it points to?  (It's possible that
> >  symbolic links can never have extended attributes, in which case
> >  looking at the file that is pointed to would always make sense.)  Is
> >  this behavior affected by the -L option?  Or do we need a "-lxattr"
> >  test?
> 
> Extended attributes are supported on symlinks via a different
> call(llistxattr), I guess it should be supported even though there
> may not be much demand - is your preference to detect '-L' or offer
> '-lxattr' instead?

I would expect it to work like -name vs. -lname.  And the meaning of
both of these is modified by the -P, -L, -H, and deprecated --follow
options.

> >- Is there any way to test whether a particular attribute has a
> >  particular value, or matches a regex?  Is there any need for this?
> >  If there is:  It appears to me that the values can be binary
> >  strings; what do we have to do to allow comparison values to be
> >  specified (especially given that 0 bytes cannot appear in command
> >  arguments).  If the values can be binary strings, is there a need to
> >  provide a mask-and-test operation?
> 
> This is what '-cap' does, but in the case of capabilities the binary
> value needs to be interpreted correctly.  Tools that handle regular
> expressions as command line arguments will always support escaping
> of non-printing characters, so to match a binary '0' you would use
> '\0' in your regex.

That's true, but if it's common to have attributes whose octets are
interpreted as integers or bit-vectors, it is far easier on the user
to provide tests that treat them as such.  The important question is,
What will users want to do?

> Considering that a given extended attribute's value could contain
> any type of data that may or may not require interpretation I don't
> know that there's value in offering that functionality. Wouldn't
> this also require 2 arguments - <xattr_name> and <regex> ?

There are a number of ways that you could organize it.  For instance:

    -xattr name value-format test-value  -- -xattr foo.bigness i4 '>12'

But you could combine the format and test-value argument:

    -xattr name value-format:test-value  -- -xattr foo.bigness 'i4:>12'

At this point, it's more important to develop a complete list of what
users will want to do in practice than to worry about detailed syntax.

Dale



reply via email to

[Prev in Thread] Current Thread [Next in Thread]