sfeed_opml_export - sfeed - RSS and Atom parser
 (HTM) git clone git://git.codemadness.org/sfeed
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       sfeed_opml_export (1357B)
       ---
            1 #!/bin/sh
            2 
            3 # load config (evaluate shellscript).
            4 # loadconfig(configfile)
            5 loadconfig() {
            6         # allow to specify config via argv[1].
            7         if [ "$1" != "" ]; then
            8                 # get absolute path of config file required for including.
            9                 config="$1"
           10                 configpath=$(readlink -f "${config}" 2>/dev/null)
           11         else
           12                 # default config location.
           13                 config="$HOME/.sfeed/sfeedrc"
           14                 configpath="${config}"
           15         fi
           16 
           17         # config is loaded here to be able to override $sfeedpath or functions.
           18         if [ -r "${configpath}" ] && [ -f "${configpath}" ]; then
           19                 . "${configpath}"
           20         else
           21                 printf "Configuration file \"%s\" cannot be read.\n" "${config}" >&2
           22                 echo "See the sfeedrc.example file or the sfeedrc(5) man page for an example." >&2
           23                 exit 1
           24         fi
           25 }
           26 
           27 # override feed function to output OPML XML.
           28 # feed(name, feedurl, [basesiteurl], [encoding])
           29 feed() {
           30         # uses the characters 0x1f and 0x1e as a separator.
           31         printf '%s\037%s\036' "$1" "$2"
           32 }
           33 
           34 # load config file.
           35 loadconfig "$1"
           36 
           37 cat <<!
           38 <?xml version="1.0" encoding="UTF-8"?>
           39 <opml version="1.0">
           40 <head>
           41         <title>OPML export</title>
           42 </head>
           43 <body>
           44 !
           45 
           46 feeds | LC_ALL=C awk '
           47 BEGIN {
           48         FS = "\x1f"; RS = "\x1e";
           49 }
           50 {
           51         gsub("&", "\\&amp;");
           52         gsub("\"", "\\&quot;");
           53         gsub("'"'"'", "\\&#39;");
           54         gsub("<", "\\&lt;");
           55         gsub(">", "\\&gt;");
           56 
           57         print "\t<outline type=\"rss\" title=\"" $1 "\" text=\"" $1 "\" xmlUrl=\"" $2 "\"/>";
           58 }'
           59 
           60 cat <<!
           61 </body>
           62 </opml>
           63 !