# HG changeset patch # User Paul Eggert # Date 795764262 0 # Node ID 554c86f77db0920f293d6fbeca023681aabff04b # Parent c5fbb6f272f220040ee77add7d47f84cc68570a7 Add -u "loginfullnamemailaddr" option, which replaces the (now obsolescent) -n login fullname mailaddr option. Don't omit path from repository root when logging CVS files. Add -R option for recursive rlog. (AWK): New environment variable (default `awk') for name of awk program. (output_authors, tab, loginFullnameMailaddrs, recursive): New variables. Quote authors and fullnames correctly. diff -r c5fbb6f272f2 -r 554c86f77db0 lib-src/=rcs2log --- a/lib-src/=rcs2log Tue Mar 21 05:14:38 1995 +0000 +++ b/lib-src/=rcs2log Tue Mar 21 05:37:42 1995 +0000 @@ -12,9 +12,9 @@ # Author: Paul Eggert -# $Id: rcs2log,v 1.17 1994/08/09 20:43:48 rms Exp eggert $ +# $Id: rcs2log,v 1.19 1995/03/21 05:11:06 eggert Exp $ -# Copyright 1992, 1993 Free Software Foundation, Inc. +# Copyright 1992, 1993, 1994, 1995 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 @@ -30,51 +30,69 @@ # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +tab=' ' nl=' ' # Parse options. # defaults +: ${AWK=awk} : ${TMPDIR=/tmp} hostname= # name of local host (if empty, will deduce it later) indent=8 # indent of log line -initialize_fullname= # awk assignments to set up fullname array -initialize_mailaddr= # awk assignments to set up mailaddr array length=79 # suggested max width of log line logins= # login names for people we know fullnames and mailaddresses of -loginsout= # temporary file holding sorted logins +loginFullnameMailaddrs= # loginfullnamemailaddr triplets +recursive= # t if we want recursive rlog rlog_options= # options to pass to rlog tabwidth=8 # width of horizontal tab while : do case $1 in - -i) indent=${2?};; - -h) hostname=${2?};; - -l) length=${2?};; - -n) logins=$logins$nl${2?} - loginsout=$TMPDIR/rcs2log$$l - case $2${3?}${4?} in - *\"* | *\\* | *"$nl"*) - echo >&2 "$0: -n '$2' '$3' '$4': special characters not allowed" - exit 1 + -i) indent=${2?}; shift;; + -h) hostname=${2?}; shift;; + -l) length=${2?}; shift;; + -[nu]) # -n is obsolescent; it is replaced by -u. + case $1 in + -n) case ${2?}${3?}${4?} in + *"$tab"* | *"$nl"*) + echo >&2 "$0: -n '$2' '$3' '$4': tabs, newlines not allowed" + exit 1 + esac + loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$2$tab$3$tab$4 + shift; shift; shift;; + -u) + case ${2?} in + *"$nl"*) + echo >&2 "$0: -u '$2': newlines not allowed" + exit 1;; + *"$tab"*"$tab"*"$tab"*) + echo >&2 "$0: -u '$2': too many fields" + exit 1;; + *"$tab"*"$tab"*) + ;; + *) + echo >&2 "$0: -u '$2': not enough fields" + exit 1 + esac + loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$2 + shift esac - initialize_fullname="$initialize_fullname - fullname[\"$2\"] = \"$3\"" - initialize_mailaddr="$initialize_mailaddr - mailaddr[\"$2\"] = \"$4\"" - shift; shift;; - -r) rlog_options=$rlog_options$nl${2?};; - -t) tabwidth=${2?};; + logins=$logins$nl$login + ;; + -r) rlog_options=$rlog_options$nl${2?}; shift;; + -R) recursive=t;; + -t) tabwidth=${2?}; shift;; -*) echo >&2 "$0: usage: $0 [options] [file ...] Options: - [-h hostname] [-i indent] [-l length] [-n login fullname mailaddr]... - [-r rlog_option]... [-t tabwidth]" + [-h hostname] [-i indent] [-l length] [-R] [-r rlog_option] + [-t tabwidth] [-u 'loginfullnamemailaddr']..." exit 1;; *) break esac - shift; shift + shift done month_data=' @@ -133,7 +151,7 @@ exit } ' - d=`awk "$e" $rlogout || exit @@ -191,27 +227,60 @@ # Warning: foreign authors (i.e. not known in the passwd file) are mishandled; # you have to fix the resulting output by hand. -case $loginsout in -?*) sort -u -o $loginsout <$llogout <$llogout < -# $Id: rcs2log,v 1.17 1994/08/09 20:43:48 rms Exp eggert $ +# $Id: rcs2log,v 1.19 1995/03/21 05:11:06 eggert Exp $ -# Copyright 1992, 1993 Free Software Foundation, Inc. +# Copyright 1992, 1993, 1994, 1995 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 @@ -30,51 +30,69 @@ # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +tab=' ' nl=' ' # Parse options. # defaults +: ${AWK=awk} : ${TMPDIR=/tmp} hostname= # name of local host (if empty, will deduce it later) indent=8 # indent of log line -initialize_fullname= # awk assignments to set up fullname array -initialize_mailaddr= # awk assignments to set up mailaddr array length=79 # suggested max width of log line logins= # login names for people we know fullnames and mailaddresses of -loginsout= # temporary file holding sorted logins +loginFullnameMailaddrs= # loginfullnamemailaddr triplets +recursive= # t if we want recursive rlog rlog_options= # options to pass to rlog tabwidth=8 # width of horizontal tab while : do case $1 in - -i) indent=${2?};; - -h) hostname=${2?};; - -l) length=${2?};; - -n) logins=$logins$nl${2?} - loginsout=$TMPDIR/rcs2log$$l - case $2${3?}${4?} in - *\"* | *\\* | *"$nl"*) - echo >&2 "$0: -n '$2' '$3' '$4': special characters not allowed" - exit 1 + -i) indent=${2?}; shift;; + -h) hostname=${2?}; shift;; + -l) length=${2?}; shift;; + -[nu]) # -n is obsolescent; it is replaced by -u. + case $1 in + -n) case ${2?}${3?}${4?} in + *"$tab"* | *"$nl"*) + echo >&2 "$0: -n '$2' '$3' '$4': tabs, newlines not allowed" + exit 1 + esac + loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$2$tab$3$tab$4 + shift; shift; shift;; + -u) + case ${2?} in + *"$nl"*) + echo >&2 "$0: -u '$2': newlines not allowed" + exit 1;; + *"$tab"*"$tab"*"$tab"*) + echo >&2 "$0: -u '$2': too many fields" + exit 1;; + *"$tab"*"$tab"*) + ;; + *) + echo >&2 "$0: -u '$2': not enough fields" + exit 1 + esac + loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$2 + shift esac - initialize_fullname="$initialize_fullname - fullname[\"$2\"] = \"$3\"" - initialize_mailaddr="$initialize_mailaddr - mailaddr[\"$2\"] = \"$4\"" - shift; shift;; - -r) rlog_options=$rlog_options$nl${2?};; - -t) tabwidth=${2?};; + logins=$logins$nl$login + ;; + -r) rlog_options=$rlog_options$nl${2?}; shift;; + -R) recursive=t;; + -t) tabwidth=${2?}; shift;; -*) echo >&2 "$0: usage: $0 [options] [file ...] Options: - [-h hostname] [-i indent] [-l length] [-n login fullname mailaddr]... - [-r rlog_option]... [-t tabwidth]" + [-h hostname] [-i indent] [-l length] [-R] [-r rlog_option] + [-t tabwidth] [-u 'loginfullnamemailaddr']..." exit 1;; *) break esac - shift; shift + shift done month_data=' @@ -133,7 +151,7 @@ exit } ' - d=`awk "$e" $rlogout || exit @@ -191,27 +227,60 @@ # Warning: foreign authors (i.e. not known in the passwd file) are mishandled; # you have to fix the resulting output by hand. -case $loginsout in -?*) sort -u -o $loginsout <$llogout <$llogout <