summary refs log tree commit diff
path: root/bin/bibsort.pl
blob: a4a8956a32b5a301156ceea6767f9735a224da49 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/env perl
use strict;
use warnings;

while (<>) {
	print;
	last if /^[.]Sh STANDARDS$/;
}

my ($ref, @refs);
while (<>) {
	next if /^[.](Bl|It|$)/;
	last if /^[.]El$/;
	if (/^[.]Rs$/) {
		$ref = {};
	} elsif (/^[.]%(.) (.*)/) {
		$ref->{$1} = [] unless $ref->{$1};
		push @{$ref->{$1}}, $2;
	} elsif (/^[.]Re$/) {
		push @refs, $ref;
	} else {
		print;
	}
}

sub byLast {
	my ($af, $al) = split /\s(\S+)(,.*)?$/, $a;
	my ($bf, $bl) = split /\s(\S+)(,.*)?$/, $b;
	($al // $af) cmp ($bl // $bf) || $af cmp $bf;
}

foreach $ref (@refs) {
	@{$ref->{A}} = sort byLast @{$ref->{A}};
	@{$ref->{Q}} = sort @{$ref->{Q}} if $ref->{Q};
	if ($ref->{N} && $ref->{N}[0] =~ /RFC/) {
		$ref->{R} = $ref->{N};
		delete $ref->{N};
	}
	if ($ref->{R} && $ref->{R}[0] =~ /RFC (\d+)/ && !$ref->{U}) {
		$ref->{U} = ["https://tools.ietf.org/html/rfc${1}"];
	}
}

sub byAuthor {
	my ($ta, $tb) = ($a->{T}[0], $b->{T}[0]);
	local ($a, $b) = ($a->{A}[0], $b->{A}[0]);
	byLast() || $ta cmp $tb;
}

{
	local ($,, $\) = (' ', "\n");
	print '.Bl', '-item';
	foreach $ref (sort byAuthor @refs) {
		print '.It';
		print '.Rs';
		foreach my $key (qw(A T B I J R N V U P Q C D O)) {
			next unless $ref->{$key};
			foreach (@{$ref->{$key}}) {
				print ".%${key}", $_;
			}
		}
		print '.Re';
	}
	print '.El';
}

while (<>) {
	print;
}
/td> 2020-11-14Make struct Client publicJune McEnroe 2020-11-13Wait for POLLIN to do client tls_handshakeJune McEnroe Otherwise a client could cause pounce to hang (since the sockets are left blocking) by opening a connection without handshaking! Oops, that's pretty bad. Since the sockets are still blocking, a hang can still be caused by a client sending a partial handshake then waiting. More fixes to follow. pounce is slightly protected from this when used with calico, as it applies a timeout to waiting for the ClientHello. 2020-11-13Use a fixed size pollfd array in calicoJune McEnroe My thinking here is that it's better to not allocate in response to incoming connections. This also just makes the code a little simpler. 2020-11-13Disallow / anywhere in server nameJune McEnroe 2020-11-12Check bounds of ClientHello extensions lengthJune McEnroe 2020-11-10Report paths in unveil errorsJune McEnroe 2020-10-24contrib/palaver: Use open_memstream instead of fmemopenJune McEnroe Somehow I never knew about this function. Much better than fmemopen with mode "w". 2020-10-11Handle signals before the main loopJune McEnroe This is a long-standing issue I ignored. 2020-09-09Fix possibliy uninitialized error 2.0June McEnroe It won't be, but gcc thinks it might. 2020-08-31Refactor reserialization and client self-producingJune McEnroe 2020-08-30Add chmod+chown to certbot exampleJune McEnroe 2020-08-30Rearrange bounce.c, move non-main mains below mainJune McEnroe 2020-08-30Sandbox pounce with unveil(2)June McEnroe 2020-08-28Refactor certificate loading and load all certs from config pathsJune McEnroe 2020-08-27Sandbox pounce with pledge(2)June McEnroe unveil(2) is a bit complicated to apply to this, I'll have to think about it more. 2020-08-27Sandbox calico with pledge(2) and unveil(2)June McEnroe 2020-08-27Add support for OpenBSDJune McEnroe 2020-08-27Remove rc scriptsJune McEnroe 2020-08-27contrib/palaver: Fix documented database pathJune McEnroe 2020-08-27contrib/palaver: Remove rc scriptJune McEnroe 2020-08-27contrib/palaver: Fix database search and creationJune McEnroe 2020-08-27contrib/palaver: Use pounce's XDG directoryJune McEnroe 2020-08-27contrib/palaver: Only allow HTTPSJune McEnroe 2020-08-25Support the pounce_env rc variableJune McEnroe 2020-08-25Remove deprecated option namesJune McEnroe The next release will be 2.0 so these can be removed now. 2020-08-25Document configuration and data file searchJune McEnroe 2020-08-24Use dataOpen for save fileJune McEnroe 2020-08-24Use configOpen to load localCAJune McEnroe 2020-08-24Use configPath to load client cert/privJune McEnroe 2020-08-24Use configOpen in getopt_configJune McEnroe 2020-08-24Import xdg.c from catgirlJune McEnroe 2020-08-23Replace “RAND_bytes” by “getentropy”Issam E. Maghni This removes the dependency on libcrypto. Signed-off-by: Issam E. Maghni <issam.e.maghni@mailbox.org> 2020-08-16contrib/palaver: Add no message preview flagsJune McEnroe 2020-08-13contrib/palaver: Don't set channel for PMsJune McEnroe 2020-08-13Fix unintended interception of NICK after registrationJune McEnroe Another bug caused by trying to support broken clients. I'm annoyed. 2020-08-12Add Additional Components section to READMEJune McEnroe 2020-08-12Document -L / palaver optionJune McEnroe 2020-08-11contrib/palaver: Document service configurationJune McEnroe 2020-08-11contrib/palaver: Add install target and rc scriptJune McEnroe 2020-08-11contrib/palaver: Implement command and notificationsJune McEnroe