Two powerfull programs (star & sfind) announce their marriage that
results in a feature enhanced star.
This code integration was originally planned for the star-1.6
development cycle, but it turned out that it is possible to
implement a subset of the full set of features without causing
any harm to the rest of the code as long as the find code is
not actually used.
To the beginning of the 1980's, AT&T included a simplified cpio
implementation to find(1) but this venture did not result in added
value (there was only a minor speed up by avoiding a second stat(2)
for every file) and the cpio archive format is outdated since a while.
As a sice effect, the functionality of the find(1) program is
now available as a library implementation.
BTW: Although the sfind(1) source is written more cleanly than the
UNIX find(1) source, it did take more time to create the library
code from the original sfind(1) source than it took to write sfind
from scratch.
The integrated find code has been enhanced compared to the
standard sfind(1) code by the following primary operators:
-chgrp <gname>
The primary always evaluates as true; it sets the
group of the file to gname.
-chmod <mode>
The primary always evaluates as true; it sets the
permissions of the file to mode. Octal and sym-
bolic permissions are accepted for mode as with
chmod(1).
Note that this version of star does not yet implement
the 'X' character from chmod(1), but uture versions of
star will add support for 'X' permission mods.
Meanwhile you could use something like:
star -c -find . ( -type d -chmod a=rx -o -chmod a=r )
-chown <uname>
The primary always evaluates as true; it sets the
owner of the file to uname.
-false
The primary always evaluates as false; it allows
to make the result of the full expression dif-
ferent from the result of a part of the expres-
sion.
-true
The primary always evaluates as true; it allows to
make the result of the full expression different
from the result of a part of the expression.
The first three operators allow to modify the file meta data
between the time when star fetches the meta data from the
filesystem or from the archive and the time when star evaluates
the file meta data while adding the file to the archive or
extracting the file to the filesystem.
The last two operators make it more convenient to use find(1)
expressions to control an archiver like star.
The basic idea behind the find(1) integration is:
Define a find expression and let star evaluate the expression
for every file as the first possible "filter" operation.
If the "find expression" returns TRUE for the current file,
this file is either archived, extracted, diffed or listed
as usual.
If the "find expression" returns FALSE for the current file,
the file is skipped.
Note that the find primaries -chgrp/-chown/-chmod modify
the file meta data as a side effect.
New option -find acts as a separator between the "star" command line
interface and the "sfind" command line interface.
To the left of the -find option, star accepts well known
star options from the past.
To the right of the -find option, star expects a list of path
names followed by a find(1) expression.
As with future star-1.6 versions of star, star will allow more
new features, it is possible to omit the find(1) expression.
This results in the same behavior as if
star ... -find <path list> -true
had been specified.
For more information, check the star and the sfind man page.
Star intermediate -find implementation currently suffers from
the following problems:
- If the archive is stdin or stdout, star redefines
stdin or stdout. As 'find -exec ...' propagates
stdin/stdout/stderr to the called program, this
causes unplanned problems.
- If the archive is stdout, star redefines stdout.
As 'find -print', 'find -printnnl' and 'find -ls'
outputs to stdout, this also caused unplanned problems.
- Find primaries like '-linkedto' cannot be implemented in
extract/list mode as they need to wo preparation work
on the local filesystem that cannot be converted to
work on an archive.
- find options like -H -L -P are not yet implemented
in star -find mode
ftp://ftp.berlios.de/pub/star/alpha/star-1.5a69.tar.bz2
Jörg
--
EMail:[EMAIL PROTECTED] (home) Jörg Schilling D-13353 Berlin
[EMAIL PROTECTED] (uni)
[EMAIL PROTECTED] (work) Blog: http://schily.blogspot.com/
URL: http://cdrecord.berlios.de/old/private/ ftp://ftp.berlios.de/pub/schily
_______________________________________________
opensolaris-discuss mailing list
[email protected]