Martin Rex wrote: > Dearlove, Christopher (UK) wrote: > > > > I'd actually tried the authors, but no reply yet (only a few days). > > I also tried the RFC Editor thinking they might have e.g. XML > > from which extraction might have been easier, but also no response yet. > > Extracting code from text is pretty trivial. > > Use copy&paste from the output of below simple perl script > (which removes the pagebreaks):
Modified script which also does the extraction of the files into the current directory as well (below). cc -c shatest.c sha1.c sha224-256.c sha384-512.c usha.c hmac.c hkdf.c cc -o shatest shatest.o sha1.o sha224-256.o sha384-512.o usha.o hmac.o hkdf.o ./shatest it seems to work (for me on Linux, at least) -Martin #!/usr/bin/perl # $rfcnum="6234"; $footerpattern="^Eastlake"; $headerpattern="^RFC ${rfcnum}"; $url = "http://tools.ietf.org/rfc/rfc${rfcnum}.txt"; open(IN,"curl '${url}'|") || die("Download of \"$url\" failed: $!\n"); @origdoc = <IN>; close(IN); @doc = (); $show = 2; $fname = ""; @file = (); foreach $line ( @origdoc ) { $line =~ tr/\r\n//d; if ( $line =~ m/${footerpattern}/io ) { $show = 0; while ( $#doc >=0 && "" eq $doc[$#doc] ) { pop(@doc); } while ( $#file>=0 && "" eq $file[$#file] ) { pop(@file); } } if ( $show>0 ) { if ( 2==$show || $line ne "" ) { push(@doc, $line); $show = 2; if ( $fname eq "" && $line =~ m#^/\*\*.* (\w.+) \*\*#io ) { $fname = $1; $fname =~ tr/a-zA-Z0-9._-//cd; @file = (); } if ( "" ne $fname ) { if ( $line =~ m/^\d/io ) { $filedata = join("\n",@file) . "\n"; $filelen = length($filedata); printf("Writing file \"$fname\" (len=${filelen})\n"); open(OUT,">$fname") || die("Could not write file \"$fname\": $!\n"); print OUT $filedata; close(OUT); $fname = ""; } else { push(@file, $line); } } } } if ( 0==$show && $line =~ m/${headerpattern}/io ) { $show = 1; } } # print join("\n",@doc), "\n";