Home
indexgph2db.sh - gopher-lawn - The gopher lawn gopher directory project. HTML git clone git://bitreich.org/gopher-lawn/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/gopher-lawn/ DIR Log DIR Files DIR Refs DIR Tags --- indexgph2db.sh (2011B) --- 1 #!/bin/sh 2 3 set -x 4 5 if [ $# -gt 0 ]; 6 then 7 inputfile="$1" 8 else 9 inputfile="/dev/stdin" 10 fi 11 12 printdbtmpl() { 13 linetype="$1" 14 linktext="$2" 15 selector="$3" 16 host="$4" 17 port="$5" 18 description="$6" 19 20 case "${linetype}" in 21 0|H) 22 linetypetext="text" 23 ;; 24 1|h|w) 25 linetypetext="link" 26 ;; 27 2) 28 linetypetext="cso" 29 ;; 30 3|+|i) 31 linetypetext="error" 32 ;; 33 6) 34 linetypetext="uuencoded" 35 ;; 36 7) 37 linetypetext="search" 38 ;; 39 8|T) 40 linetypetext="telnet" 41 ;; 42 *) 43 linetypetext="binary" 44 ;; 45 esac 46 47 tmplfile="$host-$(printf "%s\n" "${selector}" \ 48 | tr '/' '_').${linetypetext}" 49 50 printf "Type: %s\n" "${linetypetext}" > "${tmplfile}" 51 printf "Selector: %s\n" "${selector}" >> "${tmplfile}" 52 printf "Host: %s\n" "${host}" >> "${tmplfile}" 53 printf "Port: %s\n" "${port}" >> "${tmplfile}" 54 printf "LinkName: %s\n" "${linktext}" >> "${tmplfile}" 55 printf "Description: %s\n" "${description}" >> "${tmplfile}" 56 printf "Category: \n" >> "${tmplfile}" 57 printf "Keywords: \n" >> "${tmplfile}" 58 } 59 60 gphline="" 61 cat "${inputfile}" \ 62 | while read -r line; 63 do 64 if [ -z "${line}" ]; 65 then 66 if [ -n "${gphline}" ]; 67 then 68 case "${gphline}" in 69 '[1|<< back'*) 70 ;; 71 *) 72 linetype="$(printf "%s\n" "${gphline}" \ 73 | cut -d '[' -f 2 | cut -d '|' -f 1)"; 74 linktext="$(printf "%s\n" "${gphline}" \ 75 | cut -d '|' -f 2)"; 76 selector="$(printf "%s\n" "${gphline}" \ 77 | cut -d '|' -f 3)"; 78 host="$(printf "%s\n" "${gphline}" \ 79 | cut -d '|' -f 4)"; 80 port="$(printf "%s\n" "${gphline}" \ 81 | cut -d '|' -f 5 | cut -d ']' -f 1)"; 82 83 printdbtmpl "${linetype}" "${linktext}" \ 84 "${selector}" "${host}" "${port}" \ 85 "${description}" 86 ;; 87 esac 88 fi 89 90 gphline="" 91 description="" 92 continue; 93 fi 94 95 case "${line}" in 96 \[*) 97 if [ -z "${gphline}" ]; 98 then 99 gphline="${line}" 100 continue; 101 fi 102 ;; 103 *) 104 if [ -n "${gphline}" ]; 105 then 106 if [ -z "${description}" ]; 107 then 108 description="${line}" 109 else 110 description="${description} ${line}" 111 fi 112 fi 113 continue; 114 ;; 115 esac 116 done 117