changed: now we do not use std::string and char* in the Winix API
everywhere we are using std::wstring and wchar_t* (std::string and char* is used only locally in some places especially when creating a path to OS file system etc.) added: to the special thread when winix closes: a write function for curl: FetchPageOnExitCurlCallback() without this function the curl library will print the page's content to the standart output changed: TextStream<> class from core can make UTF8<->wide strings conversions removed: from config: utf8 option now winix expects UTF8 from the user's input (html forms, url-es) and outputs strings in the UTF8 format git-svn-id: svn://ttmath.org/publicrep/winix/trunk@965 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
74
core/misc.h
74
core/misc.h
@@ -44,6 +44,9 @@
|
||||
#include "date/date.h"
|
||||
#include "textstream/textstream.h"
|
||||
#include "utf8/utf8.h"
|
||||
#include "winix_const.h"
|
||||
|
||||
|
||||
|
||||
|
||||
namespace Winix
|
||||
@@ -212,34 +215,6 @@ void Toa(long value, std::wstring & res, int base = 10, bool clear = true);
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
conversions between ascii text and wide characters
|
||||
(destination is always std::string or std::wstring)
|
||||
|
||||
characters are copied as they are without any locales checking
|
||||
*/
|
||||
|
||||
void AssignString(const char * src, size_t len, std::wstring & dst, bool clear = true);
|
||||
void AssignString(const char * src, std::wstring & dst, bool clear = true);
|
||||
void AssignString(const std::string & src, std::wstring & dst, bool clear = true);
|
||||
|
||||
void AssignString(const wchar_t * src, size_t len, std::string & dst, bool clear = true);
|
||||
void AssignString(const wchar_t * src, std::string & dst, bool clear = true);
|
||||
void AssignString(const std::wstring & src, std::string & dst, bool clear = true);
|
||||
|
||||
void AssignString(const char * src, size_t len, std::string & dst, bool clear = true);
|
||||
void AssignString(const char * src, std::string & dst, bool clear = true);
|
||||
void AssignString(const std::string & src, std::string & dst, bool clear = true);
|
||||
|
||||
void AssignString(const wchar_t * src, size_t len, std::wstring & dst, bool clear = true);
|
||||
void AssignString(const wchar_t * src, std::wstring & dst, bool clear = true);
|
||||
void AssignString(const std::wstring & src, std::wstring & dst, bool clear = true);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool CorrectUrlChar(wchar_t c);
|
||||
void CorrectUrlDots(std::wstring & url);
|
||||
void CorrectUrlChars(std::wstring & url);
|
||||
@@ -358,6 +333,10 @@ void Trim(StringType & s, wchar_t c)
|
||||
|
||||
|
||||
|
||||
void Overwrite(std::string & str);
|
||||
void Overwrite(std::wstring & str);
|
||||
|
||||
|
||||
|
||||
template<class StringType>
|
||||
void MaxSize(StringType & str, size_t max_size)
|
||||
@@ -756,25 +735,23 @@ bool CreateDir(const std::wstring & dir, int priv, int group = -1);
|
||||
bool CreateDirs(const wchar_t * base_dir, const wchar_t * dirs, int priv = 0755, int group = -1, bool skip_last = false);
|
||||
bool CreateDirs(const std::wstring & base_dir, const std::wstring & dirs, int priv = 0755, int group = -1, bool skip_last = false);
|
||||
|
||||
int GetGroupId(const char * name);
|
||||
int GetGroupId(const std::string & name);
|
||||
int GetGroupId(const wchar_t * name);
|
||||
int GetGroupId(const std::wstring & name);
|
||||
|
||||
bool SetPriv(const char * name, int priv, int group = -1);
|
||||
bool SetPriv(const std::string & name, int priv, int group = -1);
|
||||
bool SetPriv(const wchar_t * name, int priv, int group = -1);
|
||||
bool SetPriv(const std::wstring & name, int priv, int group = -1);
|
||||
|
||||
bool CopyFile(FILE * in, FILE * out);
|
||||
bool CopyFile(const wchar_t * src, const wchar_t * dst);
|
||||
bool CopyFile(const wchar_t * src, const wchar_t * dst);
|
||||
bool CopyFile(const std::wstring & src, const std::wstring & dst);
|
||||
|
||||
bool RemoveFile(const wchar_t * file);
|
||||
bool RemoveFile(const std::wstring & file);
|
||||
|
||||
bool RenameFile(const wchar_t * from, const wchar_t * to);
|
||||
bool RenameFile(const wchar_t * from, const wchar_t * to);
|
||||
bool RenameFile(const std::wstring & from, const std::wstring & to);
|
||||
|
||||
bool GetUTF8File(const char * file_path, std::wstring & content, bool clear_content = true);
|
||||
bool GetUTF8File(const wchar_t * file_path, std::wstring & content, bool clear_content = true);
|
||||
bool GetUTF8File(const std::string & file_path, std::wstring & content, bool clear_content = true);
|
||||
bool GetUTF8File(const std::wstring & file_path, std::wstring & content, bool clear_content = true);
|
||||
|
||||
|
||||
@@ -897,6 +874,19 @@ void UrlEncode(const std::wstring & in, std::wstring & out, bool clear_out = tru
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* decoding a URL
|
||||
*
|
||||
* return false is the url is too long (longer than WINIX_URL_MAX_SIZE)
|
||||
* or it cannot be correctly converted from UTF8 to wide characters
|
||||
*
|
||||
*/
|
||||
bool UrlDecode(const char * url, std::wstring & out, bool clear_out = true);
|
||||
bool UrlDecode(const std::string & url, std::wstring & out, bool clear_out = true);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template<typename char_type, size_t stack_size, size_t heap_block_size>
|
||||
void QEncodeAddChar(char_type c, PT::TextStreamBase<char_type, stack_size, heap_block_size> & out)
|
||||
@@ -1076,6 +1066,18 @@ void JSONescape(Stream & out, const StringType & str)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* converting from a wide string to an UTF-8 string
|
||||
* and puts a log if the conversion fails
|
||||
*
|
||||
* it uses PT::WideToUTF8()
|
||||
*/
|
||||
bool WideToUTF8(const wchar_t * wide_string, char * utf8, size_t utf8_size);
|
||||
bool WideToUTF8(const std::wstring & wide_string, char * utf8, size_t utf8_size);
|
||||
|
||||
|
||||
|
||||
} // namespace Winix
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user