#! /bin/sh # Newsgroups: comp.binaries.apple2 # Path: news.uiowa.edu!uunet!europa.eng.gtefsd.com!howland.reston.ans.net!math.ohio-state.edu!news.cyberstore.ca!nntp.cs.ubc.ca!unixg.ubc.ca!acs.ucalgary.ca!sbdocker # From: sbdocker@acs.ucalgary.ca (Sean Brendan Dockery) # Subject: UNIX based text conversion script (atou) bug fixes # Message-ID: # Date: Sun, 5 Dec 1993 03:55:44 GMT # References: # Organization: Griffin Software Development # Lines: 201 # # I recently posted this, but after working with some IBM formatted # files, I found that mtou and mtoa were replacing the CR/LF sequence # with a LR/apostrophe and CR/apostrophe sequences, respectively. # # The only fix which I could come up with is to replace the CR/LF # sequence with a /LF and /CR instead. Unfortunately, # this will have the side effect of making lines in your file one # character longer each time you convert the file back to an IBM text # file. # # Another bug that pops up ever once in a while is that the script exits # with error status of 1. All the files are handled properly, so I # haven't been able to hunt down that bug yet, although I'm inclined to # ignore it as it doesn't seem to be pathogenic. :-) # # Repost (with bugs fixes) begins... # ======================================================================== # This script automates a couple conversion for text file owners. # # -it will mask bit 7 of all bytes in a file # -it will convert newline characters between the following systems: # apple to unix, unix to apple, apple to ms-dos, ms-dos to apple, unix # to ms-dos, and ms-dos to unix. # # It requires a copy of basename, find, mv, sh, and tr on your system. # # Place this in your private bin directory under the name atou. # ------------------------------------------------------------------------ ######################################################################## # atou (convert apple to unix) # Version: 1.0.1 # Copyright (C) 1993 by Sean Dockery. # # History: # 93.12.04: Correction of mtou and mtoa conversion bug. # 93.11.22: Inception of the script. # # Description: # This script will convert the following files when invoked with a given # command name: # # atou: Apple newlines to UNIX newlines # utoa: UNIX newlines to Apple newlines # atom: Apple newlines to MS-DOS newlines # mtoa: MS-DOS newlines to Apple newlines # utom: UNIX newlines to MS-DOS newlines # mtou: MS-DOS newlines to UNIX newlines # maketext: binary characters to text characters # # Installation: # You require the following commands to be present on your UNIX # system to use this script: # -basename # -find # -mv # -sh # -tr # # Install this script in your own $HOME/bin directory--make sure that # $HOME/bin is part of your $PATH variable (preferably located early # in the $PATH priority,) under the name 'atou'. Create soft links # to this script by using the 'ln' command. # # Example: # $ ln -s atou utoa # # Do this for all of the above named commands (utoa, atom, etc ...) # If your UNIX system does not have a link command, use 'cp' instead. # # Syntax: # $ atou [-v] [-c] # or # $ cat foo | atou [-v] - # # Primary Options: # -v: Give terse diagnostic output. # default: Normally no diagnostic output is given. # # Secondary Options: # -: Input will be taken from stdin and output directed to stdout. # No files may be declared when this option is used. # -c: Input will be taken from files and output directed to stdout. # Files must also be declared with this option. # # Bugs and Limitations: # This script will reset the file permissions of the file(s) that it # acts upon to the user's umask value. # # This script also has no way to know if a file that it is dealing with # is binary in nature; such files will always be corrupted as a result. # ######################################################################## # Determine the base command name. command=`basename $0` # Determine (based on the command name) which type of conversion that # we will be undertaking. case $command in atou) # Apple to UNIX oct1='\015' oct2='\012' ;; utoa) # UNIX to Apple oct1='\012' oct2='\015' ;; atom) # Apple to MS-DOS oct1='\015' oct2='\015\012' ;; mtoa) # MS-DOS to Apple oct1='\015\012' oct2=' \015' ;; utom) # UNIX to MS-DOS oct1='\012' oct2='\015\012' ;; mtou) # MS-DOS to UNIX oct1='\015\012' oct2=' \012' ;; maketext) # binary to text oct1='[\201-\377]' oct2='[\001-\177]' ;; *) # unknown echo "$command: unknown function \"$command\"" exit 1 ;; esac # Determine if we are to be quiet or loud. verbose=0 case $1 in -v) # verbose mode verbose=1 shift ;; esac # Determine if we are in stdin, stdout, or file mode. if ( [ $# -ne 0 ] && [ $1 = '-c' ] ) then stdin=0 stdout=1 shift elif ( [ $# -ne 0 ] && [ $1 = '-' ] ) then stdin=1 stdout=1 shift else stdin=0 stdout=0 fi # Make sure we have the correct number of arguements for the mode we are in. if ( [ $stdin -eq 1 ] && [ $# -gt 0 ] ) || ( [ $stdin -eq 0 ] && [ $# -eq 0 ] ) then echo "usage: $command [-v] [-c] , or cat | $command [-v] -" exit 1 fi if [ $stdin -eq 0 ] then for file in $* do if [ `find . -name $file -print` ] then if [ -f $file ] then if [ $stdout -eq 0 ] then mv $file "$command_$$" [ $verbose -eq 1 ] && echo -n "$command: $file..." tr "$oct1" "$oct2" < "$command_$$" > $file rm "$command_$$" [ $verbose -eq 1 ] && echo "done." else tr "$oct1" "$oct2" < $file fi else [ $verbose -eq 1 ] && echo "$command: $file is a directory." fi else [ $verbose -eq 1 ] && echo "$command: $file does not exist." fi done else tr "$oct1" "$oct2" fi ------------------------------------------------------------------------ -- Sean Dockery dockery@griffin.cuc.ab.ca (preferred) sbdocker@acs.ucalgary.ca (pending expiration)