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. 5LC_ALL=C awk -F '\t' ' 6function 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} 14BEGIN { 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}