Skip to content

Commit 40a750c

Browse files
author
Kazuki Suzuki Przyborowski
committed
Small update
1 parent 179a1a8 commit 40a750c

File tree

3 files changed

+62
-26
lines changed

3 files changed

+62
-26
lines changed

catfile.ini

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
[config]
2+
usealt = false
3+
14
[main]
25
len = 7
36
hex = 43617446696c65
@@ -11,3 +14,17 @@ extension = .cat
1114
newstyle = true
1215
advancedlist = true
1316
altinode = true
17+
18+
[alt]
19+
len = 18
20+
hex = e381ade38193e38395e382a1e382a4e383ab
21+
ver = 001
22+
name = NekoFile
23+
proname = PyNekoFile
24+
lower = nekofile
25+
magic = \u306d\u3053\u30d5\u30a1\u30a4\u30eb
26+
delimiter = \x00
27+
extension = .neko
28+
newstyle = true
29+
advancedlist = true
30+
altinode = true

catfile.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,14 @@ def handler(signum, frame):
146146

147147
fname = getargs.format
148148
fnamelower = fname.lower()
149-
fnamemagic = fname
150-
fnamelen = len(fname)
151-
fnamehex = binascii.hexlify(fname.encode("UTF-8")).decode("UTF-8")
149+
if(getargs.format==__file_format_list__[0]):
150+
fnamemagic = __file_format_magic__
151+
fnamelen = __file_format_len__
152+
fnamehex = __file_format_hex__
153+
else:
154+
fnamemagic = fname
155+
fnamelen = len(fname)
156+
fnamehex = binascii.hexlify(fname.encode("UTF-8")).decode("UTF-8")
152157
fnamesty = __use_new_style__
153158
fnamelst = __use_advanced_list__
154159
fnameino = __use_alt_inode__

pycatfile.py

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -285,23 +285,38 @@ def get_default_threads():
285285
if os.path.exists(__config_file__) and __use_ini_file__:
286286
config = configparser.ConfigParser()
287287
config.read(__config_file__)
288+
__use_alt_format__ = config.getboolean('config', 'usealt')
288289
def decode_unicode_escape(value):
289290
if sys.version_info[0] < 3: # Python 2
290291
return value.decode('unicode_escape')
291292
else: # Python 3
292293
return bytes(value, 'UTF-8').decode('unicode_escape')
293-
__file_format_name__ = config.get('main', 'name')
294-
__program_name__ = config.get('main', 'proname')
295-
__file_format_lower__ = config.get('main', 'lower')
296-
__file_format_magic__ = decode_unicode_escape(config.get('main', 'magic'))
297-
__file_format_len__ = config.getint('main', 'len')
298-
__file_format_hex__ = config.get('main', 'hex')
299-
__file_format_delimiter__ = decode_unicode_escape(config.get('main', 'delimiter'))
300-
__file_format_ver__ = config.get('main', 'ver')
301-
__use_new_style__ = config.getboolean('main', 'newstyle')
302-
__use_advanced_list__ = config.getboolean('main', 'advancedlist')
303-
__use_alt_inode__ = config.getboolean('main', 'altinode')
304-
__file_format_extension__ = config.get('main', 'extension')
294+
if not __use_alt_format__:
295+
__file_format_name__ = config.get('main', 'name')
296+
__program_name__ = config.get('main', 'proname')
297+
__file_format_lower__ = config.get('main', 'lower')
298+
__file_format_magic__ = decode_unicode_escape(config.get('main', 'magic'))
299+
__file_format_len__ = config.getint('main', 'len')
300+
__file_format_hex__ = config.get('main', 'hex')
301+
__file_format_delimiter__ = decode_unicode_escape(config.get('main', 'delimiter'))
302+
__file_format_ver__ = config.get('main', 'ver')
303+
__use_new_style__ = config.getboolean('main', 'newstyle')
304+
__use_advanced_list__ = config.getboolean('main', 'advancedlist')
305+
__use_alt_inode__ = config.getboolean('main', 'altinode')
306+
__file_format_extension__ = config.get('main', 'extension')
307+
else:
308+
__file_format_name__ = config.get('alt', 'name')
309+
__program_name__ = config.get('alt', 'proname')
310+
__file_format_lower__ = config.get('alt', 'lower')
311+
__file_format_magic__ = decode_unicode_escape(config.get('alt', 'magic'))
312+
__file_format_len__ = config.getint('alt', 'len')
313+
__file_format_hex__ = config.get('alt', 'hex')
314+
__file_format_delimiter__ = decode_unicode_escape(config.get('alt', 'delimiter'))
315+
__file_format_ver__ = config.get('alt', 'ver')
316+
__use_new_style__ = config.getboolean('alt', 'newstyle')
317+
__use_advanced_list__ = config.getboolean('alt', 'advancedlist')
318+
__use_alt_inode__ = config.getboolean('alt', 'altinode')
319+
__file_format_extension__ = config.get('alt', 'extension')
305320
else:
306321
if not __use_alt_format__:
307322
# Format Info by Kazuki Przyborowski
@@ -310,8 +325,7 @@ def decode_unicode_escape(value):
310325
__file_format_lower__ = __file_format_name__.lower()
311326
__file_format_magic__ = __file_format_name__
312327
__file_format_len__ = len(__file_format_magic__.encode('utf-8'))
313-
__file_format_hex__ = binascii.hexlify(
314-
__file_format_magic__.encode("UTF-8")).decode("UTF-8")
328+
__file_format_hex__ = binascii.hexlify(__file_format_magic__.encode("UTF-8")).decode("UTF-8")
315329
__file_format_delimiter__ = "\x00"
316330
__file_format_ver__ = "001"
317331
__use_new_style__ = True
@@ -325,8 +339,7 @@ def decode_unicode_escape(value):
325339
__file_format_magic__ = "ねこファイル"
326340
#__file_format_magic__ = "네코파일"
327341
__file_format_len__ = len(__file_format_magic__.encode('utf-8'))
328-
__file_format_hex__ = binascii.hexlify(
329-
__file_format_magic__.encode("UTF-8")).decode("UTF-8")
342+
__file_format_hex__ = binascii.hexlify(__file_format_magic__.encode("UTF-8")).decode("UTF-8")
330343
__file_format_delimiter__ = "\x00"
331344
__file_format_ver__ = "001"
332345
__use_new_style__ = True
@@ -2267,14 +2280,15 @@ def ReadFileHeaderDataBySize(fp, delimiter=__file_format_dict__['format_delimite
22672280
headersize = int(preheaderdata[0], 16)
22682281
if(headersize <= 0):
22692282
return []
2270-
headercontent = str(fp.read(headersize).decode('UTF-8')).split(delimiter)
2283+
subfp = BytesIO()
2284+
subfp.write(fp.read(headersize))
22712285
fp.seek(len(delimiter), 1)
2272-
rocount = 0
2273-
roend = int(len(headercontent))
2274-
HeaderOut = preheaderdata
2275-
while(rocount < roend):
2276-
HeaderOut.append(headercontent[rocount])
2277-
rocount = rocount + 1
2286+
subfp.seek(0, 0)
2287+
prealtheaderdata = ReadFileHeaderData(subfp, 1, delimiter)
2288+
headernumfields = int(prealtheaderdata[0], 16)
2289+
headerdata = ReadTillNullByteByNum(subfp, delimiter, headernumfields)
2290+
HeaderOut = preheaderdata + prealtheaderdata + headerdata
2291+
subfp.close()
22782292
return HeaderOut
22792293

22802294

0 commit comments

Comments
 (0)