=================================================================== RCS file: /cvs/openbsd/update_openbsd/post_dmesg_to_nycbug,v retrieving revision 1.1 retrieving revision 1.9 diff -u -r1.1 -r1.9 --- openbsd/update_openbsd/post_dmesg_to_nycbug 2015/02/22 19:22:08 1.1 +++ openbsd/update_openbsd/post_dmesg_to_nycbug 2017/03/10 19:15:38 1.9 @@ -2,16 +2,46 @@ use strict; use warnings; use feature 'say'; +use feature 'signatures'; +no warnings 'experimental::signatures'; +use Sys::Hostname; use HTTP::Tiny; # This script posts your OpenBSD dmesg to the NYC*BUG dmesg archive. -open my $de, '-|', qw( sysctl -n hw.vendor hw.product hw.version ) or die $!; -my $description = join ' ', split /\s+/s, - do { local $/ = undef; readline $de }; -close $de or die $!; +sub sysctl (@s) { + open my $de, '-|', qw( sysctl -n ), @s or die $!; + my $s = join ' ', split /\s+/s, + do { local $/ = undef; readline $de }; + close $de or die $!; + return $s; +} +my $nickname = "$ENV{USER}"; +my $email = "$ENV{USER}\@" . hostname(); + +my @sysctls = ( + [qw( hw.vendor hw.product hw.version )], + [qw( hw.model )], +); + +my $description = "@ARGV"; + +unless ($description) { + while ( @sysctls and not $description ) { + $description = sysctl @{ shift @sysctls }; + } + + if (my $version = sysctl qw( kern.version )) { + $version =~ s/\)\K.*//; + $description = "$version on $description"; + } +} + +print "'$description'\nAbout to post, OK? "; +readline STDIN; + open my $dm, '<', '/var/run/dmesg.boot' or die $!; my $dmesg = do { local $/ = undef; readline $dm }; close $dm; @@ -20,11 +50,11 @@ $dmesg =~ s/^.*\n(OpenBSD )/$1/s; my $res = HTTP::Tiny->new->post_form( - 'http://www.nycbug.org/index.cgi', + 'http://dmesgd.nycbug.org/index.cgi', { action => 'dmesgd', do => 'addd', - nickname => 'afresh1', - email => 'andrew+dmesgd@afresh1.com', + nickname => $nickname, + email => $email, description => $description, dmesg => $dmesg, } @@ -33,3 +63,5 @@ say $res->{success} ? 'Sent dmesg' : "Unable to send dmesg: $res->{status} $res->{reason}"; + +say $res->{content};