Re: [netatalk-admins] PhotoShop printing garbage


Subject: Re: [netatalk-admins] PhotoShop printing garbage
From: Brian Bothwell (brbothwe@cs.indiana.edu)
Date: Sun May 31 1998 - 16:23:25 EDT


On Thu, 28 May 1998, Antoine Reid wrote:

> On Fri, 15 May 1998, Brian Bothwell wrote:
>
> > Yup. Got the filter installed now, and all seems to be working fine.
> >
> > Thanx,
> >
> > -brian
> >
> >
> > PS If anyone else need the filter source code, email me.
>
> I think it could be of some use for many netatalk users... could you post
> the source in the netatalk mailing list please? It especially will be
> good if it goes into the archives...
>
> TIA
> tonio
>

Here it is. Thanx to Andras Kadinger <bandit@freeside.elte.hu> for
orginally sending this to me, and Michael Hojnowski
<mqh@mqh.cit.cornell.edu> for the original posting w/ the code (the source
come from Lexmark tech support)

-brian

--------------------------snip here-------------------------------

/*
   bin2tbcp.c - Convert file to Tagged Binary Communications Protocol.
*/

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

void main(argc,argv)
int argc;
char *argv[];
{
        FILE *infp,*outfp;
        long CH;
        char inputfile[80],outputfile[80];

        if (argc == 3) {
            strcpy(inputfile, argv[1]);
            strcpy(outputfile, argv[2]);
            if ( (infp = fopen(inputfile,"r")) == NULL ) {
                printf("\nERROR : Unable to open input file: %s\n",inputfile);
                exit(1);
            }
            if ( (outfp = fopen(outputfile,"w")) == NULL ) {
                printf("\nERROR : Unable to open output file: %s\n",outputfile);
                exit(1);
            }
        }
        else if (argc == 2) {
            strcpy(inputfile, argv[1]);
            outfp = stdout;
            if ( (infp = fopen(inputfile,"r")) == NULL ) {
                printf("\nERROR : Unable to open input file: %s\n",inputfile);
                exit(1);
            }
        }
        else {
            infp=stdin;
            outfp=stdout;
        }

        fprintf(outfp,"%cM",(unsigned char)(0x01));
        while ((CH = fgetc(infp)) != EOF) {
            switch (CH) {
            case (unsigned char) 0x01: /* ^A */
            case (unsigned char) 0x03: /* ^C */
            case (unsigned char) 0x04: /* ^D */
            case (unsigned char) 0x05: /* ^E */
            case (unsigned char) 0x11: /* ^Q */
            case (unsigned char) 0x13: /* ^S */
            case (unsigned char) 0x14: /* ^T */
            case (unsigned char) 0x1c: /* ^\ */
            case (unsigned char) 0x1b: /* ^[ */
                fputc((unsigned char) 0x01,outfp);
                fputc((unsigned char)(CH ^ 0x40),outfp);
                break;
            default:
                fputc(CH,outfp);
            }

        }

        fprintf(outfp,"%c%%-12345X",(unsigned char)(0x1b));
        fclose(outfp);
        fclose(infp);
    }

---------------------------------------end-------------------------------



This archive was generated by hypermail 2b28 : Sat Dec 18 1999 - 16:32:46 EST