aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Georg Gleditsch <argggh@lxr.linpro.no>2008-08-21 21:38:00 +0200
committerArne Georg Gleditsch <argggh@lxr.linpro.no>2008-08-21 21:38:00 +0200
commit52cab08b9bb06bcc822b4e8d99455e693b8b64ae (patch)
treea6fc75d2c5f18b98213e4d126c9aab7a73110fa8
parent17034adefacae12d6522eecc4a9e1f6ad04430fc (diff)
parent7ee74cd1dd28ee902582e71cf8d3ebddd06c0599 (diff)
Merge branch 'master' of /home/argggh/git/lxrng/
-rw-r--r--lib/LXRng/Context.pm1
-rw-r--r--lib/LXRng/Repo/Git.pm2
-rw-r--r--lib/LXRng/Repo/Git/Directory.pm2
-rw-r--r--lib/LXRng/Repo/Git/Iterator.pm2
-rw-r--r--lib/LXRng/Web.pm5
-rwxr-xr-xlxr-genxref9
-rw-r--r--webroot/.static/css/lxrng.css2
7 files changed, 19 insertions, 4 deletions
diff --git a/lib/LXRng/Context.pm b/lib/LXRng/Context.pm
index d316ede..bf717ab 100644
--- a/lib/LXRng/Context.pm
+++ b/lib/LXRng/Context.pm
@@ -43,6 +43,7 @@ sub new {
my $path = $ENV{'REQUEST_URI'};
$path =~ s/\?.*//;
$path =~ s,/+,/,g;
+ $path =~ s/%([0-9a-f][0-9a-f])/hex($1) >= 32 ? pack("C", hex($1)) : '_'/ge;
$$self{'req_base'} = $host.$ENV{'SCRIPT_NAME'};
foreach my $p ($args{'query'}->param) {
diff --git a/lib/LXRng/Repo/Git.pm b/lib/LXRng/Repo/Git.pm
index 9e03f83..7407ca0 100644
--- a/lib/LXRng/Repo/Git.pm
+++ b/lib/LXRng/Repo/Git.pm
@@ -127,7 +127,7 @@ sub node {
else {
my $git = $self->_git_cmd('ls-tree', $release, $path);
my ($mode, $gitpath);
- ($mode, $type, $rev, $gitpath) = split(" ", <$git>);
+ ($mode, $type, $rev, $gitpath) = split(" ", <$git>, 4);
}
if ($type eq 'tree') {
diff --git a/lib/LXRng/Repo/Git/Directory.pm b/lib/LXRng/Repo/Git/Directory.pm
index 6b24214..cf46915 100644
--- a/lib/LXRng/Repo/Git/Directory.pm
+++ b/lib/LXRng/Repo/Git/Directory.pm
@@ -60,7 +60,7 @@ sub contents {
my (@dirs, @files);
while (<$git>) {
chomp;
- my ($mode, $type, $ref, $node) = split(" ", $_);
+ my ($mode, $type, $ref, $node) = split(" ", $_, 4);
if ($type eq 'tree') {
push(@dirs, LXRng::Repo::Git::Directory->new($$self{'repo'},
$prefix.$node,
diff --git a/lib/LXRng/Repo/Git/Iterator.pm b/lib/LXRng/Repo/Git/Iterator.pm
index 702b4ca..418142c 100644
--- a/lib/LXRng/Repo/Git/Iterator.pm
+++ b/lib/LXRng/Repo/Git/Iterator.pm
@@ -28,7 +28,7 @@ sub new {
my @refs;
my $git = $repo->_git_cmd('ls-tree', '-r', $release);
while (<$git>) {
- if (/\S+\s+blob\s+(\S+)\s+(\S+)/) {
+ if (/\S+\s+blob\s+(\S+)\s+(.+)/) {
push(@refs, [$2, $1]);
}
}
diff --git a/lib/LXRng/Web.pm b/lib/LXRng/Web.pm
index c9acc71..df2422e 100644
--- a/lib/LXRng/Web.pm
+++ b/lib/LXRng/Web.pm
@@ -125,6 +125,11 @@ sub print_markedup_file {
mkpath($cfile, 0, 0777);
open($cache, '>', "$cfile/0");
}
+ else {
+ # Don't chunk file transfers unless cache is enabled.
+ $focus = 1;
+ }
+
my $handle = $node->handle();
LXRng::Lang->init($context);
my $lang = LXRng::Lang->new($node);
diff --git a/lxr-genxref b/lxr-genxref
index 3173bdd..d61526f 100755
--- a/lxr-genxref
+++ b/lxr-genxref
@@ -230,10 +230,18 @@ sub reference_file($$$) {
sub hash_file($$$) {
my ($file, $fileid, $rels) = @_;
+ return 0 if $context->config->{'search_size_limit'} > 0 and
+ $file->size > $context->config->{'search_size_limit'};
+
my $docid;
if ($index->to_hash($fileid)) {
my $handle;
sysopen($handle, $file->phys_path, 0) || die($!);
+ unless (-T $handle) {
+ $handle->close();
+ return 0;
+ }
+
warn("--- hashing ".$file->name." [".$file->revision."]\n");
my $doc = $hash->new_document($file->name);
while (<$handle>) {
@@ -255,6 +263,7 @@ sub hash_file($$$) {
}
else {
$docid = $index->get_hashed_document($fileid);
+ return 0 unless $docid;
my $doc = $hash->get_document($docid);
if (reference_file($file, $fileid, $doc)) {
$hash->save_document($docid, $doc);
diff --git a/webroot/.static/css/lxrng.css b/webroot/.static/css/lxrng.css
index e5f5417..acc7d92 100644
--- a/webroot/.static/css/lxrng.css
+++ b/webroot/.static/css/lxrng.css
@@ -43,7 +43,7 @@ span.lxr_logo {
div.prose {
margin-left: 20px;
margin-right: 20px;
- max-width: 40em;
+ max-width: 70em;
}
span.section {
font-weight: bold;