Beispiel #1
0
/* 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;
}
Beispiel #2
0
/* 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;
}