summaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2020-05-13 13:01:48 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2020-05-13 13:01:48 +0300
commit5345c4c9f6311fa5dc27565a3b26bc5f91d92d7f (patch)
tree33f8494dc28c9e117cd40a0c1b7b133835450dfe /main.cpp
parent76076f53d567580240037137ba734c56a38d8698 (diff)
fixed few possible bugsiconv_file_converter
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp96
1 files changed, 0 insertions, 96 deletions
diff --git a/main.cpp b/main.cpp
deleted file mode 100644
index 3d149d9..0000000
--- a/main.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright © 2010-2012 sss
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-
-#include <unistd.h>
-#include <stdio.h>
-#include <iconv.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-
-int main(int argc, char **argv)
-{
- int opt = -1;
- char ifile[256], ofile[256], fcharset[32], tcharset[32];
- ifile[0] = 0;
- ofile[0] = 0;
- fcharset[0] = 0;
- tcharset[0] = 0;
- while((opt = getopt(argc, argv, "i:o:f:t:")) != -1)
- {
- switch(opt)
- {
- case 'i':
- strcpy(ifile, optarg);
- break;
- case 'o':
- strcpy(ofile, optarg);
- break;
- case 'f':
- strcpy(fcharset, optarg);
- break;
- case 't':
- strcpy(tcharset, optarg);
- break;
- default:
- printf("usage: %s -ioft\n\t-i input file\n\t-o output file\n\t-f from charset\n\t-t to charset\n", argv[0]);
- }
- }
- iconv_t id = iconv_open(tcharset, fcharset);
- if((long)id == -1)
- {
- printf("failed to create iconv descriptor with error: %s\n", strerror(errno));
- return 1;
- }
- FILE *in = fopen(ifile, "r");
- if(!in)
- {
- printf("failed to open input file with error: %s\n", strerror(errno));
- return 1;
- }
- FILE *out = fopen(ofile, "w");
- if(!out)
- {
- printf("failed to open input file with error: %s\n", strerror(errno));
- return 1;
- }
- while(!feof(in))
- {
- char *buf = (char*)malloc(4096), *outbuf = (char*)malloc(4096), *op, *ip;
- op = outbuf;
- ip = buf;
- if(!fgets(buf, 4096, in))
- break;
- size_t len = strlen(buf), outlen = 4096;
- int enc_len = iconv(id, &ip, &len, &op, &outlen);
- if(enc_len == -1)
- {
- printf("failed to convert buffer with error: %s\n", strerror(errno));
- return 1;
- }
- enc_len = 4096 - outlen;
- if((int)fwrite(outbuf, 1, enc_len, out) != enc_len)
- {
- printf("failed to write data to file with error: %s\n", strerror(errno));
- return 1;
- }
- free(buf);
- free(outbuf);
- }
- return 0;
-}