Mercurial > emacs
changeset 602:d2de231ee7f5
Don't duplicate most recent logs. Fix bug in dates after Feb 29 in leap year.
author | Paul Eggert <eggert@twinsun.com> |
---|---|
date | Wed, 01 Apr 1992 08:57:55 +0000 |
parents | 3db1540d4b97 |
children | 470f556a9453 |
files | lib-src/=rcs2log lib-src/rcs2log |
diffstat | 2 files changed, 40 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/lib-src/=rcs2log Sat Mar 28 21:00:42 1992 +0000 +++ b/lib-src/=rcs2log Wed Apr 01 08:57:55 1992 +0000 @@ -2,7 +2,7 @@ # RCS to ChangeLog generator -# $Id: rcs2clog,v 1.3 1992/02/05 17:25:10 eggert Exp eggert $ +# $Id: rcs2log,v 1.4 1992/03/21 05:58:05 eggert Exp eggert $ # Generate a change log prefix from RCS/* and the existing ChangeLog (if any). # Output the new prefix to standard output. @@ -32,15 +32,23 @@ # Log into $rlogout the revisions checked in since the first ChangeLog entry. -datearg=-d'>1970' +date=1970 if test -s ChangeLog then - e='s/^\(...\) \(...\) \(..\) \(..:..:..\) \(....\) .*/\1 \2 \3 \4 \5/p; 1q' - date=`sed -n "$e" <ChangeLog` || exit - case $date in - ?*) datearg="-d>$date" + # Add 1 to seconds to avoid duplicating most recent log. + # It's a good thing `rlog' doesn't mind a time ending in `:60'. + e=' + /^... ... [ 0-9][0-9] [ 0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9]+ /{ + printf "%s%.2d %s\n", substr($0,1,17), substr($0,18,2)+1, $5 + exit + } + ' + d=`awk "$e" <ChangeLog` || exit + case $d in + ?*) date=$d esac fi +datearg="-d>$date" rlogout=/tmp/chg$$ trap exit 1 2 13 15 @@ -153,7 +161,7 @@ # and each line of the log is terminated by \r instead of \n. # Sort the log entries, first by date (in reverse order), # then by author, then by log entry, and finally by file name (just in case). -sort +1 -2r +3 +0 | +sort +1 -3r +3 +0 | # Finally, reformat the sorted log entries. awk ' @@ -208,6 +216,7 @@ # and use it to decide whether to output a blank line. newclumpname = "" sep = "\n" + if (date == "") sep = "" if (newlog ~ /^{[^ }]+}[ ]/) { i = index(newlog, "}") newclumpname = substr(newlog, 1, i) @@ -235,13 +244,13 @@ # into ugly ctime date like "Fri Jan 3 00:03:44 1992". # Calculate day of week from Gregorian calendar. i = index($2, "/") - year = substr($2, 1, i-1) + year = substr($2, 1, i-1) + 0 monthday = substr($2, i+1) i = index(monthday, "/") - month = substr(monthday, 1, i-1) - day = substr(monthday, i+1) + month = substr(monthday, 1, i-1) + 0 + day = substr(monthday, i+1) + 0 leap = 0 - if (2 <= month && year%4 == 0 && (year%100 != 0 || year%400 == 0)) leap = 1 + if (2 < month && year%4 == 0 && (year%100 != 0 || year%400 == 0)) leap = 1 days_since_Sunday_before_epoch = EPOCH_WEEKDAY + year * 365 + int((year + 3) / 4) - int((year + 99) / 100) + int((year + 399) / 400) + mo[month-1] + leap + day - 1 # Print "date fullname (email address)" if the fullname is known;
--- a/lib-src/rcs2log Sat Mar 28 21:00:42 1992 +0000 +++ b/lib-src/rcs2log Wed Apr 01 08:57:55 1992 +0000 @@ -2,7 +2,7 @@ # RCS to ChangeLog generator -# $Id: rcs2clog,v 1.3 1992/02/05 17:25:10 eggert Exp eggert $ +# $Id: rcs2log,v 1.4 1992/03/21 05:58:05 eggert Exp eggert $ # Generate a change log prefix from RCS/* and the existing ChangeLog (if any). # Output the new prefix to standard output. @@ -32,15 +32,23 @@ # Log into $rlogout the revisions checked in since the first ChangeLog entry. -datearg=-d'>1970' +date=1970 if test -s ChangeLog then - e='s/^\(...\) \(...\) \(..\) \(..:..:..\) \(....\) .*/\1 \2 \3 \4 \5/p; 1q' - date=`sed -n "$e" <ChangeLog` || exit - case $date in - ?*) datearg="-d>$date" + # Add 1 to seconds to avoid duplicating most recent log. + # It's a good thing `rlog' doesn't mind a time ending in `:60'. + e=' + /^... ... [ 0-9][0-9] [ 0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9]+ /{ + printf "%s%.2d %s\n", substr($0,1,17), substr($0,18,2)+1, $5 + exit + } + ' + d=`awk "$e" <ChangeLog` || exit + case $d in + ?*) date=$d esac fi +datearg="-d>$date" rlogout=/tmp/chg$$ trap exit 1 2 13 15 @@ -153,7 +161,7 @@ # and each line of the log is terminated by \r instead of \n. # Sort the log entries, first by date (in reverse order), # then by author, then by log entry, and finally by file name (just in case). -sort +1 -2r +3 +0 | +sort +1 -3r +3 +0 | # Finally, reformat the sorted log entries. awk ' @@ -208,6 +216,7 @@ # and use it to decide whether to output a blank line. newclumpname = "" sep = "\n" + if (date == "") sep = "" if (newlog ~ /^{[^ }]+}[ ]/) { i = index(newlog, "}") newclumpname = substr(newlog, 1, i) @@ -235,13 +244,13 @@ # into ugly ctime date like "Fri Jan 3 00:03:44 1992". # Calculate day of week from Gregorian calendar. i = index($2, "/") - year = substr($2, 1, i-1) + year = substr($2, 1, i-1) + 0 monthday = substr($2, i+1) i = index(monthday, "/") - month = substr(monthday, 1, i-1) - day = substr(monthday, i+1) + month = substr(monthday, 1, i-1) + 0 + day = substr(monthday, i+1) + 0 leap = 0 - if (2 <= month && year%4 == 0 && (year%100 != 0 || year%400 == 0)) leap = 1 + if (2 < month && year%4 == 0 && (year%100 != 0 || year%400 == 0)) leap = 1 days_since_Sunday_before_epoch = EPOCH_WEEKDAY + year * 365 + int((year + 3) / 4) - int((year + 99) / 100) + int((year + 399) / 400) + mo[month-1] + leap + day - 1 # Print "date fullname (email address)" if the fullname is known;