MCPcopy Create free account
hub / github.com/MaxBelkov/visualsyslog / aViewFileExecute

Method aViewFileExecute

source/main.cpp:946–1009  ·  view source on GitHub ↗

---------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

944}
945//---------------------------------------------------------------------------
946void __fastcall TMainForm::aViewFileExecute(TObject *Sender)
947{
948 OpenDialog->Filter = "All files (*.*)|*.*";
949 OpenDialog->FilterIndex = 1;
950 OpenDialog->Title = "View syslog file";
951 if( ! OpenDialog->Execute() )
952 return;
953
954 ViewFileName = OpenDialog->FileName;
955 TFile viewin(ViewFileName, GENERIC_READ,
956 FILE_SHARE_READ | FILE_SHARE_WRITE,
957 OPEN_EXISTING,
958 FILE_ATTRIBUTE_NORMAL);
959
960 if( ! viewin )
961 return;
962
963 TmpViewFileName = GetTemporaryFileName();
964 TFile out(TmpViewFileName, GENERIC_WRITE,
965 FILE_SHARE_READ | FILE_SHARE_WRITE,
966 OPEN_ALWAYS,
967 FILE_ATTRIBUTE_NORMAL);
968 if( ! out )
969 return;
970 out.ToEnd();
971
972 TWaitCursor wait;
973
974 AnsiString file_line;
975 DWORD rsize = 1024*1024;
976 ULONGLONG fsize = viewin.GetSize64();
977 BYTE * p = new BYTE[rsize];
978
979 while( fsize > 0 )
980 {
981 viewin.Read(p, MIN(rsize,fsize));
982 if( viewin.Bytes <= 0 )
983 break;
984 fsize -= viewin.Bytes;
985
986 for(DWORD i=0; i<viewin.Bytes; i++)
987 {
988 if( p[i]=='\n' || p[i]=='\r' )
989 {
990 if( file_line.Length() > 0 )
991 {
992 // Now file_line contains new line
993 TSyslogMessage sm;
994 sm.FromStringSyslogd(file_line.c_str(), file_line.Length(), NULL);
995 out << sm.ToString();
996 file_line.SetLength(0);
997 }
998 continue;
999 }
1000 file_line += (char)p[i];
1001 } // End for
1002 }
1003 delete [] p;

Callers

nothing calls this directly

Calls 7

GetTemporaryFileNameFunction · 0.85
ToEndMethod · 0.80
GetSize64Method · 0.80
FromStringSyslogdMethod · 0.80
ToStringMethod · 0.80
ExecuteMethod · 0.45
ReadMethod · 0.45

Tested by

no test coverage detected