home *** CD-ROM | disk | FTP | other *** search
- From: jeff@onion.pdx.com (Jeff Beadles)
- Newsgroups: alt.sources
- Subject: casefix Version 1.1
- Message-ID: <1990Dec13.202514.2023@onion.pdx.com>
- Date: 13 Dec 90 20:25:14 GMT
-
-
- Well, there was a bug on some systems with the original version of casefix that
- I posted last week. Some system's don't handle toupper/tolower properly if the
- character is not alpha to be begin with. So, I've changed things like
- ch = tolower(ch) to...
-
- if (isupper(ch))
- ch = tolower(ch);
-
- Also, I've added the provision for '\n\n' to also be considered the end
- of a sentence.
-
- I decided not to post a patch, as the entire source listing is <5k.
-
-
- Have fun, and remember to always post follow-up's to alt.sources.d :-)
-
- -Jeff
-
- #--------------------------------CUT HERE-------------------------------------
- #! /bin/sh
- #
- # This is a shell archive. Save this into a file, edit it
- # and delete all lines above this comment. Then give this
- # file to sh by executing the command "sh file". The files
- # will be extracted into the current directory owned by
- # you with default permissions.
- #
- # The files contained herein are:
- #
- # -rw-r--r-- 1 jeff 601 Dec 13 12:15 README
- # -rw-r--r-- 1 jeff 2549 Dec 13 12:19 casefix.c
- #
- echo 'x - README'
- if test -f README; then echo 'shar: not overwriting README'; else
- sed 's/^X//' << '________This_Is_The_END________' > README
- Xcasefix.c - Copyright 1990, Jeff Beadles. All rights reserved.
- X
- XPermission is granted to copy this at NO charge, as long as the copyright
- Xmessage remains intact.
- X
- XThis program will take all all upper/lower case text, and attempt to convert it
- Xto mixed case. It is not 100% accurate. It doesn't know about things
- Xlike proper nouns. (But what do you expect for free? :-)
- X
- XTo compile: cc -o casefix casefix.c (Simple enough.)
- X
- XTo use: casefix < ifile > ofile
- X
- XHave fun! Feel free to send constructive comments or patches.
- X
- X -Jeff
- X--
- XJeff Beadles jeff@onion.pdx.com (or) uunet!onion.pdx.com!jeff
- ________This_Is_The_END________
- if test `wc -c < README` -ne 601; then
- echo 'shar: README was damaged during transit (should have been 601 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - casefix.c'
- if test -f casefix.c; then echo 'shar: not overwriting casefix.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > casefix.c
- X/*
- X * Submittor: Jeff Beadles jeff@onion.pdx.com
- X * Date: Thu Dec 13 12:11:39 PST 1990
- X * Name: casefix
- X * Version: 1.1
- X * Machine: Unix
- X * Synopsis: Fixes all upper/lower case text into mixed case.
- X * Category: utils
- X */
- X
- X/* casefix.c - Copyright 1990, Jeff Beadles. All rights reserved.
- X * Permission is granted to copy this at NO charge, as long as the copyright
- X * message remains intact.
- X *
- X * This is not 100% accurate. It doesn't know about things like proper nouns.
- X * (But what do you expect for free? :-)
- X *
- X * To compile: cc -o casefix casefix.c (Simple enough.)
- X *
- X * To use: casefix < ifile > ofile
- X *
- X * Have fun! Feel free to send constructive comments or patches to:
- X * jeff@onion.pdx.com (or)
- X * uunet!onion.pdx.com!jeff
- X *
- X * Version 1.1: Fixed a bug on some machines where if you use toupper/tolower
- X * on a non-alpha character, it scrambles it. Grr....
- X * Also, '\n\n' marks the end of a sentence.
- X */
- X
- X#include <stdio.h>
- X#include <ctype.h>
- X
- X/* ARGSUSED */
- Xmain(argc,argv)
- Xint argc;
- Xchar **argv;
- X
- X{
- X int ch; /* Tmp character holder */
- X int lastch; /* Last char displayed */
- X int nextch; /* Next character to be displayed (For I') */
- X int newsent; /* Start of sentence flag */
- X
- X newsent = 1; /* Start file with a new sentence */
- X nextch = lastch = -1; /* Nothing in them yet. */
- X
- X while(1) {
- X /* if readahead buffer is empty, then get another char */
- X if ( nextch == -1) {
- X if ( (ch = getc(stdin)) == EOF )
- X exit(0);
- X } else {
- X ch = nextch;
- X nextch = -1;
- X }
- X /* Default, is to make it lower case. */
- X if(isupper(ch))
- X ch = tolower(ch);
- X
- X /* Cap "(For example...)" */
- X if ( (lastch == '(') && (islower(ch)))
- X ch = toupper(ch);
- X
- X /* Cap "I will, I've */
- X if ( (isspace(lastch)) && (ch == 'i') ) {
- X if ( (nextch = getchar()) == EOF) {
- X putchar(ch);
- X exit(0);
- X }
- X /* Don't ungetc nextch, as it will be used next. */
- X if ((isspace(nextch)) || (nextch == '\'')) {
- X if(islower(ch)) {
- X ch = toupper(ch);
- X }
- X }
- X }
- X
- X /* Cap 1st word of a new sentence. */
- X if ( (newsent) && isalpha(ch)) {
- X newsent = 0;
- X if(islower(ch)) {
- X ch = toupper(ch);
- X }
- X }
- X
- X /* Sentences end with '.', '!', ':', '?', or ';'. or '\n\n' */
- X if ( (ch == '.') || (ch == '!') ||
- X (ch == ':') || (ch == ';') || (ch == '?') ||
- X ( (ch == '\n') && (lastch == '\n')) )
- X newsent = 1;
- X
- X /* Finally, display the character */
- X putchar(ch);
- X lastch = ch;
- X }
- X}
- ________This_Is_The_END________
- if test `wc -c < casefix.c` -ne 2549; then
- echo 'shar: casefix.c was damaged during transit (should have been 2549 bytes)'
- fi
- fi ; : end of overwriting check
- exit 0
-