---------------------------------------------------------------------------
| 944 | } |
| 945 | //--------------------------------------------------------------------------- |
| 946 | void __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; |
nothing calls this directly
no test coverage detected