diff -aurp rarian-0.7.1/librarian/rarian-omf.cpp rarian-0.7.1-patched/librarian/rarian-omf.cpp --- rarian-0.7.1/librarian/rarian-omf.cpp 2008-01-07 23:21:51.000000000 +0100 +++ rarian-0.7.1-patched/librarian/rarian-omf.cpp 2008-05-07 13:31:07.910658000 +0200 @@ -186,6 +186,33 @@ rrn_omf_parse_file (char *path) return NULL; } + if (reg->uri && strncmp (reg->uri, "file://", strlen ("file://")) == 0) { + char *path; + path = reg->uri + strlen ("file://"); + if (access (path, R_OK) != 0) { + if (strncmp (path, "/usr/share/gnome/help/", strlen ("/usr/share/gnome/help/")) == 0) { + char *new_uri; + + new_uri = (char *) malloc (sizeof(char) * (strlen (reg->uri) + strlen ("-bundle") + 1)); + sprintf (new_uri, "file:///usr/share/gnome/help-bundle/%s", path + strlen ("/usr/share/gnome/help/")); + free (reg->uri); + reg->uri = NULL; + path = new_uri + strlen ("file://"); + + if (access (path, R_OK) == 0) { + reg->uri = new_uri; + } else { + free (new_uri); + } + } + } + } + + if (!reg->uri) { + rrn_reg_free (reg); + return NULL; + } + if (!reg->identifier) { reg->identifier = (char *) malloc (sizeof(char) * 35); sprintf (reg->identifier, "org.scrollkeeper.unknown%d", rand());