Use valid ctype range now.

Includes cleanup
Misc. cleanup
Use absolute path in rot13 wrapper.
This commit is contained in:
Andrey A. Chernov 1996-05-27 08:50:53 +00:00
parent 6859875c81
commit 36f5cb505d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=15929
4 changed files with 24 additions and 16 deletions

View File

@ -6,6 +6,8 @@ DPADD= ${LIBM}
LDADD= -lm
MLINKS= caesar.6 rot13.6
CFLAGS+= -Wall
beforeinstall:
${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
${.CURDIR}/rot13.sh ${DESTDIR}/usr/games/rot13

View File

@ -49,7 +49,7 @@ statistics.
reads from the standard input and writes to the standard output.
.Pp
The optional numerical argument
Ar rotation
.Ar rotation
may be used to specify a specific rotation value.
.Pp
The frequency (from most common to least) of English letters is as follows:

View File

@ -40,24 +40,28 @@
*/
#ifndef lint
static char copyright[] =
static const char copyright[] =
"@(#) Copyright (c) 1989, 1993\n\
The Regents of the University of California. All rights reserved.\n";
#endif /* not lint */
#ifndef lint
static char sccsid[] = "@(#)caesar.c 8.1 (Berkeley) 5/31/93";
static const char sccsid[] = "@(#)caesar.c 8.1 (Berkeley) 5/31/93";
#endif /* not lint */
#include <errno.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#define LINELENGTH 2048
#define ROTATE(ch, perm) \
isascii(ch) ? ( \
isupper(ch) ? ('A' + (ch - 'A' + perm) % 26) : \
islower(ch) ? ('a' + (ch - 'a' + perm) % 26) : ch
islower(ch) ? ('a' + (ch - 'a' + perm) % 26) : ch) : ch
/*
* letter frequencies (taken from some unix(tm) documentation)
@ -69,15 +73,15 @@ double stdf[26] = {
2.62, 0.81, 1.88, 0.23, 2.07, 0.06,
};
main(argc, argv)
void printit();
void main(argc, argv)
int argc;
char **argv;
{
extern int errno;
register int ch, dot, i, nread, winnerdot;
register int ch, dot, i, nread, winnerdot = 0;
register char *inbuf;
int obs[26], try, winner;
char *malloc(), *strerror();
if (argc > 1)
printit(argv[1]);
@ -99,11 +103,13 @@ main(argc, argv)
exit(1);
}
for (i = nread; i--;) {
ch = inbuf[i];
if (islower(ch))
++obs[ch - 'a'];
else if (isupper(ch))
++obs[ch - 'A'];
ch = (unsigned char) inbuf[i];
if (isascii(ch)) {
if (islower(ch))
++obs[ch - 'a'];
else if (isupper(ch))
++obs[ch - 'A'];
}
}
/*
@ -126,7 +132,7 @@ main(argc, argv)
for (;;) {
for (i = 0; i < nread; ++i) {
ch = inbuf[i];
ch = (unsigned char) inbuf[i];
putchar(ROTATE(ch, winner));
}
if (nread < LINELENGTH)
@ -139,7 +145,7 @@ main(argc, argv)
exit(0);
}
printit(arg)
void printit(arg)
char *arg;
{
register int ch, rot;

View File

@ -34,4 +34,4 @@
# @(#)rot13.sh 8.1 (Berkeley) 5/31/93
#
caesar 13 $*
/usr/games/caesar 13 $*