sfeed_content - sfeed - RSS and Atom parser
 (HTM) git clone git://git.codemadness.org/sfeed
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       sfeed_content (1276B)
       ---
            1 #!/bin/sh
            2 # Content viewer for sfeed(5) lines.
            3 
            4 # The locale is set to "C" for performance. The input is always UTF-8.
            5 LC_ALL=C awk -F '\t' '
            6 function unescape(s) {
            7         # use the character "\x01" as a temporary replacement for "\".
            8         gsub("\\\\\\\\", "\x01", s);
            9         gsub("\\\\n", "\n", s);
           10         gsub("\\\\t", "\t", s);
           11         gsub("\x01", "\\", s); # restore "\x01" to "\".
           12         return s;
           13 }
           14 BEGIN {
           15         htmlconv = ENVIRON["SFEED_HTMLCONV"];
           16         if (!length(htmlconv))
           17                 htmlconv = "lynx -stdin -dump " \
           18                         "-underline_links -image_links " \
           19                         "-display_charset=\"utf-8\" -assume_charset=\"utf-8\" ";
           20 }
           21 {
           22         if (previtem)
           23                 print "\f";
           24         previtem = 1;
           25 
           26         print "Title:     " $2;
           27         if (length($7))
           28                 print "Author:    " $7;
           29         if (length($9)) {
           30                 categories = $9;
           31                 gsub("\\|", ", ", categories);
           32                 print "Category:  " categories;
           33         }
           34         if (length($3))
           35                 print "Link:      " $3;
           36         if (length($8))
           37                 print "Enclosure: " $8;
           38         if (!length($4))
           39                 next;
           40         print "";
           41         if ($5 == "html") {
           42                 # use the link of the item as the base URL for relative URLs in
           43                 # HTML content.
           44                 base = $3;
           45                 if (length(base)) {
           46                         gsub("\"", "%22", base); # encode quotes.
           47                         base = "<base href=\"" base "\"/>\n";
           48                 }
           49                 print base unescape($4) | htmlconv;
           50                 close(htmlconv);
           51         } else {
           52                 print unescape($4);
           53         }
           54 }' "$@" | \
           55 ${PAGER:-less -R}