diff -Nru fbautostart-2.718281/debian/changelog fbautostart-2.718281/debian/changelog --- fbautostart-2.718281/debian/changelog 2011-09-12 14:43:28.000000000 -0400 +++ fbautostart-2.718281/debian/changelog 2012-06-18 11:05:39.000000000 -0400 @@ -1,3 +1,14 @@ +fbautostart (2.718281-1ubuntu1) precise-proposed; urgency=low + + * Two new patches to resolve serious issues: + - fix-bad-overriding.patch + + fix for non-compliant xdg behavior. + - fix-bad-path-handling-1014425.patch + + fix for bad handling of XDG paths that contain more + then one part. (LP: #1014425) + + -- Paul Tagliamonte Mon, 18 Jun 2012 10:48:50 -0400 + fbautostart (2.718281-1) unstable; urgency=low * New upstream release. This solves tons of parsing issues. diff -Nru fbautostart-2.718281/debian/patches/fix-bad-overriding.patch fbautostart-2.718281/debian/patches/fix-bad-overriding.patch --- fbautostart-2.718281/debian/patches/fix-bad-overriding.patch 1969-12-31 19:00:00.000000000 -0500 +++ fbautostart-2.718281/debian/patches/fix-bad-overriding.patch 2012-06-18 11:05:39.000000000 -0400 @@ -0,0 +1,13 @@ +--- b/src/xdg_parse.cc 2012-06-18 10:35:23.013801909 -0400 ++++ a/src/xdg_parse.cc 2012-06-18 10:41:02.877810006 -0400 +@@ -90,6 +90,10 @@ + parse_file(folder + "/" + ent->d_name); + xdg_autostart_pair r = xdg_autostart_last_parsed(); + xdg_parsed_file.clear(); ++ xdg_autostart_map::iterator it = binaries->find(ent->d_name); ++ if ( it != binaries->end() ) { ++ binaries->erase(it); ++ } + binaries->insert(xdg_autostart_pair(ent->d_name, r.second)); + } catch ( parser_exception * ex ) { + std::cerr << "Exception parsing " << ent->d_name << std::endl; diff -Nru fbautostart-2.718281/debian/patches/fix-bad-path-handling-1014425.patch fbautostart-2.718281/debian/patches/fix-bad-path-handling-1014425.patch --- fbautostart-2.718281/debian/patches/fix-bad-path-handling-1014425.patch 1969-12-31 19:00:00.000000000 -0500 +++ fbautostart-2.718281/debian/patches/fix-bad-path-handling-1014425.patch 2012-06-18 11:07:16.000000000 -0400 @@ -0,0 +1,84 @@ +--- b/src/main.cc 2012-06-18 10:59:01.637835712 -0400 ++++ a/src/main.cc 2012-06-18 11:02:08.689840169 -0400 +@@ -27,6 +27,8 @@ + #include + #include + #include ++#include ++#include + + #include "exceptions.hh" + +@@ -81,7 +83,6 @@ + void pre_exec() { + const char * home = getenv("XDG_CONFIG_HOME"); + const char * dirs = getenv("XDG_CONFIG_DIRS"); +- const char * userhome = getenv("HOME"); + const char * desktopenv = getenv("FBXDG_DE"); + const char * execmodel = getenv("FBXDG_EXEC"); + +@@ -126,14 +127,6 @@ + * XXX: Fixme + */ + +- _xdg_default_global = fix_home_pathing( _xdg_default_global, userhome ); +- _xdg_default_local = fix_home_pathing( _xdg_default_local, userhome ); +- /* +- * If the luser gives us (or we default to) a path with tlde in it, +- * let's expand it to use $HOME to figure out where the real path actually +- * is. +- */ +- + std::cout << "" << std::endl; + std::cout << "Hello! I'll be your friendly XDG Autostarter today." << std::endl; + std::cout << "Here's what's on the menu:" << std::endl; +@@ -161,6 +154,17 @@ + std::cout << "" << std::endl; + } + ++std::vector split_path( std::string input ) { ++ std::vector ret; ++ std::stringstream ss(input); ++ std::string word; ++ char delim = ':'; ++ while ( std::getline( ss, word, delim ) ) { ++ ret.push_back(word); ++ } ++ return ret; ++} ++ + /** + * XXX: Document me + */ +@@ -184,17 +188,26 @@ + } + + int main ( int argc, char ** argv ) { ++ const char * userhome = getenv("HOME"); ++ + pre_exec(); /* pre_exec allows us to read goodies and set up + the env for us. */ + + xdg_autostart_map binaries; /* the map of what stuff to start + up or ignore or whatever. */ + ++ ++ std::vector global = split_path(_xdg_default_global); ++ std::vector local = split_path(_xdg_default_local); ++ ++ for ( unsigned int i = 0; i < global.size(); ++i ) { ++ std::string path = fix_home_pathing(global.at(i), userhome); ++ parse_folder( &binaries, path + "/autostart/" ); ++ } ++ for ( unsigned int i = 0; i < local.size(); ++i ) { ++ std::string path = fix_home_pathing(local.at(i), userhome); ++ parse_folder( &binaries, path + "/autostart/" ); ++ } +- parse_folder( &binaries, _xdg_default_global + "/autostart/" ); +- parse_folder( &binaries, _xdg_default_local + "/autostart/" ); +- /* +- * Let's kick off the parse routines on the directories. +- */ + + std::cout << "" << std::endl; + std::cout << "Finished parsing all files." << std::endl; diff -Nru fbautostart-2.718281/debian/patches/series fbautostart-2.718281/debian/patches/series --- fbautostart-2.718281/debian/patches/series 1969-12-31 19:00:00.000000000 -0500 +++ fbautostart-2.718281/debian/patches/series 2012-06-18 11:05:39.000000000 -0400 @@ -0,0 +1,2 @@ +fix-bad-overriding.patch +fix-bad-path-handling-1014425.patch