~ubuntu-branches/ubuntu/precise/cuneiform/precise

« back to all changes in this revision

Viewing changes to cuneiform_src/Kern/std/src/stdprt.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jakub Wilk, c-assert.diff, slovenian-slv.diff
  • Date: 2011-01-26 21:53:07 UTC
  • mfrom: (5.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20110126215307-62x61mcesr607qb7
Tags: 1.0.0+dfsg-2
* Upload to unstable.
* Explicitly build-depend on pkg-config. Thanks to Stefano Rivera for the
  bug report.
* Add Vcs-* fields.
* Use the standard C assert() macro, rather than custom Cuneiform one.
  [c-assert.diff]
* Pass CFLAGS, CXXFLAGS and LDFLAGS (get from dpkg-buildflags) to cmake
  (closes: #608345). Thanks to Sami Liedes for the bug report.
  + Build depend on dpkg-dev (>= 1.15.7).
* Pass --parallel to dh.
  + Bump debhelper minimum version to 7.4.10.
* Update debian/copyright to the latest DEP-5 version.
* Bump year in debian/copyright.
* Explicitly link to GraphicsMagick (rather than via the ImageMagick
  compatibility layer).
* Don't ship /usr/lib/cuneiform/*.so symlinks. These libraries are
  considered private, at least until #598616 is fixed.
* Rename some private variables in debian/rules to make them lowercase.
* Update patch headers.
* Provide proper ‘build-arch’ and ‘build-indep’ targets in debian/rules.
* Document input format in the manual page (closes: #572061). Thanks to
  Janusz S. Bień for the bug report.
* Use ‘slv’ (rather than ‘slo’) as language code for Slovenian.
  [slovenian-slv.diff]
* Fix package description: Slovenian is supported, Slovak is not.
* Improve documentation of the language (-l) option (closes: #602512).
  Thanks to Jari Aalto for the bug report.
* Install reasons file for vrms.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
Copyright (c) 1993-2008, Cognitive Technologies
3
3
All rights reserved.
4
4
 
5
 
����������� ��������� ��������������� � ������������� ��� � ���� ��������� ����,
6
 
��� � � �������� �����, � ����������� ��� ���, ��� ���������� ��������� �������:
7
 
 
8
 
      * ��� ��������� ��������������� ��������� ���� ������ ���������� ���������
9
 
        ���� ����������� �� ��������� �����, ���� ������ ������� � �����������
10
 
        ����� �� ��������.
11
 
      * ��� ��������� ��������������� ��������� ���� � ������������ �/��� �
12
 
        ������ ����������, ������������ ��� ���������������, ������ �����������
13
 
        ��������� ���� ���������� �� ��������� �����, ���� ������ ������� �
14
 
        ����������� ����� �� ��������.
15
 
      * �� �������� Cognitive Technologies, �� ����� �� ����������� �� �����
16
 
        ���� ������������ � �������� �������� ��������� �/��� �����������
17
 
        ���������, ���������� �� ���� ��, ��� ���������������� �����������
18
 
        ����������.
19
 
 
20
 
��� ��������� ������������� ����������� ��������� ���� �/��� ������� ������ "���
21
 
��� ����" ��� ������-���� ���� ��������, ���������� ���� ��� ���������������,
22
 
������� �������� ������������ �������� � ����������� ��� ���������� ����, �� ��
23
 
������������� ���. �� �������� ��������� ���� � �� ���� ������ ����, �������
24
 
����� �������� �/��� �������� �������������� ���������, �� � ���� ������ ��
25
 
��Ѩ� ���������������, ������� ����� �����, ���������, ����������� ���
26
 
������������� ������, ��������� � �������������� ��� ���������� ����������
27
 
������������� ������������� ��������� (������� ������ ������, ��� ������,
28
 
������� ���������, ��� ������ �/��� ������ �������, ���������� ��-�� ��������
29
 
������� ��� �/��� ������ ��������� �������� ��������� � ������� �����������,
30
 
�� �� ������������� ����� ��������), �� �� ������������� ���, ���� ���� �����
31
 
�������� ��� ������ ���� ���� �������� � ����������� ����� ������� � ������.
 
5
Разрешается повторное распространение и использование как в виде исходного кода,
 
6
так и в двоичной форме, с изменениями или без, при соблюдении следующих условий:
 
7
 
 
8
      * При повторном распространении исходного кода должны оставаться указанное
 
9
        выше уведомление об авторском праве, этот список условий и последующий
 
10
        отказ от гарантий.
 
11
      * При повторном распространении двоичного кода в документации и/или в
 
12
        других материалах, поставляемых при распространении, должны сохраняться
 
13
        указанная выше информация об авторском праве, этот список условий и
 
14
        последующий отказ от гарантий.
 
15
      * Ни название Cognitive Technologies, ни имена ее сотрудников не могут
 
16
        быть использованы в качестве средства поддержки и/или продвижения
 
17
        продуктов, основанных на этом ПО, без предварительного письменного
 
18
        разрешения.
 
19
 
 
20
ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУГИМИ ЛИЦАМИ "КАК
 
21
ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ,
 
22
ВКЛЮЧАЯ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, НО НЕ
 
23
ОГРАНИЧИВАЯСЬ ИМИ. НИ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ
 
24
МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, НИ В КОЕМ СЛУЧАЕ НЕ
 
25
НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ ИЛИ
 
26
ПОСЛЕДОВАВШИЕ УБЫТКИ, СВЯЗАННЫЕ С ИСПОЛЬЗОВАНИЕМ ИЛИ ПОНЕСЕННЫЕ ВСЛЕДСТВИЕ
 
27
НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ ПОТЕРИ ДАННЫХ, ИЛИ ДАННЫЕ,
 
28
СТАВШИЕ НЕГОДНЫМИ, ИЛИ УБЫТКИ И/ИЛИ ПОТЕРИ ДОХОДОВ, ПОНЕСЕННЫЕ ИЗ-ЗА ДЕЙСТВИЙ
 
29
ТРЕТЬИХ ЛИЦ И/ИЛИ ОТКАЗА ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ,
 
30
НО НЕ ОГРАНИЧИВАЯСЬ ЭТИМИ СЛУЧАЯМИ), НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ДАЖЕ ЕСЛИ ТАКОЙ
 
31
ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ И ПОТЕРЬ.
32
32
 
33
33
Redistribution and use in source and binary forms, with or without modification,
34
34
are permitted provided that the following conditions are met:
97
97
      {"�������� %s %s ���������� - %s, ������ - %s, ���������� %s",SPE_PUBLIC|SPE_WAIT|SPE_WITHTIME,11,0}
98
98
   };
99
99
 
100
 
//static CSysDataEventTypeList SysDataToEventTypeList; // ���������� ��������� ��������� � xsEventTypeData
 
100
//static CSysDataEventTypeList SysDataToEventTypeList; // добавление системных сообщений в xsEventTypeData
101
101
 
102
102
//static CTableEvnFiller *gl_TableEvnCreator = NULL;
103
103
 
108
108
   FILE* fl = fopen(TableName,"rt");
109
109
   if(!fl)
110
110
      RET_FALSE;
111
 
   char r_string[1024*4+256] = {0}; // 1024*4 - ����. ������ ������ � �������
 
111
   char r_string[1024*4+256] = {0}; // 1024*4 - макс. размер строки в таблице
112
112
   int i = 99;
113
113
   while(fgets(r_string,(1024*4+256-1),fl))
114
114
   {
115
 
      char* n_string = strchr(r_string,'\t'); // ��������� �� ������
 
115
      char* n_string = strchr(r_string,'\t'); // указатель на данные
116
116
      if(!n_string)
117
117
        continue;
118
 
      *n_string = 0; // ��������� ������ �� ������ ���������
 
118
      *n_string = 0; // отрезание данных от строки сообщения
119
119
      n_string++;
120
120
      char *p = strchr(n_string,'\n');
121
121
      if(p)
144
144
CTableEvnFiller::CTableEvnFiller()
145
145
{
146
146
   char szString[_MAX_PATH] = {0};
147
 
   Int32 size = _MAX_PATH;
 
147
   int32_t size = _MAX_PATH;
148
148
   stdGetProfileString(szString,&size,"protocol.ini","Options","EvnTablePath",STD_SETPROF_DIR_PROJECT);
149
149
   strcpy(m_szTableName,szString);
150
150
   xsTblEventData.erase(xsTblEventData.begin(),xsTblEventData.end());
167
167
   if(fl)
168
168
   {
169
169
   //      RET_FALSE;
170
 
      char r_string[1024*4+256] = {0}; // 1024*4 - ����. ������ ������ � �������
 
170
      char r_string[1024*4+256] = {0}; // 1024*4 - макс. размер строки в таблице
171
171
      int i = 99;
172
172
      while(fgets(r_string,(1024*4+256-1),fl))
173
173
      {
174
 
         char* n_string = strchr(r_string,'\t'); // ��������� �� ������
 
174
         char* n_string = strchr(r_string,'\t'); // указатель на данные
175
175
         if(!n_string)
176
176
           continue;
177
 
         *n_string = 0; // ��������� ������ �� ������ ���������
 
177
         *n_string = 0; // отрезание данных от строки сообщения
178
178
         n_string++;
179
179
         char *p = strchr(n_string,'\n');
180
180
         if(p)
223
223
   FILE* fl = fopen(m_szTableName,"rt");
224
224
   if(fl)
225
225
      RET_FALSE;
226
 
   char r_string[1024*4+256] = {0}; // 1024*4 - ����. ������ ������ � �������
 
226
   char r_string[1024*4+256] = {0}; // 1024*4 - макс. размер строки в таблице
227
227
   int i = 99;
228
228
//   for(int ii = 0 ; ii < xsTblEventData.GetCurCnt(); ii++)
229
229
   for(size_t ii = 0 ; ii < xsTblEventData.size(); ii++)
231
231
 
232
232
   while(fgets(r_string,(1024*4+256-1),fl))
233
233
   {
234
 
      char* n_string = strchr(r_string,'\t'); // ��������� �� ������
 
234
      char* n_string = strchr(r_string,'\t'); // указатель на данные
235
235
      if(!n_string)
236
236
        continue;
237
 
      *n_string = 0; // ��������� ������ �� ������ ���������
 
237
      *n_string = 0; // отрезание данных от строки сообщения
238
238
      n_string++;
239
239
      char *p = strchr(n_string,'\n');
240
240
      if(p)
271
271
      RET_FALSE;
272
272
   HANDLE hMessageText = 0;
273
273
   hMessageText = ::GlobalAlloc(GPTR,(len+1)*sizeof(char));
274
 
   LPVOID lpText = ::GlobalLock(hMessageText);
 
274
   pvoid lpText = ::GlobalLock(hMessageText);
275
275
   memset(lpText,0,sizeof(char)*(len+1));
276
276
   if(!lpText)
277
277
      RET_FALSE;
279
279
   ::GlobalUnlock(hMessageText);
280
280
   ::PostMessage(hConsoleOutput,uiMesasageHandle,reinterpret_cast<unsigned int>(hMessageText),len);
281
281
#endif
282
 
   printf(text);
 
282
   printf("%s", text);
283
283
   return TRUE;
284
284
}
285
285
 
415
415
{
416
416
 
417
417
   Bool32 res1=TRUE,res2,res3;
418
 
   /* ���������� ������ ��������� ��� ���������� � ���������� ������*/
 
418
   /* Подготовка строки сообщения для публикации в глобальном списке*/
419
419
   if(pspe->nFlags&SPE_PUBLIC)
420
420
   {
421
421
      char service_buf[128] = {0};
434
434
   }
435
435
   /**/
436
436
 
437
 
   /* ���������� ������ ��������� ��� ���������� � ��������� ������*/
 
437
   /* Подготовка строки сообщения для публикации в локальном списке*/
438
438
   {
439
439
      char service_buf[128] = {0};
440
440
      char service_MesBuf[8*1024-128] = {0};
445
445
   };
446
446
   /**/
447
447
 
448
 
   /* ���������� ������ ��������� ��� ������ �� �������*/
 
448
   /* Подготовка строки сообщения для вывода на консоль*/
449
449
   {
450
450
      char service_buf[128] = {0};
451
451
      char service_MesBuf[8*1024-128] = {0};
459
459
   return (res1&&res2&&res3);
460
460
}
461
461
 
462
 
Bool32 CPrtEventSender::SendEvent(char* EventText,Int32 EvnType)
 
462
Bool32 CPrtEventSender::SendEvent(char* EventText,int32_t EvnType)
463
463
{
464
464
   Bool32 res1 = TRUE;//,res2 = TRUE,res3 = TRUE;
465
465
   switch(EvnType)
480
480
   return res1;//(res1&&res2&&res2);
481
481
}
482
482
 
483
 
Bool32 CPrtSysEventSender::SendSysEvent(Int32 SysEvnNo,...)
 
483
Bool32 CPrtSysEventSender::SendSysEvent(int32_t SysEvnNo,...)
484
484
{
485
485
   if(SysEvnNo >= CUR_SYS_EVN_COUNT || SysEvnNo < 0)
486
486
      RET_FALSE;
499
499
   return res;
500
500
}
501
501
 
502
 
Bool32 CPrtSysEventSender::SendSysEvent(Int32 SysEvnNo, va_list& List)
 
502
Bool32 CPrtSysEventSender::SendSysEvent(int32_t SysEvnNo, va_list& List)
503
503
{
504
504
   if(SysEvnNo<100)
505
505
      return EventSender.SendEvent(&szStdPrtSysEventList[SysEvnNo-1], List);
528
528
Bool32 CPrtSysEventSender::SendEnvRegistrationEvent(StdPrtEvent* pspe)
529
529
{
530
530
   StdPrtEventData szEvnData = {0};
531
 
   Int32 res = EvnParseFormat(pspe->szFormat,szEvnData.FrmtEvnString);
 
531
   int32_t res = EvnParseFormat(pspe->szFormat,szEvnData.FrmtEvnString);
532
532
   if(!res)
533
533
      RET_FALSE;
534
534
   szEvnData.iEvnNo = ++gl_iLastEventNo;
581
581
   stdPrtConsole.FreePrtConsole();
582
582
}
583
583
 
584
 
STD_FUNC(Int32) stdPrt( StdPrtEvent* pspe, ... )
 
584
STD_FUNC(int32_t) stdPrt( StdPrtEvent* pspe, ... )
585
585
{
586
586
   if (NULL==(FILE*)theFile)
587
587
      RET_ZERO;
588
588
   va_list List;
589
589
   va_start(List, pspe);
590
590
   CPrtSendEvent Event;
591
 
   Int32 res = Event(pspe,List);
 
591
   int32_t res = Event(pspe,List);
592
592
   va_end( List );
593
593
   return res;
594
594
}
595
595
 
596
596
static CPrtSysEventSender SysEvent;
597
597
 
598
 
STD_FUNC(Int32) stdSysPrt( Int32 EvnNo, ... )
 
598
STD_FUNC(int32_t) stdSysPrt( int32_t EvnNo, ... )
599
599
{
600
600
   if (NULL==(FILE*)theFile)
601
601
      RET_ZERO;
602
602
   va_list List;
603
603
   va_start(List, EvnNo);
604
604
// CPrtSysEventSender Event;
605
 
   Int32 res = SysEvent.SendSysEvent(EvnNo,List);
 
605
   int32_t res = SysEvent.SendSysEvent(EvnNo,List);
606
606
   va_end( List );
607
607
   return res;
608
608
}
609
609
 
610
 
STD_FUNC(Int32) stdSysPrt( Int32 EvnNo, va_list& List )
 
610
STD_FUNC(int32_t) stdSysPrt( int32_t EvnNo, va_list& List )
611
611
{
612
612
   if (NULL==(FILE*)theFile)
613
613
      RET_ZERO;
614
614
// CPrtSysEventSender Event;
615
 
   Int32 res = SysEvent.SendSysEvent(EvnNo,List);
 
615
   int32_t res = SysEvent.SendSysEvent(EvnNo,List);
616
616
   return res;
617
617
}
618
618
 
619
 
STD_FUNC(Int32) stdPrt( StdPrtEvent* pspe,  va_list& List)
 
619
STD_FUNC(int32_t) stdPrt( StdPrtEvent* pspe,  va_list& List)
620
620
{
621
621
   if (NULL==(FILE*)theFile)
622
622
      RET_ZERO;
623
623
   CPrtSendEvent Event;
624
 
   Int32 res = Event(pspe,List);
 
624
   int32_t res = Event(pspe,List);
625
625
   return res;
626
626
}
627
627
 
632
632
   char comp_name[MAX_COMPUTERNAME_LENGTH+1];
633
633
        long unsigned int sz=sizeof(comp_name);
634
634
        GetComputerName(comp_name,&sz);
635
 
   stdSysPrt(3,"������",comp_name,prog_id,user_name);
 
635
   stdSysPrt(3,"Начало",comp_name,prog_id,user_name);
636
636
   return TRUE;
637
637
}
638
638
 
656
656
      char comp_name[MAX_COMPUTERNAME_LENGTH+1];
657
657
      long unsigned int sz=sizeof(comp_name);
658
658
      GetComputerName(comp_name,&sz);
659
 
      stdSysPrt(3,"����������",comp_name,prog_id,user_name);
 
659
      stdSysPrt(3,"Завершение",comp_name,prog_id,user_name);
660
660
      if(!pTransactionBuffer->Finish())
661
661
         RET_FALSE;
662
662
      gl_iTransaction--;
722
722
 
723
723
 
724
724
 
725
 
Int32 ReadEventString(FILE* fl, char* str)
 
725
int32_t ReadEventString(FILE* fl, char* str)
726
726
{
727
727
   XString xsString;
728
728
   if(!fl)
744
744
   return xsString.GetCurCnt();
745
745
}
746
746
 
747
 
Int32 GetNextEvnFld(char *evn_str,char* str)
 
747
int32_t GetNextEvnFld(char *evn_str,char* str)
748
748
{
749
749
   char buf[256] = {0};
750
750
   int i = 0;
755
755
      i++;
756
756
   };
757
757
   strcpy(evn_str,buf);
758
 
   // ���������� '\t'
 
758
   // пропускаем '\t'
759
759
   if(*evn_str=='\t')
760
760
      evn_str++;
761
761
   return i;
762
762
}
763
763
 
764
 
Int32 ParseEventString(char* evn_str,Int32 iEvnSize)
 
764
int32_t ParseEventString(char* evn_str,int32_t iEvnSize)
765
765
{
766
766
   char *str = evn_str;
767
 
   Int32 iEvnSqNo = 0;
 
767
   int32_t iEvnSqNo = 0;
768
768
   char buf[256] = {0};
769
769
 
770
 
   // ��������� ������ ������� � ���������
 
770
   // выделение номера собития в протоколе
771
771
   GetNextEvnFld(str,buf);
772
772
   iEvnSqNo = atoi(buf);
773
773
   memset(buf,0,255);
774
774
 
775
 
   // ��������� ������ ���� �������
 
775
   // выделение номера типа события
776
776
   int iEvnNo = 0;
777
777
   GetNextEvnFld(str,buf);
778
778
   char *p = strstr(buf,"Evn=");
788
788
         xString.Push(*str, NULL);
789
789
      else
790
790
      {
791
 
         Int32 shift = k+1;
 
791
         int32_t shift = k+1;
792
792
         xsParamsShift.Push(&shift);
793
793
         char ch = 0;
794
794
         xString.Push(ch, NULL);
803
803
   return iEvnNo;
804
804
}
805
805
 
806
 
STD_FUNC(Int32) stdPrtStartParsePrt(char *file_name)
 
806
STD_FUNC(int32_t) stdPrtStartParsePrt(char *file_name)
807
807
{
808
808
   stdPrtFILE theParseFile(file_name,"rt");
809
809
   if((FILE*)(theParseFile)==NULL)
818
818
   return 1;
819
819
}
820
820
 
821
 
STD_FUNC(Int32) stdPrtGetNextEvent(StdPrtEvent* pspe)
 
821
STD_FUNC(int32_t) stdPrtGetNextEvent(StdPrtEvent* pspe)
822
822
{
823
823
   xsParamsShift.Destroy();
824
824
   if(pParamsString)
836
836
int myfunc()
837
837
{
838
838
SendMessage
839
 
static StdPrtEvent spe1= { "���� %s ��������� �� ����� %s" };
 
839
static StdPrtEvent spe1= { "Файл %s распознан по форме %s" };
840
840
 
841
841
"{{%s}} {{%s}}"
842
842
 
843
843
 
844
 
static StdPrtEvent spe2= { "���� %s ��������� �� ����� %s", SPE_PUBLIC | SPE_WAIT };
 
844
static StdPrtEvent spe2= { "Файл %s распознан по форме %s", SPE_PUBLIC | SPE_WAIT };
845
845
 
846
846
   stdPrt(&spe1, "myfile.tif", "SZV1_1");
847
847
 
848
 
   StdPrtEvent spe3= { "������ ��� ������ �� ����� %s" };
849
 
   StdPrtEvent spe4= { "������ ��� ������� ������ ������� %d" };
 
848
   StdPrtEvent spe3= { "Ошибка при чтении из файла %s" };
 
849
   StdPrtEvent spe4= { "Ошибка при захвате памяти объемом %d" };
850
850
 
851
851
   return 0;
852
852
}
855
855
---------------------
856
856
 
857
857
 
858
 
#185 Evn=1    EvnNo=101 ���� %s ��������� �� ����� %s 0
 
858
#185 Evn=1    EvnNo=101 Файл %s распознан по форме %s 0
859
859
#185 Evn=101  myfile1.tif SZV1_1
860
860
#185 Evn=101  myfile2.tif SZV1_1
861
861
#185 Evn=101  myfile3.tif SZV1_1
894
894
   char buf[4097*2] = {0};
895
895
   char buff1[4097] = {0};
896
896
   char buff2[4097] = {0};
897
 
   Int32 nBytesWritten=sprintf( buff1,"#%05i\tEvn=%03i",gl_iEventCount,xsEventTypeData[(pspe->hEvent-1)].iEvnNo);
 
897
   int32_t nBytesWritten=sprintf( buff1,"#%05i\tEvn=%03i",gl_iEventCount,xsEventTypeData[(pspe->hEvent-1)].iEvnNo);
898
898
   nBytesWritten+=vsprintf( buff2, pspe->szFormat, List );
899
899
   nBytesWritten=sprintf(buf,"%s\t%s",buff1,buff2);
900
900
   unsigned long nRBytesWritten = 0;
916
916
 
917
917
 
918
918
/*
919
 
STD_FUNC(Int32) stdPrt( StdPrtEvent* pspe, ... )
 
919
STD_FUNC(int32_t) stdPrt( StdPrtEvent* pspe, ... )
920
920
{
921
921
   if (NULL==(FILE*)theFile)
922
922
      return 0;
942
942
      va_start(List, pspe);
943
943
 
944
944
      StdPrtEventData szEvnData = {0};
945
 
      Int32 res = EvnParseFormat(pspe->szFormat,szEvnData.FrmtEvnString);
 
945
      int32_t res = EvnParseFormat(pspe->szFormat,szEvnData.FrmtEvnString);
946
946
      if(!res)
947
947
         RET_FALSE;
948
948
      szEvnData.iEvnNo = ++gl_iLastEventNo;