1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-08-13 17:03:46 -04:00

cleaned up db_write error cases handling

This commit is contained in:
Aurelien Foret 2006-01-27 19:12:15 +00:00
parent 299d708b0d
commit c3ffe4367a

View File

@ -462,6 +462,7 @@ int db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq)
char path[PATH_MAX]; char path[PATH_MAX];
mode_t oldmask; mode_t oldmask;
PMList *lp = NULL; PMList *lp = NULL;
int retval = 0;
if(db == NULL || info == NULL) { if(db == NULL || info == NULL) {
return(-1); return(-1);
@ -478,7 +479,8 @@ int db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq)
snprintf(path, PATH_MAX, "%s/desc", topdir); snprintf(path, PATH_MAX, "%s/desc", topdir);
if((fp = fopen(path, "w")) == NULL) { if((fp = fopen(path, "w")) == NULL) {
_alpm_log(PM_LOG_ERROR, "db_write: could not open file %s/desc", db->treename); _alpm_log(PM_LOG_ERROR, "db_write: could not open file %s/desc", db->treename);
goto error; retval = 1;
goto cleanup;
} }
fputs("%NAME%\n", fp); fputs("%NAME%\n", fp);
fprintf(fp, "%s\n\n", info->name); fprintf(fp, "%s\n\n", info->name);
@ -511,6 +513,7 @@ int db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq)
fputs("%REASON%\n", fp); fputs("%REASON%\n", fp);
fprintf(fp, "%d\n\n", info->reason); fprintf(fp, "%d\n\n", info->reason);
fclose(fp); fclose(fp);
fp = NULL;
} }
/* FILES */ /* FILES */
@ -518,7 +521,8 @@ int db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq)
snprintf(path, PATH_MAX, "%s/files", topdir); snprintf(path, PATH_MAX, "%s/files", topdir);
if((fp = fopen(path, "w")) == NULL) { if((fp = fopen(path, "w")) == NULL) {
_alpm_log(PM_LOG_ERROR, "db_write: could not open file %s/files", db->treename); _alpm_log(PM_LOG_ERROR, "db_write: could not open file %s/files", db->treename);
goto error; retval = -1;
goto cleanup;
} }
fputs("%FILES%\n", fp); fputs("%FILES%\n", fp);
for(lp = info->files; lp; lp = lp->next) { for(lp = info->files; lp; lp = lp->next) {
@ -531,6 +535,7 @@ int db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq)
} }
fprintf(fp, "\n"); fprintf(fp, "\n");
fclose(fp); fclose(fp);
fp = NULL;
} }
/* DEPENDS */ /* DEPENDS */
@ -538,7 +543,8 @@ int db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq)
snprintf(path, PATH_MAX, "%s/depends", topdir); snprintf(path, PATH_MAX, "%s/depends", topdir);
if((fp = fopen(path, "w")) == NULL) { if((fp = fopen(path, "w")) == NULL) {
_alpm_log(PM_LOG_ERROR, "db_write: could not open file %s/depends", db->treename); _alpm_log(PM_LOG_ERROR, "db_write: could not open file %s/depends", db->treename);
goto error; retval = -1;
goto cleanup;
} }
fputs("%DEPENDS%\n", fp); fputs("%DEPENDS%\n", fp);
for(lp = info->depends; lp; lp = lp->next) { for(lp = info->depends; lp; lp = lp->next) {
@ -561,18 +567,20 @@ int db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq)
} }
fprintf(fp, "\n"); fprintf(fp, "\n");
fclose(fp); fclose(fp);
fp = NULL;
} }
/* INSTALL */ /* INSTALL */
/* nothing needed here (script is automatically extracted) */ /* nothing needed here (script is automatically extracted) */
cleanup:
umask(oldmask); umask(oldmask);
return(0); if(fp) {
fclose(fp);
}
error: return(retval);
umask(oldmask);
return(-1);
} }
int db_remove(pmdb_t *db, pmpkg_t *info) int db_remove(pmdb_t *db, pmpkg_t *info)