This file is indexed.

/usr/bin/pmlindex is in photoml 0.28-0ubuntu2.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#! /bin/sh

# This script constructs an HTML index of PhotoML files

# Copyright © 2003-2011 Brendt Wohlberg <photoml@wohlberg.net>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of version 2 of the GNU General Public License at
# http://www.gnu.org/licenses/gpl-2.0.txt.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.

# Most recent modification: 11 February 2011


# Set up paths to pmltrans and pmlexpand utilities 
pmlpath="/usr/share/photoml"
pmltransx="/usr/bin/pmltrans"
pmlexpandx="/usr/bin/pmlexpand"

# Ensure that xsltproc, pmltrans, and pmlexpand are available
if [ ! "`which xsltproc 2>/dev/null`" ]; then
  echo "pmlindex: error executing xstlproc" >&2
  exit 1
fi
if [ ! -x "$pmltransx" ]; then
  echo "pmlindex: error executing pmltrans" >&2
  exit 1
fi
if [ ! -x "$pmlexpandx" ]; then
  echo "pmlindex: error executing pmlexpand" >&2
  exit 1
fi

# Function for displaying usage information
usage()
{
cat <<EOF >&2
usage: pmlindex [-h] [-y] [-s size] (([-e] [-m]) | [-d]) [-p dst-path]
                infile [infile] ...
       -h            Display usage information
       -y            Group table entries by year
       -s size       Specify primary font size in points
       -e            Include exposure detail column when appropriate
       -m            Include location map when coordinates specified
       -d            Use detailed rather than summary output
       -p dst-path   Path to directory into which output should be written
EOF
}

# Parse command line arguments
yflag=''
ygp=''
sflag=''
fsp=''
eflag=''
mflag=''
dflag=''
dstpath='.';
while [ $# -ge 1 ]; do
  case $1 in
    -y)    yflag='-y'; ygp="--stringparam year-group 1" ;;
    -s)    shift; sflag="-s $1"; fsp="--stringparam font-size $1" ;;
    -e)    eflag='-e' ;;
    -m)    mflag='-m' ;;
    -d)    dflag='-d' ;;
    -p)    shift; dstpath=$1 ;;
    -*)    usage; exit 1 ;;
    *)     break ;;
  esac
  shift
done   

# Display usage information if appropriate
if [ "$1" = '' ]; then
  usage; exit 1
fi

# Make destination directory if necessary
mkdir -p $dstpath

# Set up paths to support XSL
xsl0="$pmlpath/xsl/html/preindex.xsl"
xsl1="$pmlpath/xsl/html/index.xsl"
# Set up temporary file paths
tmpidx="/tmp/pmlindex.idx.$$"
tmpexp="/tmp/pmlindex.exp.$$"
# Open root element of XML index source file
echo "<photoindex>" > $tmpidx

# Iterate over all files to be indexed
for src in $@; do
  # Generate error if a file could not be read
  if [ ! -r "$src" -o ! -f "$src" ]; then
    echo "pmlindex: could not read file $src" 1>&2
    exit 2
  fi

  # Set up path variables
  srcbase=`basename $src .xml`
  dst="$dstpath/$srcbase.html"

  # Apply pmltrans (with defaults expansion) if the HTML
  # representation of the current PhotoML file does not exist, 
  # or is out of date with respect to its source
  if [ ! -e "$dst" -o "$src" -nt "$dst"  ]; then
    $pmltransx -x $eflag $mflag $dflag $sflag $src > $dst
    if [ ! $? -eq 0 ]; then
      echo "pmlindex: error running pmltrans" 1>&2
      rm -f $tmpidx $tmpexp
      exit 3
    fi 
  fi

  if grep -q '<!-- IndexCache:' $dst; then
    # If index data cached as a comment in the current HTML file,
    # extract and use in the index source file
    indexdata=`grep '<!-- IndexCache:' $dst | sed -e 's/<!-- IndexCache: //'\
              -e 's/-->.*//' -e 's/\\-/-/g' -e 's/\&gt;/>/g' -e 's/\&lt;/</g'`
    echo "<file xml=\"$src\" html=\"$srcbase.html\">$indexdata</file>"\
	  >> $tmpidx
  else
    # If index data not cached as a comment in the current HTML file,
    # expand the defaults in the current PhotoML file and determine
    # them. Insert details of the current PhotoML file in the index
    # source file, and append the index cache as a comment to the
    # current HTML file.
    $pmlexpandx $src $tmpexp
    if [ ! $? -eq 0 ]; then
      echo "pmlindex: error running pmlexpand" 1>&2
      rm -f $tmpidx $tmpexp
      exit 4
    fi
    idxsrc=`xsltproc --novalid $xsl0 $tmpexp 2>/dev/null`
    rm -f $tmpexp
    echo "<file xml=\"$src\" html=\"$srcbase.html\">$idxsrc</file>" >> $tmpidx
    indexdata=`echo $idxsrc |  tr -d '\n' | sed -e 's/>[ \t]*</></g'\
                    -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/-/\\-/g'`
    echo "<!-- IndexCache: $indexdata -->" >> $dst
  fi
done

# Close root element of XML index source file
echo "</photoindex>" >> $tmpidx
# Process XML index source file to generate HTML index
xsltproc $ygp $fsp $ecp $xsl1 $tmpidx > "$dstpath/index.html"
# Clean up
rm -f $tmpidx

exit 0