/*
 * Copyright (c) 1995, 1996 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Permission to use, copy, modify, and distribute this software
 * and its documentation for NON-COMMERCIAL purposes and without
 * fee is hereby granted provided that this copyright notice
 * appears in all copies. Please refer to the file "copyright.html"
 * for further important copyright and licensing information.
 *
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 */
class Replace {

    public static void Usage() {
        System.out.println("\nUsage:  java Replace char1 char2 inFile outFile");
    }

    public static void main(String args[]) {
        InputFile        in = null;
        OutputFile        out = null;
            char                former = 'A';
            char                latter = 'A';
           byte                buf[];

        try {
               former = args[0].charAt(0);
        } catch (ArrayIndexOutOfBoundsException e) {
            Usage();
            System.err.println("you must supply the character to replace\n");
            System.exit(-1);
        }

        try {
               latter = args[1].charAt(0);
        } catch (ArrayIndexOutOfBoundsException e) {
            Usage();
            System.err.println("you must supply the new character\n");
            System.exit(-1);
        }

        try {
            in = new InputFile(args[2]);
        } catch (ArrayIndexOutOfBoundsException e) {
            Usage();
            System.err.println("you must supply the input replacement file\n");
            System.exit(-1);
        }

        try {
            out = new OutputFile(args[3]);
        } catch (ArrayIndexOutOfBoundsException e) {
            Usage();
            System.err.println("you must supply the output replacement file\n");
            System.exit(-1);
        }

        System.out.println("Replacing "+args[0]+" with "+args[1]+" from "+
                           args[2]+" to "+args[3]);

        if (in.open() == false) {
            System.out.println("Unable to open input file "+in.getFileName());
        }

        if (out.open() == false) {
            System.out.println("Unable to open output file "+out.getFileName());
        }

        buf = new byte[1];
        while (in.read(buf, 1) == 1) {
            if (buf[0] == former)
                buf[0] = (byte)latter;
            if (out.write(buf, 1) != 1) {
                System.out.println("Error writing to "+out.getFileName());
            }
        }
         in.close();
         out.close();
    }
}
