@@ -293,8 +293,10 @@ _project_open_build_cache() {
293293 cache=" $( _project_open_cache_file) "
294294 stamp=" ${cache} .ts"
295295 ttl=" ${PROJECT_OPEN_CACHE_TTL:- 3} "
296+ case " ${ttl} " in ' ' | * [!0-9]* ) ttl=3 ;; esac
296297 now=" $( date +%s) "
297298 last=" $( cat " ${stamp} " 2> /dev/null || echo 0) "
299+ case " ${last} " in ' ' | * [!0-9]* ) last=0 ;; esac
298300 (( now - last < ttl )) && return 0
299301
300302 dir=" ${cache%/* } "
@@ -325,7 +327,7 @@ po_refresh() {
325327}
326328
327329_project_open_resolve () {
328- local name=" ${1} " cache_only=" ${2} " cache line scanned
330+ local name=" ${1} " cache_only=" ${2} " cache line tmp
329331 [[ -n " ${name} " ]] || return 1
330332 cache=" $( _project_open_cache_file) "
331333 if [[ -f " ${cache} " ]]; then
@@ -334,10 +336,12 @@ _project_open_resolve() {
334336 done < " ${cache} "
335337 fi
336338 [[ -n " ${cache_only} " ]] && return 1
337- scanned=" $( _project_open_scan) "
339+ tmp=" $( mktemp " ${TMPDIR:-/ tmp} /project_open_scan.XXXXXX" ) " || return 1
340+ _project_open_scan > " ${tmp} "
338341 while IFS= read -r line || [[ -n " ${line} " ]]; do
339- [[ " ${line##*/ } " == " ${name} " ]] && { printf ' %s\n' " ${line} " ; return 0; }
340- done <<< " ${scanned}"
342+ [[ " ${line##*/ } " == " ${name} " ]] && { printf ' %s\n' " ${line} " ; rm -f " ${tmp} " ; return 0; }
343+ done < " ${tmp} "
344+ rm -f " ${tmp} "
341345 return 1
342346}
343347
@@ -351,7 +355,7 @@ project_open() {
351355 else
352356 NEW_PATH=" $( _project_open_resolve " ${1} " ) "
353357 if [ -z " ${NEW_PATH} " ]; then
354- echo " No project named ${1} under ${CODE_PATH} " >&2
358+ printf ' No project named %s under %s\n ' " ${1} " " ${CODE_PATH} " >&2
355359 return 1
356360 fi
357361 tmux rename-window " ${1} "
0 commit comments