[pacman-dev] [PATCH 1/2] Changing [ to [[ and ((

Cedric Staniewski cedric at gmx.ca
Thu Nov 12 19:00:26 EST 2009


Isaac Good wrote:
> On Thu, Nov 12, 2009 at 10:37:31PM +0000, Cedric Staniewski wrote:
>> Isaac Good wrote:
>>> On Thu, Nov 12, 2009 at 07:16:41PM +0000, Cedric Staniewski wrote:
>>>> I hope your patch do not get lost in this thread.
>>> Erm. Yeah, I hope so too. How does it get threaded?
>>>
>> I guess you hit the reply button instead of writing a new mail to
>> pacman-dev. At least, there is the In-Reply-To header field in your mail
>> header.
>>
>>>>> @@ -345,26 +345,26 @@ handle_deps() {
>>>>>  	local R_DEPS_SATISFIED=0
>>>>>  	local R_DEPS_MISSING=1
>>>>>  
>>>>> -	[ $# -eq 0 ] && return $R_DEPS_SATISFIED
>>>>> +	(( $# == 0 )) && return $R_DEPS_SATISFIED
>>>>>
>>>> Is there a reason why you do not use (( ! $# )) here?
>>> Some variables are used as a boolean flag in which case testing if ((VAR)) and if (( ! VAR )) reads well. The $# (and EUID) are used as integer values so it struck me as more understandable or readable in this form.
>>>
>> I am fine with that, but would it not makes sense to use (( $# > 0 ))
>> instead of just (( $# )) then?
> 
> I am not sure I understand what you are saying.
> In general there are no negative values. With boolean flags either it is set or not set. So you get : if (( FLAG )) and if (( ! FLAG ))
> With $# (and EUID) the code is set up to test for zero, not non-zero. (( $# > 0 )) and (( $# )) are the reverse of what the code checks for.
> All of these do the same thing:
> $ (( $# == 0 )) && return $R_DEPS_SATISFIED
> $ (( $# > 0 )) || return $R_DEPS_SATISFIED
> $ (( ! $# ))  && return $R_DEPS_SATISFIED
> $ (( $# )) || return $R_DEPS_SATISFIED
> 
> I left the test as && because there was no compelling reason to change it. That aside, I am in favor of either of the first two for $# as opposed to the latter two for boolean flags.
> 

Sorry, I meant another line from your patch where you use (( $# )).

>  }
>  
>  check_deps() {
> -	[ $# -gt 0 ] || return
> +	(( $# )) || return
>  
>  	pmout=$(pacman $PACMAN_OPTS -T "$@")
>  	ret=$?
> -	if [ $ret -eq 127 ]; then #unresolved deps
> +	if (( ret == 127 )); then #unresolved deps
>  		echo "$pmout"
> -	elif [ $ret -ne 0 ]; then
> +	elif (( ret )); then
>  		error "$(gettext "Pacman returned a fatal error (%i): %s")" "$ret" "$pmout"
>  		exit 1
>  	fi

ret is another non-boolean variable by the way. I think some kind of
code style guide is a good idea. :)


More information about the pacman-dev mailing list