/*************************************************************************
 ***                            TOA.C                    (JJB TEMPLAR) ***
 *** Date begun: 24/5/89.                                              ***
 *** Last modified: 24/5/89.                                           ***
 *************************************************************************/
/*** This is a newer verion of my old toascii program. Functionally    ***
 *** similar but structurally different.                               ***
 *************************************************************************/

#include <stdio.h>
#include <string.h>

#define charOK(x)   ((x > 31) && (x < 123))

void    main(argc,argv) /*===============================================*/
int     argc;
char    *argv[];
{
FILE    *fp;
int     len,width = 76;
char    line[128],*fname = NULL;
register int    j;
register char   *cp;
    if (argc < 2) exit(0);     /* Exit if from WB or no args */
    while (--argc > 0) {
        switch (argv[argc][0]) {
            case ('?'): printf("Toa - 24/5/89 - JJB TEMPLAR - a toascii program.\n");
                        printf("USAGE: %s [-w{num}] {file}\n",argv[0]);
                        printf("    where num = output line width (def:76).\n");
                        printf("          file = input filename.\n");
                        printf("NOTE:  [] = optional, <> = 1 or more, {} = mandatory.\n");
                        exit(0);
            case ('-'): if (argv[argc][1] == 'w') {
                            sscanf(&(argv[argc][2]),"%d",&width);
                            break;
                        }
            default:    fname = argv[argc];
        }
    }
    if (!fname) exit(0);                    /* No file */
    width = (width < 127) ? width : 127;    /* Max width is 127 */

    if (!(fp = fopen(fname,"rb"))) {
        printf("ERROR: failed to open file %s !\n",argv[1]);
        exit(0);
    }
    while (!feof(fp)) {
        len = fread(line,1,width,fp);
        if ((len <= 0) || (len > width)) continue;
        line[len] = 0;  cp = line;
        for (j = 0; j < len; j++,cp++) if (!charOK(*cp)) *cp = '.';
        puts(line);
    }
    fclose(fp);
    exit(0);
}
