Commit Graph

75 Commits

Author SHA1 Message Date
apb
6e9108295a When an mtree spec file omits a parent directory, "missing directory in
specification", instead of "no such file or directory".
2009-04-11 14:32:51 +00:00
apb
ef658dd50e The recent addition of sorting to "mtree -C" broke some third party
scripts.  Now make sorting optional, controled by the "-S" flag.
2009-04-08 19:03:13 +00:00
apb
62b6b42c6f fix another missing "prev" link 2009-04-07 18:06:41 +00:00
apb
dc1b0e5339 Fix broken "prev" pointer in one case. 2009-04-05 15:47:03 +00:00
dogcow
f0f15c8b0d Watch one's "p"s and "q"s and fix cast aspersions on alpha ("warning: field
precision should have type 'int', but argument 2 has type 'long int'")
2009-04-05 12:15:07 +00:00
apb
c5c8c1dcb2 Tags are internally stored with leading and trailing commas, for ease
of using strstr(3) to check them against inclusion or exclusion lists.
Don't output the leading or trailing commas.
2009-04-04 21:49:49 +00:00
apb
5e464841ab Make "mtree -C" sort its output.
As the input is read from a specfile into a tree of linked lists,
keep each linked list sorted.  The sort order is the same as that
already used by "mtree -c": directories sort after non-directories, but
otherwise names are sorted in the order used by strcmp().
2009-04-03 21:18:59 +00:00
lukem
c5eb4ab601 fix -Wsign-compare issues 2009-01-18 11:56:51 +00:00
christos
6be0c3f194 fix time_t and dev_t formats 2008-12-28 19:35:12 +00:00
dbj
66394bcdd9 ensure mtree_err gets a format string 2008-11-04 23:22:48 +00:00
martin
ce099b4099 Remove clause 3 and 4 from TNF licenses 2008-04-28 20:22:51 +00:00
he
0a97c3f688 Complete the move of string_to_flags() and flags_to_string() from the
bin/ls sources to libutil:
 o Bump libutil minor version number
 o Fix uses to include <util.h> to pick up the function definitions
 o Fix most uses of flags_to_string() to release the now-malloc()ed result
2006-12-14 20:09:35 +00:00
martin
a073765d4a Apply patch from Peter Bex to fix PR bin/31922. 2006-10-08 18:09:47 +00:00
dsl
c0b0ba1f18 If parameter don't have values, then 'continue' after setting the flag bit.
Fixes coverty CID 776 and removes the need for a 'val = NULL' added to
appease gcc's undefined variable tests.
This parsing code sucks though, it doesn't correctly check for the '='
between a parameter and its value, whitespace can be used instead.
2006-04-12 19:49:59 +00:00
christos
c05266af8a fix setmode error handling. 2005-10-01 20:23:54 +00:00
elad
aae00d5a54 Add SHA2 support in mtree. 2005-08-24 20:55:41 +00:00
lukem
24e1167471 In replacenode(), don't strunvis() a NULL pointer. (Fixes bug in previous.) 2004-12-01 23:27:36 +00:00
lukem
507e9f7256 strsvis(3) encode & decode the "link=" value (symlink target). 2004-12-01 10:07:56 +00:00
lukem
9cc32040b1 Implement -M to "merge" entries, even with different types.
This can be used in /etc/security to allow special.local to override
types of entries in special (e.g, replacing a dir with a link).

Rename Wflag to mtree_Wflag, to be more "external namespace" friendly.
2004-07-22 16:51:45 +00:00
jmc
b2f782612f Completely rework how tools/compat is done. Purge all uses/references to
_NETBSD_SOURCE as this makes cross building from older/newer versions of
NetBSD harder, not easier (and also makes the resulting tools 'different')

Wrap all required code with the inclusion of nbtool_config.h, attempt to
only use POSIX code in all places (or when reasonable test w. configure and
provide definitions: ala u_int, etc).

Reviewed by lukem. Tested on FreeBSD 4.9, Redhat Linux ES3, NetBSD 1.6.2 x86
NetBSD current (x86 and amd64) and Solaris 9.

