home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 11 Util
/
11-Util.zip
/
MAWK113.ZIP
/
mawk113
/
msdos
/
examples
/
add_cr.awk
next >
Wrap
Text File
|
1992-12-05
|
2KB
|
94 lines
# add_cr.awk
# converts from Unix (LF only) text files to
# DOS (CRLF) text files
#
# works on both unix and dos
# if used on unix change COPY and DEL in BEGIN section
#
# mawk -f add_cr.awk [files]
# with no files reads stdin writes stdout
# otherwise the original is overwritten
#
# If a file of the form `@file', then arguments are read from
# `file', one per line
#
# To add cr's to the whole distribution
#
# mawk -f doslist.awk packing.lis | mawk "{print $2}" > list
# mawk -f add_cr.awk @list
#
# read arguments for @file into ARGV[]
function reset_argv(T, i, j, flag, file) #all args local
{
for( i = 1 ; i < ARGC ; i++ )
{
T[i] = ARGV[i]
if ( T[i] ~ /^@/ ) flag = 1
}
if ( ! flag ) return
# need to read from a @file into ARGV
j = 1
for( i = 1 ; i < ARGC ; i++ )
{
if ( T[i] !~ /^@/ ) ARGV[j++] = T[i]
else
{
T[i] = substr(T[i],2)
# read arguments from T[i]
while ( (getline file < T[i]) > 0 ) ARGV[j++] = file
}
}
ARGC = j
}
BEGIN {
COPY = "copy" # unix: "cp"
DEL = "del" # unix: "rm"
tmpfile = ENVIRON["MAWKTMPDIR"] "MAWK.TMP"
reset_argv()
}
FILENAME == "-" {
# just write to stdout
printf "%s\r\n" , $0
next
}
FILENAME != filename {
if ( filename )
{
close(tmpfile)
syscmd = sprintf( "%s %s %s", COPY, tmpfile, filename )
system(syscmd)
}
filename = FILENAME
}
{ printf "%s\r\n" , $0 > tmpfile }
END {
if ( filename )
{
close(tmpfile)
syscmd = sprintf( "%s %s %s", COPY, tmpfile, filename )
system(syscmd)
system(DEL " " tmpfile)
}
}