View Issue Details

IDProjectCategoryView StatusLast Update
0000591PluginsMultiArc (old)public2020-12-29 10:29
ReporterJohnDoe Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version1.71 
Summary0000591: Баг в разборе PCRE-регэкспов в строке 'FormatX'
DescriptionДля примера возьмём 7-zip-архивы. Строка Format0 по умолчанию такова:
Format0="yyyy tt dd hh mm ss aaaaa zzzzzzzzzzzz pppppppppppp nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"

Эквивалентная регэксп-строка будет такой:
Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) (?P<attr>\S+)\s+(?P<size>\d+)\s+(?P<packedSize>\d*) (?P<name>.+)$/"

К сожалению, не работает :(
Вероятная причина - "слишком большое" количество "именованых строк".
Т.е. если убрать какую-нибудь одну из скобок, то всё работает.
(само-собой при этом какая-то информация теряется)

Вот 2 примера рабочих но "урезаных" регекспов:

Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) (?P<attr>\S+)\s+(?P<size>\d+)\s+\d* (?P<name>.+)$/"

Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) \S+\s+(?P<size>\d+)\s+(?P<packedSize>\d*) (?P<name>.+)$/"

Additional InformationПрилагаю в качестве примера листинг архива 7z459_extra.7z
http://downloads.sourceforge.net/sevenzip/7z459_extra.7z?modtime=1218634788&big_mirror=0

7-Zip (A) 4.59 beta Copyright (c) 1999-2008 Igor Pavlov 2008-08-13

Listing archive: 7z459_extra.7z

Method = LZMA BCJ2
Solid = +
Blocks = 2
Physical Size = 283015
Headers Size = 608

   Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2006-03-03 14:05:34 ....A 207 15286 Installer\cr.bat
2005-12-05 16:35:40 ....A 139 Installer\config.txt
2001-08-29 23:19:26 ....A 26948 copying.txt
2008-08-09 17:02:03 ....A 2487 FAR\far7z.txt
2006-05-09 08:04:27 ....A 1805 history.txt
2008-05-19 11:27:29 ....A 1274 License.txt
2008-08-13 10:09:05 ....A 1275 readme.txt
2008-08-13 10:09:10 ....A 3508 Installer\readme.txt
2006-02-24 11:19:29 ....A 2987 FAR\far7z.reg
2006-02-24 11:20:21 ....A 2760 FAR\7zToFar.ini
2008-05-30 13:24:40 ....A 2364 FAR\7-ZipEng.hlf
2008-05-30 13:24:44 ....A 2191 FAR\7-ZipRus.hlf
2008-08-13 10:18:52 ....A 2255 FAR\7-ZipEng.lng
2008-07-29 16:27:04 ....A 2260 FAR\7-ZipRus.lng
2008-08-13 08:24:27 ....A 328704 267121 7zr.exe
2008-08-13 10:19:41 ....A 157184 FAR\7-ZipFar.dll
2008-08-13 08:24:28 ....A 260608 7za.dll
2008-08-13 08:24:29 ....A 164352 7zxa.dll
2008-08-13 08:24:30 ....A 132096 7zS.sfx
2008-08-13 08:24:25 ....A 97280 7zSD.sfx
------------------- ----- ------------ ------------ ------------------------
                               1192684 282407 20 files, 0 folders


И на всякий случай привожу всю [7z] секцию Custom.ini
(потому как та секция что в стандартном Custom.ini уже давно нерабочая, в связи с изменениями в 7-zip'е)
[7z]
TypeName=7z
ID=37 7A BC AF 27 1C
IDPos=
IDOnly=1
Extension=7z
List=7za l -- %%AQ
Start="^--"
End="^--"
;ok Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) (?P<attr>\S+)\s+(?P<size>\d+)\s+\d* (?P<name>.+)$/"
;ok Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) \S+\s+(?P<size>\d+)\s+(?P<packedSize>\d*) (?P<name>.+)$/"
;bug Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) (?P<attr>\S+)\s+(?P<size>\d+)\s+(?P<packedSize>\d*) (?P<name>.+)$/"
Format0="yyyy tt dd hh mm ss aaaaa zzzzzzzzzzzz pppppppppppp nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
Extract=7za x {-p%%P} -r0 -scsDOS -- %%A @%%LQMN
ExtractWithoutPath=7za e {-p%%P} -r0 -scsDOS -- %%A @%%LQMN
Test=7za t {-p%%P} -r0 -scsDOS -- %%A @%%LQMN
Delete=7za d {-p%%P} -r0 -scsDOS -- %%A @%%LQMN
Add=7za a {-p%%P} -r0 -t7z -scsDOS -ms=off {%%S} -- %%A @%%LQMN
AddRecurse=7za a {-p%%P} -r0 -t7z -scsDOS -ms=off {%%S} -- %%A @%%LQMN
AllFilesMask="*"
TagsNo tags attached.

Activities

2008-08-20 00:40

 

Multiarc PCRE-regexp parsing bug (4,650 bytes)   
�� ������� ����� 7-zip-����. ������ Format0 �� ������� ������:
Format0="yyyy tt dd hh mm ss aaaaa zzzzzzzzzzzz pppppppppppp  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"

������������ ������-������ ����� �����:
Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) (?P<attr>\S+)\s+(?P<size>\d+)\s+(?P<packedSize>\d*)  (?P<name>.+)$/"

