--help Output help.
--version Output version number.
-Report bugs to <bug-gnu-emacs@prep.ai.mit.edu>.'
+Report bugs to <bug-gnu-emacs@gnu.org>.'
-Id='$Id: rcs2log,v 1.36 1997/01/20 09:03:05 eggert Exp eggert $'
+Id='$Id: rcs2log,v 1.44 1998/08/12 14:22:14 eggert Exp eggert $'
-# Copyright 1992, 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+# Copyright 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
-Copyright='Copyright 1997 Free Software Foundation, Inc.
+Copyright='Copyright 1998 Free Software Foundation, Inc.
This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of this program
under the terms of the GNU General Public License.
echo >&2 "$0: -n '$2' '$3' '$4': tabs, newlines not allowed"
exit 1
esac
- loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$2$tab$3$tab$4
+ case $loginFullnameMailaddrs in
+ '') loginFullnameMailaddrs=$2$tab$3$tab$4;;
+ ?*) loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$2$tab$3$tab$4
+ esac
shift; shift; shift;;
-u)
# If $2 is not tab-separated, use colon for separator.
echo >&2 "$0: -u '$2': not enough fields"
exit 1
esac
- loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$2
+ case $loginFullnameMailaddrs in
+ '') loginFullnameMailaddrs=$2;;
+ ?*) loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$2
+ esac
shift
esac
- logins=$logins$nl$login
+ case $logins in
+ '') logins=$login;;
+ ?*) logins=$logins$nl$login
+ esac
;;
- -r) rlog_options=$rlog_options$nl${2?}; shift;;
+ -r)
+ case $rlog_options in
+ '') rlog_options=${2?};;
+ ?*) rlog_options=$rlog_options$nl${2?}
+ esac
+ shift;;
-R) recursive=t;;
-t) tabwidth=${2?}; shift;;
-v) revision=t;;
# Use $rlog's -zLT option, if $rlog supports it.
case `$rlog -zLT 2>&1` in
*' option'*) ;;
-*) rlog_options=-zLT$nl$rlog_options
+*)
+ case $rlog_options in
+ '') rlog_options=-zLT;;
+ ?*) rlog_options=-zLT$nl$rlog_options
+ esac
esac
# With no arguments, examine all files under the RCS directory.
case $file in
RCS/. | RCS/.. | RCS/,*, | RCS/*_) continue;;
RCS/.rcsfreeze.log | RCS/.rcsfreeze.ver) continue;;
- RCS/.\* | RCS/\* | .\*,v | \*,v) test -f "$file" || continue
+ RCS/.\* | RCS/\* | .\*,v | \*,v) test -f "$file" || continue;;
+ RCS/*,v | RCS/.*,v) ;;
+ RCS/* | RCS/.*) test -f "$file" || continue
+ esac
+ case $files in
+ '') files=$file;;
+ ?*) files=$files$nl$file
esac
- files=$files$nl$file
done
case $files in
'') exit 0
'
initialize_fullname=`
- (
- cat /etc/passwd
- for author in $authors
- do nismatch $author passwd.org_dir
- done
- ypmatch $authors passwd
- ) 2>/dev/null |
+ {
+ (getent passwd $authors) ||
+ (
+ cat /etc/passwd
+ for author in $authors
+ do NIS_PATH= nismatch $author passwd.org_dir
+ done
+ ypmatch $authors passwd
+ )
+ } 2>/dev/null |
$AWK -F: "$awkscript"
`$initialize_fullname
esac
# Function to print a single log line.
# We don't use awk functions, to stay compatible with old awk versions.
-# `Log' is the log message (with \n replaced by \r).
+# `Log' is the log message (with \n replaced by \001).
# `files' contains the affected files.
printlogline='{
# If "label: comment" is too long, break the line after the ":".
sep = " "
- if ('"$length"' <= '"$indent"' + 1 + length(files) + index(Log, CR)) sep = "\n" indent_string
+ if ('"$length"' <= '"$indent"' + 1 + length(files) + index(Log, SOH)) sep = "\n" indent_string
# Print the label.
printf "%s*%s:", indent_string, files
- # Print each line of the log, transliterating \r to \n.
- while ((i = index(Log, CR)) != 0) {
+ # Print each line of the log, transliterating \001 to \n.
+ while ((i = index(Log, SOH)) != 0) {
logline = substr(Log, 1, i-1)
if (logline ~ /[^'"$tab"' ]/) {
printf "%s%s\n", sep, logline
# Process the rlog output, generating ChangeLog style entries.
# First, reformat the rlog output so that each line contains one log entry.
-# Transliterate \n to \r so that multiline entries fit on a single line.
+# Transliterate \n to \001 so that multiline entries fit on a single line.
# Discard irrelevant rlog output.
$AWK <$rlogout '
BEGIN { repository = "'"$repository"'" }
}
/^Working file:/ { if (repository == "") filename = $3 }
/'"$rlog_revision_pattern"'/, /^(-----------*|===========*)$/ {
- if ($0 ~ /'"$rlog_revision_pattern"'/) {
+ line = $0
+ if (line ~ /'"$rlog_revision_pattern"'/) {
rev = $2
next
}
- if ($0 ~ /^date: [0-9][- +\/0-9:]*;/) {
+ if (line ~ /^date: [0-9][- +\/0-9:]*;/) {
date = $2
if (date ~ /\//) {
# This is a traditional RCS format date YYYY/MM/DD.
}
time = substr($3, 1, length($3) - 1)
author = substr($5, 1, length($5)-1)
- printf "%s %s %s %s %s %c", filename, rev, date, time, author, 13
+ printf "%s %s %s %s %s %c", filename, rev, date, time, author, 1
rev = "?"
next
}
- if ($0 ~ /^branches: /) { next }
- if ($0 ~ /^(-----------*|===========*)$/) { print ""; next }
- if ($0 == "Initial revision" || $0 ~ /^file .+ was initially added on branch .+\.$/) {
- $0 = "New file."
- }
- printf "%s%c", $0, 13
+ if (line ~ /^branches: /) { next }
+ if (line ~ /^(-----------*|===========*)$/) { print ""; next }
+ if (line == "Initial revision" || line ~ /^file .+ was initially added on branch .+\.$/) {
+ line = "New file."
+ }
+ printf "%s%c", line, 1
}
' |
# Now each line is of the form
-# FILENAME REVISION YYYY-MM-DD HH:MM:SS[+-TIMEZONE] AUTHOR \rLOG
-# where \r stands for a carriage return,
-# and each line of the log is terminated by \r instead of \n.
+# FILENAME REVISION YYYY-MM-DD HH:MM:SS[+-TIMEZONE] AUTHOR \001LOG
+# where \001 stands for a carriage return,
+# and each line of the log is terminated by \001 instead of \n.
# Sort the log entries, first by date+time (in reverse order),
# then by author, then by log entry, and finally by file name and revision
# (just in case).
logTZ = "'"$logTZ"'"
revision = "'"$revision"'"
- # Some awk variants do not understand "\r" or "\013", so we have to
- # put a carriage return directly in the file.
- CR="\r" # <-- There is a single CR between the " chars here.
+ # Some awk variants do not understand "\001", so we have to
+ # put the char directly in the file.
+ SOH="\ 1" # <-- There is a single SOH (octal code 001) here.
# Initialize the fullname and mailaddr associative arrays.
'"$initialize_fullname"'
}
{
- newlog = substr($0, 1 + index($0, CR))
+ newlog = substr($0, 1 + index($0, SOH))
# Ignore log entries prefixed by "#".
if (newlog ~ /^#/) { next }