diff --git a/jc/parsers/rsync.py b/jc/parsers/rsync.py
index 10327563..c1621e85 100644
--- a/jc/parsers/rsync.py
+++ b/jc/parsers/rsync.py
@@ -246,58 +246,75 @@ def parse(
checksum_or_value_different = {
'c': True,
'.': False,
- '+': None
+ '+': None,
+ ' ': None,
+ '?': None
}
size_different = {
's': True,
'.': False,
- '+': None
+ '+': None,
+ ' ': None,
+ '?': None
}
modification_time_different = {
't': True,
'.': False,
- '+': None
+ '+': None,
+ ' ': None,
+ '?': None
}
permissions_different = {
'p': True,
'.': False,
- '+': None
+ '+': None,
+ ' ': None,
+ '?': None
}
owner_different = {
'o': True,
'.': False,
- '+': None
+ '+': None,
+ ' ': None,
+ '?': None
}
group_different = {
'g': True,
'.': False,
- '+': None
+ '+': None,
+ ' ': None,
+ '?': None
}
acl_different = {
'a': True,
'.': False,
- '+': None
+ '+': None,
+ ' ': None,
+ '?': None
}
extended_attribute_different = {
'x': True,
'.': False,
- '+': None
+ '+': None,
+ ' ': None,
+ '?': None
}
if jc.utils.has_data(data):
- file_line_re = re.compile(r'(?P[<>ch.*][fdlDS][c.+][s.+][t.+][p.+][o.+][g.+][u.+][a.+][x.+]) (?P.+)')
+ file_line_re = re.compile(r'(?P[<>ch.*][fdlDS][c.+ ?][s.+ ?][t.+ ?][p.+ ?][o.+ ?][g.+ ?][u.+ ?][a.+ ?][x.+ ?]) (?P.+)')
stat1_line_re = re.compile(r'(sent)\s+(?P[0-9,]+)\s+(bytes)\s+(received)\s+(?P[0-9,]+)\s+(bytes)\s+(?P[0-9,.]+)\s+(bytes/sec)')
stat2_line_re = re.compile(r'(total size is)\s+(?P[0-9,]+)\s+(speedup is)\s+(?P[0-9,.]+)')
- file_line_log_re = re.compile(r'(?P\d\d\d\d/\d\d/\d\d)\s+(?P