On 24 July 2011 10:06, Anselm R Garbe <garb...@gmail.com> wrote:
> On 24 July 2011 09:57, lolilolicon <loliloli...@gmail.com> wrote:
>> On Sun, Jul 24, 2011 at 4:39 PM, Anselm R Garbe <garb...@gmail.com> wrote:
>>> On 24 July 2011 06:34, Dave Reisner <d...@falconindy.com> wrote:
>>>> #!/bin/sh
>>>>
>>>> CACHE=${XDG_CACHE_HOME:-"$HOME/.cache"}/dmenu_run
>>>> IFS=:
>>>> LC_COLLLATE=C
>>>>
>>>> gencache() {
>>>>  lsx $PATH | sort -u >"$CACHE"
>>>> }
>>>>
>>>> if [ ! -e "$CACHE" ]; then
>>>>  mkdir -p "${CACHE%/*}"
>>>>  gencache
>>>> fi
>>>>
>>>> for path in $PATH; do
>>>>  if [ "$path" -nt "$CACHE" ]; then
>>>>    gencache
>>>>    break
>>>>  fi
>>>> done
>>>
>>> Am I right that the previous loop runs gencache n times, under the
>>> assumption that each path component contains newer files?
>>>
>>> Kind regards,
>>> Anselm
>>
>> No, note the `break'.
>
> True, I must have been half asleep when I glanced at that loop...
>
> Nevertheless, I can see that script should be improved (not using the
> ls -dt invocation), but I prefer the back ticks (even if $(..) is
> POSIX, there were a couple of issues in the past that I barely
> remember) and I want explicit test calls, I don't like the [ ... ]
> syntax sugar.

Going through this all over again, the real solution is to use 9base,
as this has defined behavior on all platforms.
Though let's not go there for all the cases where people just want to
use dmenu and nothing else from suckless.org, which are quite a few.

Cheers,
Anselm

Reply via email to