Fixes PR's: PR#17762 PR#25944
2004-06-20 22:20:14 +00:00
christos
455c8493fb foliage from pack_dev change :-) 2004-05-11 17:11:03 +00:00
ross
4875c0a7d0 Handle new-style error return from mknod/pack_dev.c 2004-01-30 19:09:03 +00:00
dbj
982688a7fd #include <util.h>
this is needed by fparseln on macos/darwin and is harmless on netbsd
2003-11-17 00:02:33 +00:00
dsl
d597578896 Include filename in:
'existing entry for `sha1.h', type `file' does not match type `link'
2003-10-10 11:08:54 +00:00
itojun
e99b62a1d7 realloc pedant 2003-09-19 06:11:35 +00:00
agc
326b2259b7 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22366, verified by myself.
2003-08-07 11:25:11 +00:00
lukem
3cbfaf0af4 Add -C, which dumps the specification with the full path name first,
and then all the other fields.  (I.e, like -D except with the name
first instead of last).
Consistenly strsvis(3) encode path names (even for -C and -D).
2002-12-23 04:40:19 +00:00
lukem
d348d3d723 tweaks for fparseln(3) move from libutil to libc:
- remove #include <util.h> if nothing else needed it
- remove LDFLAGS+=-lutil if nothing else needed it
2002-11-30 03:10:53 +00:00
lukem
b927725af9 support multiple entries for "." and full paths if the types match; the last
listed entry's settings override the existing settings for that node.
2002-02-11 12:43:55 +00:00
lukem
daea03f9f5 Support /unset all', to unset all of the global values set with /set ...' 2002-02-05 12:15:13 +00:00
tv
9fbd88883c Roll in fixes to permit cross-compiling from non-NetBSD hosts. This
round has been tested on Solaris/x86 and Linux hosts.

* Add host tools cap_mkdb, ctags, m4, uudecode.
* Protect __RCSID() and __COPYRIGHT() better.
* Reduce the number of places that need to include "config.h", to keep
  sources closer to their "vanilla" versions.
* Add more compat #defines and autoconf-checked functions.
2002-01-31 22:43:33 +00:00
tv
a328e34106 Make almost all tools compile and run properly on non-NetBSD hosts. (In
particular, most tools now run correctly on Solaris 7.)
2002-01-29 10:20:28 +00:00
lukem
6dba6d95f7 add <util.h> back in for native builds. 2002-01-29 00:31:37 +00:00
tv
fcae5f73b7 Add hooks to make mtree compilable from src/tools. 2002-01-29 00:07:27 +00:00
lukem
704b08b696 Generally don't need the extra byte in MAXPATHLEN sized buffers, because
pathnames are guaranteed by POSIX to be MAXPATHLEN-1 bytes long.
Kindly pointed out by Warner Losh in private email.
2001-11-09 06:55:56 +00:00
lukem
e8b2f3326f User interface changes from (or inspired by) FreeBSD:
- Add -L to walk the tree `logically', by following symbolic links in
  the heirarchy.
- Add -P to walk the tree `physically'. This is the current behaviour,
  and the default.
- Add "-X excludes-file" to give mtree the ability to exclude files and
  directories from its traversal.  excludes-file contains fnmatch(3)
  patterns to exclude from the walk.
- Add "md5digest" synonym for "md5".
- Add "rmd160" keyword for RMD-160 message digest, and "rmd160digest" synonym.
- Add "sha1" keyword for SHA-1 message digest, and "sha1digest" synonym.
- Don't try to compare() other attributes if the type doesn't match;
  it's nothing but trouble, and no use anyway.
- In -c, only emit "/set" records if something has changed since the
  previous one.

User interface changes by me:
- Check a device's parameters before checking uid/gid/mode.
- If updating (-u), modify the following to match the specification:
	- Device type (retaining existing ownership).
	- Symlink target.

Fixes from (or inspired by) FreeBSD:
- Use p->ftslevel instead of own code to keep track of the level ourself.
  The previous code got majorly confused if fts(3) couldn't descend
  into a subdir, resulting in leaf nodes getting attached to the wrong
  directory.
  XXX: This new method is much much more robust, even though it's not 100%
  perfect; it might result in a couple of following entries in the spec
  to be incorrectly tagged as missing.
- Pass a useful pathname to rlink(), so that logical (-L) traversal
  doesn't confuse symlink checking.
- Consistently use MAXPATHLEN+1 sized buffers for pathnames, so that
  there's room for the NUL.
- Use mtree_err() and strerror(p->fts_errno) to report errors during
  the fts(3) walk.

