mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-14 00:40:55 +08:00
9697f95b8f
This reverts commit 15d999759e
.
97 lines
1.9 KiB
C++
97 lines
1.9 KiB
C++
#include "stdafx.h"
|
|
#include "charset_transfer.h"
|
|
|
|
static void usage(const char* procname)
|
|
{
|
|
printf("usage: %s -h [help]\r\n"
|
|
" -f from_charset\r\n"
|
|
" -t to_charset\r\n"
|
|
" -b [when to_charset is utf-8 if BOM header be added]\r\n"
|
|
" -s source_dir\r\n"
|
|
" -d destination_dir\r\n"
|
|
" -c [just check charset only]\r\n",
|
|
procname);
|
|
}
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
int ch;
|
|
acl::string from_charset, to_charset, from_dir, to_dir;
|
|
bool use_bom = false, check_only = false;;
|
|
|
|
while ((ch = getopt(argc, argv, "hf:t:bs:d:c")) > 0)
|
|
{
|
|
switch (ch)
|
|
{
|
|
case 'h':
|
|
usage(argv[0]);
|
|
return 0;
|
|
case 'f':
|
|
from_charset = optarg;
|
|
break;
|
|
case 't':
|
|
to_charset = optarg;
|
|
break;
|
|
case 'b':
|
|
use_bom = true;
|
|
break;
|
|
case 's':
|
|
from_dir = optarg;
|
|
break;
|
|
case 'd':
|
|
to_dir = optarg;
|
|
break;
|
|
case 'c':
|
|
check_only = true;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
acl::log::stdout_open(true);
|
|
|
|
if (check_only)
|
|
{
|
|
if (from_dir.empty() || from_charset.empty())
|
|
{
|
|
printf("from_charset or from_dir not set\r\n");
|
|
return 1;
|
|
}
|
|
|
|
int n = charset_transfer::check_path(from_dir, from_charset);
|
|
|
|
printf("check over: %d, charset: %s\r\n",
|
|
n, from_charset.c_str());
|
|
return 0;
|
|
}
|
|
|
|
if (from_charset.empty() || to_charset.empty()
|
|
|| from_dir.empty() || to_dir.empty())
|
|
{
|
|
usage(argv[0]);
|
|
return 0;
|
|
}
|
|
|
|
if (chdir(from_dir.c_str()) == -1)
|
|
{
|
|
logger_error("chdir to %s error %s", from_dir.c_str(),
|
|
acl::last_serror());
|
|
return -1;
|
|
}
|
|
|
|
charset_transfer transfer;
|
|
transfer.set_from_charset(from_charset)
|
|
.set_to_charset(to_charset)
|
|
.set_from_path(".")
|
|
.set_to_path(to_dir)
|
|
.set_utf8bom(use_bom);
|
|
|
|
int n = transfer.transfer();
|
|
printf("transfer over: %d, from_charset: %s, to_charset: %s,"
|
|
" from_path: %s, to_path: %s\r\n", n, from_charset.c_str(),
|
|
to_charset.c_str(), from_dir.c_str(), to_dir.c_str());
|
|
|
|
return 0;
|
|
}
|