View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000626 | Plugins | FTP (old) | public | 2008-10-29 14:48 | 2008-11-06 07:28 |
Reporter | DiRTy_GaRRy | Assigned To | vskirdin | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | x86 | OS | Windows | OS Version | 2003 SP2 |
Product Version | 1.71 | ||||
Fixed in Version | 1.71 | ||||
Summary | 0000626: Для файлов размером более 4Гб размер всегда отображается на 1 байт больше | ||||
Description | Для файлов размером более 4Гб размер в панелях отображается на 1 байт больше, чем он есть на самом деле. Во внутренних диалогах плагина (например, диалог перезаписи) размер отображается нормально. | ||||
Steps To Reproduce | 1. Зайти на ftp 2. Зайти в папку, где есть файл размером более 4Гб; 3. Сравнить размер файла в панели и в листинге каталога. | ||||
Additional Information | Патч прилагаю. | ||||
Tags | No tags attached. | ||||
2008-10-29 14:48
|
ftp_large_files_size.patch (8,995 bytes)
Index: ftp_AskOver.cpp =================================================================== --- ftp_AskOver.cpp (revision 2035) +++ ftp_AskOver.cpp (working copy) @@ -12,7 +12,7 @@ if ( p ) { //Size - FDigit( str,((__int64)p->nFileSizeHigh) * ((__int64)MAX_DWORD) + ((__int64)p->nFileSizeLow),14 ); + FDigit( str,((__int64)p->nFileSizeHigh) << 32 | p->nFileSizeLow,14 ); StrCat( buff,str,bsz ); //Time Index: ftp_cnUpload.cpp =================================================================== --- ftp_cnUpload.cpp (revision 2035) +++ ftp_cnUpload.cpp (working copy) @@ -83,7 +83,7 @@ if ( Host.SendAllo ) { if ( cmd[0] != Opt.cmdAppe[0] ) { - __int64 v = ((__int64)ffi.nFileSizeHigh) * MAXDWORD + ffi.nFileSizeLow; + __int64 v = ((__int64)ffi.nFileSizeHigh) << 32 | ffi.nFileSizeLow; Log(( "ALLO %I64u", v )); if ( command("%s %I64u",Opt.cmdAllo,v) != RPL_COMPLETE ) { Log(( "!allo" )); Index: ftp_FileList.cpp =================================================================== --- ftp_FileList.cpp (revision 2035) +++ ftp_FileList.cpp (working copy) @@ -129,8 +129,7 @@ if ( IS_FLAG(p->FindData.dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY) ) fprintf( f,"<DIR>" ); else - fprintf( f,"%10I64u", - ((__int64)p->FindData.nFileSizeHigh) * MAX_DWORD + ((__int64)p->FindData.nFileSizeLow) ); + fprintf( f,"%10I64u", ((__int64)p->FindData.nFileSizeHigh) << 32 | p->FindData.nFileSizeLow ); } fprintf( f,"\n" ); @@ -159,7 +158,7 @@ level = Max( 1, Opt.sli.RightBound - 10 - (int)strlen(m) - 1 ); fprintf( f,"%*c%10I64u", level,' ', - ((__int64)p->FindData.nFileSizeHigh) * MAX_DWORD + ((__int64)p->FindData.nFileSizeLow) ); + ((__int64)p->FindData.nFileSizeHigh) << 32 | p->FindData.nFileSizeLow ); } fprintf( f,"\n" ); } @@ -211,9 +210,7 @@ for ( n = 0; n < cn; n++ ) { p = il->Item( MNUM(mi[n]) ); - FDigit( str, - ((__int64)p->FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + ((__int64)p->FindData.nFileSizeLow), - -1 ); + FDigit( str, ((__int64)p->FindData.nFileSizeHigh) << 32 | p->FindData.nFileSizeLow, -1 ); szSize = Max( strLen(str),szSize ); if ( IS_FLAG(p->FindData.dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY) ) { @@ -248,9 +245,7 @@ *(m++) = ' '; *(m++) = FAR_VERT_CHAR; *(m++) = ' '; - FDigit( str, - ((__int64)p->FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + ((__int64)p->FindData.nFileSizeLow), - -1 ); + FDigit( str, ((__int64)p->FindData.nFileSizeHigh) << 32 | p->FindData.nFileSizeLow, -1 ); m += Sprintf( m,"%*s",szSize,str ); } @@ -280,8 +275,7 @@ p = il->Item( MNUM(mi[n]) ); if ( p->FindData.dwReserved1 != MAX_DWORD && !IS_FLAG(p->FindData.dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY) ) { - tsz += ((__int64)p->FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + - ((__int64)p->FindData.nFileSizeLow); + tsz += ((__int64)p->FindData.nFileSizeHigh) << 32 | p->FindData.nFileSizeLow; tcn++; } } Index: ftp_FPut.cpp =================================================================== --- ftp_FPut.cpp (revision 2035) +++ ftp_FPut.cpp (working copy) @@ -207,8 +207,8 @@ } else if ( (sz=FtpFileSize(hConnect,DestName.c_str())) != -1 ) { FindData.FindData = il.List[I].FindData; - FindData.FindData.nFileSizeHigh = ((DWORD) (sz / ((__int64)MAX_DWORD)) ); - FindData.FindData.nFileSizeLow = ((DWORD) (sz % ((__int64)MAX_DWORD)) ); + FindData.FindData.nFileSizeHigh = (DWORD)((sz >> 32) & MAX_DWORD); + FindData.FindData.nFileSizeLow = (DWORD)(sz & MAX_DWORD); DestAttr = 0; break; } else Index: ftp_fUtils.cpp =================================================================== --- ftp_fUtils.cpp (revision 2035) +++ ftp_fUtils.cpp (working copy) @@ -271,8 +271,7 @@ return FALSE; if ( il ) { - il->TotalFullSize += ((__int64)pi[n].FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + - ((__int64)pi[n].FindData.nFileSizeLow); + il->TotalFullSize += ((__int64)pi[n].FindData.nFileSizeHigh) << 32 | pi[n].FindData.nFileSizeLow; il->TotalFiles++; //Add @@ -339,8 +338,8 @@ if ( num != -1 && res ) { lSz = il->TotalFullSize - lSz; lCn = il->TotalFiles - lCn; - il->Item(num)->FindData.nFileSizeHigh = (DWORD)(lSz / ((__int64)MAX_DWORD)); - il->Item(num)->FindData.nFileSizeLow = (DWORD)(lSz % ((__int64)MAX_DWORD)); + il->Item(num)->FindData.nFileSizeHigh = (DWORD)((lSz >> 32) & MAX_DWORD); + il->Item(num)->FindData.nFileSizeLow = (DWORD)(lSz & MAX_DWORD); il->Item(num)->FindData.dwReserved0 = (DWORD)lCn; } FTP_FreeFindData( DirPanelItem,DirItemsNumber,FromPlugin ); Index: ftp_Plugin.cpp =================================================================== --- ftp_Plugin.cpp (revision 2035) +++ ftp_Plugin.cpp (working copy) @@ -284,7 +284,7 @@ { __int64 sz; if ( pi ) - sz = ((__int64)pi->FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + ((__int64)pi->FindData.nFileSizeLow); + sz = ((__int64)pi->FindData.nFileSizeHigh) << 32 | pi->FindData.nFileSizeLow; else sz = 0; InitFile( sz, SrcName, DestName); @@ -294,7 +294,7 @@ { __int64 sz; if ( pi ) - sz = ((__int64)pi->nFileSizeHigh) * ((__int64)MAX_DWORD) + ((__int64)pi->nFileSizeLow); + sz = ((__int64)pi->nFileSizeHigh) << 32 | pi->nFileSizeLow; else sz = 0; InitFile( sz, SrcName, DestName); Index: ftp_Queque.cpp =================================================================== --- ftp_Queque.cpp (revision 2035) +++ ftp_Queque.cpp (working copy) @@ -503,8 +503,8 @@ if ( FRealFile(ci.DestPath.c_str(),&fd) ) { if ( fsz != -1 ) { ffd = fd; - ffd.nFileSizeHigh = (DWORD)( fsz / ((__int64)MAX_DWORD) ); - ffd.nFileSizeLow = (DWORD)( fsz % ((__int64)MAX_DWORD) ); + ffd.nFileSizeHigh = (DWORD)((fsz >> 32) & MAX_DWORD); + ffd.nFileSizeLow = (DWORD)(fsz & MAX_DWORD); ci.MsgCode = AskOverwrite( MDownloadTitle, TRUE, &fd, &ffd, ci.MsgCode ); } else ci.MsgCode = AskOverwrite( MDownloadTitle, TRUE, &fd, NULL, ci.MsgCode ); @@ -549,8 +549,8 @@ if ( fsz != -1 ) { ffd = fd; - ffd.nFileSizeHigh = (DWORD)(fsz / ((__int64)MAX_DWORD)); - ffd.nFileSizeLow = (DWORD)(fsz % ((__int64)MAX_DWORD)); + ffd.nFileSizeHigh = (DWORD)((fsz >> 32) & MAX_DWORD); + ffd.nFileSizeLow = (DWORD)(fsz & MAX_DWORD); ci.MsgCode = AskOverwrite( MUploadTitle, FALSE, &ffd, &fd, ci.MsgCode ); switch( ci.MsgCode ) { Index: lib/DirList/p_Main.cpp =================================================================== --- lib/DirList/p_Main.cpp (revision 2035) +++ lib/DirList/p_Main.cpp (working copy) @@ -146,8 +146,8 @@ return FALSE; //Size - p->FindData.nFileSizeHigh = (DWORD)( inf->size / MAX_DWORD ); - p->FindData.nFileSizeLow = (DWORD)( inf->size % MAX_DWORD ); + p->FindData.nFileSizeHigh = (DWORD)((inf->size >> 32) & MAX_DWORD); + p->FindData.nFileSizeLow = (DWORD)(inf->size & MAX_DWORD); return TRUE; } Index: lib/Progress/p_TraficCB.cpp =================================================================== --- lib/Progress/p_TraficCB.cpp (revision 2035) +++ lib/Progress/p_TraficCB.cpp (working copy) @@ -216,8 +216,7 @@ for ( int i = 0; i < il->Count(); i++ ) if ( !IS_FLAG(il->List[i].FindData.dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY) && il->List[i].FindData.dwReserved1 != MAX_DWORD ) { - TotalFullSize += ((__int64)il->List[i].FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + - ((__int64)il->List[i].FindData.nFileSizeLow); + TotalFullSize += ((__int64)il->List[i].FindData.nFileSizeHigh) << 32 | il->List[i].FindData.nFileSizeLow; TotalFiles++; } } @@ -268,8 +267,7 @@ } FindClose(ff); - StartFileSize = ((__int64)ffi.nFileSizeHigh) * ((__int64)MAX_DWORD) + - ((__int64)ffi.nFileSizeLow); + StartFileSize = ((__int64)ffi.nFileSizeHigh) << 32 | ffi.nFileSizeLow; FileSize = 0; } |
|
Упс... ещё не всё дочистил... |
2008-10-29 15:40
|
ftp_large_files_size1.patch (9,983 bytes)
Index: ftp_AskOver.cpp =================================================================== --- ftp_AskOver.cpp (revision 2035) +++ ftp_AskOver.cpp (working copy) @@ -12,7 +12,7 @@ if ( p ) { //Size - FDigit( str,((__int64)p->nFileSizeHigh) * ((__int64)MAX_DWORD) + ((__int64)p->nFileSizeLow),14 ); + FDigit( str,((__int64)p->nFileSizeHigh) << 32 | p->nFileSizeLow,14 ); StrCat( buff,str,bsz ); //Time Index: ftp_cnUpload.cpp =================================================================== --- ftp_cnUpload.cpp (revision 2035) +++ ftp_cnUpload.cpp (working copy) @@ -83,7 +83,7 @@ if ( Host.SendAllo ) { if ( cmd[0] != Opt.cmdAppe[0] ) { - __int64 v = ((__int64)ffi.nFileSizeHigh) * MAXDWORD + ffi.nFileSizeLow; + __int64 v = ((__int64)ffi.nFileSizeHigh) << 32 | ffi.nFileSizeLow; Log(( "ALLO %I64u", v )); if ( command("%s %I64u",Opt.cmdAllo,v) != RPL_COMPLETE ) { Log(( "!allo" )); Index: ftp_FileList.cpp =================================================================== --- ftp_FileList.cpp (revision 2035) +++ ftp_FileList.cpp (working copy) @@ -129,8 +129,7 @@ if ( IS_FLAG(p->FindData.dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY) ) fprintf( f,"<DIR>" ); else - fprintf( f,"%10I64u", - ((__int64)p->FindData.nFileSizeHigh) * MAX_DWORD + ((__int64)p->FindData.nFileSizeLow) ); + fprintf( f,"%10I64u", ((__int64)p->FindData.nFileSizeHigh) << 32 | p->FindData.nFileSizeLow ); } fprintf( f,"\n" ); @@ -159,7 +158,7 @@ level = Max( 1, Opt.sli.RightBound - 10 - (int)strlen(m) - 1 ); fprintf( f,"%*c%10I64u", level,' ', - ((__int64)p->FindData.nFileSizeHigh) * MAX_DWORD + ((__int64)p->FindData.nFileSizeLow) ); + ((__int64)p->FindData.nFileSizeHigh) << 32 | p->FindData.nFileSizeLow ); } fprintf( f,"\n" ); } @@ -211,9 +210,7 @@ for ( n = 0; n < cn; n++ ) { p = il->Item( MNUM(mi[n]) ); - FDigit( str, - ((__int64)p->FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + ((__int64)p->FindData.nFileSizeLow), - -1 ); + FDigit( str, ((__int64)p->FindData.nFileSizeHigh) << 32 | p->FindData.nFileSizeLow, -1 ); szSize = Max( strLen(str),szSize ); if ( IS_FLAG(p->FindData.dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY) ) { @@ -248,9 +245,7 @@ *(m++) = ' '; *(m++) = FAR_VERT_CHAR; *(m++) = ' '; - FDigit( str, - ((__int64)p->FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + ((__int64)p->FindData.nFileSizeLow), - -1 ); + FDigit( str, ((__int64)p->FindData.nFileSizeHigh) << 32 | p->FindData.nFileSizeLow, -1 ); m += Sprintf( m,"%*s",szSize,str ); } @@ -280,8 +275,7 @@ p = il->Item( MNUM(mi[n]) ); if ( p->FindData.dwReserved1 != MAX_DWORD && !IS_FLAG(p->FindData.dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY) ) { - tsz += ((__int64)p->FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + - ((__int64)p->FindData.nFileSizeLow); + tsz += ((__int64)p->FindData.nFileSizeHigh) << 32 | p->FindData.nFileSizeLow; tcn++; } } Index: ftp_FPut.cpp =================================================================== --- ftp_FPut.cpp (revision 2035) +++ ftp_FPut.cpp (working copy) @@ -207,8 +207,8 @@ } else if ( (sz=FtpFileSize(hConnect,DestName.c_str())) != -1 ) { FindData.FindData = il.List[I].FindData; - FindData.FindData.nFileSizeHigh = ((DWORD) (sz / ((__int64)MAX_DWORD)) ); - FindData.FindData.nFileSizeLow = ((DWORD) (sz % ((__int64)MAX_DWORD)) ); + FindData.FindData.nFileSizeHigh = (DWORD)((sz >> 32) & MAX_DWORD); + FindData.FindData.nFileSizeLow = (DWORD)(sz & MAX_DWORD); DestAttr = 0; break; } else Index: ftp_fUtils.cpp =================================================================== --- ftp_fUtils.cpp (revision 2035) +++ ftp_fUtils.cpp (working copy) @@ -271,8 +271,7 @@ return FALSE; if ( il ) { - il->TotalFullSize += ((__int64)pi[n].FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + - ((__int64)pi[n].FindData.nFileSizeLow); + il->TotalFullSize += ((__int64)pi[n].FindData.nFileSizeHigh) << 32 | pi[n].FindData.nFileSizeLow; il->TotalFiles++; //Add @@ -339,8 +338,8 @@ if ( num != -1 && res ) { lSz = il->TotalFullSize - lSz; lCn = il->TotalFiles - lCn; - il->Item(num)->FindData.nFileSizeHigh = (DWORD)(lSz / ((__int64)MAX_DWORD)); - il->Item(num)->FindData.nFileSizeLow = (DWORD)(lSz % ((__int64)MAX_DWORD)); + il->Item(num)->FindData.nFileSizeHigh = (DWORD)((lSz >> 32) & MAX_DWORD); + il->Item(num)->FindData.nFileSizeLow = (DWORD)(lSz & MAX_DWORD); il->Item(num)->FindData.dwReserved0 = (DWORD)lCn; } FTP_FreeFindData( DirPanelItem,DirItemsNumber,FromPlugin ); Index: ftp_Mix.cpp =================================================================== --- ftp_Mix.cpp (revision 2035) +++ ftp_Mix.cpp (working copy) @@ -286,7 +286,7 @@ if ( lo == MAX_DWORD ) return 0; else - return ((__int64)hi) * ((__int64)MAX_DWORD) + ((__int64)lo); + return ((__int64)hi) << 32 | lo; } __int64 DECLSPEC Fsize( HANDLE File ) @@ -296,12 +296,12 @@ if ( low == MAX_DWORD ) return 0; else - return ((__int64)hi) * ((__int64)MAX_DWORD) + ((__int64)low); + return ((__int64)hi) << 32 | low; } BOOL DECLSPEC Fmove( HANDLE file,__int64 restart ) - { LONG lo = (LONG)( restart % ((__int64)MAX_DWORD) ), - hi = (LONG)( restart / ((__int64)MAX_DWORD) ); + { LONG lo = (DWORD)(restart & MAX_DWORD), + hi = (DWORD)((restart >> 32) & MAX_DWORD); if ( SetFilePointer( file,lo,&hi,FILE_BEGIN ) == 0xFFFFFFFF && GetLastError() != NO_ERROR ) Index: ftp_Plugin.cpp =================================================================== --- ftp_Plugin.cpp (revision 2035) +++ ftp_Plugin.cpp (working copy) @@ -284,7 +284,7 @@ { __int64 sz; if ( pi ) - sz = ((__int64)pi->FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + ((__int64)pi->FindData.nFileSizeLow); + sz = ((__int64)pi->FindData.nFileSizeHigh) << 32 | pi->FindData.nFileSizeLow; else sz = 0; InitFile( sz, SrcName, DestName); @@ -294,7 +294,7 @@ { __int64 sz; if ( pi ) - sz = ((__int64)pi->nFileSizeHigh) * ((__int64)MAX_DWORD) + ((__int64)pi->nFileSizeLow); + sz = ((__int64)pi->nFileSizeHigh) << 32 | pi->nFileSizeLow; else sz = 0; InitFile( sz, SrcName, DestName); Index: ftp_Queque.cpp =================================================================== --- ftp_Queque.cpp (revision 2035) +++ ftp_Queque.cpp (working copy) @@ -503,8 +503,8 @@ if ( FRealFile(ci.DestPath.c_str(),&fd) ) { if ( fsz != -1 ) { ffd = fd; - ffd.nFileSizeHigh = (DWORD)( fsz / ((__int64)MAX_DWORD) ); - ffd.nFileSizeLow = (DWORD)( fsz % ((__int64)MAX_DWORD) ); + ffd.nFileSizeHigh = (DWORD)((fsz >> 32) & MAX_DWORD); + ffd.nFileSizeLow = (DWORD)(fsz & MAX_DWORD); ci.MsgCode = AskOverwrite( MDownloadTitle, TRUE, &fd, &ffd, ci.MsgCode ); } else ci.MsgCode = AskOverwrite( MDownloadTitle, TRUE, &fd, NULL, ci.MsgCode ); @@ -549,8 +549,8 @@ if ( fsz != -1 ) { ffd = fd; - ffd.nFileSizeHigh = (DWORD)(fsz / ((__int64)MAX_DWORD)); - ffd.nFileSizeLow = (DWORD)(fsz % ((__int64)MAX_DWORD)); + ffd.nFileSizeHigh = (DWORD)((fsz >> 32) & MAX_DWORD); + ffd.nFileSizeLow = (DWORD)(fsz & MAX_DWORD); ci.MsgCode = AskOverwrite( MUploadTitle, FALSE, &ffd, &fd, ci.MsgCode ); switch( ci.MsgCode ) { Index: lib/DirList/p_Main.cpp =================================================================== --- lib/DirList/p_Main.cpp (revision 2035) +++ lib/DirList/p_Main.cpp (working copy) @@ -146,8 +146,8 @@ return FALSE; //Size - p->FindData.nFileSizeHigh = (DWORD)( inf->size / MAX_DWORD ); - p->FindData.nFileSizeLow = (DWORD)( inf->size % MAX_DWORD ); + p->FindData.nFileSizeHigh = (DWORD)((inf->size >> 32) & MAX_DWORD); + p->FindData.nFileSizeLow = (DWORD)(inf->size & MAX_DWORD); return TRUE; } Index: lib/Progress/p_TraficCB.cpp =================================================================== --- lib/Progress/p_TraficCB.cpp (revision 2035) +++ lib/Progress/p_TraficCB.cpp (working copy) @@ -216,8 +216,7 @@ for ( int i = 0; i < il->Count(); i++ ) if ( !IS_FLAG(il->List[i].FindData.dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY) && il->List[i].FindData.dwReserved1 != MAX_DWORD ) { - TotalFullSize += ((__int64)il->List[i].FindData.nFileSizeHigh) * ((__int64)MAX_DWORD) + - ((__int64)il->List[i].FindData.nFileSizeLow); + TotalFullSize += ((__int64)il->List[i].FindData.nFileSizeHigh) << 32 | il->List[i].FindData.nFileSizeLow; TotalFiles++; } } @@ -268,8 +267,7 @@ } FindClose(ff); - StartFileSize = ((__int64)ffi.nFileSizeHigh) * ((__int64)MAX_DWORD) + - ((__int64)ffi.nFileSizeLow); + StartFileSize = ((__int64)ffi.nFileSizeHigh) << 32 | ffi.nFileSizeLow; FileSize = 0; } |
|
В патче ftp_large_files_size1.patch вроде ничего не забыл. Надо бы погонять на больших файлах... |
|
проверяем: http://ifolder.ru/8839816 |
|
У меня, вроде, работает. На неделе ещё погоняю. |
Date Modified | Username | Field | Change |
---|---|---|---|
2008-10-29 14:48 | DiRTy_GaRRy | New Issue | |
2008-10-29 14:48 | DiRTy_GaRRy | File Added: ftp_large_files_size.patch | |
2008-10-29 15:28 | DiRTy_GaRRy | Note Added: 0001905 | |
2008-10-29 15:40 | DiRTy_GaRRy | File Added: ftp_large_files_size1.patch | |
2008-10-29 15:41 | DiRTy_GaRRy | Note Added: 0001906 | |
2008-10-31 08:58 | vskirdin | Status | new => assigned |
2008-10-31 08:58 | vskirdin | Assigned To | => vskirdin |
2008-10-31 08:58 | vskirdin | Note Added: 0001909 | |
2008-10-31 08:58 | vskirdin | Status | assigned => feedback |
2008-11-04 23:15 | DiRTy_GaRRy | Note Added: 0001921 | |
2008-11-06 05:54 | DiRTy_GaRRy | Status | feedback => resolved |
2008-11-06 05:54 | DiRTy_GaRRy | Resolution | open => fixed |
2008-11-06 07:28 | vskirdin | Status | resolved => closed |
2008-11-06 07:28 | vskirdin | Fixed in Version | => 1.71 |
2013-05-20 20:30 | alexy | Category | FTP => FTP (old) |