Hello community, here is the log from the commit of package rarian checked in at Sat Sep 1 13:14:16 CEST 2007. -------- --- GNOME/rarian/rarian.changes 2007-08-04 00:13:08.000000000 +0200 +++ /mounts/work_src_done/STABLE/rarian/rarian.changes 2007-09-01 06:54:21.447079000 +0200 @@ -1,0 +2,9 @@ +Sat Sep 1 06:51:24 CEST 2007 - hpj@suse.de + +- Add rarian-0.5.6-eof-crash.patch (bugs.freedesktop.org #12131). +- Add rarian-0.5.6-identifier-basename-crash.patch + (bugs.freedesktop.org #12226). +- Add rarian-0.5.6-docs-from-desktop-entries.patch, which lets us + find documentation specified by applications' .desktop files. + +------------------------------------------------------------------- New: ---- rarian-0.5.6-docs-from-desktop-entries.patch rarian-0.5.6-eof-crash.patch rarian-0.5.6-identifier-basename-crash.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rarian.spec ++++++ --- /var/tmp/diff_new_pack.i20276/_old 2007-09-01 13:14:05.000000000 +0200 +++ /var/tmp/diff_new_pack.i20276/_new 2007-09-01 13:14:05.000000000 +0200 @@ -14,10 +14,13 @@ BuildRequires: docbook_4 gcc-c++ intltool libxslt-devel perl-XML-Parser pkg-config sgml-skel Summary: Rarian is designed to be a replacement for scrollkeeper. Version: 0.5.6 -Release: 1 +Release: 10 Source0: rarian-%{version}.tar.bz2 Patch0: abuild.patch -License: GPL v2 only +Patch1: rarian-0.5.6-eof-crash.patch +Patch2: rarian-0.5.6-identifier-basename-crash.patch +Patch3: rarian-0.5.6-docs-from-desktop-entries.patch +License: GPL v2 or later, LGPL v2 or later Group: Development/Libraries/C and C++ BuildRoot: %{_tmppath}/%{name}-%{version}-build URL: ftp://ftp.gnome.org/pub/gnome/sources/rarian/ @@ -61,6 +64,9 @@ %setup -q #%setup -q -a 1 %patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build %configure @@ -94,6 +100,12 @@ %{_libdir}/pkgconfig/*.pc %changelog +* Sat Sep 01 2007 - hpj@suse.de +- Add rarian-0.5.6-eof-crash.patch (bugs.freedesktop.org #12131). +- Add rarian-0.5.6-identifier-basename-crash.patch + (bugs.freedesktop.org #12226). +- Add rarian-0.5.6-docs-from-desktop-entries.patch, which lets us + find documentation specified by applications' .desktop files. * Fri Aug 03 2007 - maw@suse.de - BuildRequire gcc-c++ and pkg-config - s#%%run_ldconfig#/sbin/ldconfig# in %%post and add it to %%postun ++++++ rarian-0.5.6-docs-from-desktop-entries.patch ++++++ diff -upr rarian-0.5.6-pre/librarian/rarian-main.c rarian-0.5.6-post/librarian/rarian-main.c --- rarian-0.5.6-pre/librarian/rarian-main.c 2007-07-31 14:58:19.000000000 -0500 +++ rarian-0.5.6-post/librarian/rarian-main.c 2007-08-30 22:56:55.000000000 -0500 @@ -223,13 +223,20 @@ past: int_path = rrn_strndup (cur_path, (first_colon-cur_path)); else int_path = strdup (cur_path); - check_path = malloc (sizeof(char)*(strlen(int_path)+6)); - sprintf (check_path, "%s/help", int_path); + + check_path = malloc (sizeof (char) * (strlen (int_path) + 14)); + snprintf (check_path, sizeof (char) * (strlen (int_path) + 14), + "%s/help", int_path); #if ENABLE_OMF_READ process_omf_dir (int_path); #endif process_locale_dirs (check_path); scan_directory (check_path); + + snprintf (check_path, sizeof (char) * (strlen (int_path) + 14), + "%s/applications", int_path); + scan_directory (check_path); + if (int_path && *int_path) { free (int_path); } @@ -286,7 +293,8 @@ scan_directory (char *dir) sprintf (tmp, "%s/%s", dir, dp->d_name); suffix = strrchr (tmp, '.'); - if (!strcmp (suffix, ".document")) { + if (!strcmp (suffix, ".document") || + !strcmp (suffix, ".desktop")) { process_file (tmp); } else if (!strcmp (suffix, ".section")) { process_section (tmp); diff -upr rarian-0.5.6-pre/librarian/rarian-reg-full.c rarian-0.5.6-post/librarian/rarian-reg-full.c --- rarian-0.5.6-pre/librarian/rarian-reg-full.c 2007-08-30 22:37:10.000000000 -0500 +++ rarian-0.5.6-post/librarian/rarian-reg-full.c 2007-08-30 22:56:55.000000000 -0500 @@ -101,7 +101,8 @@ rrn_reg_parse_file_full (char *filename) if (!real || real[0] == '\n' || real[0] == '#') { /* Black Line or comment. Ignore. */ } else if (real[0] == '[') { - if (!strncmp (real, "[Document]", 10)) { + if (!strncmp (real, "[Document]", 10) || + !strncmp (real, "[Desktop Entry]", 15)) { mode = 0; if (sect) { @@ -151,7 +152,7 @@ rrn_reg_parse_file_full (char *filename) } } - if (!reg->name || !reg->uri || !reg->type || !reg->categories ) { + if (!reg->name || !reg->uri || !reg->categories ) { rrn_reg_free_full (reg); reg = NULL; } @@ -271,6 +272,9 @@ process_categories_full (char *cat_strin int i; do { semi = strchr (current_break, ';'); + if (!semi) + semi = strchr (current_break, '|'); + if (result) { tmp = malloc (sizeof (char *)*ncats); for (i=0; i< ncats; i++) { @@ -636,9 +640,20 @@ process_path_full (RrnRegFull *reg) */ return; } - /* Otherwise, promote to file: URI scheme, reusing the prefix vble */ - prefix = malloc (sizeof (char) * (strlen(entry->text)+6)); - sprintf (prefix, "file:%s", entry->text); + + if (entry->text [0] == '/') { + /* If it's an absolute path, promote to file: URI scheme, + * reusing the prefix vble */ + prefix = malloc (sizeof (char) * (strlen(entry->text) + 8)); + snprintf (prefix, sizeof (char) * (strlen (entry->text) + 8), + "file://%s", entry->text); + } else { + /* Else, use the ghelp: URI scheme */ + prefix = malloc (sizeof (char) * (strlen (entry->text) + 7)); + snprintf (prefix, sizeof (char) * (strlen (entry->text) + 7), + "ghelp:%s", entry->text); + } + free (entry->text); entry->text = prefix; entry = entry->next; diff -upr rarian-0.5.6-pre/librarian/rarian-reg-utils.c rarian-0.5.6-post/librarian/rarian-reg-utils.c --- rarian-0.5.6-pre/librarian/rarian-reg-utils.c 2007-08-30 22:37:10.000000000 -0500 +++ rarian-0.5.6-post/librarian/rarian-reg-utils.c 2007-08-30 22:56:55.000000000 -0500 @@ -117,7 +117,8 @@ rrn_reg_parse_file (char *filename) if (!real || real[0] == '\n' || real[0] == '#') { /* Black Line or comment. Ignore. */ } else if (real[0] == '[') { - if (!strncmp (real, "[Document]", 10)) { + if (!strncmp (real, "[Document]", 10) || + !strncmp (real, "[Desktop Entry]", 15)) { mode = 0; if (sect) { @@ -167,7 +168,7 @@ rrn_reg_parse_file (char *filename) } } - if (!reg->name || !reg->uri || !reg->type || !reg->categories ) { + if (!reg->name || !reg->uri || !reg->categories ) { rrn_reg_free (reg); reg = NULL; } @@ -311,6 +312,9 @@ process_categories (char *cat_string) int i; do { semi = strchr (current_break, ';'); + if (!semi) + semi = strchr (current_break, '|'); + if (result) { tmp = malloc (sizeof (char *)*ncats); for (i=0; i< ncats; i++) { @@ -736,10 +740,22 @@ process_path (RrnReg *reg) */ return; } - /* Otherwise, promote to file: URI scheme, reusing the prefix vble */ - prefix = malloc (sizeof (char) * (strlen(reg->uri)+8)); - sprintf (prefix, "file://%s", reg->uri); + + if (reg->uri [0] == '/') { + /* If it's an absolute path, promote to file: URI scheme, + * reusing the prefix vble */ + prefix = malloc (sizeof (char) * (strlen (reg->uri) + 8)); + snprintf (prefix, sizeof (char) * (strlen (reg->uri) + 8), + "file://%s", reg->uri); + } else { + /* Else, use the ghelp: URI scheme */ + prefix = malloc (sizeof (char) * (strlen (reg->uri) + 7)); + snprintf (prefix, sizeof (char) * (strlen (reg->uri) + 7), + "ghelp:%s", reg->uri); + } + free (reg->uri); + reg->uri = prefix; while (child) { process_section_path (reg->uri, child); ++++++ rarian-0.5.6-eof-crash.patch ++++++ diff -upr rarian-0.5.6-pre/librarian/rarian-reg-utils.c rarian-0.5.6-post/librarian/rarian-reg-utils.c --- rarian-0.5.6-pre/librarian/rarian-reg-utils.c 2007-07-31 12:16:06.000000000 -0500 +++ rarian-0.5.6-post/librarian/rarian-reg-utils.c 2007-08-23 23:26:22.000000000 -0500 @@ -97,13 +97,18 @@ rrn_reg_parse_file (char *filename) char *tmp; char *result = NULL; tmp = strdup (buf); - buf = fgets (buf, 1023, file); + if (fgets (buf, 1023, file)) { result = malloc (sizeof (char) * (strlen(tmp)+strlen(buf)+2)); strcpy (result, tmp); strcat (result, buf); free (tmp); free (buf); - buf = result; + buf = result; + } else { + free (buf); + buf = tmp; + break; + } } real = buf; while (*real && isspace(*real) && *real != '\n') { ++++++ rarian-0.5.6-identifier-basename-crash.patch ++++++ diff -upr rarian-0.5.6-pre/librarian/rarian-reg-full.c rarian-0.5.6-post/librarian/rarian-reg-full.c --- rarian-0.5.6-pre/librarian/rarian-reg-full.c 2007-07-31 12:16:06.000000000 -0500 +++ rarian-0.5.6-post/librarian/rarian-reg-full.c 2007-08-30 19:22:37.000000000 -0500 @@ -171,12 +171,12 @@ rrn_reg_parse_file_full (char *filename) sep = strrchr (filename, '/'); last = strrchr (filename, '.'); - if (!last || !sep) { + if (!last || !sep || last < sep) { fprintf (stderr, "Error: Can't cut put basename properly\n"); rrn_reg_free_full (reg); return NULL; } - basename = rrn_strndup (last+1, sep-last+1); + basename = rrn_strndup (sep + 1, last - (sep + 1)); reg->identifier = malloc (sizeof (char)*(strlen(basename)+11)); sprintf (reg->identifier, "org.other.%s", basename); free (basename); diff -upr rarian-0.5.6-pre/librarian/rarian-reg-utils.c rarian-0.5.6-post/librarian/rarian-reg-utils.c --- rarian-0.5.6-pre/librarian/rarian-reg-utils.c 2007-08-30 19:19:41.000000000 -0500 +++ rarian-0.5.6-post/librarian/rarian-reg-utils.c 2007-08-30 19:22:30.000000000 -0500 @@ -187,12 +187,12 @@ rrn_reg_parse_file (char *filename) sep = strrchr (filename, '/'); last = strrchr (filename, '.'); - if (!last || !sep) { + if (!last || !sep || last < sep) { fprintf (stderr, "Error: Can't cut put basename properly\n"); rrn_reg_free (reg); return NULL; } - basename = rrn_strndup (last+1, sep-last+1); + basename = rrn_strndup (sep + 1, last - (sep + 1)); reg->identifier = malloc (sizeof (char)*(strlen(basename)+11)); sprintf (reg->identifier, "org.other.%s", basename); free (basename); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org