[pacman-dev] [PATCH] Extract a write_deps function from local database writing
Dave Reisner
d at falconindy.com
Fri Mar 9 15:16:01 EST 2012
On Fri, Mar 09, 2012 at 02:11:08PM -0600, Dan McGee wrote:
> This reduces a lot of code duplication in the write function, which
> cleans it up a bit.
>
> Signed-off-by: Dan McGee <dan at archlinux.org>
> ---
> lib/libalpm/be_local.c | 67 ++++++++++++++++--------------------------------
> 1 file changed, 22 insertions(+), 45 deletions(-)
>
> diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c
> index 16c794e..7cce022 100644
> --- a/lib/libalpm/be_local.c
> +++ b/lib/libalpm/be_local.c
> @@ -749,6 +749,22 @@ int _alpm_local_db_prepare(alpm_db_t *db, alpm_pkg_t *info)
> return retval;
> }
>
> +void write_deps(FILE *fp, const char *header, alpm_list_t *deplist)
static?
> +{
> + alpm_list_t *lp;
> + if(!deplist) {
> + return;
> + }
> + fputs(header, fp);
> + fputc('\n', fp);
> + for(lp = deplist; lp; lp = lp->next) {
> + char *depstring = alpm_dep_compute_string(lp->data);
> + fprintf(fp, "%s\n", depstring);
if you're going to use the fputs/fputc combo above for the header, why
not here as well?
> + free(depstring);
> + }
> + fputc('\n', fp);
> +}
> +
> int _alpm_local_db_write(alpm_db_t *db, alpm_pkg_t *info, alpm_dbinfrq_t inforeq)
> {
> FILE *fp = NULL;
> @@ -790,15 +806,6 @@ int _alpm_local_db_write(alpm_db_t *db, alpm_pkg_t *info, alpm_dbinfrq_t inforeq
> }
> fprintf(fp, "\n");
> }
> - if(info->replaces) {
> - fputs("%REPLACES%\n", fp);
> - for(lp = info->replaces; lp; lp = lp->next) {
> - char *depstring = alpm_dep_compute_string(lp->data);
> - fprintf(fp, "%s\n", depstring);
> - free(depstring);
> - }
> - fprintf(fp, "\n");
> - }
> if(info->url) {
> fprintf(fp, "%%URL%%\n"
> "%s\n\n", info->url);
> @@ -851,42 +858,12 @@ int _alpm_local_db_write(alpm_db_t *db, alpm_pkg_t *info, alpm_dbinfrq_t inforeq
> }
> fprintf(fp, "\n");
> }
> - if(info->depends) {
> - fputs("%DEPENDS%\n", fp);
> - for(lp = info->depends; lp; lp = lp->next) {
> - char *depstring = alpm_dep_compute_string(lp->data);
> - fprintf(fp, "%s\n", depstring);
> - free(depstring);
> - }
> - fprintf(fp, "\n");
> - }
> - if(info->optdepends) {
> - fputs("%OPTDEPENDS%\n", fp);
> - for(lp = info->optdepends; lp; lp = lp->next) {
> - char *optstring = alpm_dep_compute_string(lp->data);
> - fprintf(fp, "%s\n", optstring);
> - free(optstring);
> - }
> - fprintf(fp, "\n");
> - }
> - if(info->conflicts) {
> - fputs("%CONFLICTS%\n", fp);
> - for(lp = info->conflicts; lp; lp = lp->next) {
> - char *depstring = alpm_dep_compute_string(lp->data);
> - fprintf(fp, "%s\n", depstring);
> - free(depstring);
> - }
> - fprintf(fp, "\n");
> - }
> - if(info->provides) {
> - fputs("%PROVIDES%\n", fp);
> - for(lp = info->provides; lp; lp = lp->next) {
> - char *depstring = alpm_dep_compute_string(lp->data);
> - fprintf(fp, "%s\n", depstring);
> - free(depstring);
> - }
> - fprintf(fp, "\n");
> - }
> +
> + write_deps(fp, "%REPLACES%", info->replaces);
> + write_deps(fp, "%DEPENDS%", info->depends);
> + write_deps(fp, "%OPTDEPENDS%", info->optdepends);
> + write_deps(fp, "%CONFLICTS%", info->conflicts);
> + write_deps(fp, "%PROVIDES%", info->provides);
>
> fclose(fp);
> fp = NULL;
> --
> 1.7.9.3
>
>
More information about the pacman-dev
mailing list