From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 7114B1FF76 for ; Sat, 26 Nov 2016 08:55:05 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] avoid IO::File for anonymous temporary files Date: Sat, 26 Nov 2016 08:55:05 +0000 Message-Id: <20161126085505.15837-1-e@80x24.org> List-Id: We do not need to import IO::File into the main programs since Perl 5.8+ supports literal "undef" for generating anonymous temporary file handles. --- lib/PublicInbox/GitHTTPBackend.pm | 4 ++-- lib/PublicInbox/HTTP.pm | 8 ++++---- lib/PublicInbox/Spamcheck/Spamc.pm | 5 ++--- t/httpd-corner.t | 3 +-- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/PublicInbox/GitHTTPBackend.pm b/lib/PublicInbox/GitHTTPBackend.pm index 322005b..1987a01 100644 --- a/lib/PublicInbox/GitHTTPBackend.pm +++ b/lib/PublicInbox/GitHTTPBackend.pm @@ -7,7 +7,7 @@ package PublicInbox::GitHTTPBackend; use strict; use warnings; use Fcntl qw(:seek); -use IO::File; +use IO::Handle; use HTTP::Date qw(time2str); use HTTP::Status qw(status_message); use Plack::Util; @@ -272,7 +272,7 @@ sub serve_smart { sub input_to_file { my ($env) = @_; - my $in = IO::File->new_tmpfile; + open(my $in, '+>', undef); unless (defined $in) { err($env, "could not open temporary file: $!"); return; diff --git a/lib/PublicInbox/HTTP.pm b/lib/PublicInbox/HTTP.pm index 729d46f..cac14be 100644 --- a/lib/PublicInbox/HTTP.pm +++ b/lib/PublicInbox/HTTP.pm @@ -17,7 +17,7 @@ use Plack::HTTPParser qw(parse_http_request); # XS or pure Perl use HTTP::Status qw(status_message); use HTTP::Date qw(time2str); use Scalar::Util qw(weaken); -use IO::File; +use IO::Handle; use constant { CHUNK_START => -1, # [a-f0-9]+\r\n CHUNK_END => -2, # \r\n @@ -43,7 +43,7 @@ sub process_pipelineq () { our $MAX_REQUEST_BUFFER = $ENV{GIT_HTTP_MAX_REQUEST_BUFFER} || (10 * 1024 * 1024); -my $null_io = IO::File->new('/dev/null', '<'); +open(my $null_io, '<', '/dev/null') or die "failed to open /dev/null: $!"; my $http_date; my $prev = 0; sub http_date () { @@ -335,10 +335,10 @@ sub input_prepare { quit($self, 413); return; } - $input = IO::File->new_tmpfile; + open($input, '+>', undef); } elsif (env_chunked($env)) { $len = CHUNK_START; - $input = IO::File->new_tmpfile; + open($input, '+>', undef); } # TODO: expire idle clients on ENFILE / EMFILE diff --git a/lib/PublicInbox/Spamcheck/Spamc.pm b/lib/PublicInbox/Spamcheck/Spamc.pm index 5190c26..30eec95 100644 --- a/lib/PublicInbox/Spamcheck/Spamc.pm +++ b/lib/PublicInbox/Spamcheck/Spamc.pm @@ -4,7 +4,7 @@ package PublicInbox::Spamcheck::Spamc; use strict; use warnings; use PublicInbox::Spawn qw(popen_rd spawn); -use IO::File; +use IO::Handle; use Fcntl qw(:DEFAULT SEEK_SET); sub new { @@ -72,13 +72,12 @@ sub _devnull { sub _msg_to_fd { my ($self, $msg, $tmpref) = @_; - my $tmpfh; my $fd; if (my $ref = ref($msg)) { my $fileno = eval { fileno($msg) }; return $fileno if defined $fileno; - $tmpfh = IO::File->new_tmpfile; + open(my $tmpfh, '+>', undef) or die "failed to open: $!"; $tmpfh->autoflush(1); $msg = \($msg->as_string) if $ref ne 'SCALAR'; print $tmpfh $$msg or die "failed to print: $!"; diff --git a/t/httpd-corner.t b/t/httpd-corner.t index 1e8465c..8a0337c 100644 --- a/t/httpd-corner.t +++ b/t/httpd-corner.t @@ -243,7 +243,6 @@ my $check_self = sub { SKIP: { use POSIX qw(dup2); - use IO::File; my $have_curl = 0; foreach my $p (split(':', $ENV{PATH})) { -x "$p/curl" or next; @@ -255,7 +254,7 @@ SKIP: { my $url = 'http://' . $sock->sockhost . ':' . $sock->sockport . '/sha1'; my ($r, $w); pipe($r, $w) or die "pipe: $!"; - my $tout = IO::File->new_tmpfile or die "new_tmpfile: $!"; + open(my $tout, '+>', undef) or die "open temporary file: $!"; my $pid = fork; defined $pid or die "fork: $!"; my @cmd = (qw(curl --tcp-nodelay --no-buffer -T- -HExpect: -sS), $url); -- EW