blob: 9ee5d21498dd9a6be87fbde87156c250f03dccd2 (
plain)
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
|
#!/bin/bash
# Copyright (C) 2001 by SuSE GmbH.
# Copyright (C) 2002 by SuSE Linux AG.
# Author: Karl Eichwalder <ke@suse.de>, 2001-2002.
# GPL
package=sgml-skel
version=0.6
LANGUAGE=C; export LANGUAGE
LC_ALL=C; export LC_ALL
# debug=yes
progname=${0##*/}
usage="\
Usage: $progname
-d, --debug
-f, --filename FILENAME
-h, --help
-i, --identifier STRING
-p, --packagedir DIR
-s, --sgmldir DIR default: usr/share/sgml
Example:
$progname -p website-xml-dtd --sgmldir /usr/share/sgml \\
--identifier '-//Norman Walsh//DTD Website V1.9//EN' \\
--filename website.dtd
Version info: $progname ($package) $version
Please, report bugs to Karl Eichwalder <feedback@suse.de>."
while test $# -gt 0; do
case $1 in
-d | --debug) debug=yes; shift 1; ;;
-p | --packagedir) if test $# -gt 1; then pkgdir=$2; shift 2;
else echo "$usage"; exit 1; fi ;;
-s | --sgmldir) if test $# -gt 1; then sgmldir=$2; shift 2;
else echo "$usage"; exit 1; fi ;;
-h | --h* ) echo "$usage"; exit 0 ;;
-i | --id*) if test $# -gt 1; then identifier=$2; shift 2;
else echo "$usage"; exit 1; fi ;;
-f | --file*) if test $# -gt 1; then filename=$2; shift 2;
else echo "$usage"; exit 1; fi ;;
-*) echo "Try '$progname --help' for more information."; exit 1 ;;
*) break
esac
done
_debug(){
[ x$debug = xyes ] && echo -e $1
}
# identifier=$1
sgmldir=${sgmldir-usr/share/sgml}
_debug $sgmldir
[ -d $sgmldir/$pkgdir ] || { \
echo "no such directory: $sgmldir/$pkgdir"; exit 1;
}
[ -f $sgmldir/$pkgdir/$filename ] || { \
echo "no such file: $sgmldir/$pkgdir/$filename"; exit 1;
}
id_split_old() {
# identifier='-//Norman Walsh//DTD Website V1.9//EN'
identifier=$1
id=${identifier// /_}
rest=${id#*//}
owner=${rest%%//*}
rest=${rest#*//}
class=$(echo ${rest%%_*} | tr [[:upper:]] [[:lower:]])
rest=${rest#*_}
desc=${rest%%//*}
}
id_split() {
# identifier='-//Norman Walsh//DTD Website V1.9//EN//XML'
# id indicator
# owner class
# description language
# version
if [ "${1:0:4}" = 'ISO ' ]; then
id=$1
else
if [ ${1:0:3} = '-//' -o ${1:0:3} = '-//' ]; then
id=${1#*//}
else
echo "$1 is not a valid identifier" ; exit 1
fi
fi
_debug "id: $id"
id=${id// /_}
_debug "id: $id"
owner=${id%%//*}
_debug $owner
id=${id#*//}
_debug "id: $id"
class=$(echo ${id%%_*} | tr [[:upper:]] [[:lower:]])
_debug $class
id=${id#*_}
_debug "id: $id"
desc=${id%%//*}
_debug $desc
id=${id/$desc/}
_debug "id: $id"
[ -n "$id" ] && {
if [ ${id:0:2} = '//' ]; then
id=${id#//}
_debug "id: $id"
lang=${id%%//*}
id=${id/$lang/}
lang=$(echo $lang | tr [[:upper:]] [[:lower:]])
_debug "lang: $lang"
else
echo "$id is not a valid language part" ; exit 1
fi
}
_debug "id: $id"
[ -n "$id" ] && {
if [ ${id:0:2} = '//' ]; then
ver=${id#//}
_debug "version: $ver"
else
echo "$id is not a valid version part" ; exit 1
fi
}
}
id_split "$identifier"
_debug "\
identifier: $identifier\n
owner: $owner\n
class: $class\n
desc: $desc\n
lang: $lang\n
version: $ver"
pushd $sgmldir >/dev/null
classdir=$owner/$class
[ -d $classdir ] || mkdir -p $classdir
if [ -n "$ver" ]; then
linkname=$classdir/${desc}_${ver}
else
linkname=$classdir/${desc}
fi
[ -L $linkname ] && rm -f $linkname
ln -s ../../$pkgdir/$filename $linkname
popd >/dev/null
# eof
|