On 01/12/2013 06:44:16 AM, [email protected] wrote:
Hi Rob.

New account, let the spam begin (NOT) :-)

When you added the help for cp  -n I noticed the
help for -p is missing,

$ ./toybox help cp | grep '[-]p'
-p  preserve timestamps, ownership, and permissions

?

even though the help -a
refers to it.  Now I notice a few others are also
undocumented.

There's a longstanding missing feature in the help text, which is that multiple config options don't get collated properly. In this case, there's a CONFIG_CP and CONFIG_CP_MORE (all the non-posix options, -rdavsl).

The problem is that I need to merge "usage:" lines, which involves a certain amount of string parsing that's tricky to do in shell. I should take another stab at it...

Also, this looks suspicious:
http://landley.net/hg/toybox/rev/5bc258a4c750

    1.22 +    // Detect recursive copies via
repeated top node (cp -R .. .) or
    1.23 +    // identical source/target (fun with
hardlinks).
    1.24 +    if ((TT.top.st_dev == try->st.st_dev
&& TT.top.st_ino == try->st.st_ino
    1.25 +         && (catch = TT.destname))
    1.26 +        || (!fstatat(cfd, catch, &cst,
0) && cst.st_dev == try->st.st_dev
    1.27 +         && cst.st_ino == try->st.st_ino))

Because the first if that assigns catch is highly
conditional and the second half uses it
unconditionally.

It's initialized in the declaration:

  char *catch = try->parent ? try->name : TT.destname

The assignment in the first half of that just changes the value, otherwise we stick with the default. (In reality, the assignment is just to get the right error_ms, we trust it never to be null because it's initialized in the caller.)

Rob
_______________________________________________
Toybox mailing list
[email protected]
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to