Help with rot13 code

Joseph Hillenburg jph at ais.org
Thu Jan 24 16:09:54 AEST 1991


In article <mHR9V3w163w at phoenix.com> stanley at phoenix.com (John Stanley) writes:
>
>
>    Thank you to all those nice people who have been sending me
>the fixes for the rot13 code that broke when ported to UNIX.
>
>    However, I AM NOT THE ONE WHO MADE THE REQUEST FOR HELP! I replied
>to the request by including the error output from my compiler and
>telling the requestor to look at the errors and see if they ring any
>bells. 

I was the one who posted. Thanks to all of you, I now have a working
program which has been almost entirely redone, except for the rot13
core.

>
>    You may all stop sending me the fixes. I have written my own,
>perfectly functional rot13 filter. Though it is not as short as that
>posted recently, is works just fine. 
>
>    Frr, vg jbexf svar.
>
><><><><><>-------------------- Stanley at Phoenix.com
>"When is it ever going to cease to suck around here?" - Leland McKenzie
>	   of McKenzie, Brachman, Chaney, Cuzak, and Becker.
>

   //   Joseph Hillenburg, Secretary, Bloomington Amiga Users Group
 \X/  joseph at valnet.UUCP     jph at irie.ais.org          jph at ai.mit.edu
       "Only Apple could slow down a 68030 chip" --Computer Shopper

/* remember to remove the .signature off the end of this */

/*
**
** rot13
**     rot13 is a program to convert text to rot13 format for UseNet, most
**     generally for rec.humor, and the alt.sex.* groups.
**
** Feel free to make any mods, but please mail them to the people who have
** already worked on this.
**
** History:
**
** 11-21-90
**   Scott Berry (fxsdb at acad3.alaska.edu)
**     Created.
**
** 11-23-90
**   Scott Berry (fxsdb at acad3.alaska.edu)
**     Misc enhancements.
**
** 01-16-91
**   Joseph Hillenburg (jph at ais.org)
**     Ported to UNIX, now dynamically knows it's name.
**
** 01-20-91
**   Joseph Hillenburg (jph at ais.org)
**     Gradually trying to move towards proper C syntax. :)
**
** 01-21-91
**   Joseph Hillenburg (jph at ais.org)
**     Cleaning up code, adding a real version number.
**
** 01-21-91
**   Earl Chew (cechew at bruce.cs.monash.oz.au)
**     Misc enhancements.
**
**  Thanks to:
**    Scott Berry                          (fxsdb at acad3.alaska.edu)
**    Joseph Hillenburg                    (jph at ais.org)
**    Earl Chew                            (cechew at bruce.cs.monash.oz.au)
**    Jayanth N. Anantharaman              (jayanth at ee.eng.ohio-state.edu)
**    All the dudes at comp.lang.c
**
*/

#include <ctype.h>
#include <stdio.h>

/*
** This is either "UNIX" or "VMS". "UNIX" should work for AmigaDOS and MS-DOS.
** Right now, this is only being used to hide ugly VMS full-length filenames.
*/

#define UNIX

int main(argc,argv)
char *argv[];
int argc;
{
   int ch;
   FILE *infile,*outfile;

/*
** Version goes here.
*/

   char *version = "1.01j";

/*
** These #ifdefs are to handle ugly full VMS filenames.
*/

#ifndef VMS
   char *progname = "ROT13";
#else
   char *progname = argv[0];
#endif

/*
** Kick out if there are more than 2 arguments or less than 1
*/

     if((argc < 2) || (argc >3))
       {
          fprintf(stderr,"%s %s by Scott Berry and Joseph Hillenburg.\n",progname,version);
          fprintf(stderr,"Usage: %s <infile> [outfile]\n",progname);
          exit(1);
	}
     if(( infile = fopen(argv[1], "r")) == ( FILE * ) NULL )
       {
          fprintf(stderr,"%s: Input file, %s, not found.\n",progname,argv[1]);
          exit(1);
	}

/*
** if there is an output file, open it
*/
     if((outfile = (argc == 3 ? fopen(argv[2],"w") : stdout))
         == ( FILE * ) NULL )
       {
          fprintf(stderr,"%s: Could not open output file, %s.\n",progname,argv[2]);
          exit(1);
	}

/*
** get characters, while there still are characters to get, from the file and 
** print them out (to file or screen)
*/

   while ((ch=fgetc(infile)) != EOF)
   {

/*
** since we're ROTing 13, we're moving up 13 if it's characters a-m, and down 
** 13 if it's characters n-z. 
*/

          if (isupper(ch))
               ch = (ch>'M'?ch-13:ch+13);
          if (islower(ch))
               ch = (ch>'m'?ch-13:ch+13);
          fputc((ch), outfile);
	}
     fclose(infile);
     if (argc == 3)
          fclose (outfile);
     exit(0);
 }


-- 
   //   Joseph Hillenburg, Secretary, Bloomington Amiga Users Group
 \X/  joseph at valnet.UUCP     jph at irie.ais.org          jph at ai.mit.edu
       "Only Apple could slow down a 68030 chip" --Computer Shopper



More information about the Comp.lang.c mailing list