Skip to content

Commit 77bc233

Browse files
author
Kazuki Suzuki Przyborowski
committed
Small update
1 parent 8072e81 commit 77bc233

2 files changed

Lines changed: 42 additions & 10 deletions

File tree

catfile.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,13 +215,13 @@ def handler(signum, frame):
215215
checkcompressfile = pycatfile.CheckCompressionSubType(
216216
input_file, fnamedict, True)
217217
if((IsNestedDict(fnamedict) and checkcompressfile in fnamedict) or (IsSingleDict(fnamedict) and checkcompressfile==fnamedict['format_magic'])):
218-
tmpout = pycatfile.CatFileListFiles(input_file, "auto", 0, 0, getargs.skipchecksum, fnamedict, False, getargs.verbose, False)
218+
tmpout = pycatfile.CatFileListFiles(input_file, "auto", 0, 0, getargs.skipchecksum, fnamedict, False, getargs.verbose, False, False)
219219
else:
220-
tmpout = pycatfile.InFileListFiles(input_file, getargs.verbose, fnamedict, False, False)
220+
tmpout = pycatfile.InFileListFiles(input_file, getargs.verbose, fnamedict, False, False, False)
221221
if(not tmpout):
222222
sys.exit(1)
223223
else:
224-
pycatfile.CatFileListFiles(input_file, "auto", 0, 0, getargs.skipchecksum, fnamedict, False, getargs.verbose, False)
224+
pycatfile.CatFileListFiles(input_file, "auto", 0, 0, getargs.skipchecksum, fnamedict, False, getargs.verbose, False, False)
225225
elif active_action == 'validate':
226226
if getargs.convert:
227227
checkcompressfile = pycatfile.CheckCompressionSubType(

pycatfile.py

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,20 @@
7676
except NameError:
7777
basestring = str
7878

79+
try:
80+
unicode # Py2
81+
except NameError: # Py3
82+
unicode = str
83+
84+
def to_text(s, encoding="utf-8", errors="ignore"):
85+
if s is None:
86+
return u""
87+
if isinstance(s, unicode):
88+
return s
89+
if isinstance(s, (bytes, bytearray)):
90+
return s.decode(encoding, errors)
91+
return unicode(s)
92+
7993
baseint = []
8094
try:
8195
baseint.append(long)
@@ -8594,16 +8608,30 @@ def UnPackCatFileString(instr, outdir=None, followlink=False, seekstart=0, seeke
85948608
listarchivefiles = UnPackCatFile(fp, outdir, followlink, seekstart, seekend, skipchecksum, formatspecs, seektoend, verbose, returnfp)
85958609
return listarchivefiles
85968610

8611+
def ftype_to_str(ftype):
8612+
mapping = {
8613+
0: "file",
8614+
1: "link",
8615+
2: "symlink",
8616+
3: "char device",
8617+
4: "block device",
8618+
5: "directory",
8619+
6: "fifo",
8620+
12: "sparse",
8621+
14: "device",
8622+
}
8623+
# Default to "file" if unknown
8624+
return mapping.get(ftype, "file")
85978625

8598-
def CatFileListFiles(infile, fmttype="auto", seekstart=0, seekend=0, skipchecksum=False, formatspecs=__file_format_multi_dict__, seektoend=False, verbose=False, returnfp=False):
8626+
def CatFileListFiles(infile, fmttype="auto", seekstart=0, seekend=0, skipchecksum=False, formatspecs=__file_format_multi_dict__, seektoend=False, verbose=False, newstyle=False, returnfp=False):
85998627
if(verbose):
86008628
logging.basicConfig(format="%(message)s", stream=sys.stdout, level=logging.DEBUG)
86018629
if(isinstance(infile, dict)):
86028630
listarchivefiles = infile
86038631
else:
86048632
if(infile != "-" and not hasattr(infile, "read") and not hasattr(infile, "write") and not (sys.version_info[0] >= 3 and isinstance(infile, bytes))):
86058633
infile = RemoveWindowsPath(infile)
8606-
listarchivefiles = CatFileToArray(infile, fmttype, seekstart, seekend, True, False, False, skipchecksum, formatspecs, seektoend, returnfp)
8634+
listarchivefiles = ArchiveFileToArray(infile, fmttype, seekstart, seekend, True, False, False, skipchecksum, formatspecs, seektoend, returnfp)
86078635
if(not listarchivefiles):
86088636
return False
86098637
lenlist = len(listarchivefiles['ffilelist'])
@@ -8635,7 +8663,11 @@ def CatFileListFiles(infile, fmttype="auto", seekstart=0, seekend=0, skipchecksu
86358663
fgprint = listarchivefiles['ffilelist'][lcfi]['fgname']
86368664
if(len(fgprint) <= 0):
86378665
fgprint = listarchivefiles['ffilelist'][lcfi]['fgid']
8638-
VerbosePrintOut(PrintPermissionString(listarchivefiles['ffilelist'][lcfi]['fmode'], listarchivefiles['ffilelist'][lcfi]['ftype']) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
8666+
if(newstyle):
8667+
VerbosePrintOut(ftype_to_str(listarchivefiles['ffilelist'][lcfi]['ftype']) + "\t" + listarchivefiles['ffilelist'][lcfi]['fcompression'] + "\t" + str(
8668+
listarchivefiles['ffilelist'][lcfi]['fsize']).rjust(15) + "\t" + printfname)
8669+
else:
8670+
VerbosePrintOut(PrintPermissionString(listarchivefiles['ffilelist'][lcfi]['fmode'], listarchivefiles['ffilelist'][lcfi]['ftype']) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
86398671
listarchivefiles['ffilelist'][lcfi]['fsize']).rjust(15) + " " + datetime.datetime.utcfromtimestamp(listarchivefiles['ffilelist'][lcfi]['fmtime']).strftime('%Y-%m-%d %H:%M') + " " + printfname)
86408672
lcfi = lcfi + 1
86418673
if(returnfp):
@@ -8644,10 +8676,10 @@ def CatFileListFiles(infile, fmttype="auto", seekstart=0, seekend=0, skipchecksu
86448676
return True
86458677

86468678

8647-
def CatFileStringListFiles(instr, seekstart=0, seekend=0, skipchecksum=False, formatspecs=__file_format_multi_dict__, seektoend=False, verbose=False, returnfp=False):
8679+
def CatFileStringListFiles(instr, seekstart=0, seekend=0, skipchecksum=False, formatspecs=__file_format_multi_dict__, seektoend=False, verbose=False, newstyle=False, returnfp=False):
86488680
fp = BytesIO(instr)
86498681
listarchivefiles = CatFileListFiles(
8650-
instr, seekstart, seekend, skipchecksum, formatspecs, seektoend, verbose, returnfp)
8682+
instr, seekstart, seekend, skipchecksum, formatspecs, seektoend, verbose, newstyle, returnfp)
86518683
return listarchivefiles
86528684

86538685

@@ -9154,7 +9186,7 @@ def SevenZipFileListFiles(infile, verbose=False, returnfp=False):
91549186
return True
91559187

91569188

9157-
def InFileListFiles(infile, verbose=False, formatspecs=__file_format_multi_dict__, seektoend=False, returnfp=False):
9189+
def InFileListFiles(infile, verbose=False, formatspecs=__file_format_multi_dict__, seektoend=False, newstyle=False, returnfp=False):
91589190
if(verbose):
91599191
logging.basicConfig(format="%(message)s", stream=sys.stdout, level=logging.DEBUG)
91609192
checkcompressfile = CheckCompressionSubType(infile, formatspecs, True)
@@ -9169,7 +9201,7 @@ def InFileListFiles(infile, verbose=False, formatspecs=__file_format_multi_dict_
91699201
elif(py7zr_support and checkcompressfile == "7zipfile" and py7zr.is_7zfile(infile)):
91709202
return SevenZipFileListFiles(infile, verbose, returnfp)
91719203
elif(checkcompressfile == formatspecs['format_magic']):
9172-
return CatFileListFiles(infile, 0, 0, False, formatspecs, seektoend, verbose, returnfp)
9204+
return CatFileListFiles(infile, 0, 0, False, formatspecs, seektoend, verbose, newstyle, returnfp)
91739205
else:
91749206
return False
91759207
return False

0 commit comments

Comments
 (0)