� ��������, �� �������� :(
������� ������ - "������ �����" ��������� "�������� �����".
�.�. ���� ����� ����-����� ���� �� ������, �� �� ��������.
(����-����� ��� ���� ����-�� �������� ������)

��� 2 ������� ����� �� "������" ���������:

Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) (?P<attr>\S+)\s+(?P<size>\d+)\s+\d*  (?P<name>.+)$/"

Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) \S+\s+(?P<size>\d+)\s+(?P<packedSize>\d*)  (?P<name>.+)$/"


������� � ������� ������� ������� ����� 7z459_extra.7z
http://downloads.sourceforge.net/sevenzip/7z459_extra.7z?modtime=1218634788&big_mirror=0 [^]

7-Zip (A)  4.59 beta  Copyright (c) 1999-2008 Igor Pavlov  2008-08-13

Listing archive: 7z459_extra.7z

Method = LZMA BCJ2
Solid = +
Blocks = 2
Physical Size = 283015
Headers Size = 608

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2006-03-03 14:05:34 ....A          207        15286  Installer\cr.bat
2005-12-05 16:35:40 ....A          139               Installer\config.txt
2001-08-29 23:19:26 ....A        26948               copying.txt
2008-08-09 17:02:03 ....A         2487               FAR\far7z.txt
2006-05-09 08:04:27 ....A         1805               history.txt
2008-05-19 11:27:29 ....A         1274               License.txt
2008-08-13 10:09:05 ....A         1275               readme.txt
2008-08-13 10:09:10 ....A         3508               Installer\readme.txt
2006-02-24 11:19:29 ....A         2987               FAR\far7z.reg
2006-02-24 11:20:21 ....A         2760               FAR\7zToFar.ini
2008-05-30 13:24:40 ....A         2364               FAR\7-ZipEng.hlf
2008-05-30 13:24:44 ....A         2191               FAR\7-ZipRus.hlf
2008-08-13 10:18:52 ....A         2255               FAR\7-ZipEng.lng
2008-07-29 16:27:04 ....A         2260               FAR\7-ZipRus.lng
2008-08-13 08:24:27 ....A       328704       267121  7zr.exe
2008-08-13 10:19:41 ....A       157184               FAR\7-ZipFar.dll
2008-08-13 08:24:28 ....A       260608               7za.dll
2008-08-13 08:24:29 ....A       164352               7zxa.dll
2008-08-13 08:24:30 ....A       132096               7zS.sfx
2008-08-13 08:24:25 ....A        97280               7zSD.sfx
------------------- ----- ------------ ------------  ------------------------
                               1192684       282407  20 files, 0 folders


� �� ����� ����� ������� �� [7z] ���� Custom.ini
(������ ��� �� ���� ��� � ����������� Custom.ini ��� ����� �������, � ���� � ���������� � 7-zip'�)

[7z]
TypeName=7z
ID=37 7A BC AF 27 1C
IDPos=
IDOnly=1
Extension=7z
List=7za l -- %%AQ
Start="^--"
End="^--"
;ok Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) (?P<attr>\S+)\s+(?P<size>\d+)\s+\d*  (?P<name>.+)$/"
;ok Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) \S+\s+(?P<size>\d+)\s+(?P<packedSize>\d*)  (?P<name>.+)$/"
;bug Format0="/^(?P<mYear>\d+)-(?P<mMonth>\d+)-(?P<mDay>\d+) (?P<mHour>\d+):(?P<mMin>\d+):(?P<mSec>\d+) (?P<attr>\S+)\s+(?P<size>\d+)\s+(?P<packedSize>\d*)  (?P<name>.+)$/"
Format0="yyyy tt dd hh mm ss aaaaa zzzzzzzzzzzz pppppppppppp  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
Extract=7za x {-p%%P} -r0 -scsDOS -- %%A @%%LQMN
ExtractWithoutPath=7za e {-p%%P} -r0 -scsDOS -- %%A @%%LQMN
Test=7za t {-p%%P} -r0 -scsDOS -- %%A @%%LQMN
Delete=7za d {-p%%P} -r0 -scsDOS -- %%A @%%LQMN
Add=7za a {-p%%P} -r0 -t7z -scsDOS -ms=off {%%S} -- %%A @%%LQMN
AddRecurse=7za a {-p%%P} -r0 -t7z -scsDOS -ms=off {%%S} -- %%A @%%LQMN
AllFilesMask="*"

JohnDoe

2008-08-20 00:43

updater   bugnote:0001753

Мантис похерил все пробелы, поэтому я продублировал текст в приложенном файле

zollo

2020-12-24 20:32

reporter   bugnote:0016982

Исправление этого бага и обновление PCRE до 6.7.
libpcre-6.7.7z (81,192 bytes)

JohnDoe

2020-12-25 10:51

updater   bugnote:0016983

@zollo

Great!
May be better put this to https://github.com/FarGroup/FarManager/pulls?

JohnDoe

2020-12-29 10:29

updater   bugnote:0016984

Thank you!
Fixed in https://github.com/FarGroup/FarManager/pull/321

Issue History

Date Modified Username Field Change
2008-08-20 00:33 JohnDoe New Issue
2008-08-20 00:40 JohnDoe File Added: Multiarc PCRE-regexp parsing bug
2008-08-20 00:43 JohnDoe Note Added: 0001753
2013-05-20 20:38 alexy Category MultiArc => MultiArc (old)
2020-12-24 20:32 zollo Note Added: 0016982
2020-12-24 20:32 zollo File Added: libpcre-6.7.7z
2020-12-25 10:51 JohnDoe Note Added: 0016983
2020-12-29 10:29 JohnDoe Status new => resolved
2020-12-29 10:29 JohnDoe Note Added: 0016984
2020-12-29 10:29 JohnDoe Status resolved => closed
2020-12-29 10:29 JohnDoe Resolution open => fixed