{--------------------------------------------------------}
{
{     Realiza uuencode ou uudecode de um arquivo
{
{     Autor: Jos‚ Antonio Borges
{
{     Em Abril/95
{
{     Baseado no programa Simtel de Toad Hall
{
{--------------------------------------------------------}

{$M 16000, 8000}
program uuvox;
uses dvWin, dvCrt, uuenc;
const
    OK = 0;
    NOT_FOUND = 1;
    READ_ERROR = 2;
    WRITE_ERROR = 3;
    INVALID_FORMAT = 4;
    INCOMPL_FILE = 5;


{--------------------------------------------------------}
{                    inicializa‡„o
{--------------------------------------------------------}

procedure inicializa;
begin
    sintInic (2, sintambiente ('DISCAVOX', 'DIRDISCAVOX'));
end;

{--------------------------------------------------------}
{                      finaliza‡„o
{--------------------------------------------------------}

procedure finaliza;
begin
    sintFim;
end;

{--------------------------------------------------------}
{             controle geral do processamento
{--------------------------------------------------------}

procedure processa;
var 
    processando: boolean;
    c: char;
    result: integer;
    nomearq, narqout, s: string;
    arq: file;

begin
    writeln;
    sintWriteln ('Conversor de transmissor UNIX');
    writeln;
    sintWrite ('Qual o nome do arquivo: ');
    sintReadln (nomearq);
    if nomearq = '' then
        exit;

    assign (arq, nomearq);
    {$I-} reset (arq);  {$I+}
    if ioresult <> 0 then
        begin
            sintWriteln ('Arquivo inexistente');
            sintWriteln ('Programa cancelado');
            sintFim;
            halt;
        end;

    close (arq);

    repeat
        sintWrite ('Tecle C para codificar D para decodificar  ');
        c := sintReadkey;
        writeln (c);
        c := upcase (c);
        delay (500);
        while keypressed do readkey;

        case upcase(c) of
            'C': begin
                     sintWrite ('Qual o nome do arquivo de saida: ');
                     sintReadln (narqout);
                     if narqout = '' then
                         exit;

                     result := uuencode (nomearq, narqout);
                 end;

            'D': result := uudecode (nomearq);
        end;

    until c in ['C', 'D'];

    sintWriteln ('OK convertido');
end;

begin
    inicializa;
    processa;
    finaliza;
    doneWinCrt;
end.
