Initial revision
From-SVN: r26263
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
/* Copyright (C) 1999 Cygnus Solutions
|
||||
|
||||
This file is part of libgcj.
|
||||
|
||||
This software is copyrighted work licensed under the terms of the
|
||||
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
||||
details. */
|
||||
|
||||
package gnu.gcj.convert;
|
||||
import java.io.*;
|
||||
|
||||
public class Convert
|
||||
{
|
||||
static void error (String message)
|
||||
{
|
||||
System.err.print("convert: ");
|
||||
System.err.println(message);
|
||||
System.err.println("Usage: convert [--from srcEncoding] [--to dstEncoding]");
|
||||
System.err.println(" [inputfile [outputfile]]");
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
static void missing (String arg)
|
||||
{
|
||||
error("missing arg after `" + arg + "' option");
|
||||
}
|
||||
|
||||
public static void main (String[] args)
|
||||
{
|
||||
String inName = "-";
|
||||
String outName = "-";
|
||||
String inEncodingName = null;
|
||||
String outEncodingName = "JavaSrc";
|
||||
int seenNames = 0;
|
||||
boolean reverse = false;
|
||||
|
||||
for (int i = 0; i < args.length; i++)
|
||||
{
|
||||
String arg = args[i];
|
||||
if (arg.length() == 0)
|
||||
error("zero-length argument");
|
||||
if (arg.charAt(0) == '-')
|
||||
{
|
||||
if (arg.equals("-encoding") || arg.equals("--encoding")
|
||||
|| args.equals("-from") || arg.equals("--from"))
|
||||
{
|
||||
if (++i == args.length) missing(arg);
|
||||
inEncodingName = args[i];
|
||||
}
|
||||
else if (arg.equals("-to") || arg.equals("--to"))
|
||||
{
|
||||
if (++i == args.length) missing(arg);
|
||||
outEncodingName = args[i];
|
||||
}
|
||||
else if (arg.equals("-i"))
|
||||
{
|
||||
if (++i == args.length) missing(arg);
|
||||
inName = args[i];
|
||||
}
|
||||
else if (arg.equals("-o"))
|
||||
{
|
||||
if (++i == args.length) missing(arg);
|
||||
outName = args[i];
|
||||
}
|
||||
else if (arg.equals("-reverse") || arg.equals("--reverse"))
|
||||
{
|
||||
reverse = true;
|
||||
}
|
||||
else if (arg.equals("-"))
|
||||
{
|
||||
switch (seenNames)
|
||||
{
|
||||
case 0:
|
||||
inName = "-";
|
||||
seenNames++;
|
||||
break;
|
||||
case 1:
|
||||
outName = "-";
|
||||
seenNames++;
|
||||
break;
|
||||
default:
|
||||
error("too many `-' arguments");
|
||||
}
|
||||
}
|
||||
else
|
||||
error("unrecognized argument `" + arg + "'");
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (seenNames)
|
||||
{
|
||||
case 0:
|
||||
inName = arg;
|
||||
seenNames++;
|
||||
break;
|
||||
case 1:
|
||||
outName = arg;
|
||||
seenNames++;
|
||||
break;
|
||||
default:
|
||||
error("too many filename arguments");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (reverse)
|
||||
{
|
||||
String tmp = inEncodingName;
|
||||
inEncodingName = outEncodingName;
|
||||
outEncodingName = tmp;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
BytesToUnicode inDecoder
|
||||
= inEncodingName == null ? BytesToUnicode.getDefaultDecoder()
|
||||
: BytesToUnicode.getDecoder(inEncodingName);
|
||||
UnicodeToBytes outEncoder
|
||||
= outEncodingName == null ? UnicodeToBytes.getDefaultEncoder()
|
||||
: UnicodeToBytes.getEncoder(outEncodingName);
|
||||
InputStream inStream = inName == "-" ? System.in
|
||||
: new FileInputStream(inName);
|
||||
OutputStream outStream;
|
||||
if (outName == "-")
|
||||
outStream = System.out;
|
||||
else
|
||||
outStream = new FileOutputStream(outName);
|
||||
InputStreamReader in
|
||||
= new InputStreamReader(inStream, inEncodingName);
|
||||
OutputStreamWriter out
|
||||
= new OutputStreamWriter(outStream, outEncodingName);
|
||||
char[] buffer = new char[2048];
|
||||
for (;;)
|
||||
{
|
||||
int count = in.read(buffer);
|
||||
if (count < 0)
|
||||
break;
|
||||
out.write(buffer, 0, count);
|
||||
}
|
||||
|
||||
in.close();
|
||||
out.close();
|
||||
}
|
||||
catch (java.io.IOException ex)
|
||||
{
|
||||
System.err.print("convert exception: ");
|
||||
System.err.println(ex);
|
||||
System.exit(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user