<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,13 +1,10 @@
 TODO:
-- check for stfl in config.sh script
 - add an auto-flag configuration command to automatically flag articles that match a certain query
 - when reload is finished, the focus shall be in the current form's list
 - per-feed refresh settings
 - implement internal alias mechanism to allow transition of renamed config commands.
 - fix HTML rendering of bold and underlined text when light background is configured
-- add quoting when printing out config variable values so that copy/paste can be applied.
 - make MacPort available for easy installation
-- test highlighting, especially of search phrases.
 - compute &quot;busy-ness&quot; of feeds, make it a sort option
 - reduce memory usage by loading feeds on demand when being opened
 - implement RFC 5005 (http://www.ietf.org/rfc/rfc5005.txt)
@@ -156,3 +153,5 @@ DONE:
 - check correct sorting of query feeds
 - add option to prepopulate query feeds
 - fix help screen in podbeuter
+- add quoting when printing out config variable values so that copy/paste can be applied.
+- check for stfl in config.sh script</diff>
      <filename>TODO</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,7 @@
 #!/bin/sh
 
+FAILSTATUS=&quot;&quot;
+
 check_pkg() {
 	pkgname=$1
 	add_define=$2
@@ -51,14 +53,24 @@ fail() {
 	echo &quot;Please make sure it is installed.&quot;
 	echo &quot;&quot;
 	echo &quot;You can download ${pkgname} from here: ${dlurl}&quot;
-	exit 1
+	FAILSTATUS=&quot;1&quot;
 }
 
 fail_custom() {
 	err=$1
 	echo &quot;&quot;
 	echo &quot;ERROR: ${err}&quot;
-	exit 1
+	FAILSTATUS=&quot;1&quot;
+}
+
+all_aboard_the_fail_boat() {
+	if [ &quot;x$FAILSTATUS&quot; != &quot;x&quot; ] ; then
+		rm -f config.mk
+		echo &quot;&quot;
+		echo &quot;One or more dependencies couldn't be found. Please install&quot;
+		echo &quot;these packages and retry compilation.&quot;
+		exit 1
+	fi
 }
 
 echo &quot;&quot; &gt; config.mk
@@ -67,3 +79,4 @@ check_pkg &quot;sqlite3&quot; || fail &quot;sqlite3&quot;
 check_pkg &quot;libcurl&quot; || check_custom &quot;libcurl&quot; &quot;curl-config&quot; || fail &quot;libcurl&quot;
 check_pkg &quot;libxml-2.0&quot; || check_custom &quot;libxml2&quot; &quot;xml2-config&quot; || fail &quot;libxml2&quot;
 check_pkg &quot;stfl&quot; &quot;&quot; &quot;--static&quot; || fail &quot;stfl&quot;
+all_aboard_the_fail_boat</diff>
      <filename>config.sh</filename>
    </modified>
    <modified>
      <diff>@@ -42,7 +42,7 @@ themselves depend on other libraries. These dependencies are not listed here.
 Please also be aware that you need a recent C++ compiler. Currently, newsbeuter
 has only been tested with GCC.
 
-- STFL (version 0.20 or newer): http://www.clifford.at/stfl/[]
+- STFL (version 0.21 or newer): http://www.clifford.at/stfl/[]
 - SQLite 3 (version 3.5 or newer): http://www.sqlite.org/[]
 - libcurl: http://curlm.haxx.se/download.html[]
 - GNU gettext (on systems that don't provide gettext in the libc): ftp://ftp.gnu.org/gnu/gettext/[]</diff>
      <filename>doc/newsbeuter.txt</filename>
    </modified>
    <modified>
      <diff>@@ -77,6 +77,8 @@ class utils {
 
 		static curl_proxytype get_proxy_type(const std::string&amp; type);
 
+		static bool is_special_url(const std::string&amp; url);
+
 	private:
 		static void append_escapes(std::string&amp; str, char c);
 </diff>
      <filename>include/utils.h</filename>
    </modified>
    <modified>
      <diff>@@ -73,6 +73,7 @@ item rss_09x_parser::parse_item(xmlNode * itemNode) {
 				it.author = authorfield.substr(start+1, end-start);
 			} else {
 				it.author_email = authorfield;
+				it.author = authorfield;
 			}
 		} else if (node_is(node, &quot;creator&quot;, DC_URI)) {
 			author = get_content(node);</diff>
      <filename>rss/rss_09x_parser.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -812,7 +812,7 @@ void controller::export_opml() {
 	xmlNodePtr body = xmlNewTextChild(opml_node, NULL, (const xmlChar *)&quot;body&quot;, NULL);
 
 	for (std::vector&lt;std::tr1::shared_ptr&lt;rss_feed&gt; &gt;::iterator it=feeds.begin(); it != feeds.end(); ++it) {
-		if ((*it)-&gt;rssurl().substr(0,6) != &quot;query:&quot; &amp;&amp; (*it)-&gt;rssurl().substr(0,7) != &quot;filter:&quot;) {
+		if (!utils::is_special_url((*it)-&gt;rssurl())) {
 			std::string rssurl = (*it)-&gt;rssurl();
 			std::string link = (*it)-&gt;link();
 			std::string title = (*it)-&gt;title();</diff>
      <filename>src/controller.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,7 @@ mutex::~mutex() {
 void mutex::lock() {
 	int rc = pthread_mutex_lock(&amp;mtx);
 	if (rc != 0) {
+		LOG(LOG_INFO, &quot;mutex::lock: lock returned %d&quot;, rc);
 		throw exception(rc);
 	}
 }</diff>
      <filename>src/mutex.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -619,9 +619,13 @@ std::string utils::join(const std::vector&lt;std::string&gt;&amp; strings, const std::stri
 	return result;
 }
 
+bool utils::is_special_url(const std::string&amp; url) {
+	return url.substr(0,6) == &quot;query:&quot; || url.substr(0,7) == &quot;filter:&quot; || url.substr(0,5) == &quot;exec:&quot;;
+}
+
 std::string utils::censor_url(const std::string&amp; url) {
 	std::string rv;
-	if (url.length() &gt; 0) {
+	if (url.length() &gt; 0 &amp;&amp; !utils::is_special_url(url)) {
 		const char * myuri = url.c_str();
 		xmlURIPtr uri = xmlParseURI(myuri);
 		if (uri) {
@@ -636,6 +640,8 @@ std::string utils::censor_url(const std::string&amp; url) {
 			xmlFreeURI(uri);
 		} else
 			return url;
+	} else {
+		rv = url;
 	}
 	return rv;
 }</diff>
      <filename>src/utils.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -356,7 +356,6 @@ void view::open_in_browser(const std::string&amp; url) {
 }
 
 void view::update_visible_feeds(std::vector&lt;std::tr1::shared_ptr&lt;rss_feed&gt; &gt;&amp; feeds) {
-	scope_mutex lock(mtx);
 	try {
 		if (formaction_stack_size() &gt; 0) {
 			std::tr1::shared_ptr&lt;feedlist_formaction&gt; feedlist = std::tr1::dynamic_pointer_cast&lt;feedlist_formaction, formaction&gt;(formaction_stack[0]);
@@ -489,6 +488,7 @@ void view::view_dialogs() {
 void view::push_help() {
 	std::tr1::shared_ptr&lt;help_formaction&gt; helpview(new help_formaction(this, help_str));
 	set_bindings(helpview);
+	apply_colors(helpview);
 	helpview-&gt;set_context(get_current_formaction()-&gt;id());
 	helpview-&gt;set_parent_formaction(get_current_formaction());
 	helpview-&gt;init();</diff>
      <filename>src/view.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -36,12 +36,10 @@ BOOST_AUTO_TEST_CASE(InitTests) {
 }
 
 BOOST_AUTO_TEST_CASE(TestNewsbeuterReload) {
-	// disabled for now
-#if 0
 	configcontainer * cfg = new configcontainer();
 	cache * rsscache = new cache(&quot;test-cache.db&quot;, cfg);
 
-	rss_parser parser(&quot;http://bereshit.synflood.at/~ak/rss.xml&quot;, rsscache, cfg, NULL);
+	rss_parser parser(&quot;http://testbed.newsbeuter.org/unit-test/rss.xml&quot;, rsscache, cfg, NULL);
 	std::tr1::shared_ptr&lt;rss_feed&gt; feed = parser.parse();
 	BOOST_CHECK_EQUAL(feed-&gt;items().size(), 8u);
 
@@ -59,7 +57,7 @@ BOOST_AUTO_TEST_CASE(TestNewsbeuterReload) {
 	rsscache-&gt;externalize_rssfeed(feed, false);
 
 	std::tr1::shared_ptr&lt;rss_feed&gt; feed2(new rss_feed(rsscache));
-	feed2-&gt;set_rssurl(&quot;http://bereshit.synflood.at/~ak/rss.xml&quot;);
+	feed2-&gt;set_rssurl(&quot;http://testbed.newsbeuter.org/unit-test/rss.xml&quot;);
 	rsscache-&gt;internalize_rssfeed(feed2);
 
 	BOOST_CHECK_EQUAL(feed2-&gt;items().size(), 8u);
@@ -68,7 +66,7 @@ BOOST_AUTO_TEST_CASE(TestNewsbeuterReload) {
 
 	std::vector&lt;std::string&gt; feedurls = rsscache-&gt;get_feed_urls();
 	BOOST_CHECK_EQUAL(feedurls.size(), 1u);
-	BOOST_CHECK_EQUAL(feedurls[0], &quot;http://bereshit.synflood.at/~ak/rss.xml&quot;);
+	BOOST_CHECK_EQUAL(feedurls[0], &quot;http://testbed.newsbeuter.org/unit-test/rss.xml&quot;);
 
 	std::vector&lt;std::tr1::shared_ptr&lt;rss_feed&gt; &gt; feedv;
 	feedv.push_back(feed);
@@ -80,7 +78,6 @@ BOOST_AUTO_TEST_CASE(TestNewsbeuterReload) {
 	delete cfg;
 
 	::unlink(&quot;test-cache.db&quot;);
-#endif
 }
 
 BOOST_AUTO_TEST_CASE(TestConfigParserContainerAndKeymap) {</diff>
      <filename>test/test.cpp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>603143aca1ef30cf5772036585f083cb200d41f9</id>
    </parent>
    <parent>
      <id>e840c8d2f07ad5c33eed322ec892907a6e00667b</id>
    </parent>
  </parents>
  <author>
    <name>Andreas Krennmair</name>
    <email>ak@synflood.at</email>
  </author>
  <url>http://github.com/akrennmair/newsbeuter/commit/cb8a8aaaf71ab97a8758b73270d47d4d7bf2d944</url>
  <id>cb8a8aaaf71ab97a8758b73270d47d4d7bf2d944</id>
  <committed-date>2009-07-01T02:16:45-07:00</committed-date>
  <authored-date>2009-07-01T02:16:45-07:00</authored-date>
  <message>Merge branch 'master' of git@github.com:akrennmair/newsbeuter</message>
  <tree>2382f1069799eb4575d59ba19ce040aaaac8b2c2</tree>
  <committer>
    <name>Andreas Krennmair</name>
    <email>ak@synflood.at</email>
  </committer>
</commit>
