added support for UTF-8

now the UTF-8 is a default charset


git-svn-id: svn://ttmath.org/publicrep/winix/trunk@677 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2010-11-21 00:19:17 +00:00
parent f1f0fa34cb
commit 8e72a820dd
153 changed files with 4270 additions and 2784 deletions

View File

@@ -9,7 +9,8 @@
#include "postmultiparser.h"
#include "log.h"
#include "ezc.h"
#include "misc.h"
PostMultiParser::PostMultiParser()
@@ -283,7 +284,7 @@ bool has_boundary = false;
content.clear();
}
if( config->post_file_max != 0 && content_len > (size_t)config->post_file_max )
if( config->post_file_max != 0 && content_len > config->post_file_max )
{
err = WINIX_ERR_INPUT_TOO_LARGE;
log << log1 << "PMP: content greater than " << config->post_file_max << " (skipping)" << logend;
@@ -369,10 +370,22 @@ void PostMultiParser::AddNormalPostVar()
return;
}
std::pair<PostTab::iterator, bool> res = post_tab->insert( std::make_pair(name, content) );
if( config->utf8 )
{
Ezc::UTF8ToWide(name, namew);
Ezc::UTF8ToWide(content, contentw);
}
else
{
AssignString(name, namew);
AssignString(content, contentw);
}
std::pair<PostTab::iterator, bool> res = post_tab->insert( std::make_pair(namew, contentw) );
bool added = res.second;
log << log2 << "PMP: POST var, name: \"" << name << "\"";
log << log2 << "PMP: POST var, name: \"" << namew << "\"";
if( !added )
log << log2 << " (skipped)";
@@ -390,12 +403,22 @@ void PostMultiParser::AddFilePostVar()
return;
}
post_file_temp.filename = filename;
if( config->utf8 )
{
Ezc::UTF8ToWide(name, namew);
Ezc::UTF8ToWide(filename, post_file_temp.filename);
}
else
{
AssignString(name, namew);
AssignString(filename, post_file_temp.filename);
}
post_file_temp.tmp_filename = tmp_filename;
std::pair<PostFileTab::iterator, bool> res = post_file_tab->insert( std::make_pair(name, post_file_temp) );
std::pair<PostFileTab::iterator, bool> res = post_file_tab->insert( std::make_pair(namew, post_file_temp) );
bool added = res.second;
log << log2 << "PMP: POST FILE var, name: \"" << name << "\"";
log << log2 << "PMP: POST FILE var, name: \"" << namew << "\"";
if( !added )
log << log2 << " (skipped)";
@@ -450,7 +473,8 @@ void PostMultiParser::CheckBoundaryEnd()
void PostMultiParser::CreateTmpFile()
{
char buf[100];
wchar_t buf[1024];
size_t buf_len = sizeof(buf)/sizeof(wchar_t);
if( config->auth_tmp_dir.empty() )
{
@@ -459,11 +483,13 @@ char buf[100];
return;
}
sprintf(buf, "%s/winix_%u_%d_%u", config->auth_tmp_dir.c_str(), (unsigned)getpid(), tmp_filename_postfix, rand());
swprintf(buf, buf_len, L"%ls/winix_%u_%d_%u", config->auth_tmp_dir.c_str(), (unsigned)getpid(), tmp_filename_postfix, rand());
tmp_filename_postfix += 1;
tmp_file.open(buf, std::ios_base::binary | std::ios_base::out);
tmp_filename = buf;
AssignString(buf, atmp_filename);
AssignString(atmp_filename, tmp_filename); // this make sure that the names are exactly the same
tmp_file.open(atmp_filename.c_str(), std::ios_base::binary | std::ios_base::out);
if( !tmp_file )
{
@@ -509,7 +535,7 @@ void PostMultiParser::ReadPart()
if( err != WINIX_ERR_OK && !filename.empty() )
{
log << log1 << "PMP: deleting the tmp file: " << tmp_filename << logend;
unlink(tmp_filename.c_str());
RemoveFile(tmp_filename);
}
}
@@ -544,6 +570,7 @@ void PostMultiParser::ReadChar()
Error PostMultiParser::Parse(FCGX_Stream * in_, PostTab & post_tab_, PostFileTab & post_file_tab_)
{
in = in_;