LPCSTR GetAttach(LPSTR FileName)
{
MSG_MULTIPART = false;
//n?eouaaai oaee n ienuiim a aooa?
FILE *stream = NULL;
STRINGVECTOR Letter;
char TempStr[150];
int iterator=0;
if( (stream = fopen( FileName, "rt" )) != NULL )
{
while (!feof(stream))
{
if(fgets(TempStr, 150, stream)==NULL)
{
break;
}
Letter.push_back(TempStr);
memset(TempStr, NULL, 150);
iterator++;
}
}
fclose(stream);
const int StringNum = iterator;
LPCTSTR BoundaryStr = "boundary=\"";
int i =0;
int FirstSim;
int FirstBoundaryStringNum = 0;
for ( i =0; i < iterator; i++)
{
if ((FirstSim = Letter[i].Find(BoundaryStr)) != -1)
{
FirstBoundaryStringNum = i;
break;
}
}
if (FirstBoundaryStringNum != 0)
{
MSG_MULTIPART = true;
}
if (!MSG_MULTIPART)
{
char *log_mes = "no attached files in the letter";
WriteLog(log_mes);
return "ERROR";
}
CString BoundaryCode;
CString temp = Letter.operator [](i).Right(Letter.operator [](i).GetLength() - FirstSim - 10);
BoundaryCode = temp.Left(temp.GetLength() - 2);
CString BoundaryPrefix = "--";
CString BoundaryFull = BoundaryPrefix + BoundaryCode;
int ThirdBoundaryStringNum =0;
int ForthBoundaryStringNum =0;
int MeetBound = 0;
for ( i = FirstBoundaryStringNum+1; i < StringNum; i++)
{
if((Letter[i].Find((LPCTSTR)BoundaryFull) != -1))
{
MeetBound++;
if (MeetBound == 2)
{
ThirdBoundaryStringNum = i;
}
if (MeetBound == 3)
{
ForthBoundaryStringNum = i;
break;
}
}
}
FILE *outstream;
srand( (unsigned)time( NULL ) );
char temp_rand[6];
_itoa(rand(), temp_rand, 10);
CString TempFolder = temp_rand;
TempFolder = "e:\\ctb_server\\" + TempFolder;
if (_mkdir(TempFolder) == -1)
{
WriteLog("cannot create temprorary folder");
return "ERROR";
}
int temp_search = Letter[ThirdBoundaryStringNum + 3].Find('"');
int temp_search1 = Letter[ThirdBoundaryStringNum + 3].ReverseFind('"');
CString ExtractedFileName = Letter[ThirdBoundaryStringNum + 3].Mid(
temp_search+1,
temp_search1
-temp_search
-1);
const LPCSTR OutFileName = (LPCTSTR) (CString(TempFolder) +CString("\\") + CString(ExtractedFileName));
CString name(OutFileName);
MessageBox(NULL, "schas bydet outfilename", NULL, MB_OK);
CString EncodedFile;
CString DecodedFile, TempFile, Temp1;
if( (outstream = fopen( OutFileName, "wb" )) != NULL )
{MessageBox(NULL, OutFileName, NULL, MB_OK);
name.LockBuffer();
for (i= ThirdBoundaryStringNum +5; i < ForthBoundaryStringNum-1; i++)
{
Temp1 = Letter[i].Left(Letter[i].GetLength() - 1);/*вот это строка как показал дебаггер и меняет OutFileName, но как?*/
unsigned char buff[4];
CString tempstr;
while ( Temp1.Left(4).GetLength()!=0)
{
for (int j=0; j<4; j++)
{
buff[j] = Temp1[0];
Temp1.Delete(0,1);
}
fprintf(outstream,"%c",b(buff[0])<<2 | b(buff[1])>>4 & 0x3 );
isEnd(buff[2])
fprintf(outstream,"%c",b(buff[1])<<4 | b(buff[2])>>2 & 0xF);
isEnd(buff[3])
fprintf(outstream,"%c",b(buff[2])<<6 | b(buff[3]) & 0x3F);
}
}
}
name.UnlockBuffer();/*UnlockBuffer и LockBuffer решили проблему но ведь это неправильно*/
MessageBox(NULL, name, NULL, MB_OK);
fclose(outstream);
return name;
}
Вот весь код функции, кто скажет как это исправить?