[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