runtime(tar): fix a few problems with the tar plugin

Commit: 
https://github.com/vim/vim/commit/3a5b3df7764daa058a3e779183e8f38a8418b164
Author: Christian Brabandt <[email protected]>
Date:   Mon Jan 8 20:02:14 2024 +0100

    runtime(tar): fix a few problems with the tar plugin
    
    From: https://github.com/vim/vim/issues/138331:
      - Updating .tar.zst files was broken. Fixes 
https://github.com/vim/vim/issues/12639.
      - Extracting files from .tar.zst / .tzs files was also broken and
        works now.
    From: #12637:
      - Fixes variable assignment and typo
    From: #8109:
      - Rename .tzs to the more standard .tzst
    
    fixes: #12639
    fixes: #8105
    closes: #8109
    closes: #12637
    closes: #13831
    
    Co-authored-by: Martin Rys <[email protected]>
    Co-authored-by: Eisuke Kawashima <[email protected]>
    Co-authored-by: Carlo Teubner <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/runtime/autoload/tar.vim b/runtime/autoload/tar.vim
index adfc10c92..3c4c9ccfb 100644
--- a/runtime/autoload/tar.vim
+++ b/runtime/autoload/tar.vim
@@ -163,9 +163,9 @@ fun! tar#Browse(tarfile)
 "   call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | 
".g:tar_cmd." -".g:tar_browseoptions." - ")
    exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." 
-".g:tar_browseoptions." - "
 
-  elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# 
'\.\(txz\)$' || tarfile =~# '\.\(tzs\)$'
+  elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# 
'\.\(txz\)$' || tarfile =~# '\.\(tzst\)$'
    if has("unix") && executable("file")
-    let filekind= system("file ".shellescape(tarfile,1)) =~ "bzip2"
+    let filekind= system("file ".shellescape(tarfile,1))
    else
     let filekind= ""
    endif
@@ -192,7 +192,7 @@ fun! tar#Browse(tarfile)
   elseif tarfile =~# '\.\(xz\|txz\)$'
 "   call Decho("3: exe silent r! xz --decompress --stdout -- 
".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
    exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | 
".g:tar_cmd." -".g:tar_browseoptions." - "
-  elseif tarfile =~# '\.\(zst\|tzs\)$'
+  elseif tarfile =~# '\.\(zst\|tzst\)$'
    exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | 
".g:tar_cmd." -".g:tar_browseoptions." - "
   else
    if tarfile =~ '^\s*-'
@@ -230,7 +230,7 @@ fun! tar#Browse(tarfile)
   " set up maps supported for tar
   setlocal noma nomod ro
   noremap <silent> <buffer>    <cr>            :call <SID>TarBrowseSelect()<cr>
-  noremap <silent> <buffer>    x               :call tar#Extract()<cr>       
+  noremap <silent> <buffer>    x               :call tar#Extract()<cr>
   if &mouse != ""
    noremap <silent> <buffer>   <leftmouse>     <leftmouse>:call 
<SID>TarBrowseSelect()<cr>
   endif
@@ -468,9 +468,9 @@ fun! tar#Write(fname)
    let compress= "xz -- ".shellescape(tarfile,0)
 "   call Decho("compress<".compress.">")
   elseif tarfile =~# '\.zst'
-   call system("zstd --decompress -- ".shellescape(tarfile,0))
+   call system("zstd --decompress --rm -- ".shellescape(tarfile,0))
    let tarfile = substitute(tarfile,'\.zst','','e')
-   let compress= "zstd -- ".shellescape(tarfile,0)
+   let compress= "zstd --rm -- ".shellescape(tarfile,0)
   elseif tarfile =~# '\.lzma'
    call system("lzma -d -- ".shellescape(tarfile,0))
    let tarfile = substitute(tarfile,'\.lzma','','e')
@@ -486,7 +486,7 @@ fun! tar#Write(fname)
   else
 
 "   call Decho("tarfile<".tarfile."> fname<".fname.">")
- 
+
    if fname =~ '/'
     let dirpath = substitute(fname,'/[^/]\+$','','e')
     if has("win32unix") && executable("cygpath")
