RU.HUSKY----------------- < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 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



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх