runtime(misc): add support for bzip3 to tar, vimball and gzip plugins

fixes: #16751
closes: #16755

Signed-off-by: Jim Zhou <jimzhouzzy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/autoload/getscript.vim b/runtime/autoload/getscript.vim
index 3906050..e599d1e 100644
--- a/runtime/autoload/getscript.vim
+++ b/runtime/autoload/getscript.vim
@@ -12,6 +12,7 @@
 "                               autoloading search path fix
 "                               substitution of hardcoded commands with global variables
 "   2024 Nov 12 by Vim Project: fix problems on Windows (#16036)
+"   2025 Feb 28 by Vim Project: add support for bzip3 (#16755)
 "  }}}
 "
 " GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim
@@ -100,6 +101,10 @@
  let g:GetLatestVimScripts_bunzip2= "bunzip2"
 endif
 
+if !exists("g:GetLatestVimScripts_bunzip3")
+ let g:GetLatestVimScripts_bunzip3= "bunzip3"
+endif
+
 if !exists("g:GetLatestVimScripts_gunzip")
  let g:GetLatestVimScripts_gunzip= "gunzip"
 endif
@@ -565,73 +570,55 @@
    " --------------------------------------------------------------------------
 "   call Decho("checking if plugin requested autoinstall: doautoinstall=".doautoinstall)
    if doautoinstall
-"    call Decho(" ")
-"    call Decho("Autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname))
     if filereadable(sname)
-"     call Decho("<".sname."> is readable")
-"     call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall))
      exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall)
      let curdir    = fnameescape(substitute(getcwd(),'\','/','ge'))
      let installdir= curdir."/Installed"
      if !isdirectory(installdir)
       call mkdir(installdir)
      endif
-"     call Decho("curdir<".curdir."> installdir<".installdir.">")
-"     call Decho("exe cd ".fnameescape(s:autoinstall))
      exe "cd ".fnameescape(s:autoinstall)
 
      " determine target directory for moves
      let firstdir= substitute(&rtp,',.*$','','')
      let pname   = substitute(sname,'\..*','.vim','')
-"     call Decho("determine tgtdir: is <".firstdir.'/AsNeeded/'.pname." readable?")
      if filereadable(firstdir.'/AsNeeded/'.pname)
       let tgtdir= "AsNeeded"
      else
       let tgtdir= "plugin"
      endif
-"     call Decho("tgtdir<".tgtdir.">  pname<".pname.">")
-     
+
      " decompress
      if sname =~ '\.bz2$'
-"      call Decho("decompress: attempt to bunzip2 ".sname)
       exe "sil !".g:GetLatestVimScripts_bunzip2." ".shellescape(sname)
       let sname= substitute(sname,'\.bz2$','','')
-"      call Decho("decompress: new sname<".sname."> after bunzip2")
+     elseif sname =~ '\.bz3$'
+      exe "sil !".g:GetLatestVimScripts_bunzip3." ".shellescape(sname)
+      let sname= substitute(sname,'\.bz3$','','')
      elseif sname =~ '\.gz$'
-"      call Decho("decompress: attempt to gunzip ".sname)
       exe "sil !".g:GetLatestVimScripts_gunzip." ".shellescape(sname)
       let sname= substitute(sname,'\.gz$','','')
-"      call Decho("decompress: new sname<".sname."> after gunzip")
      elseif sname =~ '\.xz$'
-"      call Decho("decompress: attempt to unxz ".sname)
       exe "sil !".g:GetLatestVimScripts_unxz." ".shellescape(sname)
       let sname= substitute(sname,'\.xz$','','')
-"      call Decho("decompress: new sname<".sname."> after unxz")
      else
 "      call Decho("no decompression needed")
      endif
-     
+
      " distribute archive(.zip, .tar, .vba, .vmb, ...) contents
      if sname =~ '\.zip$'
-"      call Decho("dearchive: attempt to unzip ".sname)
       exe "silent !".g:GetLatestVimScripts_unzip." -o ".shellescape(sname)
      elseif sname =~ '\.tar$'
-"      call Decho("dearchive: attempt to untar ".sname)
       exe "silent !tar -xvf ".shellescape(sname)
      elseif sname =~ '\.tgz$'
-"      call Decho("dearchive: attempt to untar+gunzip ".sname)
       exe "silent !tar -zxvf ".shellescape(sname)
      elseif sname =~ '\.taz$'
-"      call Decho("dearchive: attempt to untar+uncompress ".sname)
       exe "silent !tar -Zxvf ".shellescape(sname)
      elseif sname =~ '\.tbz$'
-"      call Decho("dearchive: attempt to untar+bunzip2 ".sname)
       exe "silent !tar -jxvf ".shellescape(sname)
      elseif sname =~ '\.txz$'
-"      call Decho("dearchive: attempt to untar+xz ".sname)
       exe "silent !tar -Jxvf ".shellescape(sname)
      elseif sname =~ '\.vba$\|\.vmb$'
-"      call Decho("dearchive: attempt to handle a vimball: ".sname)
       silent 1split
       if exists("g:vimball_home")
        let oldvimballhome= g:vimball_home
@@ -648,25 +635,21 @@
      else
 "      call Decho("no dearchiving needed")
      endif
-     
+
      " ---------------------------------------------
      " move plugin to plugin/ or AsNeeded/ directory
      " ---------------------------------------------
      if sname =~ '.vim$'
-"      call Decho("dearchive: attempt to simply move ".sname." to ".tgtdir)
       exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".tgtdir
      else
-"      call Decho("dearchive: move <".sname."> to installdir<".installdir.">")
       exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".installdir
      endif
      if tgtdir != "plugin"
-"      call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape("plugin/".pname)." ".tgtdir)
       exe "silent !".g:GetLatestVimScripts_mv." ".shellescape("plugin/".pname)." ".tgtdir
      endif
-     
+
      " helptags step
      let docdir= substitute(&rtp,',.*','','e')."/doc"
-"     call Decho("helptags: docdir<".docdir.">")
      exe "helptags ".fnameescape(docdir)
      exe "cd ".fnameescape(curdir)
     endif
@@ -681,13 +664,8 @@
 
    " update the data in the <GetLatestVimScripts.dat> file
    call setline(line("."),modline)
-"   call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">")
-"  else " Decho
-"   call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."], no need to update")
   endif
 
-"  call Dredir("BUFFER TEST (GetOneScript)","ls!")
-"  call Dret("GetOneScript")
 endfun
 
 " ---------------------------------------------------------------------