Fixes by me:
- Remove now-unused `const char *name' argument from compare().
- Change crc_total from an int to a u_int32_t, to match usr.bin/cksum/crc.c.
- Remove trailing whitespace.
- Remove unnecessary (void) casts on functions.
- Reorder entries in the getopt() switch.
- Replace strtoq() with strtoll(), and use strtoul() appropriately.
- Renumber F_ flags to be in alphabetical order.
2001-11-07 08:01:51 +00:00
lukem
c55aa0f9cb - move "Wflag" global from mtree.c to spec.c, and reinstate the functionality
of tv's previous code, which skips uname or gname parsing if -W is enabled.
- rename "lineno" to "mtree_lineno", to reduce possibility of name
  clashes in code that yanks in spec.c & misc.c (unlikely, but you never know)
2001-11-03 12:51:40 +00:00
tv
70a4e4b481 Revert previous until it's fixed a more generic way ... I didn't realize
this was pulled in via reachover from elsewhere.
2001-11-01 02:15:41 +00:00
tv
8e97329393 Don't try to do uid or gid lookups from a supplied spec file if -W is given;
the numerical IDs won't be used anyway.
2001-10-31 20:41:17 +00:00
lukem
8e9dab2d53 fix potential sparc compiler warning (if DEBUG was defined, that is...) 2001-10-26 16:01:46 +00:00
lukem
68a03bad5d - add lineno field to NODE
- move inotype() prototype into mtree.h from extern.h
2001-10-25 03:00:14 +00:00
lukem
57566f70f8 - enforce the top-most entry must be "." and must be a directory; avoids
various potential problems when intermixing full and relative paths
- changes to make it much easier to use spec() - the specfile parser - in
  other programs (via .PATHing spec.c and misc.c):
	- move excludetags, includetags and keys from mtree.c to misc.c
	- implement mtree_err() using vwarnx() instead of assuming name is
	  "mtree"
	- move inotype() and nodetype() from compare.c to misc.c
	- add nodetoinode(), to convert from an mtree F_* type to a
	  mode_t S_IF* type
	- clean up #include use; don't assume "mtree.h" pulls in some
	  standard includes
	- change spec() to take a FILE * arg (where the specfile is read from)
2001-10-22 07:07:46 +00:00
lukem
7f56f49762 convert from strtok() to strsep() 2001-10-17 01:19:17 +00:00
lukem
bc1697fc70 Add "device" keyword, which allows the device number to be specified,
to be later checked and possibly created. Uses parsing and encoding
routines from mknod(8).
2001-10-09 04:50:00 +00:00
lukem
8b951d1f0d * Implement support for absolute paths in the specfile. An absolute path
is one that contains a `/' character that is not the first character.
  All parent directories referenced in the path must exist.
* Add copyright for all the work I've done.
* Document the history of various features added since 4.3-Reno.
2001-10-05 15:32:57 +00:00
lukem
d8c78c600b - support "all" as a valid keyword for -k, -K and -R.
- parsekey(): support "all" as a keyword which returns a value with all bits
  set that pertain to a valid keyword.
- dump_nodes():
	- only print out a keyword if it's requested AND it's set in the node
	- UNAME falls back to UID if the user name can't be determined
	- GNAME falls back to GID if the group name can't be determined
- rework man page:
	- use Sy instead of Cm
	- use Pq, Dq, Ql, etc instead of ``...''
2001-10-05 13:14:56 +00:00
lukem
acd40f8dd4 dump_nodes() fixes:
- in F_GID, print the gid not the uid
- support F_GNAME
2001-10-05 12:44:47 +00:00
lukem
4da22cb499 cleanup tags support;
- create a typedef struct slist_t to hold stuff in (avoid stringlist(3)
  because it's less portable)
- move the tag manipulate stuff into misc.c
- add matchtags(), which returns 0 if the node is explicitly excluded,
  or not included if an include list is given; or 1 otherwise
- in -D, change tags support from files-only to all-non-directories

(xxx; still considering implementing tags support for -c and !-D)
2001-10-05 01:03:24 +00:00
lukem
3f1c463ef7 - skip F_OPT entries (recently added diagnostic detected this)
- put F_TAG parsing in the correct alphabetical position
2001-10-04 05:03:42 +00:00
lukem
7c30045cef features:
- add a new keyword - "tags" - which is a comma separated list of tags
  associated with that file.
- add "-E tags"; exclude files in -D output with matching tags
- add "-I tags"; only include files in -D output with matching tags
  (default is to list all)

fixes:
- move all extern variable references from individual files into extern.h
- `quote' some more user-specified strings in error messages
- man page: list an options arguments in the description, and sort xrefs.
2001-10-04 04:51:27 +00:00