Plan 9 from Bell Labs’s /usr/web/sources/contrib/uriel/plog

Copyright © 2009 Alcatel-Lucent.
Distributed under the Lucent Public License version 1.02.
Download the Plan 9 distribution.


#!/bin/rc 
# Local touch -t 1127000000 $home/lib/timestamp_patchlog
# Local touch -t 1127000000 $home/lib/timestamp_sourceslog

fn mailhead {
	# Takes a file as arg to use it's mdate as Date:
	echo 'Reply-To: 9fans@cse.psu.edu'
	syscall -s stat $1 buf 1024 >[2]/dev/null|grep '^	mtime' | awk '{print "Date: "$2", "$4" "$3" "$7" "$5}'
	echo
}

# Need to setup factota so 9fs can connect to sources
rfork
auth/factotum
cat /usr/$user/lib/sources.key > /mnt/factotum/ctl

tsp = $home/lib/timestamp_patchlog
pdirs = (applied saved sorry)
pdirs = /n/sources/patch/^$pdirs
#plistaddr = uriel
plistaddr = plan9changes@googlegroups.com
#upasname = patch-log@cat-v.org
#upasname = patch-archive@cat-v.org
upasname = 9changes@cat-v.org

rm /srv/sources.plog
if(! test -d /n/sources/patch)
	srv -q tcp!sources.cs.bell-labs.com sources.plog /n/sources

if(! test -d /n/sources/patch)
	exit 'failed to mount sources'

if(! test -f $tsp)
	touch $tsp

start = `{date -n}
 
for(pd in $pdirs) {

	newps = `{	ls -t $pd }

	done = 0
	for(d in $newps) {

		if(~ $done 0 && test  $d -ot $tsp) {
			done = 1
		}
		
		if(~ $done 0) {
			cd $d
			if(~ $status '') {
		
			sub='[patch] '^`{ basename `{basename -d $d} }^': '^`{basename $d}
			{

			mailhead $d

			fmtlsl = 's/^[^ ]* M [0-9]* ([a-z0-9]*) sys 0 (.*) [a-z0-9_.\-]*$/\2 by \1/'
			echo Created `{cat origls | sed $fmtlsl }
			echo Processed `{ ls -lpd `{pwd} | sed $fmtlsl }
			echo

			cat readme
			echo

			if(test -s notes) {
				echo NOTES:
				cat notes
				echo
			}

			echo '-- '
			fn xxx {
				echo $1
				# FIXME: .orig sometimes is missing, should handle that more gracefuly
				if(test -f $2.orig) diff -c $2.orig $d/$2
				if not diff -c /dev/null $d/$2

				echo
			}
			cat files | sed 's/^/xxx /' |rc
			cd ..
			}  |  upas/marshal -s $sub  $plistaddr
			
			cd ..
			}
		}
	}
}

# NOTE: patches that go into a dir during running of the script can be duplicated
touch -t $start $tsp


# Sourcesmail
changesdir=/n/sources/contrib/uriel/changes
stamp=$home/lib/timestamp_sourceslog
start=`{date -n}
if(! test -f $stamp)
	touch $stamp

newer=`{
	ls -rt /n/sources/extra/changes/*/* $stamp |
	sed -n '/timestamp_sourceslog/,$p' | grep -v timestamp_sourceslog
}
if(~ $#newer 0)
	exit 0

for(i in $newer) {
	if(test -s $i) {
	year=`{basename `{basename -d $i}}
	change=`{basename $i}
	d = $changesdir/$year/$change/
	mkdir -p $d
	cd $d
	if(! ~ $status '')
		exit 'Can''t access changes dir: '^$d

	cat $i | awk '
/^[^ 	]/ {
	if ( inhead == 0 ) {
		if(name) 
		close(name)
		name = "" ++n
	}
	inhead=1
}
/^[ 	]/ { inhead = 0 }
{ print >name }
'
	for(c in *) {
		t = `{sed 1q < $c}
		s='[sources] '^$year^$change^': '^$"t
		{
			mailhead $i 
			cat $c
		} | mail -s $s $plistaddr 
	}

	}
}

touch -t $start $stamp


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2009 Alcatel-Lucent. All Rights Reserved.
Comments to webmaster@plan9.bell-labs.com.