xref: /vim-8.2.3635/runtime/autoload/tar.vim (revision 910f66f9)
1a5792f58SBram Moolenaar" tar.vim: Handles browsing tarfiles
2a5792f58SBram Moolenaar"            AUTOLOAD PORTION
3*910f66f9SBram Moolenaar" Date:			Mar 27, 2006
41cbe5f73SBram Moolenaar" Version:		7
5a5792f58SBram Moolenaar" Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
6a5792f58SBram Moolenaar" License:		Vim License  (see vim's :help license)
787e25fdfSBram Moolenaar"
8a5792f58SBram Moolenaar"	Contains many ideas from Michael Toren's <tar.vim>
987e25fdfSBram Moolenaar"
10a5792f58SBram Moolenaar" Copyright:    Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
11a5792f58SBram Moolenaar"               Permission is hereby granted to use and distribute this code,
12a5792f58SBram Moolenaar"               with or without modifications, provided that this copyright
13a5792f58SBram Moolenaar"               notice is copied with it. Like anything else that's free,
14a5792f58SBram Moolenaar"               tarPlugin.vim is provided *as is* and comes with no warranty
15a5792f58SBram Moolenaar"               of any kind, either expressed or implied. By using this
16a5792f58SBram Moolenaar"               plugin, you agree that in no event will the copyright
17a5792f58SBram Moolenaar"               holder be liable for any damages resulting from the use
18a5792f58SBram Moolenaar"               of this software.
1987e25fdfSBram Moolenaar
20ab194816SBram Moolenaar" ---------------------------------------------------------------------
21a5792f58SBram Moolenaar" Initialization: {{{1
22a5792f58SBram Moolenaarlet s:keepcpo= &cpo
23a5792f58SBram Moolenaarset cpo&vim
24a5792f58SBram Moolenaarif exists("g:loaded_tar")
25a5792f58SBram Moolenaar finish
26a5792f58SBram Moolenaarendif
271cbe5f73SBram Moolenaarlet g:loaded_tar= "v7"
28*910f66f9SBram Moolenaar"call Decho("loading autoload/tar.vim")
2987e25fdfSBram Moolenaar
30a5792f58SBram Moolenaar" ---------------------------------------------------------------------
31a5792f58SBram Moolenaar"  Default Settings: {{{1
32a5792f58SBram Moolenaarif !exists("g:tar_browseoptions")
33a5792f58SBram Moolenaar let g:tar_browseoptions= "Ptf"
34a5792f58SBram Moolenaarendif
35a5792f58SBram Moolenaarif !exists("g:tar_readoptions")
36a5792f58SBram Moolenaar let g:tar_readoptions= "OPxf"
37a5792f58SBram Moolenaarendif
38*910f66f9SBram Moolenaarif !exists("g:tar_cmd")
39*910f66f9SBram Moolenaar let g:tar_cmd= "tar"
40*910f66f9SBram Moolenaarendif
41a5792f58SBram Moolenaarif !exists("g:tar_writeoptions")
42a5792f58SBram Moolenaar let g:tar_writeoptions= "uf"
43a5792f58SBram Moolenaarendif
44a5792f58SBram Moolenaar
45a5792f58SBram Moolenaar" ----------------
46a5792f58SBram Moolenaar"  Functions: {{{1
47a5792f58SBram Moolenaar" ----------------
48a5792f58SBram Moolenaar
49a5792f58SBram Moolenaar" ---------------------------------------------------------------------
50a5792f58SBram Moolenaar" tar#Browse: {{{2
51a5792f58SBram Moolenaarfun! tar#Browse(tarfile)
52a5792f58SBram Moolenaar"  call Dfunc("tar#Browse(tarfile<".a:tarfile.">)")
53bba577a2SBram Moolenaar  let repkeep= &report
54bba577a2SBram Moolenaar  set report=10
55a5792f58SBram Moolenaar
56a5792f58SBram Moolenaar  " sanity checks
57*910f66f9SBram Moolenaar  if !executable(g:tar_cmd)
58*910f66f9SBram Moolenaar   echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
59a5792f58SBram Moolenaar   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
60bba577a2SBram Moolenaar   let &report= repkeep
61a5792f58SBram Moolenaar"   call Dret("tar#Browse")
6287e25fdfSBram Moolenaar   return
6387e25fdfSBram Moolenaar  endif
64a5792f58SBram Moolenaar  if !filereadable(a:tarfile)
65*910f66f9SBram Moolenaar"   call Decho('a:tarfile<'.a:tarfile.'> not filereadable')
66a5792f58SBram Moolenaar   if a:tarfile !~# '^\a\+://'
67a5792f58SBram Moolenaar    " if its an url, don't complain, let url-handlers such as vim do its thing
68a5792f58SBram Moolenaar    echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
69a5792f58SBram Moolenaar    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
7087e25fdfSBram Moolenaar   endif
71bba577a2SBram Moolenaar   let &report= repkeep
72a5792f58SBram Moolenaar"   call Dret("tar#Browse : file<".a:tarfile."> not readable")
7387e25fdfSBram Moolenaar   return
7487e25fdfSBram Moolenaar  endif
75a5792f58SBram Moolenaar  if &ma != 1
76a5792f58SBram Moolenaar   set ma
7787e25fdfSBram Moolenaar  endif
78a5792f58SBram Moolenaar  let w:tarfile= a:tarfile
79a5792f58SBram Moolenaar
80a5792f58SBram Moolenaar  setlocal noswapfile
81a5792f58SBram Moolenaar  setlocal buftype=nofile
82a5792f58SBram Moolenaar  setlocal bufhidden=hide
83a5792f58SBram Moolenaar  setlocal nobuflisted
84a5792f58SBram Moolenaar  setlocal nowrap
85a5792f58SBram Moolenaar  set ft=tar
86a5792f58SBram Moolenaar
87a5792f58SBram Moolenaar  " give header
88*910f66f9SBram Moolenaar"  call Decho("printing header")
89a5792f58SBram Moolenaar  exe "$put ='".'\"'." tar.vim version ".g:loaded_tar."'"
90a5792f58SBram Moolenaar  exe "$put ='".'\"'." Browsing tarfile ".a:tarfile."'"
91a5792f58SBram Moolenaar  exe "$put ='".'\"'." Select a file with cursor and press ENTER"."'"
92a5792f58SBram Moolenaar  0d
93a5792f58SBram Moolenaar  $
94a5792f58SBram Moolenaar
95*910f66f9SBram Moolenaar  let tarfile= a:tarfile
96*910f66f9SBram Moolenaar  if has("win32") && executable("cygpath")
97*910f66f9SBram Moolenaar   " assuming cygwin
98*910f66f9SBram Moolenaar   let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e')
99a5792f58SBram Moolenaar  endif
100*910f66f9SBram Moolenaar  if tarfile =~# '\.\(gz\|tgz\)$'
101*910f66f9SBram Moolenaar"   call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ")
102*910f66f9SBram Moolenaar   exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - "
103*910f66f9SBram Moolenaar  elseif tarfile =~# '\.bz2$'
104*910f66f9SBram Moolenaar"   call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ")
105*910f66f9SBram Moolenaar   exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - "
106*910f66f9SBram Moolenaar  else
107*910f66f9SBram Moolenaar"   call Decho("exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'")
108*910f66f9SBram Moolenaar   exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'"
109*910f66f9SBram Moolenaar  endif
110*910f66f9SBram Moolenaar  if v:shell_error != 0
111*910f66f9SBram Moolenaar   echohl Error | echo '***error*** (tar#Browse) while browsing; check your g:tar_browseoptions<".g:tar_browseoptions.">"
112*910f66f9SBram Moolenaar"  call Dret("tar#Browse : w:tarfile<".w:tarfile.">")
113*910f66f9SBram Moolenaar   return
114*910f66f9SBram Moolenaar  endif
115a5792f58SBram Moolenaar
116a5792f58SBram Moolenaar  setlocal noma nomod ro
117a5792f58SBram Moolenaar  noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
118a5792f58SBram Moolenaar
119bba577a2SBram Moolenaar  let &report= repkeep
120a5792f58SBram Moolenaar"  call Dret("tar#Browse : w:tarfile<".w:tarfile.">")
121ab194816SBram Moolenaarendfun
12287e25fdfSBram Moolenaar
123ab194816SBram Moolenaar" ---------------------------------------------------------------------
124a5792f58SBram Moolenaar" TarBrowseSelect: {{{2
125a5792f58SBram Moolenaarfun! s:TarBrowseSelect()
126a5792f58SBram Moolenaar"  call Dfunc("TarBrowseSelect() w:tarfile<".w:tarfile."> curfile<".expand("%").">")
127bba577a2SBram Moolenaar  let repkeep= &report
128bba577a2SBram Moolenaar  set report=10
129a5792f58SBram Moolenaar  let fname= getline(".")
130a5792f58SBram Moolenaar"  call Decho("fname<".fname.">")
131a5792f58SBram Moolenaar
132a5792f58SBram Moolenaar  " sanity check
133a5792f58SBram Moolenaar  if fname =~ '^"'
134bba577a2SBram Moolenaar   let &report= repkeep
135a5792f58SBram Moolenaar"   call Dret("TarBrowseSelect")
136a5792f58SBram Moolenaar   return
137a5792f58SBram Moolenaar  endif
138a5792f58SBram Moolenaar
139a5792f58SBram Moolenaar  " about to make a new window, need to use w:tarfile
140a5792f58SBram Moolenaar  let tarfile= w:tarfile
141a5792f58SBram Moolenaar  let curfile= expand("%")
142*910f66f9SBram Moolenaar  if has("win32") && executable("cygpath")
143*910f66f9SBram Moolenaar   " assuming cygwin
144*910f66f9SBram Moolenaar   let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e')
145*910f66f9SBram Moolenaar  endif
146a5792f58SBram Moolenaar
147a5792f58SBram Moolenaar  new
148a5792f58SBram Moolenaar  wincmd _
149a5792f58SBram Moolenaar  let s:tblfile_{winnr()}= curfile
150*910f66f9SBram Moolenaar"  if has("unix")
151*910f66f9SBram Moolenaar""   call Decho("exe e tarfile:".tarfile.':'.fname)
152*910f66f9SBram Moolenaar"   exe "e tarfile:".tarfile.':'.fname
153*910f66f9SBram Moolenaar"  elseif has("win32")
154*910f66f9SBram Moolenaar"   call tar#Read("tarfile:".tarfile.':'.fname,1)
155*910f66f9SBram Moolenaar"  endif
156*910f66f9SBram Moolenaar  call tar#Read("tarfile:".tarfile.':'.fname,1)
157a5792f58SBram Moolenaar  filetype detect
158a5792f58SBram Moolenaar
159bba577a2SBram Moolenaar  let &report= repkeep
160a5792f58SBram Moolenaar"  call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
161a5792f58SBram Moolenaarendfun
162a5792f58SBram Moolenaar
163a5792f58SBram Moolenaar" ---------------------------------------------------------------------
164a5792f58SBram Moolenaar" tar#Read: {{{2
165a5792f58SBram Moolenaarfun! tar#Read(fname,mode)
166a5792f58SBram Moolenaar"  call Dfunc("tar#Read(fname<".a:fname.">,mode=".a:mode.")")
167bba577a2SBram Moolenaar  let repkeep= &report
168bba577a2SBram Moolenaar  set report=10
169a5792f58SBram Moolenaar  let tarfile = substitute(a:fname,'tarfile:\(.\{-}\):.*$','\1','')
170a5792f58SBram Moolenaar  let fname   = substitute(a:fname,'tarfile:.\{-}:\(.*\)$','\1','')
171*910f66f9SBram Moolenaar  if has("win32") && executable("cygpath")
172*910f66f9SBram Moolenaar   " assuming cygwin
173*910f66f9SBram Moolenaar   let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e')
174*910f66f9SBram Moolenaar  endif
175*910f66f9SBram Moolenaar"  call Decho("tarfile<".tarfile.">")
176*910f66f9SBram Moolenaar"  call Decho("fname<".fname.">")
177a5792f58SBram Moolenaar
178a5792f58SBram Moolenaar  if tarfile =~# '\.\(gz\|tgz\)$'
179a5792f58SBram Moolenaar"   call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -OPxf - '".fname."'")
180a5792f58SBram Moolenaar   exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
1811cbe5f73SBram Moolenaar  elseif tarfile =~# '\.bz2$'
182a5792f58SBram Moolenaar"   call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'")
183a5792f58SBram Moolenaar   exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
184a5792f58SBram Moolenaar  else
185a5792f58SBram Moolenaar"   call Decho("exe silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'")
186*910f66f9SBram Moolenaar   exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." '".tarfile."' '".fname."'"
187a5792f58SBram Moolenaar  endif
188a5792f58SBram Moolenaar  let w:tarfile= a:fname
189a5792f58SBram Moolenaar  exe "file tarfile:".fname
190a5792f58SBram Moolenaar
191a5792f58SBram Moolenaar  " cleanup
192a5792f58SBram Moolenaar  0d
193a5792f58SBram Moolenaar  set nomod
194a5792f58SBram Moolenaar
195bba577a2SBram Moolenaar  let &report= repkeep
196a5792f58SBram Moolenaar"  call Dret("tar#Read : w:tarfile<".w:tarfile.">")
197a5792f58SBram Moolenaarendfun
198a5792f58SBram Moolenaar
199a5792f58SBram Moolenaar" ---------------------------------------------------------------------
200a5792f58SBram Moolenaar" tar#Write: {{{2
201a5792f58SBram Moolenaarfun! tar#Write(fname)
202a5792f58SBram Moolenaar"  call Dfunc("tar#Write(fname<".a:fname.">) w:tarfile<".w:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
203bba577a2SBram Moolenaar  let repkeep= &report
204bba577a2SBram Moolenaar  set report=10
205a5792f58SBram Moolenaar
206ab194816SBram Moolenaar  " sanity checks
207*910f66f9SBram Moolenaar  if !executable(g:tar_cmd)
208*910f66f9SBram Moolenaar   echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
209a5792f58SBram Moolenaar   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
210bba577a2SBram Moolenaar   let &report= repkeep
211ab194816SBram Moolenaar"   call Dret("tar#Write")
212ab194816SBram Moolenaar   return
213ab194816SBram Moolenaar  endif
214ab194816SBram Moolenaar  if !exists("*mkdir")
215a5792f58SBram Moolenaar   echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
216a5792f58SBram Moolenaar   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
217bba577a2SBram Moolenaar   let &report= repkeep
218ab194816SBram Moolenaar"   call Dret("tar#Write")
219ab194816SBram Moolenaar   return
220ab194816SBram Moolenaar  endif
221ab194816SBram Moolenaar
222ab194816SBram Moolenaar  let curdir= getcwd()
223ab194816SBram Moolenaar  let tmpdir= tempname()
224ab194816SBram Moolenaar"  call Decho("orig tempname<".tmpdir.">")
225ab194816SBram Moolenaar  if tmpdir =~ '\.'
226ab194816SBram Moolenaar   let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
227ab194816SBram Moolenaar  endif
228ab194816SBram Moolenaar"  call Decho("tmpdir<".tmpdir.">")
229ab194816SBram Moolenaar  call mkdir(tmpdir,"p")
230ab194816SBram Moolenaar
231ab194816SBram Moolenaar  " attempt to change to the indicated directory
232ab194816SBram Moolenaar  try
233ab194816SBram Moolenaar   exe "cd ".escape(tmpdir,' \')
234ab194816SBram Moolenaar  catch /^Vim\%((\a\+)\)\=:E344/
235a5792f58SBram Moolenaar   echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
236a5792f58SBram Moolenaar   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
237bba577a2SBram Moolenaar   let &report= repkeep
238ab194816SBram Moolenaar"   call Dret("tar#Write")
239ab194816SBram Moolenaar   return
240ab194816SBram Moolenaar  endtry
241ab194816SBram Moolenaar"  call Decho("current directory now: ".getcwd())
242ab194816SBram Moolenaar
243a5792f58SBram Moolenaar  " place temporary files under .../_ZIPVIM_/
244a5792f58SBram Moolenaar  if isdirectory("_ZIPVIM_")
245a5792f58SBram Moolenaar   call s:Rmdir("_ZIPVIM_")
246ab194816SBram Moolenaar  endif
247a5792f58SBram Moolenaar  call mkdir("_ZIPVIM_")
248a5792f58SBram Moolenaar  cd _ZIPVIM_
249ab194816SBram Moolenaar"  call Decho("current directory now: ".getcwd())
250ab194816SBram Moolenaar
251a5792f58SBram Moolenaar  let tarfile = substitute(w:tarfile,'tarfile:\(.\{-}\):.*$','\1','')
252a5792f58SBram Moolenaar  let fname   = substitute(w:tarfile,'tarfile:.\{-}:\(.*\)$','\1','')
253a5792f58SBram Moolenaar
254a5792f58SBram Moolenaar  " handle compressed archives
255a5792f58SBram Moolenaar  if tarfile =~# '\.gz'
256a5792f58SBram Moolenaar   call system("gzip -d ".tarfile)
257a5792f58SBram Moolenaar   let tarfile = substitute(tarfile,'\.gz','','e')
258a5792f58SBram Moolenaar   let compress= "gzip '".tarfile."'"
259a5792f58SBram Moolenaar  elseif tarfile =~# '\.tgz'
260a5792f58SBram Moolenaar   call system("gzip -d ".tarfile)
261a5792f58SBram Moolenaar   let tarfile = substitute(tarfile,'\.tgz','.tar','e')
262a5792f58SBram Moolenaar   let compress= "gzip '".tarfile."'"
263a5792f58SBram Moolenaar   let tgz     = 1
264a5792f58SBram Moolenaar  elseif tarfile =~# '\.bz2'
265a5792f58SBram Moolenaar   call system("bzip2 -d ".tarfile)
266a5792f58SBram Moolenaar   let tarfile = substitute(tarfile,'\.bz2','','e')
267a5792f58SBram Moolenaar   let compress= "bzip2 '".tarfile."'"
268a5792f58SBram Moolenaar  endif
269a5792f58SBram Moolenaar
270a5792f58SBram Moolenaar  if v:shell_error != 0
271a5792f58SBram Moolenaar   echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
272a5792f58SBram Moolenaar   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
273a5792f58SBram Moolenaar  else
274a5792f58SBram Moolenaar
275a5792f58SBram Moolenaar"   call Decho("tarfile<".tarfile."> fname<".fname.">")
276a5792f58SBram Moolenaar
2771cbe5f73SBram Moolenaar   if fname =~ '/'
278a5792f58SBram Moolenaar    let dirpath = substitute(fname,'/[^/]\+$','','e')
2791cbe5f73SBram Moolenaar    if executable("cygpath")
2801cbe5f73SBram Moolenaar     let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
2811cbe5f73SBram Moolenaar    endif
2821cbe5f73SBram Moolenaar    call mkdir(dirpath,"p")
2831cbe5f73SBram Moolenaar   endif
284a5792f58SBram Moolenaar   if tarfile !~ '/'
285a5792f58SBram Moolenaar    let tarfile= curdir.'/'.tarfile
286a5792f58SBram Moolenaar   endif
287a5792f58SBram Moolenaar"   call Decho("tarfile<".tarfile."> fname<".fname.">")
288a5792f58SBram Moolenaar
289a5792f58SBram Moolenaar   exe "w! ".fname
290ab194816SBram Moolenaar   if executable("cygpath")
291ab194816SBram Moolenaar    let tarfile = substitute(system("cygpath ".tarfile),'\n','','e')
292ab194816SBram Moolenaar   endif
293ab194816SBram Moolenaar
294a5792f58SBram Moolenaar   " delete old file from tarfile
295a5792f58SBram Moolenaar"   call Decho("tar --delete -f '".tarfile."' '".fname."'")
296a5792f58SBram Moolenaar   call system("tar --delete -f '".tarfile."' '".fname."'")
297ab194816SBram Moolenaar   if v:shell_error != 0
298a5792f58SBram Moolenaar    echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
299a5792f58SBram Moolenaar    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
300ab194816SBram Moolenaar   else
301a5792f58SBram Moolenaar
302a5792f58SBram Moolenaar    " update tarfile with new file
303a5792f58SBram Moolenaar"    call Decho("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
304a5792f58SBram Moolenaar    call system("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
305a5792f58SBram Moolenaar    if v:shell_error != 0
306a5792f58SBram Moolenaar     echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
307a5792f58SBram Moolenaar     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
308a5792f58SBram Moolenaar    elseif exists("compress")
309a5792f58SBram Moolenaar"     call Decho("call system(".compress.")")
310a5792f58SBram Moolenaar     call system(compress)
311a5792f58SBram Moolenaar     if exists("tgz")
312a5792f58SBram Moolenaar"      call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")")
313a5792f58SBram Moolenaar      call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e'))
314a5792f58SBram Moolenaar     endif
315a5792f58SBram Moolenaar    endif
316a5792f58SBram Moolenaar   endif
317a5792f58SBram Moolenaar
318a5792f58SBram Moolenaar   " support writing tarfiles across a network
319a5792f58SBram Moolenaar   if s:tblfile_{winnr()} =~ '^\a\+://'
320a5792f58SBram Moolenaar"    call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
321a5792f58SBram Moolenaar    let tblfile= s:tblfile_{winnr()}
322a5792f58SBram Moolenaar    1split|enew
323a5792f58SBram Moolenaar    let binkeep= &binary
324a5792f58SBram Moolenaar    let eikeep = &ei
325a5792f58SBram Moolenaar    set binary ei=all
326a5792f58SBram Moolenaar    exe "e! ".tarfile
327a5792f58SBram Moolenaar    call netrw#NetWrite(tblfile)
328a5792f58SBram Moolenaar    let &ei     = eikeep
329a5792f58SBram Moolenaar    let &binary = binkeep
330a5792f58SBram Moolenaar    q!
331a5792f58SBram Moolenaar    unlet s:tblfile_{winnr()}
332a5792f58SBram Moolenaar   endif
333ab194816SBram Moolenaar  endif
334ab194816SBram Moolenaar
335ab194816SBram Moolenaar  " cleanup and restore current directory
336ab194816SBram Moolenaar  cd ..
337a5792f58SBram Moolenaar  call s:Rmdir("_ZIPVIM_")
338ab194816SBram Moolenaar  exe "cd ".escape(curdir,' \')
339ab194816SBram Moolenaar  setlocal nomod
340ab194816SBram Moolenaar
341bba577a2SBram Moolenaar  let &report= repkeep
342ab194816SBram Moolenaar"  call Dret("tar#Write")
343ab194816SBram Moolenaarendfun
344ab194816SBram Moolenaar
345ab194816SBram Moolenaar" ---------------------------------------------------------------------
346a5792f58SBram Moolenaar" Rmdir: {{{2
347ab194816SBram Moolenaarfun! s:Rmdir(fname)
348ab194816SBram Moolenaar"  call Dfunc("Rmdir(fname<".a:fname.">)")
349ab194816SBram Moolenaar  if has("unix")
350ab194816SBram Moolenaar   call system("/bin/rm -rf ".a:fname)
351ab194816SBram Moolenaar  elseif has("win32") || has("win95") || has("win64") || has("win16")
352ab194816SBram Moolenaar   if &shell =~? "sh$"
353ab194816SBram Moolenaar    call system("/bin/rm -rf ".a:fname)
354ab194816SBram Moolenaar   else
355ab194816SBram Moolenaar    call system("del /S ".a:fname)
356ab194816SBram Moolenaar   endif
357ab194816SBram Moolenaar  endif
358ab194816SBram Moolenaar"  call Dret("Rmdir")
359ab194816SBram Moolenaarendfun
360ab194816SBram Moolenaar
361a5792f58SBram Moolenaar" ------------------------------------------------------------------------
362a5792f58SBram Moolenaar" Modelines And Restoration: {{{1
363a5792f58SBram Moolenaarlet &cpo= s:keepcpo
364a5792f58SBram Moolenaarunlet s:keepcpo
365a5792f58SBram Moolenaar" vim:ts=8 fdm=marker
366