From 3a82992b599b675a2a4f8a555808da1cb5f9272f Mon Sep 17 00:00:00 2001 From: Aurelien Foret Date: Sat, 11 Feb 2006 07:53:36 +0000 Subject: db_write: only write non-empty fields to database --- lib/libalpm/db.c | 134 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 82 insertions(+), 52 deletions(-) diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c index 1eb1ecf1..b1da6b71 100644 --- a/lib/libalpm/db.c +++ b/lib/libalpm/db.c @@ -482,36 +482,54 @@ int db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq) retval = 1; goto cleanup; } - fputs("%NAME%\n", fp); - fprintf(fp, "%s\n\n", info->name); - fputs("%VERSION%\n", fp); - fprintf(fp, "%s\n\n", info->version); - fputs("%DESC%\n", fp); - fprintf(fp, "%s\n\n", info->desc); - fputs("%GROUPS%\n", fp); - for(lp = info->groups; lp; lp = lp->next) { - fprintf(fp, "%s\n", (char *)lp->data); + fprintf(fp, "%%NAME%%\n%s\n\n" + "%%VERSION%%\n%s\n\n", info->name, info->version); + if(info->desc[0]) { + fprintf(fp, "%%DESC%%\n" + "%s\n\n", info->desc); } - fprintf(fp, "\n"); - fputs("%URL%\n", fp); - fprintf(fp, "%s\n\n", info->url); - fputs("%LICENSE%\n", fp); - for(lp = info->license; lp; lp = lp->next) { - fprintf(fp, "%s\n", (char *)lp->data); + if(info->groups) { + fputs("%GROUPS%\n", fp); + for(lp = info->groups; lp; lp = lp->next) { + fprintf(fp, "%s\n", (char *)lp->data); + } + fprintf(fp, "\n"); + } + if(info->url[0]) { + fprintf(fp, "%%URL%%\n" + "%s\n\n", info->url); + } + if(info->license) { + fputs("%LICENSE%\n", fp); + for(lp = info->license; lp; lp = lp->next) { + fprintf(fp, "%s\n", (char *)lp->data); + } + fprintf(fp, "\n"); + } + if(info->arch[0]) { + fprintf(fp, "%%ARCH%%\n" + "%s\n\n", info->arch); + } + if(info->builddate[0]) { + fprintf(fp, "%%BUILDDATE%%\n" + "%s\n\n", info->builddate); + } + if(info->installdate[0]) { + fprintf(fp, "%%INSTALLDATE%%\n" + "%s\n\n", info->installdate); + } + if(info->packager[0]) { + fprintf(fp, "%%PACKAGER%%\n" + "%s\n\n", info->packager); + } + if(info->size) { + fprintf(fp, "%%SIZE%%\n" + "%ld\n\n", info->size); + } + if(info->reason) { + fprintf(fp, "%%REASON%%\n" + "%d\n\n", info->reason); } - fprintf(fp, "\n"); - fputs("%ARCH%\n", fp); - fprintf(fp, "%s\n\n", info->arch); - fputs("%BUILDDATE%\n", fp); - fprintf(fp, "%s\n\n", info->builddate); - fputs("%INSTALLDATE%\n", fp); - fprintf(fp, "%s\n\n", info->installdate); - fputs("%PACKAGER%\n", fp); - fprintf(fp, "%s\n\n", info->packager); - fputs("%SIZE%\n", fp); - fprintf(fp, "%ld\n\n", info->size); - fputs("%REASON%\n", fp); - fprintf(fp, "%d\n\n", info->reason); fclose(fp); fp = NULL; } @@ -524,16 +542,20 @@ int db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq) retval = -1; goto cleanup; } - fputs("%FILES%\n", fp); - for(lp = info->files; lp; lp = lp->next) { - fprintf(fp, "%s\n", (char *)lp->data); + if(info->files) { + fprintf(fp, "%%FILES%%\n"); + for(lp = info->files; lp; lp = lp->next) { + fprintf(fp, "%s\n", (char *)lp->data); + } + fprintf(fp, "\n"); } - fprintf(fp, "\n"); - fputs("%BACKUP%\n", fp); - for(lp = info->backup; lp; lp = lp->next) { - fprintf(fp, "%s\n", (char *)lp->data); + if(info->backup) { + fprintf(fp, "%%BACKUP%%\n"); + for(lp = info->backup; lp; lp = lp->next) { + fprintf(fp, "%s\n", (char *)lp->data); + } + fprintf(fp, "\n"); } - fprintf(fp, "\n"); fclose(fp); fp = NULL; } @@ -546,26 +568,34 @@ int db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq) retval = -1; goto cleanup; } - fputs("%DEPENDS%\n", fp); - for(lp = info->depends; lp; lp = lp->next) { - fprintf(fp, "%s\n", (char *)lp->data); + if(info->depends) { + fputs("%DEPENDS%\n", fp); + for(lp = info->depends; lp; lp = lp->next) { + fprintf(fp, "%s\n", (char *)lp->data); + } + fprintf(fp, "\n"); } - fprintf(fp, "\n"); - fputs("%REQUIREDBY%\n", fp); - for(lp = info->requiredby; lp; lp = lp->next) { - fprintf(fp, "%s\n", (char *)lp->data); + if(info->requiredby) { + fputs("%REQUIREDBY%\n", fp); + for(lp = info->requiredby; lp; lp = lp->next) { + fprintf(fp, "%s\n", (char *)lp->data); + } + fprintf(fp, "\n"); } - fprintf(fp, "\n"); - fputs("%CONFLICTS%\n", fp); - for(lp = info->conflicts; lp; lp = lp->next) { - fprintf(fp, "%s\n", (char *)lp->data); + if(info->conflicts) { + fputs("%CONFLICTS%\n", fp); + for(lp = info->conflicts; lp; lp = lp->next) { + fprintf(fp, "%s\n", (char *)lp->data); + } + fprintf(fp, "\n"); } - fprintf(fp, "\n"); - fputs("%PROVIDES%\n", fp); - for(lp = info->provides; lp; lp = lp->next) { - fprintf(fp, "%s\n", (char *)lp->data); + if(info->provides) { + fputs("%PROVIDES%\n", fp); + for(lp = info->provides; lp; lp = lp->next) { + fprintf(fp, "%s\n", (char *)lp->data); + } + fprintf(fp, "\n"); } - fprintf(fp, "\n"); fclose(fp); fp = NULL; } -- cgit v1.2.3-70-g09d2