use IO::File;
use HTTP::Request::Common ();
use POSIX;
+use LWP::UserAgent;
use strict;
use warnings;
&get_our_version &check_tsv_line
&pipethrough_prep &pipethrough_run
&pipethrough_run_along &pipethrough_run_finish
- &pipethrough_run_gzip
+ &pipethrough_run_gzip &http_useragent &version_core
+ &http_useragent_string_map
&cgipostform &yarrgpostform &cgi_get_caller
&set_ctype_utf8 $masterinfoversion);
%EXPORT_TAGS = ( );
my ($aref,$prefix) = @_;
$aref->{"${prefix}name"}= 'ypp-sc-tools yarrg';
$aref->{"${prefix}fixes"}= 'lastpage checkpager';
+ $aref->{"${prefix}version"}= version_core();
+ return $aref;
+ # clientname "ypp-sc-tools"
+ # clientversion 2.1-g2e06a26 [from git-describe --tags HEAD]
+ # clientfixes "lastpage" [space separated list]
+}
+sub version_core () {
my $version= `
if type -p git-describe >/dev/null 2>&1; then
gd=git-describe
\$gd --tags HEAD || echo 0unknown
`; $? and die $?;
chomp($version);
- $aref->{"${prefix}version"}= $version;
- return $aref;
- # clientname "ypp-sc-tools"
- # clientversion 2.1-g2e06a26 [from git-describe --tags HEAD]
- # clientfixes "lastpage" [space separated list]
+ return $version;
}
sub pipethrough_prep () {
setlocale(LC_CTYPE, "en.UTF-8");
}
+sub http_useragent_string_map ($$) {
+ my ($caller_lib_agent, $reason_style_or_caller) = @_;
+ $caller_lib_agent =~ y/A-Za-z/N-ZA-Mn-za-m/;
+ $caller_lib_agent =~ s/\s/_/g;
+ my $version= version_core();
+ return "yarrg/$version ($reason_style_or_caller)".
+ " $caller_lib_agent".
+ " (http://yarrg.chiark.net/intro)";
+}
+
+sub http_useragent ($) {
+ my ($who) = @_;
+ my $ua= LWP::UserAgent->new;
+ my $base= $ua->_agent();
+ $ua->agent(http_useragent_string_map($base, $who));
+ return $ua;
+}
+
1;