sgmlcatalog 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #!@l_prefix@/bin/bash
  2. PREFIX=${PREFIX-@l_prefix@}
  3. DIR=$PREFIX/share/sgml
  4. MASTER=$DIR/catalog.xml
  5. MK=$PREFIX/libexec/sgml/mkcatalog
  6. C2X=$PREFIX/libexec/sgml/catalog2xml
  7. init () {
  8. p=()
  9. s=()
  10. u=()
  11. P=()
  12. S=()
  13. U=()
  14. X=0
  15. }
  16. setup () {
  17. if test ! -s $MASTER
  18. then
  19. cat > $MASTER <<'EOFEOF'
  20. <?xml version="1.0"?>
  21. <!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
  22. <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
  23. </catalog>
  24. EOFEOF
  25. ls -l $MASTER
  26. fi
  27. }
  28. del () {
  29. name="$1"
  30. while read line
  31. do
  32. case "$line" in
  33. "<!-- CATALOG $name -->"*)
  34. ;;
  35. *)
  36. echo $line
  37. ;;
  38. esac
  39. done < $MASTER > $MASTER.tmp && \
  40. cp $MASTER.tmp $MASTER && \
  41. rm -f $MASTER.tmp
  42. }
  43. ins () {
  44. name="$1" ; shift
  45. tag="$1" ; shift
  46. att1="$1" ; shift
  47. att2="$1" ; shift
  48. val2="$1" ; shift
  49. while read line
  50. do
  51. case "$line" in
  52. "</catalog>")
  53. for val1 in "$@"
  54. do
  55. echo '<!-- CATALOG' $name '--><'$tag $att1='"'$val1'"' $att2='"'$val2'"/>'
  56. done
  57. echo $line
  58. ;;
  59. *)
  60. echo $line
  61. ;;
  62. esac
  63. done < $MASTER > $MASTER.tmp && \
  64. cp $MASTER.tmp $MASTER && \
  65. rm -f $MASTER.tmp
  66. }
  67. install () {
  68. name=$1
  69. cat="file://$DIR/$name/catalog.xml"
  70. pre="file://$DIR/$name"
  71. $MK -q install $name
  72. if test $X -gt 0
  73. then
  74. $C2X $DIR/$name/catalog > $DIR/$name/catalog.xml
  75. fi
  76. del $name
  77. ins $name delegatePublic publicIdStartString catalog $cat "${p[@]}"
  78. ins $name delegateSystem systemIdStartString catalog $cat "${s[@]}"
  79. ins $name delegateURI uriStartString catalog $cat "${u[@]}"
  80. ins $name rewritePublic publicIdStartString rewritePrefix $pre "${P[@]}"
  81. ins $name rewriteSystem systemIdStartString rewritePrefix $pre "${S[@]}"
  82. ins $name rewriteURI uriStartString rewritePrefix $pre "${U[@]}"
  83. }
  84. deinstall () {
  85. name=$1
  86. $MK -q deinstall $name
  87. if test $X -gt 0
  88. then
  89. rm -f $DIR/$name/catalog.xml
  90. fi
  91. del $name
  92. }
  93. init
  94. setup
  95. while test $# -gt 0
  96. do
  97. i="$1" ; shift
  98. case "$i" in
  99. -p)
  100. p=("${p[@]}" "$1") ; shift
  101. ;;
  102. -s)
  103. s=("${s[@]}" "$1") ; shift
  104. ;;
  105. -u)
  106. u=("${u[@]}" "$1") ; shift
  107. ;;
  108. -P)
  109. P=("${P[@]}" "$1") ; shift
  110. ;;
  111. -S)
  112. S=("${S[@]}" "$1") ; shift
  113. ;;
  114. -U)
  115. U=("${U[@]}" "$1") ; shift
  116. ;;
  117. -i)
  118. name="$1" ; shift
  119. install "$name"
  120. init
  121. ;;
  122. -x)
  123. X=1
  124. ;;
  125. -d)
  126. name="$1" ; shift
  127. deinstall "$name"
  128. init
  129. ;;
  130. esac
  131. done