On Sat, Dec 08, 2007 at 02:47:23AM +1000, Allan McRae wrote:
diff --git a/src/pacman/package.c b/src/pacman/package.c index ac3f820..00c3535 100644 --- a/src/pacman/package.c +++ b/src/pacman/package.c @@ -232,29 +232,26 @@ void dump_pkg_files(pmpkg_t *pkg) fflush(stdout); }
-/* Display the changelog of an installed package +/* Display the changelog of a package */ -void dump_pkg_changelog(char *clfile, const char *pkgname) +void dump_pkg_changelog(pmpkg_t *pkg) { - FILE* fp = NULL; - char line[PATH_MAX+1]; - - if((fp = fopen(clfile, "r")) == NULL) - { - fprintf(stderr, _("error: no changelog available for '%s'.\n"), pkgname); + alpm_list_t *changelog = NULL; + alpm_list_t *i; + char line[PATH_MAX]; + + changelog = alpm_pkg_get_changelog(pkg); + if(changelog == NULL) { + fprintf(stderr, _("error: no changelog available for '%s'.\n"), alpm_pkg_get_name(pkg)); return; - } - else - { - while(!feof(fp)) - { - fgets(line, (int)PATH_MAX, fp); - printf("%s", line); - line[0] = '\0'; + } else { + for(i = changelog; i; i = alpm_list_next(i)) { + snprintf(line, PATH_MAX-1, "%s", (char*)alpm_list_getdata(i)); + fprintf(stdout, "%s\n", line); } - fclose(fp); - return; } + + FREELIST(changelog); }
Dan, you said earlier the FREELIST macros shouldn't be used in the frontend. I don't know why I said "ah, ok", because I actually don't understand this, and Nagy didn't either. There are several other places in the frontend where it could be used instead of alpm_list_free_inner(list, free); alpm_list_free(list);