Allan McRae wrote:
> Cedric Staniewski wrote:
>> Xavier wrote:
>>  
>>> On Sat, Oct 17, 2009 at 7:41 PM, Cedric Staniewski <[email protected]>
>>> wrote:
>>>    
>>>> The basename command is easier to understand than a sed command and it
>>>> is even slightly faster than sed.
>>>>
>>>> Signed-off-by: Cedric Staniewski <[email protected]>
>>>> ---
>>>> or if you prefer bashisms, see next patch
>>>>
>>>>       
>>> I actually saw that code recently and thought exactly the same.
>>> I prefer the bash way for code that is executed many times (for
>>> performance reason), but it's not really the case here, so basename
>>> should be fine.
>>> Is basename available on all the os we support ?
>>>     
>>
>> I do not know if it is available on all the required os, but it was
>> already used before in makepkg and makepkg's header states:
>>
>>  
>>> # makepkg uses quite a few external programs during its execution. You
>>> # need to have at least the following installed for makepkg to function:
>>> #   awk, bsdtar (libarchive), bzip2, coreutils, fakeroot, find
>>> (findutils),
>>> #   getopt (util-linux), gettext, grep, gzip, openssl, sed
>>>     
>>
>> with basename being part of coreutils.
>>   
> 
> I'd prefer the bash substituion for
> 
> 1) it is a bash internal so does not require starting another process

That's sure, but for basename it makes not so much difference:

$ url="http://mailman.archlinux.org/mailman/listinfo/pacman-dev";
$ time echo $url | sed 's|^.*://.*/||g'
pacman-dev

real    0m0.012s
user    0m0.010s
sys     0m0.003s
$ time echo $(basename "$url")
pacman-dev

real    0m0.003s
user    0m0.003s
sys     0m0.000s
$ time echo ${url##*/}
pacman-dev

real    0m0.000s
user    0m0.000s
sys     0m0.000s


In my opinion, the use of basename would make the code a little bit easier to 
understand, but if we use bash substitutions for anything else, it would not 
make much sense to use basename here.

> 2) the only use of basename so far in makepkg is in an error message
> which I doubt many people ever hit.  So there is no real guarantee this
> is portable across platforms (though it should be...)


If you thing this could be an issue, we should use bash substitutions.


> Allan
> 
> 


Reply via email to