/* remove file's md5sum from database */ retvalue files_removesilent(const char *filekey) { retvalue r; if (rdb_contents != NULL) (void)table_deleterecord(rdb_contents, filekey, true); r = table_deleterecord(rdb_checksums, filekey, true); if (r == RET_NOTHING) { fprintf(stderr, "Unable to forget unknown filekey '%s'.\n", filekey); return RET_ERROR_MISSING; } return r; }
/* Remove a package from the given target. */ retvalue package_remove(struct package *old, struct logger *logger, struct trackingdata *trackingdata) { struct strlist files; retvalue result, r; assert (old->target != NULL && old->target->packages != NULL); if (logger != NULL) { (void)package_getversion(old); } r = old->target->getfilekeys(old->control, &files); if (RET_WAS_ERROR(r)) { return r; } if (trackingdata != NULL) { (void)package_getsource(old); } if (verbose > 0) printf("removing '%s' from '%s'...\n", old->name, old->target->identifier); result = table_deleterecord(old->target->packages, old->name, false); if (RET_IS_OK(result)) { old->target->wasmodified = true; if (trackingdata != NULL && old->source != NULL && old->sourceversion != NULL) { r = trackingdata_remove(trackingdata, old->source, old->sourceversion, &files); RET_UPDATE(result, r); } if (trackingdata == NULL) old->target->staletracking = true; if (logger != NULL) logger_log(logger, old->target, old->name, NULL, old->version, NULL, old->control, NULL, &files, NULL, NULL); r = references_delete(old->target->identifier, &files, NULL); RET_UPDATE(result, r); } strlist_done(&files); return result; }