diff options
Diffstat (limited to 'src/db.c')
-rw-r--r-- | src/db.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -225,6 +225,14 @@ pkginfo_t* db_read(pacdb_t *db, struct dirent *ent, unsigned int inforeq) return(NULL); } trim(info->packager); + } else if(!strcmp(line, "%REASON%")) { + char tmp[32]; + if(fgets(tmp, sizeof(tmp), fp) == NULL) { + FREEPKG(info); + return(NULL); + } + trim(tmp); + info->reason = (unsigned short)atoi(tmp); } else if(!strcmp(line, "%SIZE%")) { char tmp[32]; if(fgets(tmp, sizeof(tmp), fp) == NULL) { @@ -232,6 +240,19 @@ pkginfo_t* db_read(pacdb_t *db, struct dirent *ent, unsigned int inforeq) return(NULL); } trim(tmp); + info->size = (unsigned long)atol(tmp); + } else if(!strcmp(line, "%CSIZE%")) { + /* NOTE: the CSIZE and SIZE fields both share the "size" field + * in the pkginfo_t struct. This can be done b/c CSIZE + * is currently only used in sync databases, and SIZE is + * only used in local databases. + */ + char tmp[32]; + if(fgets(tmp, sizeof(tmp), fp) == NULL) { + FREEPKG(info); + return(NULL); + } + trim(tmp); info->size = atol(tmp); } else if(!strcmp(line, "%REPLACES%")) { /* the REPLACES tag is special -- it only appears in sync repositories, @@ -387,6 +408,8 @@ int db_write(pacdb_t *db, pkginfo_t *info, unsigned int inforeq) 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); } |