[pacman-dev] [PATCH] Improve changelog handling
Xavier
shiningxc at gmail.com
Fri Dec 7 13:41:27 EST 2007
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);
More information about the pacman-dev
mailing list