view debian/patches/19_bins-insert-directory @ 6:3021deef1599

Encoding related fixes * chomp encoding string * reformat else (seems someone hacked it in) * debug print encoding * do not use :utf8 binmode ("re-encode") on written file if the input is _already_ UTF-8
author Peter Gervai <grin@grin.hu>
date Thu, 16 Oct 2008 00:02:14 +0200
parents c5749e43b1d7
children
line wrap: on
line source

#! /bin/sh /usr/share/dpatch/dpatch-run
## 19_bins-1.1.29-insert-directory.dpatch by  <rousseau@localhost.localdomain>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: No description.

@DPATCH@
--- bins-1.1.29.orig/bins
+++ bins-1.1.29/bins
@@ -399,6 +399,10 @@
                                            # strings on console and to
                                            # convert strings from .po
                                            # files.
+
+     injectDir      => '',                  # directory to be injected
+                                            # without rebuilding complete
+                                            # album
      );
 
 my $codeset;
@@ -985,7 +989,7 @@
     Getopt::Long::Configure("bundling");
     die "Invalid options\n"
         if (!GetOptions(\%option, "h", "p", "r:s", "e", "o:s", "t=s", "d=s", "s=s",
-                        "c=s", "v:i", "i=s", "n=s", "f=s"));
+                        "c=s", "v:i", "i=s", "n=s", "f=s", "j=s"));
 
     if (defined($option{v})) {
         $verbose = $option{v};
@@ -1146,6 +1150,25 @@
 
         die "albumdir_dir ($albumdir) can't be a subdirectory of picdir_dir ($picdir)"
             if ($albumdir2 =~ m/^$picdir2\//);
+
+        if( defined $option{j} ) {
+            my $injectDir = $option{j};
+            my $injectExists = 1;
+
+            chdir $injectDir or warn "Can't chdir $injectDir: $!" and $injectExists = 0;
+
+            if( $injectExists ) {
+                $injectDir = File::Spec->rel2abs(".") unless -l $option{j};
+                chdir $pwd;
+            }
+
+            die "inject_dir (specified via -j parameter) $option{j} must be a subdirectory of pic_dir ($picdir)"
+                unless $injectDir =~ m#^$picdir2/.*#;
+
+            $configHash->{injectDir}
+                = File::Spec->rel2abs(File::Spec->canonpath($injectDir));
+            $configHash->{injectDir} .= '/';        # add trailing slash
+        }
     }
 
     $picdir = File::Spec->rel2abs(File::Spec->canonpath($picdir));
@@ -2190,6 +2213,16 @@
 
 sub generateImageListPage{
     my ($album, $albumHashRef, $imageDataRef, $xlinksRef, $configHash) = @_;
+    if( $configHash->{injectDir} ne '' ) {
+        my $injectDir = $configHash->{injectDir};
+        my $oneDirUp;
+        # drop the last subdirectory
+        ( $oneDirUp = $configHash->{injectDir} ) =~ s#(.*/).*?/$#$1#o;
+        my $dir = $picdir . $album;
+        # Only generate imagelist page during injection
+        # for 1-level-up or injected album itself
+        return unless $dir =~ m#($oneDirUp|$injectDir)$#;
+    }
     my %albumHash = %{$albumHashRef};
     my @imageData = @{$imageDataRef};
     my $pwd;
@@ -2400,6 +2433,18 @@
 
 sub generateLongSubAlbumPage{
     my ($album, $albumHashRef, $configHash) = @_;
+    if( $configHash->{injectDir} ne '' ) {
+        my $injectDir = $configHash->{injectDir};
+        my( $oneDirUp, $twoDirUp );
+        # drop the last subdirectory
+        ( $oneDirUp = $configHash->{injectDir} ) =~ s#(.*/).*?/$#$1#o;
+        # drop the last subdirectory
+        ( $twoDirUp = $oneDirUp ) =~ s#(.*/).*?/$#$1#o;
+        my $dir = $picdir . $album;
+        # Only generate subalbum page during injection for
+        # 1-level-up or 2-level-up or injected album itself
+        return unless $dir =~ m#($oneDirUp|$twoDirUp|$injectDir)$#;
+    }
     my %albumHash = %{$albumHashRef};
 
     # hash for final subsitutions
@@ -2680,6 +2725,18 @@
     my ($album, $albumHashRef, $firstIsIndex, $configHash,
         $xlinkListRef,
         @imageData) = @_;
+
+    if( $configHash->{injectDir} ne '' ) {
+        my $injectDir = $configHash->{injectDir};
+        my $oneDirUp;
+        # drop the last subdirectory
+        ( $oneDirUp = $configHash->{injectDir} ) =~ s#(.*/).*?/$#$1#o;
+        my $dir = $picdir . $album;
+        # Only generate thumbnail page during injection for
+        # 1-level-up or injected album itself
+        return unless $dir =~ m#($oneDirUp|$injectDir)$#;
+    }
+
     my @xlinkList=@$xlinkListRef;
     my %albumHash = %{$albumHashRef};
     my $numImages = scalar(@imageData); #element count
@@ -3095,6 +3152,13 @@
     my ($album, $albumHashRef, $firstIsIndex,
         $configHash, @imagesToDisplay) = @_;
 
+    my $skipDueToInjection = 0;
+
+    if( $configHash->{injectDir} ne '' ) {
+        # skip processing of images unless processing injected directory
+        $skipDueToInjection = 1 unless $picdir . $album eq $configHash->{injectDir};
+    }
+
     # an array of references to hashes storing information about each image
     my @imageData;
 
@@ -3350,10 +3414,12 @@
         $imageData[$i]{'detailsLink'} =
             generateSecondaryFieldsPage($imageData[$i], $album, $albumHashRef,
                                         $crntImageBase.$crntImageType,
-                                        $configHash);
+                                        $configHash)
+                unless $skipDueToInjection;
         if ( $configHash->{searchEngine}) {
             writeSearchString($imageData[$i], $configHash, $albumHashRef,
-                              $album);
+                              $album)
+                unless $skipDueToInjection;
         }
     }
 
@@ -3361,6 +3427,7 @@
 
     # now generate html
     for ($i=0; $i<$numImages; $i++) {
+        last if $skipDueToInjection;
         for (my $j=0; $j <= $imageData[$i]->{maxSize}; $j++) {
             my $lastImageURL = getHTMLImagePageLink($imageData[$numImages-1],
                                                     $j, $numImages-1);