On 2/15/11 12:18 PM, Felix Fietkau wrote:
On 2011-02-15 8:09 PM, Philip Prindeville wrote:
On 2/15/11 2:13 AM, Ferenc Wagner wrote:
Peter Wagner<[email protected]>   writes:

-       [ -n "$leasefile" ]&&   [ -e "$leasefile" ] || touch "$leasefile"
+       [ -n "$leasefile" ]&&   ( [ -e "$leasefile" ] || touch "$leasefile" )
Looks like this is fixed already by commit 15fba44a (but see point 6 of
http://mywiki.wooledge.org/BashPitfalls and the rest for an interesting
read) so the following is academic, but I typed it before checking...

It's cheeper to use braces in such cases to avoid subshell creation:

            [ -n "$leasefile" ]&&   { [ -e "$leasefile" ] || touch 
"$leasefile"; }

Btw. is the -e test really necessary?  Why not simply

            [ -n "$leasefile" ]&&   touch "$leasefile"
?
Well, to use your own point... why create an extra process to "touch" a file 
that already exists?
And if it does exist, do you necessarily want to modify the timestamp on it?
https://dev.openwrt.org/changeset/25540 - committed more than 24 hours
ago, rendering much of this discussion irrelevant ;)

Well, if the discussion offers would-be contributors an inkling of what a 
'style guide' would contain, then that's a good thing, right?

I enjoyed the discussion on Bastian's suggestions (perhaps more than poor 
Bastian did :-( ) because it gave some insight into what the values of the 
maintainers of OpenWRT are.

-Philip



I don't like using "-e" because what happens if the name exists, but it's a 
directory or a socket or a block file...

Why not use "-f" instead?
If it's a directory or a socket, then touch certainly won't make things
better, so -e is enough, unless you also want to add a conditional rm
-f, as well as some extra checks to make sure it isn't a symlink, ....
nah, screw that, I don't believe in defensive programming ;)

- Felix

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to