From 11f275abfca06512a44bc86f53d2f1de2cd0d708 Mon Sep 17 00:00:00 2001 From: Evgeniy Kozlov Date: Mon, 4 Aug 2014 00:03:57 +0400 Subject: [PATCH 1/3] Added support for XZ decompress --- autoload/deb.vim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/autoload/deb.vim b/autoload/deb.vim index 9e6fd1e..0e8f074 100644 --- a/autoload/deb.vim +++ b/autoload/deb.vim @@ -37,6 +37,8 @@ fun! deb#read(debfile, member) return endif let l:unpcmp = "lzma -d | tar xfO " + elseif l:archmember == "data.tar.xz" + let l:unpcmp = "tar JxfO " elseif l:archmember == "data.tar" let l:unpcmp = "tar xfO " endif @@ -228,9 +230,9 @@ fun! s:DebBrowseSelect() endfun " return data file name for debian package. This can be either data.tar.gz, -" data.tar.bz2 or data.tar.lzma +" data.tar.bz2, data.tar.lzma or data.tar.xz (plus unpacked data.tar) fun s:dataFileName(deb) - for fn in ["data.tar.gz", "data.tar.bz2", "data.tar.lzma", "data.tar"] + for fn in ["data.tar.gz", "data.tar.bz2", "data.tar.lzma", "data.tar.xz", "data.tar"] " [0:-2] is to remove trailing null character from command output if (system("ar t " . "'" . a:deb . "'" . " " . fn))[0:-2] == fn return fn From 4808ed3e9b71ed9228e3f2c6c161a57a5870d948 Mon Sep 17 00:00:00 2001 From: Arnaud Pecoraro Date: Thu, 23 Nov 2017 10:55:47 +0100 Subject: [PATCH 2/3] Added support for ipk packages --- plugin/debPlugin.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/plugin/debPlugin.vim b/plugin/debPlugin.vim index 4ae2f13..f6c5f31 100644 --- a/plugin/debPlugin.vim +++ b/plugin/debPlugin.vim @@ -16,3 +16,4 @@ endif let g:loaded_debPlugin = 1 autocmd BufReadCmd *.deb call deb#browse(expand("")) +autocmd BufReadCmd *.ipk call deb#browse(expand("")) From 79e5ce25e34ba1130789ca1c91d07b6266cc52cf Mon Sep 17 00:00:00 2001 From: Konstantinos Natsakis Date: Sun, 17 Jun 2018 23:59:55 +0300 Subject: [PATCH 3/3] Support deb files with control.tar.xz --- autoload/deb.vim | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/autoload/deb.vim b/autoload/deb.vim index 0e8f074..9891f5d 100644 --- a/autoload/deb.vim +++ b/autoload/deb.vim @@ -1,7 +1,7 @@ " Vim autoload file for browsing debian package. " copyright (C) 2007-2008, arno renevier " Distributed under the GNU General Public License (version 2 or above) -" Last Change: 2008 april 1 +" Last Change: 2018 June 17 " " Inspired by autoload/tar.vim by Charles E Campbell " @@ -44,9 +44,16 @@ fun! deb#read(debfile, member) endif if a:member =~ '^\* ' " information control file - let l:archmember = "control.tar.gz" + let l:archmember = s:controlFileName(a:debfile) + if l:archmember == "" + echohl WarningMsg | echo "***error*** (deb#read) no valid control file found in debian archive" + return + elseif l:archmember == "control.tar.gz" + let l:unpcmp = "tar zxfO " + elseif l:archmember == "control.tar.xz" + let l:unpcmp = "tar JxfO " + endif let l:target = substitute(l:target, "^\* ", "", "") - let l:unpcmp = "tar zxfO " elseif a:member =~ ' -> ' " symbolic link let l:target = split(a:member,' -> ')[0] let l:linkname = split(a:member,' -> ')[1] @@ -153,7 +160,16 @@ fun! deb#browse(file) " display information control files let l:infopos = line(".") - exe "silent read! ar p " . s:QuoteFile(a:file) . " control.tar.gz | tar zt" + + let l:archmember = s:controlFileName(a:file) + if l:archmember == "" + echohl WarningMsg | echo "***error*** (deb#browse) no valid control file found in debian archive" + return + elseif l:archmember == "control.tar.gz" + exe "silent read! ar p " . s:QuoteFile(a:file) . " control.tar.gz | tar zt" + elseif l:archmember == "control.tar.xz" + exe "silent read! ar p " . s:QuoteFile(a:file) . " control.tar.xz | tar Jt" + endif $put='' @@ -241,6 +257,18 @@ fun s:dataFileName(deb) return "" " no debian data format in this archive endfun +" return control file name for debian package. This can be either +" control.tar.gz or control.tar.xz +fun s:controlFileName(deb) + for fn in ["control.tar.gz", "control.tar.xz"] + " [0:-2] is to remove trailing null character from command output + if (system("ar t " . "'" . a:deb . "'" . " " . fn))[0:-2] == fn + return fn + endif + endfor + return "" " no debian control file in this archive +endfun + fun s:QuoteFile(file) " we need to escape %, #, <, and > " see :help cmdline-specialk