Nп/п : 2 из 4
От : Konstantin Kuzov 2:5019/40 01 авг 25 11:31:04
К : Gosha Sakovich 01 авг 25 11:55:01
Тема : New day number and diff file name do not match.
----------------------------------------------------------------------------------
@MSGID: 2:5019/40 688c801b
@REPLY: 2:5023/24.4172 6885cf70
@PID: GED+LNX 1.1.5-b20231008
@CHRS: CP866 2
@TID: hpt-nsf/linux c3cb3595a5 2025-07-30
Hello Gosha!
27 Июля 2025, Gosha Sakovich wrote to All:
GS> Запускаю обновление нодлиста и z2pnt по диффам. Nodelist успешно
GS> обновляется, а при обновления z2pnt две недели подряд выдаёт одну и
GS> ту-же ошибку:
/_...Няяяяямс..._/
GS> New day number and diff file name do not match. Processing aborted.
GS> Базовый z2pnt беру из соответвующей файлэхи.
GS> Что я делаю не так?
У nldiff достаточно примитивный парсинг первой строчки. Он ожидает
что день будет первым числом после символа `-` и это так в общепринятом
формате, пример:
;A FidoNet Nodelist for Friday, August 1, 2025 -- Day number 213 : 20832
Тогда как в Z2PNT используется дата в нестандартном формате
использующая символ `-` в себе, соответственно nldiff думает что год - это номер
дня:
;A Zone 2 Fidonet pointlist for Friday 18-Jul-2025 -- Day number 199 : 01196
Самое простое применить более строгие условия: после `--` для дня и
на всякий случая после ` :` для чексуммы:
/*=========*/ _copy->paste start_ /*=========*/
diff --git a/src/nltools/nldiff.c b/src/nltools/nldiff.c
index 8ab27cabac..7e14c315a2 100644
--- a/src/nltools/nldiff.c
+++ b/src/nltools/nldiff.c
@@ -36,7 +36,7 @@ enum
int analyze_first_line( FILE * f, unsigned short *crcnum, int
*has_crc, unsigned short *daynum )
{
- char c = 0;
+ char c = 0, pc = 0;
int state = SCANDASH;
unsigned short crc, day, hcrc, result = 1;
crc = day = hcrc = 0;
@@ -84,7 +84,7 @@ int analyze_first_line( FILE * f, unsigned short
*crcnum, int *has_crc, unsigned
default:;
}
}
- else if( c == `-` )
+ else if( pc == `-` && c == `-` )
{
switch ( state )
{
@@ -94,7 +94,7 @@ int analyze_first_line( FILE * f, unsigned short
*crcnum, int *has_crc, unsigned
default:;
}
}
- else if( c == `:` )
+ else if( pc == ` ` && c == `:` )
{
switch ( state )
{
@@ -117,6 +117,8 @@ int analyze_first_line( FILE * f, unsigned short
*crcnum, int *has_crc, unsigned
default:;
}
}
+
+ pc = c;
}
*crcnum = crc;
/*==========*/ _copy->paste end_ /*==========*/
Другой вопрос зачем использовать диффы вовсе в 2025? Размеры полных
пойнтлистов/нодлистов по теперешним меркам совсем ничтожны и не стоят того чтобы все
стало колом крогда очередной дифф потеряется по пути по какой-нибудь
причине...
Best of luck, Konstantin.
... GoldED+/LNX 1.1.5 (Linux 6.12.40-1-lts CPU UNKNOWN)
--- #[EMail: Master.NoSFeRaTU[@]Gmail.com] [Team Nyaa]#
* Origin: GaNJaNET STaTi0N (2:5019/40)
SEEN-BY: 46/49 452/28 455/19 4500/1 5001/100
5019/29 40 41 400 5020/101 545
SEEN-BY: 5020/715 848 1042 2992 4441 12000 5022/77
128 5029/32 5030/1081
SEEN-BY: 5060/900 6078/80
@PATH: 5019/40 5020/4441