From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1193 invoked by alias); 14 Feb 2016 20:09:57 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 37972 Received: (qmail 16135 invoked from network); 14 Feb 2016 20:09:56 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=from:message-id:date:in-reply-to:comments:references:to:subject :mime-version:content-type; bh=k6lhk42lPjTd7SQ2idwLU35IIc2GYiHB8MrmJwsL+z8=; b=FQYQ+MfOPLk0BWsoXWlfveFnl1OckQzlJFG5lMjh3UgRSnKbMAyuMGJyaJdk6ksBKi DUcXabMJcb6NpCbghFiMpVJSfQLY6KvH1NMFeMfgV10fNW/XU3S/Ff1OVg9ByjC7zHQF IWJ8k5m/PSzMZeNn937+I5Fzz/tyfffJqjoNXv/mmGKnw4vA4Jv7m5XoWGOibspEvEkP DJZzd5+YbLP+ACsfYO7Utihwkx79ZCWJyDlFKIEJCBp6mG0q9ZoIkEGqk4fZUUKBp16g wRJfQjh/tl4HRzvBSVVZDJRJE+EiDFlPQRunnwnOLu2RCed2vrNP77bHGr/go0EqXAaQ E04g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:message-id:date:in-reply-to:comments :references:to:subject:mime-version:content-type; bh=k6lhk42lPjTd7SQ2idwLU35IIc2GYiHB8MrmJwsL+z8=; b=I02wHiZ7I7/Szg1gyKCI27h+vlpirKqOJm/vG2Xp06onlfttFpuHEfcBmBW8NfVn0k U/fDBI3eqeba27NXorQGde0L6fFrWZz2Sawj9zT39xa2gsu0YNyGoivfZIDDxfbELesJ Z810VwjSnbAWmrkZnl/JS/IemImSYQmrgqx9tzMYE+XEtr6X4X3YOX+Msyo+eYS6+nir L+koJd4Wl/qjEY3xHE/ZUfPwVjvguUMbsl4NO85kufGaswZQo9GF4z0YPKShVweiDRGq ah+WDa6AsNyGndTpEFlbgElaZCxqhrkYQv0lCNTcu8iVQhbfmAEDYmuP+qc3Na+OUk3F BX3Q== X-Gm-Message-State: AG10YOSFg0LLJuxW/jis21O0EGThVLJrCI571YkiY5wAf9roegONcBSg+DZZtxGDOH5RHQ== X-Received: by 10.98.31.221 with SMTP id l90mr18580254pfj.92.1455480594419; Sun, 14 Feb 2016 12:09:54 -0800 (PST) From: Bart Schaefer Message-Id: <160214121012.ZM21020@torch.brasslantern.com> Date: Sun, 14 Feb 2016 12:10:12 -0800 In-Reply-To: Comments: In reply to Mikael Magnusson "Re: Unexpected foo==bar errors" (Feb 8, 8:16pm) References: <160207111638.ZM30626@torch.brasslantern.com> <160208104528.ZM12107@torch.brasslantern.com> X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: zsh workers Subject: Failed process substitution on x=$~y (Re: Unexpected foo==bar errors) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Feb 8, 8:16pm, Mikael Magnusson wrote: } Subject: Re: Unexpected foo==bar errors } } On Mon, Feb 8, 2016 at 7:45 PM, Bart Schaefer wrote: } > On Feb 8, 4:52am, Mikael Magnusson wrote: } > } I wonder if there's anywhere in the completion system that depends on } > } EQUALS being set... But maybe we should just 2> /dev/null the } > } assignment since tilde expansion also prints errors. (_zattr and _zip } > } also have this issue, presumably there are other places as well). Looks like stderr is already redirected in _zattr. } Well, considering that something simple as foo*.tar (expanding only to } one file) also leaves $tf empty, I'd say it's better to leave $tf } empty for any weird command substitutions as well, but suppress the } error messages. The following all use ${~param} in places where an error could occur if the value looks like a process substitution: Completion/Base/Utility/_arguments Completion/Base/Widget/_correct_filename Completion/Base/Widget/_most_recent_file Completion/Unix/Command/_devtodo Completion/Unix/Command/_make Completion/Unix/Command/_ssh Completion/Unix/Command/_tar Completion/Unix/Command/_zip Completion/Unix/Type/_canonical_paths If for some reason one used a process substitution to locate the muttrc file, Completion/Unix/Type/_mailboxes might also have that issue, but I think that's wildly unlikely. Some of these might warrant a closer look to see if it's a larger issue to proceed with the resulting empty string. diff --git a/Completion/Base/Utility/_arguments b/Completion/Base/Utility/_arguments index 87fb20e..687c0c4 100644 --- a/Completion/Base/Utility/_arguments +++ b/Completion/Base/Utility/_arguments @@ -36,7 +36,7 @@ if (( long )); then tmpargv=( "${(@)argv[1,long-1]}" ) # optspec's before --, if any - name=${~words[1]} + name=${~words[1]} 2>/dev/null [[ "$name" = [^/]*/* ]] && name="$PWD/$name" name="_args_cache_${name}" diff --git a/Completion/Base/Widget/_correct_filename b/Completion/Base/Widget/_correct_filename index 7431a48..3150ffc 100644 --- a/Completion/Base/Widget/_correct_filename +++ b/Completion/Base/Widget/_correct_filename @@ -28,7 +28,7 @@ fi if [[ $file = \~*/* ]]; then tilde=${file%%/*} - etilde=${~tilde} + etilde=${~tilde} 2>/dev/null file=${file/#$tilde/$etilde} fi diff --git a/Completion/Base/Widget/_most_recent_file b/Completion/Base/Widget/_most_recent_file index 68d1c91..e72cf5e 100644 --- a/Completion/Base/Widget/_most_recent_file +++ b/Completion/Base/Widget/_most_recent_file @@ -11,7 +11,7 @@ local file tilde etilde if [[ $PREFIX = \~*/* ]]; then tilde=${PREFIX%%/*} - etilde=${~tilde} + etilde=${~tilde} 2>/dev/null # PREFIX and SUFFIX have full command line quoting in, but we want # any globbing characters which are quoted to stay quoted. eval "file=($PREFIX*$SUFFIX(om[${NUMERIC:-1}]N))" diff --git a/Completion/Unix/Command/_devtodo b/Completion/Unix/Command/_devtodo index 2800f4a..dbc64f8 100644 --- a/Completion/Unix/Command/_devtodo +++ b/Completion/Unix/Command/_devtodo @@ -9,7 +9,7 @@ typeset expl for ((i=2; i <= $#words; i++)) { if [[ $words[$i] == '--database' ]]; then - todo_opts+=(--database ${~words[$((++i))]}) + todo_opts+=(--database ${~words[$((++i))]}) 2>/dev/null elif [[ $words[$i] == '--sort' ]]; then todo_opts+=(--sort ${words[$((++i))]}) fi diff --git a/Completion/Unix/Command/_make b/Completion/Unix/Command/_make index 48befa7..c3f3961 100644 --- a/Completion/Unix/Command/_make +++ b/Completion/Unix/Command/_make @@ -129,7 +129,7 @@ _make-findBasedir () { do if [[ $@[index] == -C ]] then - file=${~@[index+1]}; + file=${~@[index+1]} 2>/dev/null if [[ -z $file ]] then # make returns with an error if an empty arg is given diff --git a/Completion/Unix/Command/_ssh b/Completion/Unix/Command/_ssh index c6ede9e..1f8f62c 100644 --- a/Completion/Unix/Command/_ssh +++ b/Completion/Unix/Command/_ssh @@ -622,7 +622,7 @@ _ssh_hosts () { ${opt_args[-l]:+"users=${opt_args[-l]:q}"} hosts "$@" && return fi if (( ind = ${words[(I)-F]} )); then - config=${~words[ind+1]} + config=${~words[ind+1]} 2>/dev/null else config="$HOME/.ssh/config" fi diff --git a/Completion/Unix/Command/_tar b/Completion/Unix/Command/_tar index 1e99ac0..4a24048 100644 --- a/Completion/Unix/Command/_tar +++ b/Completion/Unix/Command/_tar @@ -79,7 +79,7 @@ else tf=${~words[tmp+1]} _tar_cmd="f$_tar_cmd" fi -fi +fi 2>/dev/null # See if we should use a path prefix. We have to use eval as the dir can # be any unevaluated thing which appears on the command line, including a diff --git a/Completion/Unix/Command/_zip b/Completion/Unix/Command/_zip index 171daf0..1040fa9 100644 --- a/Completion/Unix/Command/_zip +++ b/Completion/Unix/Command/_zip @@ -120,7 +120,7 @@ case $state in zipfile=$testfile.ZIP else return 1 - fi + fi 2>/dev/null if [[ $zipfile != $_zip_cache_name ]]; then _zip_cache_name="$zipfile" _zip_cache_list=( ${(f)"$(zipinfo -1 $_zip_cache_name)"} ) diff --git a/Completion/Unix/Type/_canonical_paths b/Completion/Unix/Type/_canonical_paths index d23b913..e4a725b 100644 --- a/Completion/Unix/Type/_canonical_paths +++ b/Completion/Unix/Type/_canonical_paths @@ -61,7 +61,7 @@ _canonical_paths_get_canonical_path() { _canonical_paths_add_paths () { local origpref=$1 expref rltrim curpref canpref subdir [[ $2 != add ]] && matches=() - expref=${~origpref} + expref=${~origpref} 2>/dev/null [[ $origpref == (|*/). ]] && rltrim=. curpref=${${expref%$rltrim}:-./} if zstat $curpref >&/dev/null; then