Release new version 2.13.0
[grml-scripts.git] / usr_bin / iimage
1 #!/bin/bash
2 ######################################################################
3 #
4 #           I_I_M_A_G_E
5 #
6 # Copyright (c) 1996-2004, Ronald Schmidt    <ronsc@ronsc.de>
7 #               2000-2004, Holm Sieber       <sieber@prudsys.com>
8 #                    2004, Daniel Molkentin  <daniel@molkentin.de>
9 #                    2004, Sven Guckes       <guckes@guckes.net>
10 #
11 # Download: http://www.ronsc.de
12 #
13 ######################################################################
14 #
15 # All rights reserved.
16 #
17 #
18 # Redistribution and use in source and binary forms, with or without
19 # modification, are permitted provided that the following conditions
20 # are met:
21 #
22 # Redistributions of source code must retain the above copyright
23 # notice, this list of conditions and the following disclaimer.
24 # Redistributions in binary form must reproduce the above copyright
25 # notice, this list of conditions and the following disclaimer in the
26 # documentation and/or other materials provided with the distribution.
27 # Neither the name of the organization nor the names of its
28 # contributors may be used to endorse or promote products derived
29 # from this software without specific prior written permission.
30 #
31 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
34 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
35 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
36 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
37 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
38 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
39 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
40 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
41 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42 # POSSIBILITY OF SUCH DAMAGE.
43 #
44 ######################################################################
45 #
46 #     Web:     http://www.ronsc.de/iimage/
47 #
48 #     List:    https://mailman.ronsc.de/listinfo/iimage
49 #
50 ######################################################################
51
52 SVN_ID="$Id: iimage 38 2009-12-15 20:30:46Z ronsc $"
53
54 # old templates might still use CVS_VERSION
55 CVS_VERSION="$SVN_ID"
56
57 ##############################################################
58 # Defaults
59
60 PATH=$PATH:/usr/X11R6/bin:/usr/bin
61 # external commands: convert identify jpegtran metacam mplayer
62 # awk basename cat cp date echo find grep mkdir mv rm uname
63
64 FONT="fixed"
65 COLOR="white"
66 FONTSIZE="14"
67
68 DATADIR=".tmp"
69
70 LANG=en_US
71
72 DISPLAY_GEOMETRY=640x480
73 THUMBNAIL_GEOMETRY=150x150
74 THUMBNAIL_QUALITY=75
75
76 THUMBNAILS="$DISPLAY_GEOMETRY $THUMBNAIL_GEOMETRY"
77
78 # Slide-Show Options
79 SLIDE_DELAY=5
80 SLIDE_LOOP=false
81
82 EXCLUDE_ORGINAL=false
83 RECURSIVE=false
84 IIMAGE_SPECIAL=false
85
86 COLUMNS=4
87
88 VARIABLES="title description order date ignore iorder \
89            FONT COLOR FONTSIZE CTAG \
90            THUMBNAIL_QUALITY \
91            SLIDE_DELAY SLIDE_LOOP \
92            EXCLUDE_ORGINAL RECURSIVE COLUMNS \
93            AUDIODIR IIMAGE_SPECIAL"
94
95 ##############################################################
96 # handlers
97
98 FILE_EXTENSIONS='jpg jpeg gif png avi mov mpeg'
99 function AVI_handler_prepare() {
100    # evtl ein bild aus den ersten 10 sec
101
102    if [ "$MPLAYER" ] ; then
103
104
105       DST="$DATADIR/$1.1st.jpg"
106
107       if [ "$DST" -ot "$1" ]; then
108
109          echo -n " 1st"
110          rm -f $DATADIR 00000001.jpg 00000002.jpg
111
112          mplayer -quiet -frames 1 -ao none -vo jpeg -jpeg outdir=$DATADIR $1 >/dev/null 2>/dev/null
113
114          if  [ -f "$DATADIR/00000001.jpg" ] ; then
115             convert "$DATADIR/00000001.jpg" -resize $THUMBNAIL_GEOMETRY "$DST"
116          fi
117
118          rm -f $DATADIR 00000001.jpg 00000002.jpg
119       fi
120    fi
121    true
122 }
123
124 function AVI_handler_index() {
125    echo -n " I"
126
127    THIS_IMAGE="$1"
128    THIS_HTML="$DATADIR/$THIS_IMAGE.html"
129    THIS_HTML_INFO="$DATADIR/$THIS_IMAGE.info.html"
130
131    if [ -f "$DATADIR/$1.1st.jpg" ] ; then
132       ITEM_ICON=$1.1st.jpg
133    else
134       ITEM_ICON=avi.jpg
135    fi
136    { . $INDEX_ICON_TEMPLATE;} >> "$INDEX_HTML"
137 }
138
139 function AVI_handler_html() {
140    # keine extra ansicht
141    true;
142 }
143
144 function MPEG_handler_prepare() {
145    AVI_handler_prepare $@
146 }
147 function MPEG_handler_index() {
148    AVI_handler_index $@
149 }
150 function MPEG_handler_html() {
151    AVI_handler_html $@
152 }
153
154 function MOV_handler_prepare() {
155    # evtl ein bild aus den ersten 10 sec
156    AVI_handler_prepare $1
157 }
158
159 function MOV_handler_index() {
160    echo -n " I"
161
162    THIS_IMAGE="$1"
163    THIS_HTML="$DATADIR/$THIS_IMAGE.html"
164    THIS_HTML_INFO="$DATADIR/$THIS_IMAGE.info.html"
165    if [ -f "$DATADIR/$1.1st.jpg" ] ; then
166       ITEM_ICON=$1.1st.jpg
167    else
168       ITEM_ICON=mov.jpg
169    fi
170    { . $INDEX_ICON_TEMPLATE ;} >> "$INDEX_HTML"
171 }
172
173 function MOV_handler_html() {
174    # keine extra ansicht
175    true;
176 }
177
178
179 function default_handler_index() {
180    echo -n " I"
181
182    THIS_IMAGE="$1"
183    THIS_HTML="$DATADIR/$THIS_IMAGE.html"
184    THIS_HTML_INFO="$DATADIR/$THIS_IMAGE.info.html"
185
186    load_image_infos $1
187
188    { . $INDEX_ITEM_TEMPLATE ; } >> "$INDEX_HTML"
189 }
190
191 function default_handler_html() {
192
193    FILE="$1"; THIS_IMAGE="$1";
194    load_image_infos $1
195
196    PREV_IMAGE=`( echo index ; cat $DATADIR/slideable ; echo index ; ) | grep -1 "^$THIS_IMAGE$" | head -n 1`
197    NEXT_IMAGE=`( echo index ; cat $DATADIR/slideable ; echo index ; ) | grep -1 "^$THIS_IMAGE$" | tail -n 1`
198
199    POS=$[ $POS + 1 ]
200
201    echo -n " $POS"
202
203    if [ "$NEXT_IMAGE" = "index" ] ; then
204       R_NEXT_HTML="../index.html"
205       R_NEXT_HTML_INFO="../index.html"
206       R_NEXT_HTML_SLIDE="../index.html"
207    else
208       R_NEXT_HTML="$NEXT_IMAGE.html"
209       R_NEXT_HTML_INFO="$NEXT_IMAGE.info.html"
210       R_NEXT_HTML_SLIDE="$NEXT_IMAGE.slide.html"
211    fi
212
213    if [ "$PREV_IMAGE" = "index" ] ; then
214       R_PREV_HTML="../index.html"
215       R_PREV_HTML_INFO="../index.html"
216       R_PREV_HTML_SLIDE="../index.html"
217    else
218       R_PREV_HTML="$PREV_IMAGE.html"
219       R_PREV_HTML_INFO="$PREV_IMAGE.info.html"
220       R_PREV_HTML_SLIDE="$PREV_IMAGE.slide.html"
221    fi
222
223    R_THIS_HTML="$THIS_IMAGE.html"
224    THIS_HTML="$DATADIR/$THIS_IMAGE.html"
225    THIS_HTML_INFO="$DATADIR/$THIS_IMAGE.info.html"
226    THIS_HTML_SLIDE="$DATADIR/$THIS_IMAGE.slide.html"
227
228    if [ "$FIRST_HTML" = "" ] ; then
229       FIRST_HTML="$THIS_HTML";
230    fi
231
232    echo -n " H"
233    { . $HTML_TEMPLATE ;} > "$THIS_HTML"
234
235    echo -n "+"
236    { . $HTML_INFO_TEMPLATE ;} > "$THIS_HTML_INFO"
237
238    echo -n "*"
239    { . $HTML_SLIDE_TEMPLATE ;} > "$THIS_HTML_SLIDE"
240
241 }
242
243 function default_handler_prepare() {
244    build_thumbnail "$1"
245    echo "$1" >> $DATADIR/slideable
246 }
247
248
249 ##############################################################
250 ##############################################################
251 ##############################################################
252 ##############################################################
253 # load config
254 if [ -f  /etc/iimage.conf ] ; then . /etc/iimage.conf; fi
255 if [ -f  ~/.iimage ] ; then . ~/.iimage; fi
256 if [ -f  ~/.iimage/config ] ; then . ~/.iimage/config; fi
257
258 dcount=1;
259 for dir in `pwd | tr '/' ' '` ; do
260    dfile=`pwd | cut -d"/" -f-$dcount`/description
261    dcount=$[ $dcount + 1 ]
262    if [ -f $dfile ] ; then 
263       . $dfile 2>/dev/null
264    fi
265 done
266 unset order title description 
267
268 if [ -f  ./description ] ; then . ./description 2>/dev/null ; fi
269
270
271 ##############################################################
272 # definitions
273
274 VERSION="r`echo $SVN_ID| cut -d " " -f 3`"
275
276 HTML_TEMPLATE="$DATADIR/html_template.html"
277 HTML_INFO_TEMPLATE="$DATADIR/html_info_template.html"
278 HTML_SLIDE_TEMPLATE="$DATADIR/html_slide_template.html"
279
280 if [ "$TEMPLATEDIR" = "" ] ; then
281    TEMPLATEDIR="~/.iimage"
282 fi
283
284 FOOTER_TEMPLATE="$DATADIR/footer_template.html"
285 HEAD_TEMPLATE_START="$DATADIR/head_template_start.html"
286 HEAD_TEMPLATE_END="$DATADIR/head_template_end.html"
287 INDEX_HEAD_TEMPLATE="$DATADIR/index_head_template.html"
288 INDEX_ITEM_TEMPLATE="$DATADIR/index_item_template.html"
289 INDEX_ICON_TEMPLATE="$DATADIR/index_icon_template.html"
290 INDEX_FOOT_TEMPLATE="$DATADIR/index_foot_template.html"
291 INDEX_DIR_TEMPLATE="$DATADIR/index_dir_template.html"
292 CSS_TEMPLATE="$DATADIR/css_template.css"
293 INFO_AWK_TEMPLATE="$DATADIR/display_info_template.awk"
294 TRANSP_PIXEL="$DATADIR/transp.gif"
295 DIR_ICON="$DATADIR/dir.gif"
296 AVI_ICON="$DATADIR/avi.jpg"
297 MOV_ICON="$DATADIR/mov.jpg"
298 SND_ICON="$DATADIR/snd.png"
299 COUNTFILE_CURENT="$DATADIR/count.current"
300 COUNTFILE_SUB="$DATADIR/count.sub"
301 COUNTFILE_SUM="$DATADIR/count.summ"
302 INDEX_HTML="index.html"
303
304 DATA_FILES="DIR_ICON \
305 TRANSP_PIXEL INFO_AWK_TEMPLATE CSS_TEMPLATE INDEX_DIR_TEMPLATE \
306 INDEX_FOOT_TEMPLATE INDEX_ITEM_TEMPLATE INDEX_HEAD_TEMPLATE \
307 HTML_INFO_TEMPLATE HTML_TEMPLATE \
308 HTML_SLIDE_TEMPLATE AVI_ICON MOV_ICON INDEX_ICON_TEMPLATE \
309 SND_ICON HEAD_TEMPLATE_START HEAD_TEMPLATE_END \
310 FOOTER_TEMPLATE"
311
312 ######################################################################
313 ######################################################################
314 ######################################################################
315 # funktions
316
317 function upper() { echo $* | tr "[a-z]" "[A-Z]" ; }
318 function lowerr() { echo $* | tr "[A-Z]" "[a-z]" ; }
319
320 function load_image_infos() {
321
322    THIS_IMAGE=$1
323
324    TN_IMAGE=$DATADIR/$THUMBNAIL_GEOMETRY/$THIS_IMAGE
325    TN_IMAGE_SIZE=`cat $DATADIR/$THUMBNAIL_GEOMETRY/$THIS_IMAGE.size`
326
327    THIS_IMAGE_GEOMETRY=`cat $DATADIR/$THIS_IMAGE.geometry`
328    if [ "$METACAM" ]; then
329       THIS_IMAGE_DATE="`metainfo $DATADIR/$THIS_IMAGE.metacam \
330          'Image Creation Date'`"
331    elif [ "$JHEAD" ]; then
332       THIS_IMAGE_DATE="`metainfo $DATADIR/$THIS_IMAGE.metacam \
333          'Date/Time'`"
334    fi
335
336    R_IMAGE=../$THIS_IMAGE
337    R_DISPLAY_IMAGE=$DISPLAY_GEOMETRY/$THIS_IMAGE
338    TN_IMAGE=$DATADIR/$THUMBNAIL_GEOMETRY/$THIS_IMAGE
339
340    TN_IMAGE_SIZE=`cat $DATADIR/$THUMBNAIL_GEOMETRY/$THIS_IMAGE.size`
341    R_DISPLAY_IMAGE_SIZE=`cat $DATADIR/$DISPLAY_GEOMETRY/$THIS_IMAGE.size`
342
343    THIS_IMAGE_GEOMETRY=`cat $DATADIR/$THIS_IMAGE.geometry`
344    if [ "$METACAM" ]; then
345       THIS_IMAGE_DATE="`metainfo $DATADIR/$THIS_IMAGE.metacam \
346          'Image Creation Date'`"
347    elif [ "$JHEAD" ]; then
348       THIS_IMAGE_DATE="`metainfo $DATADIR/$THIS_IMAGE.metacam \
349          'Date/Time'`"
350    fi
351
352    EXTENSION=`echo $THIS_IMAGE  | awk -F"." '{print $NF}'`
353    WAV_FILE_BASE=`basename $THIS_IMAGE .$EXTENSION`
354    if [ "$AUDIODIR" != "" ] ; then AUDIODIREXT="$AUDIODIR/"; fi
355    WAV_FILE=`eval \ls "$AUDIODIREXT$WAV_FILE_BASE.[wW][aA][vV]" 2>/dev/null | head -n 1`
356
357    if [ -f "$WAV_FILE" ] ; then
358       EXTRA_SMALL_ICON="<a href=$WAV_FILE><img alt=\"Sound-Logo\" src=\"$DATADIR/snd.png\" align=\"right\" border=\"0\"></a>";
359       EXTRA_SMALL_ICON2="<a href=../$WAV_FILE><img alt=\"Sound-Logo\" src=\"snd.png\" border=\"0\"></a>";
360    else
361       EXTRA_SMALL_ICON=""
362       EXTRA_SMALL_ICON2=""
363    fi
364 }
365
366 # --------------------------------------------------------------------
367 function require() {
368    which $1 2>/dev/null >> $DATADIR/log
369    if which $1 2>/dev/null >/dev/null ; then
370       true
371    else
372       echo "ERROR: $1 not found!"
373       exit;
374    fi
375 }
376
377 # --------------------------------------------------------------------
378 # get filesize
379 function filesize() {
380    echo -ne "`ls -L -l -d -G \"$1\" | awk '{print $4}'`"
381 }
382
383 # --------------------------------------------------------------------
384 # read key:val from description-file
385 function description() {
386
387    file="description"
388    if [ "$2" != "" ] ; then file="$2"; fi
389
390    if [ -f "$file" ] ; then
391       grep "^$1" "$file" \
392       | awk -F"=" '{for (a=2;a<=NF;a++) {if (b!="") b=b "=" ; \
393                    b=b $a}}END{printf b}' | cut -d"\"" -f 2
394    fi
395 }
396
397 function wrap_table() {
398    T_COUNT=$[ $T_COUNT + 1 ]
399
400    if [ $T_COUNT -gt $COLUMNS ] ; then
401       echo "</tr><tr>";
402       T_COUNT=1;
403    fi;
404
405    export T_COUNT
406
407    # alte templates meeren dadrin rum
408    [ -f .count ] && echo 0 >.count
409 }
410
411 # --------------------------------------------------------------------
412 function metainfo() {
413    file=$1;
414    tag=$2;
415    cat "$file" | grep "$tag" \
416    | awk -F": " '{ a=$2; while (substr(a,1,1)==" ") \
417                  { a=substr(a,2);} print a}'
418 }
419
420 # --------------------------------------------------------------------
421 function generate_info_table() {
422
423    if [ -f "$DATADIR/$THIS_IMAGE.metacam" ] ; then
424       cat "$DATADIR/$THIS_IMAGE.metacam" | awk -F": " -f "$INFO_AWK_TEMPLATE"
425    fi
426    if [ -f "$DATADIR/$THIS_IMAGE.identify" ] ; then
427       cat "$DATADIR/$THIS_IMAGE.identify" | awk -F": " -f "$INFO_AWK_TEMPLATE"
428    fi
429 }
430
431 # --------------------------------------------------------------------
432 function rotate_image() {
433    FILE="$1"
434    if [ $METACAM ]; then
435      ORIENTATION=`metacam -v "$FILE" 2>/dev/null \
436                 | grep Orientation | cut -d":" -f 2  | cut -d"," -f 1 `
437    elif [ $JHEAD ]; then
438      ORIENTATION=`jhead -v "$FILE" 2>/dev/null \
439                 | grep "Orientation =" | head -1 | cut -d '=' -f 2 | cut -c 2 `
440    fi
441    ORIENTATION=`echo $ORIENTATION`
442
443    if [ "$ORIENTATION" -a "$ORIENTATION" != "1" ] ; then
444       SIZE=`identify "$FILE"| cut -d" " -f 3`
445       WIDTH=`echo $SIZE | cut -d"x" -f 1 | cut -d"+" -f 1`
446       HEIGHT=`echo $SIZE | cut -d"x" -f 2 | cut -d"+" -f 1`
447
448       if [ "$HEIGHT" -lt "$WIDTH" ] ; then
449
450          mkdir -p .backup
451          if [ ! -f .backup/$FILE ] ; then
452             echo -n " B"
453             cp $FILE .backup/$FILE
454          fi
455
456          if [ "$ORIENTATION" = "6" ] ; then
457             echo -n " /"
458             jpegtran -rotate 90 -copy all "$FILE" >"$FILE""_"
459          else
460             echo -en " \\"
461             jpegtran -rotate 270 -copy all "$FILE" >"$FILE""_"
462          fi
463          mv -f "$FILE""_" "$FILE"
464       fi
465    fi
466 }
467
468 ##############################################################
469 # generate thumbnails
470 function build_thumbnail() {
471
472    IMAGE="$1"
473
474    if [ "$METACAM" ] || [ "$JHEAD" ]; then
475       if [ -a "$JPEGTRAN" ] ; then
476          rotate_image "$IMAGE"
477       fi
478    fi
479
480    if [ ! -f "$DATADIR/$IMAGE.size" -o \
481         "$DATADIR/$IMAGE.size" -ot "$IMAGE" ] ; then
482       # identify -format "%wx%h" "$IMAGE" > "$DATADIR/$IMAGE.geometry"
483
484       if [ "$IDENTIFY2" ] ; then
485          echo -n " I"
486          identify \
487             -format "  Geometry: %wx%h\n  Format: %m\n  Filesize: %b" \
488             "$IMAGE" > "$DATADIR/$IMAGE.identify"
489       else
490          echo -n " i"
491          identify -verbose "$IMAGE" > "$DATADIR/$IMAGE.identify"
492       fi
493
494       echo -n "S"
495       cat "$DATADIR/$IMAGE.identify" \
496            | grep "^ *.eometry:" \
497            | awk -F': ' '{print $2}' > "$DATADIR/$IMAGE.geometry"
498       cat "$DATADIR/$IMAGE.geometry" \
499            | awk -F"x" '{print "WIDTH=\""$1"\" HEIGHT=\""$2"\""}' > $DATADIR/$IMAGE.size
500    fi
501
502    if [ "$METACAM" ] ; then
503       if [ ! -f "$DATADIR/$IMAGE.metacam" -o \
504              "$DATADIR/$IMAGE.metacam" -ot "$IMAGE" ] ; then
505          echo -n " M"
506          metacam "$IMAGE" >"$DATADIR/$IMAGE.metacam" 2>/dev/null
507       fi
508    elif [ "$JHEAD" ] ; then
509       if [ ! -f "$DATADIR/$IMAGE.metacam" -o \
510              "$DATADIR/$IMAGE.metacam" -ot "$IMAGE" ] ; then
511          echo -n " J"
512          jhead "$IMAGE" >"$DATADIR/$IMAGE.metacam" 2>/dev/null
513       fi
514    fi
515
516    echo -n " "
517
518    LASTIMAGE="";
519
520    for GEOMETRY in $THUMBNAILS; do
521
522       mkdir -p "$DATADIR/$GEOMETRY" || exit
523
524       echo -ne "($GEOMETRY"
525       DST="$DATADIR/$GEOMETRY/$IMAGE"
526
527       if [ ! \( -L "$DST" -a -L "$IMAGE" \) ] ; then
528       if [ ! -s "$DST" -o "$DST" -ot "$IMAGE" -o "$FORCE_TN" = "true" ] ; then
529
530          if [ "$LASTIMAGE" = "" ] ; then
531             LASTIMAGE="$IMAGE";
532          fi
533
534          echo -n " T"
535          convert  -quality $THUMBNAIL_QUALITY \
536                   -resize "$GEOMETRY+0+0>" "$LASTIMAGE" \
537                   "$DST"
538 #                  +profile "$LASTIMAGE" \
539
540          LASTIMAGE="$DST"
541
542          # optimize with jpegtran
543
544          JPEG=""
545
546          echo $DST | grep .jpg >/dev/null && JPEG=true
547          echo $DST | grep .JPG >/dev/null && JPEG=true
548          echo $DST | grep .jpeg >/dev/null && JPEG=true
549          echo $DST | grep .JPEG >/dev/null && JPEG=true
550
551          if [ "$JPEGTRAN" -a "$JPEG" ] ; then
552             echo -n " O"
553             jpegtran -copy all -optimize -progressive "$DST" > "$DST.tmp"
554             mv -f "$DST.tmp" "$DST"
555          fi
556
557       fi
558       fi
559
560       if [ ! -f "$DST.size" -o "$DST.size" -ot "$DST" ] ; then
561
562          # imagesite WIDTHxHEIGH
563          # identify -format "%wx%h" "$DST" > "$DST.geometry"
564
565          if [ "$IDENTIFY2" ] ; then
566             echo -n " I"
567             identify \
568                -format "  Geometry: %wx%h\n  Format: %m\n  Filesize: %b" \
569                "$DST" \
570                | grep "^ *.eometry:" \
571                | awk -F': ' '{print $2}' > "$DST.geometry"
572          else
573             echo -n " I"
574             identify -verbose "$DST" | grep "^ *.eometry:" \
575                | awk -F': ' '{print $2}' > "$DST.geometry"
576          fi
577
578          echo -n "S"
579
580          # cache image-geometry
581          cat "$DST.geometry" | awk -F"x" '{print "WIDTH=\""$1"\" HEIGHT=\""$2"\""}' \
582             > "$DST.size"
583
584          if [ "$GEOMETRY" != "$THUMBNAIL_GEOMETRY" -a "$CTAG" ] ; then
585             Y=`cat "$DST.geometry" | cut -d"x" -f2 `
586             echo -n " TG"
587             convert "$DST" -pointsize $FONTSIZE \
588                -font "$FONT" -stroke black -fill black \
589                -draw 'text 10, '"$[ $Y - 10 ]"' "'"$CTAG"'"' "$DST"_
590             mv -f "$DST"_ "$DST"
591             convert "$DST" -pointsize $FONTSIZE \
592                -font "$FONT" -stroke $COLOR -fill $COLOR \
593                -draw 'text 9, '"$[ $Y - 9 ]"' "'"$CTAG"'"' "$DST"_
594             mv -f "$DST"_ "$DST"
595          fi
596
597       fi
598
599       echo -n ") "
600
601    done
602 }
603
604 ##############################################################
605 function search_subdirs() {
606
607    ORDER=`description order`
608
609    if [ "$ORDER" = "" ] ; then ORDER="alphabetically"; fi
610
611    if [ "$ORDER" = "accesstime" ] ; then
612       RAWDIRS=`eval "find * -maxdepth 0 -type d $IIMAGE_EXCLUDE"`
613       if [ "$RAWDIRS" != "" ] ; then
614          DIRS=`ls -dt $RAWDIRS`
615       else
616          DIRS=""
617       fi
618    elif [ "$ORDER" = "alphabetically" ] ; then
619       DIRS=`eval "find * -maxdepth 0 -type d $IIMAGE_EXCLUDE"`
620    elif [ "$ORDER" = "dec" ] ; then
621       DIRS=`eval "find * -maxdepth 0 -type d $IIMAGE_EXCLUDE"`
622    else
623       DIRS=$ORDER
624    fi
625
626    COUNT_SUBDIRS=0;
627
628    for DIR in $DIRS ; do
629
630       if [ "$DIR" = "---" ] ; then
631          echo "<tr><td colspan=\"3\"><hr noshade size=\"1\"></td></tr>";
632       else
633
634          FOLDER_DESCRIPTION="";
635          SUB_IMAGE=""
636          SUB_IMAGE_size="";
637          SUB_TITLE="";
638          SUB_COUNT=0;
639
640          if [ -f "$DIR/$COUNTFILE_SUM" ] ; then
641             SUB_COUNT=`cat $DIR/$COUNTFILE_SUM`
642             if [ "$SUB_COUNT" = "" ] ; then SUB_COUNT=0; fi
643          else
644             SUB_COUNT=0;
645          fi
646
647          if [ "$SUB_COUNT" -gt 0 ] ; then
648             SUB_COUNT_STR="$SUB_COUNT";
649          else
650             SUB_COUNT_STR="";
651          fi
652
653
654          COUNT_SUBDIRS=$[ $COUNT_SUBDIRS + $SUB_COUNT ]
655
656          if [ -f "$DIR/description" ]; then
657
658             title="`description title $DIR/description`"
659             date="`description date $DIR/description`"
660             FOLDER_DESCRIPTION="`description description $DIR/description`"
661
662             if [ "$title" = "" ] ; then title=$DIR ; fi
663
664             eval `grep mainimage= $DIR/description`
665
666             SUB_IMAGE=$DIR/$DATADIR/$THUMBNAIL_GEOMETRY/$mainimage
667             SUB_IMAGE_size=$DIR/$DATADIR/$THUMBNAIL_GEOMETRY/$mainimage.size
668
669             SUB_TITLE="$title"
670             if [ "$date" != "none" ] ; then SUB_DATE="$date"; fi
671
672          else
673             SUB_TITLE=$DIR
674          fi
675
676          SUB_DST=$DIR/index.html
677
678          { . $INDEX_DIR_TEMPLATE ;}
679       fi
680
681    done
682
683    echo $COUNT_SUBDIRS > $COUNTFILE_SUB
684
685 }
686
687 ##############################################################
688 # create picture index
689
690 function check_iimage() {
691    info
692
693    require convert
694    require find
695    require awk
696    require identify
697    require grep
698
699    {
700       uname
701       identify  | grep Version
702       convert  | grep Version
703    } >> $DATADIR/log
704
705    JPEGTRAN="`which jpegtran 2>/dev/null`"
706    MPLAYER="`which mplayer 2>/dev/null`"
707    METACAM="`which metacam 2>/dev/null`"
708    JHEAD="`which jhead 2>/dev/null`"
709    IDENTIFY2=`identify  | grep -- -format 2>/dev/null`
710    IIMAGE_FOLLOW_LINKS="`which iimage_follow_links 2>/dev/null`"
711
712    HOSTNAME=`hostname --fqdn 2>/dev/null || hostname`
713
714    echo -n "features: "
715
716    [ "$JPEGTRAN" ] && echo -n "jpegtran "
717    [ "$MPLAYER" ] && echo -n "mplayer "
718    [ "$METACAM"  ] && echo -n "metacam "
719    [ "$JHEAD"  ] && echo -n "jhead "
720    [ "$IDENTIFY2" ] && echo -n "identify>5.x "
721    [ "$IIMAGE_FOLLOW_LINKS" ] && echo -n "follow_links "
722
723    echo ""
724    echo "legend:   I..identify S..size M..metacam J..jhead T..thumb O..optimize"
725    echo "-----------------------------------------------------------------------------"
726
727    IIMAGE_CHECK="ok"
728    export IIMAGE_CHECK METACAM JPEGTRAN IDENTIFY2 IIMAGE_FOLLOW_LINKS
729
730    IIMAGE_TOPLEVEL=true;
731 }
732
733 function store_templates() {
734
735    TMPLATES=""
736
737    for file in $DATA_FILES ; do
738
739       base_file=`eval 'echo -e $'$file`
740
741       if [ ! -f $base_file -o "$FORCE_TEMPLATES" = "true" ] ; then
742
743          src_file=`basename $base_file`
744
745          if [ "$TMPLATES" = "" ] ; then
746             echo -en "TEMPLATE:\t"
747             TMPLATES=false;
748          fi
749
750          #"$FORCE_TEMPLATES" = "" -a
751          if [ "(" -f $TEMPLATEDIR/$src_file -o -L $TEMPLATEDIR/$src_file ")" ] ; then
752             cp $TEMPLATEDIR/$src_file $base_file
753             echo -n "~"
754          else
755             eval "put_$file >$base_file"
756             echo -n "o"
757          fi
758       fi
759
760    done
761
762    [ "$TMPLATES" != "" ] && echo # OK
763 }
764
765 function init_iimage() {
766
767    mkdir -p $DATADIR; ls -l >$DATADIR/ls-l.new; touch $DATADIR/ls-l.old
768
769    date > $DATADIR/log
770    rm -f $DATADIR/errors
771
772    [ "$IIMAGE_CHECK" = "" ] && check_iimage;
773
774
775    # -- einige Dinge ignorieren --
776    IIMAGE_EXCLUDE=""
777    IGNORE=`description ignore`
778
779    IGNORE="$IGNORE $AUDIODIR"
780
781    for file in $IGNORE ; do
782        IIMAGE_EXCLUDE="$IIMAGE_EXCLUDE ! -name \"$file\" "
783    done
784    IIMAGE_EXCLUDE="$IIMAGE_EXCLUDE ! -name $DATADIR"
785    
786    export IIMAGE_EXCLUDE
787
788 }
789
790 function find_all_images() {
791
792
793
794
795    FILE_EXTENSIONS_UPPER=`upper $FILE_EXTENSIONS`
796
797    ALL_IMAGES=
798    for ext in $FILE_EXTENSIONS $FILE_EXTENSIONS_UPPER ; do
799       ALL_IMAGES="$ALL_IMAGES `eval \"find *.$ext -type f -maxdepth 0 $IIMAGE_EXCLUDE 2>/dev/null \"`"
800    done
801
802    # Bilder sortieren
803
804    IORDER=`description iorder`
805
806    if [ "$IORDER" = "" ] ; then IORDER="alphabetically"; fi
807
808    if [ "$IORDER" = "digicam" ] ; then
809       ALL_IMAGES=`ls $ALL_IMAGES | sort -n -k 2 -t "_"`
810       true
811    elif [ "$IORDER" = "alphabetically" ] ; then
812       # bleibt beim alten
813       true
814    elif [ "$IORDER" = "accesstime" -o "$IORDER" = "accesstime_asc" -o "$IORDER" = "accesstime_ascending" ] ; then
815       ALL_IMAGES=`ls -dtr $ALL_IMAGES`
816       true
817    elif [ "$IORDER" = "accesstime_desc" -o "$IORDER" = "accesstime_descending" -o "$IORDER" = "dec" ] ; then
818       ALL_IMAGES=`ls -dt $ALL_IMAGES`
819       true
820    elif [ "$IORDER" = "description" ] ; then                 # 5.1.2005 hfst
821       # in der Reihenfolge wie die Beschreibungen
822       ALL_IMAGES=`for file in $ALL_IMAGES; do
823          grep -n "^$file" description | awk -F"=" '{print $1}' 
824       done | sort -nt":" | awk -F":" '{print $2}'`            # 5.1.2005 hfst ende
825    else
826       ALL_IMAGES=$IORDER
827    fi
828
829 }
830
831
832 function prepare_dir () {
833
834    store_templates
835
836    find_all_images
837
838 #   mkdir -p $DATADIR
839 #   ls -l >$DATADIR/ls-l.new
840 #   touch $DATADIR/ls-l.old
841
842    GI_COUNT="`echo $ALL_IMAGES | wc -w`"
843    echo $GI_COUNT > $COUNTFILE_CURENT
844
845    TITLE="`description title`"
846    FOLDER_DESCRIPTION="`description description`"
847
848    if [ "$TITLE" = "" ] ; then
849       TITLE="`basename $PWD`"
850    fi
851
852 }
853
854 function iimage_recursive() {
855
856    if [ "$RECURSIVE" = "true" ] ; then
857       eval "find * -maxdepth 0 -type d $IIMAGE_EXCLUDE " | while read dir ; do
858          ( cd $dir && $0 $*; )
859       done
860    fi
861 }
862
863 function prepare_images() {
864
865    # evtl noch modularisieren und erweiterbar machen
866    [ $IIMAGE_FOLLOW_LINKS ] && iimage_follow_links;
867
868    rm -f $DATADIR/slideable
869
870    echo "prepare images ..."
871
872    if [ "$GI_COUNT" -gt "0" ] ; then
873       for image in $ALL_IMAGES ; do
874
875          echo -ne "$image:\t"
876
877          EXTENSION=`echo $image  | awk -F"." '{print $NF}'`
878          EXTENSION=`upper $EXTENSION`
879
880          if declare -f $EXTENSION"_handler_prepare" >/dev/null ; then
881             eval $EXTENSION"_handler_prepare $image"
882          else
883             eval default_handler_prepare $image
884          fi
885          echo #" OK"
886       done
887    fi
888 }
889
890
891 function build_html() {
892
893    echo "generate html ..."
894
895    T_COUNT=0;
896    export T_COUNT;
897
898    # begin index
899    { . $INDEX_HEAD_TEMPLATE ;} > $INDEX_HTML
900
901    if [ "$GI_COUNT" -gt "0" ] ; then
902
903       COUNT=`cat $DATADIR/slideable | wc -l`
904       POS=0
905
906       for THIS_IMAGE in $ALL_IMAGES ; do
907          echo -en "$THIS_IMAGE:\t"
908
909          DESCRIPTION=`description "$THIS_IMAGE"`
910          THIS_IMAGE_BYTE="$[ `filesize $THIS_IMAGE` / 1024 ]"
911
912          EXTENSION=`echo $THIS_IMAGE  | awk -F"." '{print $NF}'`
913          EXTENSION=`upper $EXTENSION`
914
915          # generate html
916          if declare -f $EXTENSION"_handler_html" >/dev/null ; then
917             eval $EXTENSION"_handler_html $THIS_IMAGE"
918          else
919             eval default_handler_html $THIS_IMAGE
920          fi
921
922          wrap_table >> $INDEX_HTML ;
923
924          # generate index
925          if declare -f $EXTENSION"_handler_html" >/dev/null ; then
926             eval $EXTENSION"_handler_index $THIS_IMAGE "
927          else
928             eval "default_handler_index $THIS_IMAGE "
929          fi
930
931          echo #" OK"
932
933       done
934    fi
935
936    echo -e "\n\n\n\
937 <!--\n\
938 created with iimage $VERSION \n\
939 (c) Ronald Schmidt http://www.ronsc.de \n\n\
940 download http://www.ronsc.de/iimage/iimage\n\n\
941 $SVN_ID\n\
942 -->\
943 \n\n\n" >> $INDEX_HTML ;
944
945
946    { . $INDEX_FOOT_TEMPLATE ;} >> $INDEX_HTML
947
948
949    if [ -f "$COUNTFILE_CURENT" ] ; then
950       COUNT_CURRENT=`cat $COUNTFILE_CURENT`;
951       if [ "$COUNT_CURRENT" = "" ] ; then COUNT_CURRENT=0; fi
952    else
953       COUNT_CURRENT=0;
954    fi
955
956    if [ -f "$COUNTFILE_SUB" ] ; then
957       COUNT_DIR=`cat $COUNTFILE_SUB`;
958       if [ "$COUNT_DIR" = "" ] ; then COUNT_DIR=0; fi
959    else
960       COUNT_DIR=0;
961    fi
962
963    echo $[ $COUNT_CURRENT + $COUNT_DIR ] > $COUNTFILE_SUM;
964
965 }
966
967
968 # by Chris Huebsch
969 #    www.huebsch-gemacht.de
970 function cleanup() {
971
972    ALL_IMAGES=`if [ -d $DATADIR ]; then ( cd $DATADIR; set -C;find  *.geometry -maxdepth 0 2>/dev/null ;) ; fi`
973
974    for file in $ALL_IMAGES; do
975       base=`basename $file .geometry`
976       if [ ! -f $base ]; then
977          echo -n "cleanup $base:";
978
979          for tn in $THUMBNAILS ; do
980             echo -n " $tn";
981             rm -f $DATADIR/$tn/$base $DATADIR/$tn/$base.*
982          done
983          echo -n " M";
984          rm -f $DATADIR/$base.*
985          echo
986       fi;
987    done
988
989 #   ls -l>$DATADIR/ls-l.old
990
991
992 }
993
994
995 function finish_iimage() {
996    ls -l>$DATADIR/ls-l.old
997    if [ "$IIMAGE_TOPLEVEL" ] ; then
998       echo
999       echo -e "finished!\7"
1000    fi
1001 }
1002
1003 function update_description_names() {
1004    find_all_images
1005    for i in $ALL_IMAGES ; do
1006
1007       if ! egrep "$i=" ./description >/dev/null ; then
1008          echo "$i=`description $i`" >> ./description
1009       fi
1010
1011    done
1012 }
1013
1014 function create_description_template() {
1015
1016    DST="./description"
1017    if [ -f description ] ; then
1018       EXITS=true
1019       echo "Error: descriptions-file exists, output on stdout !"
1020       DST=/dev/stdout
1021       echo ""
1022    fi
1023
1024    for i in $VARIABLES ; do
1025       VAL=`description $i`
1026       if [ "$VAL" = "" ]; then eval "VAL=\$$i";  fi
1027       echo "$i=$VAL" >> $DST
1028    done
1029    echo "" >> $DST
1030
1031
1032    if [ "$DST" = "./description" ] ; then
1033       echo "description generated"
1034    fi
1035
1036 }
1037
1038 function generate_header() {
1039    if [ "$2" != "" ] ; then
1040       export BGCOLOR="$2"
1041    else
1042       export BGCOLOR="#ffffff"
1043    fi
1044    if [ "$3" != "" ] ; then
1045       export PREFIX="$3"
1046    else
1047       export PREFIX="."
1048    fi
1049
1050    case $1 in
1051       "start") 
1052          . $HEAD_TEMPLATE_START 
1053          ;;
1054       "end") 
1055          . $HEAD_TEMPLATE_END 
1056          ;;
1057       *)
1058          . $HEAD_TEMPLATE_START
1059          . $HEAD_TEMPLATE_END
1060          ;;
1061    esac
1062 }
1063
1064
1065
1066 ######################################################################
1067 ######################################################################
1068 ######################################################################
1069
1070 # --------------------------------------------------------------------
1071 # FOOTER_TEMPLATE
1072 function put_FOOTER_TEMPLATE() {
1073 echo '
1074 cat << EOF
1075    <br/><br/><br/><br/>
1076    
1077    <span style="font-size: 8pt">
1078       download iimage: <a style="font-size: 8pt" href="http://www.ronsc.de/iimage/iimage">www.ronsc.de</a>
1079       | (c) by <a style="font-size: 8pt" href="http://www.ronsc.de">Ronald Schmidt</a>
1080       <br/>
1081       <font color="#cccccc" style="font-size: 8pt">
1082          this site is generated at `date` by $USER@$HOSTNAME <br>
1083          with iimage version $VERSION, template version '$VERSION' 
1084       </font> 
1085    </span>
1086    </center>
1087
1088 </body>
1089 </html>
1090 EOF'
1091 }
1092
1093 # --------------------------------------------------------------------
1094 # HEAD_TEMPLATE
1095 function put_HEAD_TEMPLATE_START() {
1096 echo '
1097 cat << EOF
1098 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
1099    "http://www.w3.org/TR/html4/loose.dtd">
1100 <html>
1101    <head>
1102       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">
1103       <link rel="stylesheet" type="text/css" href="$PREFIX/css_template.css">
1104       <title>$TITLE</title>
1105    </head>
1106    
1107 <body bgcolor="$BGCOLOR">
1108
1109 <div style="
1110    border-left:1pt #ffffff solid;
1111    border-top:1pt #ffffff solid;
1112    border-bottom:1pt #000000 solid;
1113    margin:0pt;
1114    padding:0pt;
1115    "><div style="
1116       border-right:1pt #000000 solid;
1117       border-bottom:1pt #8c8ea5 solid;
1118       background: #d6d3de;
1119       margin:0pt;
1120       padding:0pt;
1121       ">
1122 <table cellspacing="0" cellpadding="1" width="100%" border="0">
1123    <tr valign="middle" bgcolor="#d6d3de">
1124
1125       <td align="left" width="10%"> 
1126          <a href="http://www.ronsc.de/iimage/iimage">iimage</a> $VERSION
1127       </td>
1128       <td width="40%">
1129          <b>$TITLE </b> $THIS_IMAGE
1130       </td>
1131       <td align=right>
1132 EOF
1133 '
1134 }
1135
1136
1137 # --------------------------------------------------------------------
1138 # HEAD_TEMPLATE
1139 function put_HEAD_TEMPLATE_END() {
1140 echo '
1141 cat << EOF
1142     &nbsp;
1143     </td>
1144
1145   </tr>
1146 </table>
1147
1148 </div>
1149 </div>
1150
1151 <!--
1152 <table cellspacing="0" cellpadding="0" width="100%" border="0">
1153 <tr valign="middle" bgcolor="#6f6f6f">
1154 <td><img src="$DATADIR/transp.gif" width="1" height="1" alt=""></td>
1155 </tr> <tr bgcolor="#e7e7e7"> <td>
1156 <img src="$DATADIR/transp.gif" width="1" height="1" alt=""></td> </tr> </table>
1157 -->
1158
1159 EOF
1160 '
1161 }
1162
1163
1164 # --------------------------------------------------------------------
1165 # HTML_TEMPLATE
1166 function put_HTML_TEMPLATE() {
1167 echo '
1168 cat << EOF
1169 `generate_header start`
1170 <a href="../$THIS_HTML_SLIDE">Slideshow</a> &nbsp;&nbsp;&nbsp;&nbsp;
1171 <a href="../index.html">Index</a> &nbsp;&nbsp;&nbsp;&nbsp;
1172 <a href="$R_PREV_HTML"><b>&lt;&lt;&lt;</b></a>
1173 $POS/$COUNT
1174 <a href="$R_NEXT_HTML"><b>&gt;&gt;&gt;</b></a>
1175 `generate_header end`
1176
1177    <br>
1178    <center>
1179    <font size="-1">&nbsp;$DESCRIPTION&nbsp;</font>
1180
1181    <table cellspacing="0" cellpadding="0" border="0">
1182    <tr>
1183
1184       <td width="640" height="480" valign="bottom" align="center" >
1185 `
1186 if [ "$EXCLUDE_ORGINAL" = "true" ] ; then
1187    echo -e "<img alt=\"$R_DISPLAY_IMAGE\" src=\"$R_DISPLAY_IMAGE\" $R_DISPLAY_IMAGE_SIZE border="1">"
1188 else
1189    echo -e "<a href=\"$R_IMAGE\"><img alt=\"$R_DISPLAY_IMAGE\" src=\"$R_DISPLAY_IMAGE\" $R_DISPLAY_IMAGE_SIZE ></a>"
1190 fi
1191 `
1192       </td>
1193    </tr>
1194    <tr>
1195    <td align="center"><font color="#999999" size="-2">
1196    ($THIS_IMAGE_DATE $THIS_IMAGE_GEOMETRY $THIS_IMAGE_BYTE kb )
1197
1198 `
1199 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1200    echo -e "<?  if (IIMAGE_WRAPPER==1) isort_wrapper_ref(\"$THIS_IMAGE\"); ?>"
1201 fi
1202 `
1203
1204    <a href="../$THIS_HTML_INFO"><font color="#999999">more ...</font></a>
1205    $EXTRA_SMALL_ICON2
1206    </font></td>
1207    </tr>
1208    </table>
1209
1210
1211 `. $FOOTER_TEMPLATE`
1212 EOF
1213 '
1214
1215 }
1216
1217
1218 # --------------------------------------------------------------------
1219 # HTML_SLIDE_TEMPLATE
1220 function put_HTML_SLIDE_TEMPLATE() {
1221 echo '
1222 cat << EOF
1223 `generate_header start "#888888"`
1224
1225 <meta http-equiv="refresh" content="$SLIDE_DELAY; URL=` if [ \"$SLIDE_LOOP\" = \"true\" ] ; then echo $FIRST_HTML ; else echo $R_NEXT_HTML_SLIDE; fi` ">
1226  
1227       <font color="#888888">Slideshow</font>
1228       <a href="../$THIS_HTML">Stop</a> &nbsp;&nbsp;&nbsp;&nbsp;
1229       <a href="../index.html">Index</a> &nbsp;&nbsp;&nbsp;&nbsp;
1230       <a href="$R_PREV_HTML_SLIDE"><b>&lt;&lt;&lt;</b></a>
1231       $POS/$COUNT
1232       <a href="$R_NEXT_HTML_SLIDE"><b>&gt;&gt;&gt;</b></a>
1233 `generate_header end`
1234
1235    <br>
1236    <center>
1237
1238    <table border="0" cellpadding="5" width="100%">
1239
1240    <tr><td width="100%" align="center" valign="top">
1241
1242       <font size="-1" color="#777777">&nbsp;$DESCRIPTION&nbsp;</font>
1243
1244       <table width="640" cellspacing="0" cellpadding="0" border="0">
1245       <tr>
1246
1247          <td width="640" height="640" valign="middle" align="center" >
1248          <img alt="$R_DISPLAY_IMAGE" src="$R_DISPLAY_IMAGE" $R_DISPLAY_IMAGE_SIZE border="1">
1249          </td>
1250       </tr>
1251       </table>
1252
1253    </td></tr></table>
1254
1255 `. $FOOTER_TEMPLATE`
1256 EOF
1257 '
1258 }
1259
1260
1261
1262 # --------------------------------------------------------------------
1263 # HTML_INFO_TEMPLATE
1264 function put_HTML_INFO_TEMPLATE() {
1265 echo '
1266 cat << EOF
1267 `generate_header start`
1268            <a href="../$THIS_HTML_SLIDE">Slideshow</a> &nbsp;&nbsp;&nbsp;&nbsp;
1269       <a href="../index.html">Index</a> &nbsp;&nbsp;&nbsp;&nbsp;
1270       <a href="$R_PREV_HTML_INFO"><b>&lt;&lt;&lt;</b></a>
1271       $POS/$COUNT
1272       <a href="$R_NEXT_HTML_INFO"><b>&gt;&gt;&gt;</b></a>
1273 `generate_header end`
1274
1275
1276    <br>
1277
1278    <center>
1279
1280    <table border="0" cellpadding="5">
1281
1282    <tr><td width="640" valign="top">
1283
1284       <font size="-1">&nbsp;$DESCRIPTION&nbsp;</font>
1285
1286       <table width="640" cellspacing="0" cellpadding="0" border="0">
1287       <tr>
1288
1289          <td width="640" height="480" valign="top" align="center" >
1290
1291 `
1292 if [ "$EXCLUDE_ORGINAL" = "true" ] ; then
1293    echo -e "<img src=\"$R_DISPLAY_IMAGE\" alt=\"$R_DISPLAY_IMAGE\" $R_DISPLAY_IMAGE_SIZE border=\"1\">"
1294 else
1295    echo -e "<a href=\"$R_IMAGE\"><img src=\"$R_DISPLAY_IMAGE\" alt=\"$R_DISPLAY_IMAGE\" $R_DISPLAY_IMAGE_SIZE ></a>"
1296 fi
1297 `
1298          <br>
1299          ($THIS_IMAGE_DATE $THIS_IMAGE_GEOMETRY
1300          $THIS_IMAGE_BYTE kb )
1301 `
1302 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1303    echo -e "<?  if (IIMAGE_WRAPPER==1) isort_wrapper_ref(\"$THIS_IMAGE\"); ?>"
1304 fi
1305 `
1306
1307    $EXTRA_SMALL_ICON2
1308          </td>
1309       </tr>
1310       </table>
1311    </td><td valign="top">
1312
1313    `generate_info_table`
1314    <a href="../$THIS_HTML"><font color="#999999">close ...</font></a>
1315
1316    </td></tr></table>
1317
1318 `. $FOOTER_TEMPLATE`
1319 EOF
1320 '
1321 }
1322
1323 # --------------------------------------------------------------------
1324 # INDEX_HEAD_TEMPLATE
1325 function put_INDEX_HEAD_TEMPLATE() {
1326 echo '
1327 cat << EOF
1328 `generate_header start "" "$DATADIR"`
1329 <a href="../index.html">zur&uuml;ck</a>
1330 `generate_header end`
1331
1332 <p>
1333
1334 <center>
1335 <table width="80%" border="0"  cellspacing="20" ><tr>
1336 <td width="50%" valign="top" align="center">
1337 <h1>$TITLE</h1>
1338
1339 `
1340 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1341    echo -e "<? if (IIMAGE_WRAPPER==1) { iimage_description(\"$DIR\",\"$SUB_DST\",\"$SUB_TITLE\",2); } else { ?> $FOLDER_DESCRIPTION <? } ?>"
1342 else
1343    echo -e "$FOLDER_DESCRIPTION "
1344 fi
1345 `
1346
1347
1348 </td>
1349
1350
1351 <td width="50%" valign="top">
1352
1353 <table border="0" >
1354 <tr>
1355 <td align="center" valign="top">
1356 <img src="$DIR_ICON" alt="Directory icon">
1357 </td>
1358 <td  valign="top">
1359 <!-- index.html ist wichtig, da es sonst nicht ohne browser geht -->
1360 <b><a href="../index.html">..</a></b>
1361 </td>
1362 </tr>
1363 `search_subdirs`
1364 </table>
1365
1366
1367 </td></tr></table>
1368 </center>
1369
1370 <p>
1371
1372 <center>
1373 <table border="0"><tr>
1374
1375 EOF
1376 '
1377 }
1378
1379 # --------------------------------------------------------------------
1380 # INDEX_ITEM_TEMPLATE
1381 function put_INDEX_ITEM_TEMPLATE() {
1382 echo '
1383 cat << EOF
1384
1385 <td align="center" valign="bottom" width="200" height="220" >
1386 <br>
1387 <span class="small">
1388    $DESCRIPTION
1389 </span>
1390 <table border="0" cellpadding="0" cellspacing="0">
1391 <tr>
1392    <td width="170" height="170" bgcolor="#dddddd" align="center" valign="middle">
1393    <a href="$THIS_HTML"><img alt="Thumbnail" src="$TN_IMAGE" $TN_IMAGE_SIZE ></a>
1394    </td>
1395 </tr>
1396 <tr>
1397    <td bgcolor="#dddddd" align="center" valign="middle">
1398    $EXTRA_SMALL_ICON
1399    <font size="-2" color="#bbbbbb">$THIS_IMAGE_DATE</font></td>
1400 </tr>
1401 <tr>
1402    <td align="center" bgcolor="#F7F7F7" class="smallgray">
1403    $THIS_IMAGE<br>
1404    <a href="$THIS_HTML_INFO">($THIS_IMAGE_GEOMETRY $THIS_IMAGE_BYTE kb)</a>
1405 `
1406 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1407    echo -e "<?  if (IIMAGE_WRAPPER==1) isort_wrapper_ref(\"$THIS_IMAGE\"); ?>"
1408 fi
1409 `
1410    </td>
1411 </tr></table>
1412
1413
1414 </td>
1415
1416 EOF
1417 '
1418 }
1419
1420 # --------------------------------------------------------------------
1421 # INDEX_ICON_TEMPLATE
1422 function put_INDEX_ICON_TEMPLATE() {
1423 echo '
1424 cat << EOF
1425
1426 <td valign="bottom" align="center" width="200" height="220">
1427
1428 <br>
1429 <span class="small">$DESCRIPTION</font>
1430
1431 <table border="0" cellpadding="0" cellspacing="0">
1432 <tr>
1433    <td width="170" height="170" bgcolor="#dddddd" align="center" valign="middle">
1434    <a href="$THIS_IMAGE"><img alt="Icon" src="$DATADIR/$ITEM_ICON" ></a>
1435    </td>
1436 </tr>
1437 <tr>
1438    <td bgcolor="#dddddd" align="center" valign="middle">
1439    $EXTRA_SMALL_ICON
1440    <font size="-2" color="#bbbbbb">$THIS_IMAGE_DATE</font></td>
1441 </tr>
1442 <tr>
1443    <td align="center" bgcolor="#F7F7F7" class="smallgray">
1444    $THIS_IMAGE<br>
1445    ($THIS_IMAGE_BYTE kb)
1446
1447 `
1448 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1449    echo -e "<?  if (IIMAGE_WRAPPER==1) isort_wrapper_ref(\"$THIS_IMAGE\"); ?>"
1450 fi
1451 `
1452
1453    </td>
1454 </tr></table>
1455
1456 </td>
1457
1458 EOF
1459 '
1460 }
1461
1462 # --------------------------------------------------------------------
1463 # INDEX_FOOT_TEMPLATE
1464 function put_INDEX_FOOT_TEMPLATE() {
1465 echo '
1466 cat << EOF
1467 </table>
1468
1469 `. $FOOTER_TEMPLATE`
1470 EOF
1471 '
1472 }
1473
1474 # --------------------------------------------------------------------
1475 # INDEX_DIR_TEMPLATE
1476 function put_INDEX_DIR_TEMPLATE() {
1477 echo '
1478 cat << EOF
1479
1480 <tr>
1481 <td align="center" valign="top">
1482    <img src="$DIR_ICON" alt="Directory icon">
1483 </td>
1484
1485 `
1486 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1487    echo -e " <? if (IIMAGE_WRAPPER==1) { iimage_description(\"$DIR\",\"$SUB_DST\",\"$SUB_TITLE\"); } else { ?>"
1488 fi
1489 `
1490
1491
1492 <td  valign="top">
1493    <b><a href="$SUB_DST">$SUB_TITLE</a></b>
1494    <br> <font size="-2"><em>$SUB_DATE</em></font>
1495 </td></tr><tr>
1496 <td></td>
1497 <td><font size="-1">$FOLDER_DESCRIPTION</font>
1498 </td>
1499
1500 `
1501 if [ "$IIMAGE_SPECIAL" = "true" ] ; then
1502    echo "<? } ?>"
1503 fi
1504 `
1505
1506 </tr>
1507
1508 EOF
1509 '
1510 }
1511
1512 # --------------------------------------------------------------------
1513 # INFO_AWK_TEMPLATE
1514 function put_INFO_AWK_TEMPLATE() {
1515 echo '
1516 BEGIN{
1517    print "<br><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
1518    a=1;
1519 }
1520 (!/---------------/){
1521
1522    if (a==1) bgcolor="#eeeeee"
1523    else bgcolor="#cccccc"
1524
1525    a=1-a;
1526    print "<tr>"
1527    print "<td bgcolor=\""bgcolor"\"><font size=\"-2\" >" $1 "</font></td>"
1528    print "<td bgcolor=\""bgcolor"\"><font size=\"-2\" >" $2 "</font></td>"
1529
1530    print "</tr>"
1531 }
1532 END{
1533    print "</table>"
1534 }
1535 '
1536 }
1537
1538 # --------------------------------------------------------------------
1539 # CSS_TEMPLATE
1540 function put_CSS_TEMPLATE() {
1541 echo '
1542 body {
1543    margin:0pt;
1544    padding:0pt;
1545 }
1546 * {
1547    font-family: verdana,helvetica,sans-serif;
1548    font-size: 10pt;
1549 }
1550 tt,pre { 
1551    font-family:monospace;
1552 }
1553 a {
1554    text-decoration: none;
1555 }
1556 .small, .small * {
1557    font-size: 8pt;
1558 }
1559 .smallgray, .smallgray * {
1560    color: #999999;
1561    font-size: 8pt;
1562 }
1563 '
1564 }
1565
1566 # --------------------------------------------------------------------
1567 function put_TRANSP_PIXEL () {
1568 echo -ne \
1569 "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\
1570 \xff\xff\xff\xff\x21\xf9\x04\x01\x0a\x00\x01\x00\x2c\x00\x00\
1571 \x00\x00\x01\x00\x01\x00\x00\x02\x02\x4c\x01\x00\x3b"
1572 }
1573
1574 # --------------------------------------------------------------------
1575 function put_DIR_ICON() {
1576 echo -ne \
1577 "\x47\x49\x46\x38\x39\x61\x14\x00\x16\x00\xc2\x00\x00\xff\xff\
1578 \xff\xff\xcc\x99\xcc\xff\xff\x99\x66\x33\x33\x33\x33\x00\x00\
1579 \x00\x00\x00\x00\x00\x00\x00\x21\xfe\x4e\x54\x68\x69\x73\x20\
1580 \x61\x72\x74\x20\x69\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x70\
1581 \x75\x62\x6c\x69\x63\x20\x64\x6f\x6d\x61\x69\x6e\x2e\x20\x4b\
1582 \x65\x76\x69\x6e\x20\x48\x75\x67\x68\x65\x73\x2c\x20\x6b\x65\
1583 \x76\x69\x6e\x68\x40\x65\x69\x74\x2e\x63\x6f\x6d\x2c\x20\x53\
1584 \x65\x70\x74\x65\x6d\x62\x65\x72\x20\x31\x39\x39\x35\x00\x21\
1585 \xf9\x04\x01\x00\x00\x02\x00\x2c\x00\x00\x00\x00\x14\x00\x16\
1586 \x00\x00\x03\x54\x28\xba\xdc\xfe\x30\xca\x49\x59\xb9\xf8\xce\
1587 \x12\xba\xef\x45\xc4\x7d\x64\xa6\x29\xc5\x40\x7a\x6a\x89\x06\
1588 \x43\x2c\xc7\x2b\x1c\x8e\xf5\x1a\x13\x57\x9e\x0f\x3c\x9c\x8f\
1589 \x05\xec\x0d\x49\x45\xe1\x71\x67\x3c\xb2\x82\x4e\x22\x34\xda\
1590 \x49\x52\x61\x56\x98\x56\xc5\xdd\xc2\x78\x82\xd4\x6c\x3c\x26\
1591 \x80\xc3\xe6\xb4\x7a\xcd\x23\x2c\x4c\xf0\x8c\x3b\x01\x00\x3b\
1592 "
1593 }
1594
1595 # --------------------------------------------------------------------
1596 function put_AVI_ICON() {
1597 echo -ne \
1598 "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\
1599 \x48\x00\x48\x00\x00\xff\xfe\x00\x17\x43\x72\x65\x61\x74\x65\
1600 \x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\
1601 \xff\xdb\x00\x43\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\
1602 \x09\x09\x08\x0a\x0c\x14\x0d\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\
1603 \x14\x1d\x1a\x1f\x1e\x1d\x1a\x1c\x1c\x20\x24\x2e\x27\x20\x22\
1604 \x2c\x23\x1c\x1c\x28\x37\x29\x2c\x30\x31\x34\x34\x34\x1f\x27\
1605 \x39\x3d\x38\x32\x3c\x2e\x33\x34\x32\xff\xdb\x00\x43\x01\x09\
1606 \x09\x09\x0c\x0b\x0c\x18\x0d\x0d\x18\x32\x21\x1c\x21\x32\x32\
1607 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1608 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1609 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1610 \x32\x32\x32\xff\xc0\x00\x11\x08\x00\x3b\x00\x3a\x03\x01\x22\
1611 \x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\
1612 \x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x07\
1613 \x00\x03\x05\x04\x02\x01\xff\xc4\x00\x43\x10\x00\x01\x03\x02\
1614 \x04\x02\x05\x04\x0d\x0d\x01\x00\x00\x00\x00\x00\x01\x02\x03\
1615 \x04\x05\x11\x00\x06\x12\x21\x31\x41\x13\x22\x32\x51\x61\x14\
1616 \x35\x75\xb4\x07\x15\x16\x23\x36\x56\x71\x81\x95\xb1\xb3\xd3\
1617 \xd4\x24\x33\x42\x43\x53\x55\x63\x72\x82\x91\x93\xa1\xc1\xf0\
1618 \xff\xc4\x00\x19\x01\x01\x01\x00\x03\x01\x00\x00\x00\x00\x00\
1619 \x00\x00\x00\x00\x00\x00\x01\x00\x02\x03\x04\x05\xff\xc4\x00\
1620 \x20\x11\x00\x02\x02\x02\x01\x05\x01\x00\x00\x00\x00\x00\x00\
1621 \x00\x00\x00\x00\x01\x02\x11\x03\x31\x13\x14\x15\x21\x51\x91\
1622 \x52\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\
1623 \x77\xd5\xea\x8d\x51\xa9\xab\x9a\xf3\x4f\x3c\x02\xdb\x69\x0d\
1624 \x32\x01\x5b\x8b\x5a\xd2\x84\x24\x5c\x81\x72\xa5\x24\x6e\x40\
1625 \xdf\x72\x31\x9a\x73\x1d\x49\x36\xbe\x4e\xad\x8b\xf0\xf7\xe8\
1626 \x5f\x88\xc7\xdc\xe3\xe6\x48\xde\x95\xa7\x7a\xeb\x38\xec\xac\
1627 \xd4\x1a\xa6\xc7\x4c\x87\x96\x50\x84\xf7\x0b\x92\x6e\x2c\x00\
1628 \xe6\x7c\x37\xc0\x07\x12\xb3\x1d\x49\x20\x95\x64\xea\xe0\x03\
1629 \xf8\xd0\xbf\x11\x88\x9c\xc7\x52\x50\xba\x72\x75\x6c\x8e\xf0\
1630 \xf4\x2f\xc4\x60\x7e\x97\x5f\x6f\x34\xb5\x51\x91\x22\xb2\xf4\
1631 \x68\xb0\x81\x5b\x8c\x45\x46\x92\x10\x2f\x7d\x4e\xd8\xea\x3b\
1632 \x6e\x11\xb0\x3b\x5c\xe3\x8e\x8d\x5b\xf2\xea\x94\x98\xb9\x76\
1633 \xa5\x39\x52\xa3\x30\x64\xf9\x3c\xe7\x56\xfb\x2e\xa7\x55\xb4\
1634 \xa9\x6a\xb9\x49\x24\xec\x41\xdb\xb8\x8d\x8a\x21\x6f\xba\x1a\
1635 \x9f\xc4\xda\xe7\xf9\xa1\x7e\x23\x17\xc6\xcc\x4c\x39\x35\x88\
1636 \x53\x62\x4b\xa6\xcb\x7c\x12\xd3\x52\xd2\x9f\x7c\x20\x5c\x80\
1637 \xb4\x29\x48\x2a\xb5\xce\x9d\x57\xb0\x26\xd6\x06\xd6\x50\x6b\
1638 \x8c\x57\xe9\x2d\x4e\x61\x2a\x46\xae\xab\x8d\x2b\xb4\xda\xc6\
1639 \xc5\x27\xe4\x3c\xf9\x8d\xf8\x11\x8c\x1c\xd7\x28\x88\xd2\xa1\
1640 \x49\xa1\x4f\x9b\x1d\xd5\x25\xc6\xdf\x8c\x52\x3a\x35\x0d\x3a\
1641 \x4a\x4e\xa0\xa0\xa0\xa4\xdc\x11\x62\x0d\xac\x7b\xa2\x0c\xb1\
1642 \x30\x29\x91\x73\x1b\x95\xd8\x12\xe3\xc9\x53\x8e\x49\x80\xff\
1643 \x00\x93\xad\xd7\x1b\x0d\xa9\xce\xaa\x54\x0a\x92\x36\x0a\xb2\
1644 \xc0\x36\xd8\x90\x48\x00\x10\x01\x5e\x00\x30\x33\x8f\x99\x23\
1645 \x7a\x56\x9d\xeb\xac\xe2\xaa\xc2\xa2\xbf\x5b\x48\x9c\x7f\x24\
1646 \x85\x11\x4f\x29\x22\xfd\x65\x38\x74\x27\xe5\x3d\x55\x5b\xc4\
1647 \x8c\x5b\x9c\x7c\xc9\x1b\xd2\xb4\xef\x5d\x67\x18\xf9\xc1\xc6\
1648 \x63\xce\x8c\xfb\xa9\x71\x4c\xba\xd2\x98\x7f\xa2\x3d\x70\x35\
1649 \x0d\x2a\x48\x3c\x4a\x4a\x8e\xdd\xc4\xe1\x13\x9e\x85\x2f\x2c\
1650 \x52\x72\x9c\xe9\xd4\xfa\x7b\xc9\x8d\xac\xc7\x71\xb7\xc0\x2a\
1651 \x72\xc0\x59\x1c\x48\xd3\x65\x7d\x78\xab\x2d\x66\x7a\x60\x87\
1652 \x51\xe8\xe9\xcc\xc0\x4c\x44\x09\x0e\x06\x40\xb2\x93\xc0\x6a\
1653 \x36\xb9\x56\xdb\x5f\x8f\x2e\x18\xaa\x34\xbc\xa9\x13\x2b\xb5\
1654 \x4c\x8c\xea\xe5\x42\x48\xd4\x7b\x4b\x75\x4a\xe6\xa5\x90\x2f\
1655 \xab\x6f\x0e\x18\x09\xab\xd5\xcc\xa8\xa8\x8d\x44\x8e\xd4\x4a\
1656 \x7a\x1c\xd6\x5b\x01\x4a\x53\x8e\x0e\x0b\x75\x43\x57\x0d\xac\
1657 \x9f\x0e\x23\x11\x07\xbe\xc6\xcf\x07\x1a\xac\x14\x24\x25\x02\
1658 \x43\x41\x40\x0f\xd6\x74\x28\xd7\xff\x00\x07\xcd\x83\x75\x2f\
1659 \x0b\x4c\xb7\x5a\x95\x43\xcb\x8c\x47\x8b\x0e\x9a\xfa\x13\x75\
1660 \x29\x4b\xa9\xe8\x5b\x8a\x26\xe5\x56\x2d\xf3\x37\x3c\x79\xe0\
1661 \xaa\x85\x99\xe2\xd7\x52\xe2\x12\xdb\x91\xe5\x35\x62\xe3\x0e\
1662 \x10\x48\x07\x82\x81\x17\x04\x1e\xf1\xf3\xdb\x11\x1c\xb9\x2b\
1663 \xe1\x46\x70\xb7\xef\x21\xf6\x0c\xe0\xdb\x01\x39\x27\xe1\x3e\
1664 \x6f\xf4\x8a\x7e\xc1\x9c\x1b\x60\x03\x03\x38\xf9\x92\x37\xa5\
1665 \x69\xde\xba\xce\x38\x33\x14\x53\x25\xf8\xa1\x0b\xd0\xa5\x12\
1666 \x02\xbb\xba\xc8\xe5\x71\x7f\xf7\xff\x00\x47\x7e\x71\xf3\x24\
1667 \x6f\x4a\xd3\xbd\x75\x9c\x55\x51\xd4\xb7\xe3\x84\xab\x4a\xaf\
1668 \x60\x7b\xba\xc9\xf1\xdf\x87\xfe\xe4\x88\x1f\x55\xc9\x4d\x3e\
1669 \x97\x1f\x96\xa6\xde\x50\x1c\x14\xc8\xeb\x5b\x96\x34\xa9\x94\
1670 \x54\x45\xa6\x21\x0c\xb6\x86\xda\x41\x5d\x92\x81\x60\x06\xa3\
1671 \xc8\x5f\x1b\x12\xe2\xbe\xa6\x54\xa7\x65\xea\x01\x27\x6e\x8c\
1672 \x0b\xf8\x62\xf6\x36\x80\xa1\xfc\xff\x00\x59\xf1\x38\x24\xe9\
1673 \x59\x2d\x8b\x1a\x34\xba\xcd\x39\x72\xfc\x9e\x81\x3d\xf4\xba\
1674 \xf2\xd4\x92\xb1\xd1\x58\x74\x8b\x3f\xa5\x6e\x4a\xc5\xf1\x24\
1675 \xd7\xdb\xce\x14\xc9\xce\xd0\x9f\x8a\x85\xac\xb0\xfa\xc2\x83\
1676 \x83\x42\x87\x3d\x37\xd2\x01\x4a\x4d\xcf\x76\x09\x61\x53\x29\
1677 \x86\x84\x8a\x73\xcb\x8c\x2a\x72\xda\x53\xe8\x52\xbb\x68\x3c\
1678 \x52\x9d\x56\xb0\x04\x03\x7b\x91\xc7\x86\x3c\x16\xe0\x0c\xaf\
1679 \xed\xb1\x8f\x1c\x3e\x23\xf9\x17\x47\xd1\x8f\xce\xea\xed\xda\
1680 \xdd\xad\x3b\xdf\x1e\x57\x70\x9d\x5b\x8a\xd5\xef\xea\xd6\xf4\
1681 \x76\x74\xd1\xba\xb7\xba\xd1\xa5\x93\x52\xa6\x33\x1e\x66\x53\
1682 \xe9\x2d\x09\x33\xd2\xa6\x35\x8d\x3d\x28\x0c\x35\x72\x9b\xf6\
1683 \xbb\x2a\xe1\xdc\x7b\xb0\x6d\x85\xf2\xa3\xa9\x8c\xe9\x94\x2f\
1684 \x11\x0c\x74\x8c\xa9\x6b\xd0\xc2\x5b\xd4\xe9\x8e\xee\xbb\xd8\
1685 \x0d\xf8\x6d\xca\xfc\xaf\x86\x0e\x3b\xb0\x65\x79\x53\x6d\x55\
1686 \x33\x9b\x2c\x14\x1a\xa6\x61\xe6\xd8\xb2\xe5\x65\xf5\x08\x4c\
1687 \x17\xe4\x31\x2a\x2c\xa0\xd0\x50\x05\x61\xa7\xdb\x75\x49\x04\
1688 \x90\x2e\x42\x08\x17\x20\x5e\xdb\x8c\x0b\x3d\x98\xea\xee\x14\
1689 \x9f\x71\xb5\x90\x53\xc3\xdf\x23\x9e\x60\xfe\xd7\xc3\x0c\x5c\
1690 \x4c\x6f\x35\x8b\x75\xe6\x1a\xca\xfb\x59\x42\xb4\x7f\xae\x37\
1691 \xde\xe3\xd9\xcc\x75\x55\x32\xa6\x95\x93\x2b\x5a\x54\x08\x36\
1692 \x79\x80\x77\xf1\xe9\x6e\x30\xc5\xc4\xc4\x36\x25\x3d\xa7\x4f\
1693 \xc5\x0c\xd3\xf4\x83\x5f\x7d\x89\xed\x3a\x7e\x28\xe6\x9f\xa4\
1694 \x5a\xfb\xdc\x3a\xf1\x31\xab\x83\x17\xe5\x7c\x33\xe4\x9f\xb6\
1695 \x2d\x7d\x8f\x72\xb3\x8d\x54\xe5\x55\xea\x50\xa6\xc6\x71\xb7\
1696 \xc9\x82\xcc\x99\x25\x65\xa4\x16\xc2\x4d\xec\xa2\x92\x6e\x5c\
1697 \xef\xd9\x5f\xd9\x95\x89\x89\x8c\xe3\x08\xc5\x54\x55\x18\x39\
1698 \x39\x79\x67\xff\xd9"
1699 }
1700
1701 # --------------------------------------------------------------------
1702 function put_MOV_ICON() {
1703 echo -ne \
1704 "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\
1705 \x48\x00\x48\x00\x00\xff\xfe\x00\x17\x43\x72\x65\x61\x74\x65\
1706 \x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\
1707 \xff\xdb\x00\x43\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\
1708 \x09\x09\x08\x0a\x0c\x14\x0d\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\
1709 \x14\x1d\x1a\x1f\x1e\x1d\x1a\x1c\x1c\x20\x24\x2e\x27\x20\x22\
1710 \x2c\x23\x1c\x1c\x28\x37\x29\x2c\x30\x31\x34\x34\x34\x1f\x27\
1711 \x39\x3d\x38\x32\x3c\x2e\x33\x34\x32\xff\xdb\x00\x43\x01\x09\
1712 \x09\x09\x0c\x0b\x0c\x18\x0d\x0d\x18\x32\x21\x1c\x21\x32\x32\
1713 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1714 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1715 \x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\
1716 \x32\x32\x32\xff\xc0\x00\x11\x08\x00\x3b\x00\x3a\x03\x01\x22\
1717 \x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\
1718 \x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x07\
1719 \x00\x04\x05\x03\x01\x02\xff\xc4\x00\x3e\x10\x00\x01\x03\x03\
1720 \x03\x01\x03\x07\x0a\x03\x09\x00\x00\x00\x00\x00\x01\x02\x03\
1721 \x04\x00\x05\x11\x06\x12\x21\x41\x13\x31\x51\x22\x32\x35\x61\
1722 \x75\x81\xb4\x07\x14\x15\x16\x23\x52\x56\xc1\xd3\xd4\x82\x95\
1723 \xa1\x36\x53\x55\x63\x73\x91\x93\xb1\xb3\xff\xc4\x00\x18\x01\
1724 \x01\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
1725 \x00\x00\x02\x03\x04\x01\xff\xc4\x00\x24\x11\x00\x02\x02\x01\
1726 \x03\x02\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\
1727 \x11\x03\x04\x14\x21\x13\x61\x12\x41\x51\x52\x71\x81\x91\xff\
1728 \xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\x78\xde\
1729 \x2e\xad\x59\xad\xab\x9a\xf3\x4f\x3c\x02\xdb\x69\x0d\x32\x01\
1730 \x5b\x8b\x71\x69\x42\x12\x32\x40\xc9\x52\x92\x39\x20\x73\xc9\
1731 \x15\x98\x75\x25\xc8\x10\x0e\x8d\xbe\x0c\xf7\x7d\xb4\x2f\xdc\
1732 \x57\xba\xcb\xd0\x71\xbd\xab\x6d\xf8\xd6\x6b\xae\xa3\xbc\x33\
1733 \x65\x88\x99\x2e\x95\x13\xce\xd4\x23\x1b\x94\x41\x1d\xd9\x20\
1734 \x7a\xc9\x3c\x00\x09\x38\x1c\x80\x38\xab\x52\x5c\x92\x32\xad\
1735 \x1b\x7c\x03\xfd\x68\x5f\xb8\xa8\x9d\x49\x72\x50\xca\x74\x75\
1736 \xf0\x8f\x1e\xda\x17\xee\x28\x72\x1d\xed\x8b\xee\x9e\x95\x7a\
1737 \xb8\x5f\x24\xfc\xd5\x95\x6d\x53\x10\x42\x98\x48\xce\x36\x80\
1738 \xbc\x05\xaf\xbf\xce\x1b\x41\xf0\xc5\x56\xb3\x6a\x17\x55\x1e\
1739 \xe5\x32\xc7\x2e\x64\xc6\xad\x85\x3f\x39\x87\x31\xc5\x38\x1c\
1740 \x49\x04\x9e\xcd\xd5\x79\x5b\xc0\x04\xf2\x48\x3d\xc7\x19\xc8\
1741 \x00\xb7\xeb\x15\xcf\xf0\x6d\xf3\xfe\x68\x5f\xb8\xae\xf1\xb5\
1742 \x1b\x0e\x4d\x62\x14\xd8\x92\xed\xb2\xdf\x04\xb4\xd4\xb4\xa7\
1743 \x0b\x20\x64\xa4\x2d\x0a\x52\x0a\xb1\x93\xb7\x76\x70\x09\xc6\
1744 \x01\xc5\xcb\x75\xc6\x3d\xd6\xdc\xc4\xe8\x8b\xdc\xc3\xe8\x0b\
1745 \x41\x23\x07\x07\xa1\x1d\x0f\xab\xa5\x0c\x6a\xb9\x44\x46\x95\
1746 \x0a\x55\x8a\x7c\xd8\xee\xa8\x38\x87\xe3\x14\x8e\xcd\x40\x27\
1747 \x69\x49\xdc\x14\x14\x14\x9c\x82\x30\x47\x04\x1f\x00\x0d\x2a\
1748 \x50\x96\x84\xd4\x8e\xdf\x60\x4b\x8f\x25\x4e\x39\x26\xde\xff\
1749 \x00\xcd\xd6\xeb\x8d\x76\x6a\x73\xc9\x4a\x81\x52\x47\x01\x58\
1750 \x58\x07\x1c\x12\x09\x00\x02\x05\x16\xd0\x03\xfa\xcb\xd0\x71\
1751 \xbd\xab\x6d\xf8\xd6\x6b\x3a\xfa\xab\x6c\xb7\xaf\x0b\xbc\x36\
1752 \xb7\x62\x46\x64\x45\x4b\x48\xf3\x94\x56\x90\xb5\xe3\xd7\x8d\
1753 \xbe\xe0\x6b\x47\x59\x7a\x0e\x37\xb5\x6d\xbf\x1a\xcd\x0e\x6b\
1754 \x26\xa0\x37\x29\xd1\x70\x72\x43\x70\x6e\x0d\x6c\x79\xd8\xea\
1755 \xc2\xd9\x52\x40\x4e\xe1\xc1\xef\x04\x03\x8c\xe3\x03\x8e\xfa\
1756 \x03\xec\x5c\x74\xf5\xab\x42\xb6\xec\x5b\x6a\x9c\x8b\x35\x44\
1757 \x25\x87\xf1\xb9\xc5\x02\x46\x54\x79\xee\xdb\xff\x00\x55\x56\
1758 \x2e\xa4\x84\xf6\x8a\xb8\x98\xf0\x9a\x87\xd9\x6e\x8d\xd8\xb2\
1759 \x90\x10\xa7\x1c\x4f\x18\xe3\xbf\x91\x9e\xf3\xd7\xad\x4b\x8d\
1760 \xcb\x4b\x7d\x06\xc4\x54\xa0\xc9\x87\x1d\x19\x69\x2c\x6e\x24\
1761 \x7f\x10\xea\x7a\xe4\xf5\xa0\x1b\xcd\xce\x45\xd0\x32\xd5\xbc\
1762 \x31\x0a\xdc\x80\xa4\xc7\x6d\xad\xdb\x1a\xcf\x0a\x5a\x94\x01\
1763 \x05\x67\x9e\x7a\x67\xbc\xd0\x0d\x3f\x93\xe7\x90\xe6\x9a\x75\
1764 \x6c\x80\x23\xaa\x6c\x92\xce\x3e\xef\x6a\xaf\xcf\x26\x8a\x0a\
1765 \xe9\x7d\x6f\xd4\xb2\xac\xf6\x68\xac\x47\xb6\x5b\x95\x19\x96\
1766 \xd2\x94\xa1\x17\x30\x1c\x09\xc7\xdd\x52\x07\x3e\xfa\x27\xb2\
1767 \xdf\xe2\x5f\x62\x29\xf8\xdb\xd0\xb4\x1d\xae\xb2\xe0\xc2\xdb\
1768 \x57\x7e\x0e\x38\xf7\x8c\x8a\xe0\x33\xb4\x4e\x3e\xb4\xeb\x0c\
1769 \x7f\x89\x0f\xfc\x19\xa3\x8a\x06\xd1\x1f\xda\x8d\x5f\xed\x24\
1770 \xfc\x3b\x34\x73\x5d\x00\xfe\xb2\xf4\x1c\x6f\x6a\xdb\x7e\x35\
1771 \x9a\xcf\xd4\x71\x0c\xa7\xe2\xa5\x2b\xda\xa5\x12\x01\xf5\xee\
1772 \x47\x4c\xf3\xfd\x7f\x31\xa1\xac\xbd\x07\x1b\xda\xb6\xdf\x8d\
1773 \x66\xb8\xdc\x42\x96\xf4\x70\x95\x6d\x56\x70\x0f\x87\x94\x9e\
1774 \x99\xe7\xfa\xfe\x74\x00\x6d\xcf\x43\x47\x71\x2e\x3f\x24\x32\
1775 \xf1\xc1\x38\x53\x03\x93\x57\xd9\xb7\x26\x2d\x95\x44\x23\xc9\
1776 \x42\x5c\x29\x6d\xb1\x92\x46\x4f\x00\x0c\xe7\xdd\x9a\xde\x97\
1777 \x11\xe5\x32\xa5\x3b\x2f\x78\x00\xf1\xd9\x81\x9a\xce\x98\xa8\
1778 \x6d\x28\x3b\x3a\x3a\x64\x30\x88\xce\x6e\x49\x19\x23\x73\xcd\
1779 \xa4\xa8\x1e\x79\x01\x47\x9c\xfb\xea\x8d\x46\x5e\x94\x1c\xc9\
1780 \xe3\x87\x8e\x54\x04\x69\xf9\xb7\xdb\x75\xa1\xb8\xad\x69\xd9\
1781 \xaf\x79\x29\xf2\x9d\x50\x6b\x1e\x48\x18\xc2\xb9\xe9\x57\xb4\
1782 \xdc\x8b\xd4\x7d\x69\xda\x4a\xb3\xbf\x0e\x3c\xb6\x14\x1e\x51\
1783 \x21\x68\xdc\x93\x94\x92\xa4\xf0\x3b\xd5\xc1\xef\xcd\x14\x5b\
1784 \x21\xd8\xe4\x42\x84\x1b\x61\x0b\x8e\x9b\x89\x68\xbe\xf2\x40\
1785 \x5b\xbf\x64\xa5\x00\x7d\x5b\x88\x18\xf5\x0a\xaa\xd2\x58\x89\
1786 \x12\x0c\x9b\xb5\xbe\x33\x6f\x99\xe5\xb5\x36\xa8\xe9\x46\xe6\
1787 \x4a\x70\x49\x4e\x06\x70\x4f\x06\xb1\x6f\xe7\x49\xb4\xab\xe7\
1788 \x8f\x2e\xdd\xfe\xcd\x1b\x75\x75\x65\xfd\x18\x95\x31\xa9\x35\
1789 \x32\x9f\x49\x68\x49\xb8\x05\x30\x56\x36\xf6\xa0\x30\xd6\x4a\
1790 \x73\xe7\x79\xaa\xee\xf0\x3e\x14\x71\x4b\x91\x16\x35\xb3\x5d\
1791 \xe9\xab\x5b\x08\x6c\xad\x87\x1e\x53\xae\x84\x8d\xca\x2a\x65\
1792 \xd2\x01\x3d\xe7\x03\x1f\xef\x4c\x6a\xd9\xa7\xcc\xf2\xc5\xb9\
1793 \x2a\x69\xd1\x46\x48\x28\x3e\x0c\x3d\x5d\x16\x5c\xad\x3c\xa1\
1794 \x05\x83\x22\x43\x12\xa2\xca\x4b\x21\x40\x17\x03\x32\x1b\x75\
1795 \x49\x04\x90\x32\x42\x08\x19\x20\x67\x1c\x8a\x14\x7b\x51\xde\
1796 \x1c\x52\x48\xd1\xb7\x94\x94\xff\x00\x99\x1c\xf5\x07\xfb\xdf\
1797 \x55\x31\xea\x60\x78\x56\x82\xb1\x68\xbd\x43\x7a\x5f\x9f\xa4\
1798 \x2f\x47\xf8\xe3\x7e\xad\x67\x5d\x57\x26\xf2\xa6\x95\x2f\x47\
1799 \x6a\x20\xa6\x81\x09\xec\x66\x32\xd8\xe4\xe7\x90\x1e\xa6\xe6\
1800 \x07\x85\x4c\x0f\x0a\x8c\xa1\x19\x2a\x92\xb4\x75\x36\x9d\xa1\
1801 \x25\xf4\x3a\x7f\x07\xea\x9f\xe6\x2d\x7e\xb5\x4f\xa1\xd3\xf8\
1802 \x43\x54\xff\x00\x31\x6b\xf5\xa9\xdb\x81\xe1\x53\x03\xc2\xab\
1803 \xdb\xe1\xf6\x2f\xc4\x4b\xa9\x3f\x56\x2c\xfe\x4f\x34\xaa\xd9\
1804 \xba\x4a\xbb\xdc\x60\xcd\x8c\xe3\x6f\x93\x05\x99\x32\x4a\xcb\
1805 \x48\x2d\x84\x9c\xe1\x45\x24\xe4\xb9\xd4\xf0\xae\x9d\x19\x95\
1806 \x2a\x55\x91\x84\x60\xaa\x2a\x88\xb9\x37\xcb\x3f\xff\xd9"
1807 }
1808
1809 # --------------------------------------------------------------------
1810 function put_SND_ICON() {
1811 echo -ne \
1812 "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\
1813 \x52\x00\x00\x00\x0b\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa9\
1814 \xac\x77\x26\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\
1815 \x00\xff\xa0\xbd\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\
1816 \x00\x0b\x11\x00\x00\x0b\x11\x01\x7f\x64\x5f\x91\x00\x00\x00\
1817 \x07\x74\x49\x4d\x45\x07\xd3\x04\x19\x0b\x3a\x3b\x18\x18\xa2\
1818 \x48\x00\x00\x01\x86\x49\x44\x41\x54\x78\x9c\x63\x36\x36\x37\
1819 \x62\x10\x11\xe4\x63\x60\xf8\xf7\x9f\xe1\xeb\xb7\xef\x0c\xe8\
1820 \x20\x35\xda\x2b\xd2\xd1\x58\x5d\xf4\xf8\x85\x5b\x0f\x18\x67\
1821 \xe7\x87\x70\x32\x32\xfc\xff\xfe\x9f\x81\x81\xe1\x3f\x23\x03\
1822 \x53\xda\x84\xb5\xff\x60\x0a\x5b\x92\xbd\x95\x8f\xbc\xfc\x7e\
1823 \x8a\x9b\x83\xf5\xad\x87\x0c\x8f\x36\x23\x86\x51\x50\x30\x21\
1824 \x2b\x80\x67\xe7\xd3\xcf\x97\x7f\xfd\xff\x27\xc3\xf9\xff\xdf\
1825 \x77\x2d\x0e\x26\x1f\x26\x6c\x0a\x67\xe7\x07\x33\xed\x7e\xfe\
1826 \xa5\x8b\x4b\x86\x5b\xfa\xfb\xdf\x5f\x8c\xff\x38\x38\x78\x6f\
1827 \x73\xb0\x6f\x62\x42\x52\xc0\xc8\xc0\xc0\xc0\x30\x27\x3f\x84\
1828 \x69\xdb\xc3\x8f\x26\x3c\xb2\xbc\x19\x0f\xef\xdc\x7b\xab\xc8\
1829 \xce\xcd\x76\x64\xe7\xf1\x33\x7b\x37\x1e\x3b\xca\x38\x3d\x27\
1830 \x48\x70\xdf\xab\xaf\xdd\xbf\xfe\x33\xea\x2b\x73\x30\xc5\xab\
1831 \x0b\x72\x3e\x5a\xf5\xf0\xdd\x53\x76\x09\x66\x9e\x63\x2b\x4e\
1832 \x5b\x7c\xf8\xf8\xf1\x34\x1f\x1f\x9f\x16\x03\x03\x43\x33\x83\
1833 \xb7\xaf\x73\xcf\xb1\x53\xc7\xfe\xf5\x4d\xef\xfb\xe7\x12\xe8\
1834 \xf6\xc3\xc6\xc3\x3e\x2e\xb6\x24\xe2\xbf\x84\xa6\xe8\xa3\x39\
1835 \x50\xdb\x60\x80\xe5\xf3\xdf\xff\x5e\xaf\xde\xbf\x64\xbc\x7a\
1836 \xeb\x0a\xc3\xbf\x7f\x7f\xd9\xa5\xe5\xc5\xe6\xde\x7d\x74\x8f\
1837 \x41\xf8\x27\x47\x65\xca\xc4\xb5\xff\x91\x15\x33\x31\xb3\x30\
1838 \xcc\x6a\x6c\x6c\xfe\x77\xe9\xf4\x65\x86\x67\x0f\x9f\x30\xfc\
1839 \xfa\xf1\x93\xe5\xf3\xb3\x9f\x5f\x3c\x1d\x0d\x0f\xa2\x7b\x9c\
1840 \xf9\xc1\xcd\xfb\x27\x84\x05\xf8\xcf\x72\xf2\x70\x8a\xf3\xf3\
1841 \x70\xff\xfe\xf7\xe9\xeb\x5a\x27\x79\xb1\x72\x55\x7e\xf6\x6b\
1842 \x9b\x4e\x5e\x47\x31\x19\x12\x02\x05\x21\x1c\x0c\x0c\x0c\x9c\
1843 \x0c\xff\x19\x58\x18\x18\xfe\x7f\x61\x60\x60\xf8\x81\xee\x04\
1844 \x06\x06\x06\x06\x00\xb1\xb5\x9b\x5c\xc8\xf8\x64\x33\x00\x00\
1845 \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82"
1846 }
1847
1848
1849 ######################################################################
1850 ######################################################################
1851 ######################################################################
1852
1853 # --------------------------------------------------------------------
1854 # print program info
1855 function info() {
1856    echo "_____________________________________________________________________________"
1857    echo "IIMAGE $VERSION (c) Ronald Schmidt http://www.ronsc.de"
1858    echo ""
1859 }
1860
1861 # --------------------------------------------------------------------
1862 # print out version
1863 function version() {
1864    echo "Version$SVN_ID"
1865 }
1866
1867 # Help by Holm Sieber
1868 #         sieber@prudsys.com
1869 # --------------------------------------------------------------------
1870 # syntax help
1871 function help() {
1872 cat << EOF
1873 SYNTAX:
1874    iimage [options]
1875
1876 OPTIONS:
1877    -v/-V print CVS version
1878    -h    print this syntax help
1879    -H    print variables description of description file
1880    -R    go recursively through subdirectories
1881    -U    get current version of iimage from iimage WWW server
1882    -D    get developer version of iimage from iimage WWW server
1883    -f    force creation of HTML-Files
1884    -T    use new templates from iimage (impl. -f)
1885    -F    force rebuild of thumbnails (impl. -f)
1886    -d    generate sample desciption-file (impl. -u)
1887    -u    update image-names in description-file
1888    -a    create AUTORUN.INF
1889    -s    include iimage-special-php-tags
1890
1891 DESCRIPTION:
1892    IImage generates a set of HTML files as index of all images
1893    at current directory. The following image types are recognized:
1894 EOF
1895 echo "      $FILE_EXTENSIONS"
1896 cat << EOF
1897    IImage creates a directory ".tmp" in which tumbnails and a lot
1898    of html files will be created. At current directory index.html
1899    will be a start point for viewing the images.
1900       IImage uses a file named "description" which contains some
1901    options about the images in the same directory. Use "iimage -H"
1902    to get a description of the syntax of this file.
1903 EOF
1904 }
1905
1906 # --------------------------------------------------------------------
1907 # syntax description file
1908 function help_description() {
1909 cat << EOF
1910 VARIABLES in FILE "description"
1911    order=       order of appearance of subfolders, "accesstime", 
1912                 "alphabetically" (default) or "dec" or explicit 
1913                 order, e.g. "folder1 folderb folder7"
1914    iorder=      order of appearance of images, "alphabetically" (default), 
1915                 "accesstime" (oldest picture first), 
1916                 "dec" (accesstime, newest picture first), 
1917                 "digicam" (sorts alphabetically but ignores leading 
1918                 characters), "description" (order as descriptions)" 
1919                 or explicit order, e.g. "dscn0002.jpg dscn0232.jpg"
1920    title=       title of folder (default: dir-name)
1921    date=        folder date
1922    description= folder description
1923    <filename>=  image "filename" title
1924    ignore=      files and directories to ignore
1925    AUDIODIR=    optional dir for wav-files
1926    EXCLUDE_ORGINAL=
1927    DISABLED=
1928 EOF
1929 }
1930
1931 ######################################################################
1932 ######################################################################
1933 ######################################################################
1934
1935 # parse arguments ####################################################
1936
1937 while getopts ":hHvVRUDTfFduas" OPT ; do
1938
1939    case $OPT in
1940       v|V)  # print version
1941          version
1942          exit
1943          ;;
1944       f)
1945          FORCE=true
1946          ;;
1947       a)
1948          echo -e "[autorun]\nshellexecute=index.html\n" >AUTORUN.INF
1949          ;;
1950       F)
1951          FORCE_TN=true
1952          ;;
1953       h)    # print syntax help
1954          info
1955          help
1956          exit
1957          ;;
1958       H)    # print syntax description file
1959          info
1960          help_description
1961          exit
1962          ;;
1963       R)    # run recursively
1964          RECURSIVE=true
1965          ;;
1966       U)    # update iimage
1967          echo "update $0 from http://www.ronsc.de/iimage/iimage"
1968          echo OLD `$0 -v`
1969          wget http://www.ronsc.de/iimage/iimage -q --cache=off -O $0
1970          echo NEW `$0 -v`
1971          exit
1972          ;;
1973       D)    # update iimage
1974          echo "update $0 from http://www.ronsc.de/iimage/devel/iimage"
1975          echo OLD `$0 -v`
1976          wget http://www.ronsc.de/iimage/devel/iimage.gz -q --cache=off -O $0.gz
1977          gunzip -f $0.gz
1978          chmod 755 $0
1979          echo NEW `$0 -v`
1980          exit
1981          ;;
1982       T)
1983          FORCE_TEMPLATES=true
1984          ;;
1985       d)
1986          create_description_template
1987          update_description_names
1988          exit
1989          ;;
1990       u)
1991          update_description_names
1992          exit
1993          ;;
1994       s)
1995          IIMAGE_SPECIAL=true
1996          ;;
1997       ":")    # wrong argument
1998          echo -n "ERROR: Missing argument for option \"$OPTARG\". "
1999          echo "Use \"iimage -h\" to get more help."
2000          exit 1
2001          ;;
2002       "*")    # wrong option
2003          echo -n "ERROR: Unknown option \"$OPTARG\". "
2004          echo "Use \"iimage -h\" to get more help."
2005          exit 1
2006          ;;
2007    esac
2008
2009 done
2010
2011 ##############################################################
2012
2013 if [ "$DISABLED" != "" ] ; then
2014    echo "directory disabled -> exit"
2015    exit
2016 fi
2017
2018 # check for programs ################################################
2019
2020 init_iimage
2021
2022 [ "$RECURSIVE" = "true" ] && iimage_recursive $*
2023
2024 pwd
2025
2026 NEED_UPDATE=false
2027 diff --brief $DATADIR/ls-l.new $DATADIR/ls-l.old >/dev/null || NEED_UPDATE=true
2028 [ "$FORCE" = "true" -o \
2029   "$FORCE_TN" = "true" -o \
2030   "$FORCE_TEMPLATES" = "true" ] && NEED_UPDATE=true
2031
2032 if [ "$NEED_UPDATE" = "true" ] ; then
2033    {
2034       prepare_dir;
2035
2036       prepare_images;
2037       build_html;
2038
2039       cleanup;
2040
2041    } 2>>$DATADIR/errors | tee -a $DATADIR/log
2042 fi
2043
2044 finish_iimage;
2045
2046 [ -s $DATADIR/errors ] && echo -e "\nWARNING: there were errors. see $DATADIR/errors"
2047
2048 # vim:ai:expandtab:sw=3:ts=3:tw=200