<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf8">
<title>/usr/web/sources/contrib/uriel/plog - Plan 9 from Bell Labs</title>
<!-- THIS FILE IS AUTOMATICALLY GENERATED. -->
<!-- EDIT sources.tr INSTEAD. -->
</meta>
</head>
<body>
<p style="margin-top: 0; margin-bottom: 0.17in"></p>
<p style="line-height: 1.2em; margin-left: 1.00in; text-indent: 0.00in; margin-right: 1.00in; margin-top: 0; margin-bottom: 0; text-align: center;">
<span style="font-size: 10pt"><a href="/plan9/">Plan 9 from Bell Labs</a>&rsquo;s /usr/web/sources/contrib/uriel/plog</span></p>
<p style="margin-top: 0; margin-bottom: 0.17in"></p>
<p style="margin-top: 0; margin-bottom: 0.17in"></p>
<center><font size=-1>
Copyright © 2009 Alcatel-Lucent.<br />
Distributed under the
<a href="/plan9/license.html">Lucent Public License version 1.02</a>.
<br />
<a href="/plan9/download.html">Download the Plan 9 distribution.</a>
</font>
</center>
<p style="margin-top: 0; margin-bottom: 0.17in"></p>
<table width="100%" cellspacing=0 border=0><tr><td align="center">
<table cellspacing=0 cellpadding=5 bgcolor="#eeeeff"><tr><td align="left">
<pre>
<!-- END HEADER -->
#!/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 &gt;[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 &gt; /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 &amp;&amp; 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 &gt;name }
'
	for(c in *) {
		t = `{sed 1q &lt; $c}
		s='[sources] '^$year^$change^': '^$"t
		{
			mailhead $i 
			cat $c
		} | mail -s $s $plistaddr 
	}

	}
}

touch -t $start $stamp

<!-- BEGIN TAIL -->
</pre>
</td></tr></table>
</td></tr></table>
<p style="margin-top: 0; margin-bottom: 0.17in"></p>
<p style="line-height: 1.2em; margin-left: 1.00in; text-indent: 0.00in; margin-right: 1.00in; margin-top: 0; margin-bottom: 0; text-align: center;">
<span style="font-size: 10pt"></span></p>
<p style="margin-top: 0; margin-bottom: 0.50in"></p>
<p style="margin-top: 0; margin-bottom: 0.33in"></p>
<center><table border="0"><tr>
<td valign="middle"><a href="http://www.alcatel-lucent.com/"><img border="0" src="/plan9/img/logo_ft.gif" alt="Bell Labs" />
</a></td>
<td valign="middle"><a href="http://www.opensource.org"><img border="0" alt="OSI certified" src="/plan9/img/osi-certified-60x50.gif" />
</a></td>
<td><img style="padding-right: 45px;" alt="Powered by Plan 9" src="/plan9/img/power36.gif" />
</td>
</tr></table></center>
<p style="margin-top: 0; margin-bottom: 0.17in"></p>
<center>
<span style="font-size: 10pt">(<a href="/plan9/">Return to Plan 9 Home Page</a>)</span>
</center>
<p style="margin-top: 0; margin-bottom: 0.17in"></p>
<center><font size=-1>
<span style="font-size: 10pt"><a href="http://www.lucent.com/copyright.html">Copyright</a></span>
<span style="font-size: 10pt">© 2009 Alcatel-Lucent.</span>
<span style="font-size: 10pt">All Rights Reserved.</span>
<br />
<span style="font-size: 10pt">Comments to</span>
<span style="font-size: 10pt"><a href="mailto:webmaster@plan9.bell-labs.com">webmaster@plan9.bell-labs.com</a>.</span>
</font></center>
</body>
</html>

