1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-07-15 01:24:29 +02:00

add OSX support for stat

This commit is contained in:
Kelly Brazil
2020-05-22 16:05:04 -07:00
parent 8dd9a9f9cb
commit ede21bca13

View File

@ -6,7 +6,7 @@ Usage:
Compatibility:
'linux'
'linux', 'darwin'
Examples:
@ -100,17 +100,18 @@ Examples:
..
]
"""
import shlex
import jc.utils
class info():
version = '1.1'
version = '1.2'
description = 'stat command parser'
author = 'Kelly Brazil'
author_email = 'kellyjonbrazil@gmail.com'
# compatible options: linux, darwin, cygwin, win32, aix, freebsd
compatible = ['linux']
compatible = ['linux', 'darwin']
magic_commands = ['stat']
@ -149,12 +150,16 @@ def process(proc_data):
"access_time": string, # - = null
"modify_time": string, # - = null
"change_time": string, # - = null
"birth_time": string # - = null
"birth_time": string, # - = null
"device": integer,
"rdev": integer,
"block_size": integer,
"osx_flags": integer
}
]
"""
for entry in proc_data:
int_list = ['size', 'blocks', 'io_blocks', 'inode', 'links', 'uid', 'gid']
int_list = ['size', 'blocks', 'io_blocks', 'inode', 'links', 'uid', 'gid', 'device', 'rdev', 'block_size', 'osx_flags']
for key in int_list:
if key in entry:
try:
@ -198,6 +203,9 @@ def parse(data, raw=False, quiet=False):
cleandata = list(filter(None, cleandata))
if cleandata:
# linux output
if cleandata[0].startswith(' File: '):
# stats output contains 8 lines
for line in cleandata:
@ -274,6 +282,30 @@ def parse(data, raw=False, quiet=False):
raw_output.append(output_line)
continue
# OSX output
else:
for line in cleandata:
value = shlex.split(line)
output_line = {
'device': value[0],
'inode': value[1],
'flags': value[2],
'links': value[3],
'user': value[4],
'group': value[5],
'rdev': value[6],
'size': value[7],
'access_time': value[8],
'modify_time': value[9],
'change_time': value[10],
'birth_time': value[11],
'block_size': value[12],
'blocks': value[13],
'osx_flags': value[14]
}
raw_output.append(output_line)
if raw:
return raw_output
else: