This file is indexed.

/usr/bin/docbook2gjots is in gjots2 2.4.1-2.

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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#!/bin/sh
#
# Copyright (C) 1997-2002 Bob Hepple
# 
# A simple script to convert a gjots file to an HTML page - with table of contents
# etc
#
# This program is free software; you can redistribute it
# and/or modify it under the terms of the GNU General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later
# version.
# 
# 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.
# 
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
# 02139, USA.
#

# A quick hack, that's all. I thought it would be truly hideous but
# it's turned out only moderately ugly. Of course, it doesn't do a
# thorough job on the XML/SGML/DOCBOOK syntax but it seems to cover
# most practical cases.

usage() {
	echo "Usage: $PROG [ filename ]
Converts a DOCBOOK XML file to gjots format (on stdout).

gjots items and folders are created on the following DOCBOOK elements:

preface, chapter, section, sect1, sect2, sect3, sect4

Presently, the DOCBOOK elements _must_ have a title eg.:

    <chapter><title>any text to form the title</title>

Similarly the end of each section must live on its own line:

    </chapter>

Invalid XML will break this program - no checking of XML syntax or
validation against the DTD is done. Make sure the DOCBOOK file is
valid before processing with $PROG - perhaps by passing through
jade(1) or nsgmls(1) without errors."

}

abend() {
	echo "$PROG: $1" >&2
	echo "(Use -h for usage)" >&2
	exit 1
}

PROG=`basename $0`
DOC_TYPE='"unknown"'
ADD_PARA='"yes"'
HAS_PREFACE='""'
ENCODE_SPECIALS='"yes"'

ARGS=`getopt -o h -- "$@"`
[ $? != 0 ] && echo "use -h for usage" >&2 && exit 1

eval set -- "$ARGS"

while true; do
	case $1 in
		-h) usage; exit 0;;
		--) shift; break;;
		*)  echo "$PROG: internal error" >&2 ; exit 1;;
	esac
done

FILENAME=""
[ -r $1 ] && FILENAME=$1

writeBody() {
AWKFILE=/tmp/docbook2gjots.tmp$$.awk 

# Leave the here-document terminator unquoted to enable shell variable expansion:
# $ \ ` and , need escaping with \:
cat >$AWKFILE <<EOF
BEGIN {
	IGNORECASE = 1 # for all regular expressions!
	level = 0
	main_element = 0
	folder_open = 0
	need_title = 0
	folder_start_regexp = "^[ 	]*(.*)(<preface>|<chapter>|<section>|<sect1>|<sect2>|<sect3>|<sect4>)(.*)[ 	]*\$"
	folder_end_regexp = "^[ 	]*(,*)(</preface>|</chapter>|</section>|</sect1>|</sect2>|</sect3>|</sect4>)(.*)[ 	]*\$"
	title_start_regexp = "^[ 	]*(.*)(<title>)[ 	]*(.*)[ 	]*\$"
	title_end_regexp = "^[ 	]*(.*)[ 	]*(</title>)(.*)[ 	]*\$"
}

function manage_folder() {
	while (folder_open > level) {
		printf("\\\\EndFolder\\n", level)
		folder_open--
	}
	while (folder_open < level) {
		printf("\\\\NewFolder\\n", level)
		folder_open++
	}
}

{
	while (\$0) {
		if (\$0 ~ folder_start_regexp) {
			#print "folder_start:",\$0
			left = gensub(folder_start_regexp, "\\\\1", 1)
			if (left)
				print left

			manage_folder()
			\$0 = gensub(folder_start_regexp, "\\\\3", 1)
			need_title = 1
			level++

		} else if (\$0 ~ folder_end_regexp) {
			#print "folder_end:",\$0
			left = gensub(folder_end_regexp, "\\\\1", 1)
			if (left)
				print left

			level--
			if (level < 0) {
				print "XML error"
				exit 1
			}
			\$0 = gensub(folder_end_regexp, "\\\\3", 1)

		} else if (need_title && \$0 ~ title_start_regexp) {
			#print "title_start:",\$0

			# dubius XML parsing here - we need to assume that the
			# title text comes immediately after the <chapter> etc tag
			# and is all on one line (although not necessarily on the
			# same line as the <title> or </title> tags. This is a
			# quick and dirty hack after all, not a proper XML parsing
			# effort.

			left = gensub(title_start_regexp, "\\\\1", 1)
			if (left)
				print left

			\$0 = gensub(title_start_regexp, "\\\\3", 1)
			title=""
			while (\$0 !~ title_end_regexp) {
				if (!title)
					title = gensub("^[ 	]*(.*)[ 	]*", "\\\\1", 1)
				getline
			}

			if (!title)
				title = gensub(title_end_regexp, "\\\\1", 1)

			\$0 = gensub(title_end_regexp, "\\\\3", 1)

			printf("\\\\NewEntry\\n%s\\n\\n", title)
			need_title = 0
		} else {
			print gensub("^[ 	]*(.*)$", "\\\\1", 1)
			\$0 = ""
		}
	}
}

END { 
}

EOF

# NB - we are using gawk in order to access the gensub() function:
cat $FILENAME | gawk -f $AWKFILE
rm $AWKFILE

} # writeBody

# This is the main program (!):
(
		writeBody
)