@@ -502,7 +502,7 @@ fun! tar#Write(fname)
     let tarfile = substitute(tarfile, '-', './-', '')
    endif
 "   call Decho("tarfile<".tarfile."> fname<".fname.">")
- 
+
    if exists("g:tar_secure")
     let tar_secure= " -- "
    else
@@ -512,7 +512,7 @@ fun! tar#Write(fname)
    if has("win32unix") && executable("cygpath")
     let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'
','','e')
    endif
- 
+
    " delete old file from tarfile
 "   call Decho("system(".g:tar_cmd." ".g:tar_delfile." 
".shellescape(tarfile,0)." -- ".shellescape(fname,0).")")
    call system(g:tar_cmd." ".g:tar_delfile." 
".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
@@ -521,8 +521,8 @@ fun! tar#Write(fname)
 "    call Decho("***error*** (tar#Write) sorry, unable to update 
".fnameescape(tarfile)." with ".fnameescape(fname))
     echohl Error | echo "***error*** (tar#Write) sorry, unable to update 
".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
    else
- 
-    " update tarfile with new file 
+
+    " update tarfile with new file
 "    call Decho(g:tar_cmd." -".g:tar_writeoptions." 
".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
     call system(g:tar_cmd." -".g:tar_writeoptions." 
".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
     if v:shell_error != 0
@@ -555,7 +555,7 @@ fun! tar#Write(fname)
     unlet s:tblfile_{winnr()}
    endif
   endif
-  
+
   " cleanup and restore current directory
   cd ..
   call s:Rmdir("_ZIPVIM_")
@@ -696,13 +696,13 @@ fun! tar#Extract()
     echo "***note*** successfully extracted ".fname
    endif
 
-  elseif filereadable(tarbase.".tzs")
+  elseif filereadable(tarbase.".tzst")
    let extractcmd= substitute(extractcmd,"-","--zstd","")
-"   call Decho("system(".extractcmd." ".shellescape(tarbase).".tzs 
".shellescape(fname).")")
-   call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname))
+"   call Decho("system(".extractcmd." ".shellescape(tarbase).".tzst 
".shellescape(fname).")")
+   call system(extractcmd." ".shellescape(tarbase).".tzst ".shellescape(fname))
    if v:shell_error != 0
-    echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzs ".fname.": 
failed!" | echohl NONE
-"    call Decho("***error*** ".extractcmd." ".tarbase.".tzs ".fname.": 
failed!")
+    echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzst 
".fname.": failed!" | echohl NONE
+"    call Decho("***error*** ".extractcmd." ".tarbase.".tzst ".fname.": 
failed!")
    else
     echo "***note*** successfully extracted ".fname
    endif
@@ -710,7 +710,7 @@ fun! tar#Extract()
   elseif filereadable(tarbase.".tar.zst")
    let extractcmd= substitute(extractcmd,"-","--zstd","")
 "   call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.zst 
".shellescape(fname).")")
-   call system(extractcmd." ".shellescape(tarbase).".tar.xz 
".shellescape(fname))
+   call system(extractcmd." ".shellescape(tarbase).".tar.zst 
".shellescape(fname))
    if v:shell_error != 0
     echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.zst 
".fname.": failed!" | echohl NONE
 "    call Decho("***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": 
failed!")
diff --git a/runtime/plugin/tarPlugin.vim b/runtime/plugin/tarPlugin.vim
index d55492a93..40d224251 100644
--- a/runtime/plugin/tarPlugin.vim
+++ b/runtime/plugin/tarPlugin.vim
@@ -45,7 +45,7 @@ augroup tar
   au BufReadCmd   *.tar.xz             call tar#Browse(expand("<amatch>"))
   au BufReadCmd   *.txz                        call 
tar#Browse(expand("<amatch>"))
   au BufReadCmd   *.tar.zst            call tar#Browse(expand("<amatch>"))
-  au BufReadCmd   *.tzs                        call 
tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tzst                       call 
tar#Browse(expand("<amatch>"))
 augroup END
 com! -nargs=? -complete=file Vimuntar call tar#Vimuntar(<q-args>)
 

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1rMv5T-0027Po-9x%40256bit.org.

Raspunde prin e-mail lui