code: plan9front

Download patch

ref: 4607b1874088ef29c769b880ea472fa4897715fa
parent: 7213f4a34d6b3bda61e6764d46980ef059adccdb
author: Romano <unobe@cpan.org>
date: Mon Oct 9 23:16:04 EDT 2023

grabrfc: update fetching

The canonical server for fetching draft RFCs is defunct for ftp
access, so a mirror site is now used.  Add -d flag to fetch draft RFCs
but otherwise do not.  When fetching drafts, also fetch index and
abstract files.  For both normal and draft RFCs, only look for .txt
files as there a lot of other files in remote directories that are not
relevant.

--- a/lib/rfc/grabrfc
+++ b/lib/rfc/grabrfc
@@ -1,19 +1,27 @@
-#!/bin/rc
-# grabrfc - copy new rfcs and drafts into /lib/rfc
+#!/bin/rc -b
+# grabrfc - copy new rfcs into /lib/rfc
+# grabrfc -d - copy draft rfcs as well
 rfork en
 path=(/bin)
 fn cd
 
+flagfmt='d:drafts'
+eval `''{aux/getflags $*} || exec aux/usage
+
 dom=`{ndb/query sys $sysname dom}
 if(~ $dom '') dom=$sysname
 
-ramfs
-ftpfs -q/ -a $user@$dom ftp.rfc-editor.org	# was ftp.isi.edu
+ftpfs -q/ -a $user@$dom ftp.rfc-editor.org
 
 found=no
 LIB=/lib/rfc
 cd /n/ftp/in-notes
-for(i in rfc*){
+fn cprfc {
+		f=$1
+		shift
+}
+
+for(i in rfc*.txt){
 	target=`{
 		echo $i | sed '
 			s/.txt$//
@@ -31,19 +39,42 @@
 		sed 's/^[0-9]/rfc&/' >$LIB/index
 unmount /n/ftp
 
-ftpfs -q/ -a $user@$dom ftp.ietf.org
+if (~ $drafts '')
+	exit
 
+ftpfs -q/ -a $user@$dom ftp.math.utah.edu
+
 # copy in new ones
 found=no
 LIB=/lib/rfc/drafts
 mkdir -p $LIB
-cd /n/ftp/internet-drafts
-for(i in *){
-	target=$i
+cd /n/ftp/pub/mirrors/ftp.ietf.org/internet-drafts
+for(i in draft-*.txt){
+	target=`{
+		echo $i | sed '
+			s/.txt$//
+			s/draft-//'
+	}
 	if (test ! -e $LIB/$target && test -f $i &&
 	    test `{ls -s $i | sed 's/ .*//'} -ge 2){
-		cp $i $LIB/$target
-		chmod 664 $LIB/$target
-		echo drafts/$i
+			cp $i $LIB/$target
+			chmod 664 $LIB/$target
+			found=yes
+			echo drafts/$target
 	}
 }
+if (~ $found yes) {
+	if (test -f 1id-index.txt)
+		<1id-index.txt sed '
+			s/\.txt//
+			s/draft-//' > $LIB/index
+	if not
+		>[1=2] echo no draft index found
+	if (test -f 1id-abstracts.txt)
+		<1id-abstracts.txt sed '
+			s/\.txt//
+			s/draft-//' > $LIB/abstracts
+	if not
+		>[1=2] echo no abstracts found
+}
+unmount /n/ftp