mirror.al
来自「美国CMU大学开发的操作系统健壮性评测软件」· AL 代码 · 共 56 行
AL
56 行
# NOTE: Derived from ./blib/lib/LWP/UserAgent.pm. Changes made here will be lost.package LWP::UserAgent;sub mirror{ my($self, $url, $file) = @_; LWP::Debug::trace('()'); my $request = new HTTP::Request('GET', $url); if (-e $file) { my($mtime) = (stat($file))[9]; if($mtime) { $request->header('If-Modified-Since' => HTTP::Date::time2str($mtime)); } } my $tmpfile = "$file-$$"; my $response = $self->request($request, $tmpfile); if ($response->is_success) { my $file_length = (stat($tmpfile))[7]; my($content_length) = $response->header('Content-length'); if (defined $content_length and $file_length < $content_length) { unlink($tmpfile); die "Transfer truncated: " . "only $file_length out of $content_length bytes received\n"; } elsif (defined $content_length and $file_length > $content_length) { unlink($tmpfile); die "Content-length mismatch: " . "expected $content_length bytes, got $file_length\n"; } else { # OK if (-e $file) { # Some dosish systems fail to rename if the target exists chmod 0777, $file; unlink $file; } rename($tmpfile, $file) or die "Cannot rename '$tmpfile' to '$file': $!\n"; if (my $lm = $response->last_modified) { # make sure the file has the same last modification time utime $lm, $lm, $file; } } } else { unlink($tmpfile); } return $response;}1;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?