Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Also split out deleting files
Bryan Drewery committed 11 years ago
commit 98227557d7c8cc4889bed680b16256e7b983c58e
parent 5da7e15
5 files changed +52 -4
modified libpkg/pkg.h.in
@@ -1390,6 +1390,8 @@ typedef enum {
	PKG_EVENT_UPGRADE_FINISHED,
	PKG_EVENT_EXTRACT_BEGIN,
	PKG_EVENT_EXTRACT_FINISHED,
+
	PKG_EVENT_DELETE_FILES_BEGIN,
+
	PKG_EVENT_DELETE_FILES_FINISHED,
	PKG_EVENT_ADD_DEPS_BEGIN,
	PKG_EVENT_ADD_DEPS_FINISHED,
	PKG_EVENT_FETCHING,
@@ -1488,6 +1490,12 @@ struct pkg_event {
		} e_extract_finished;
		struct {
			struct pkg *pkg;
+
		} e_delete_files_begin;
+
		struct {
+
			struct pkg *pkg;
+
		} e_delete_files_finished;
+
		struct {
+
			struct pkg *pkg;
		} e_add_deps_begin;
		struct {
			struct pkg *pkg;
modified libpkg/pkg_delete.c
@@ -163,10 +163,11 @@ pkg_delete_files(struct pkg *pkg, unsigned force)

	nfiles = HASH_COUNT(pkg->files);

-
	pkg_emit_progress_start(NULL);
-
	/* fake to show a 100% progress */
	if (nfiles == 0)
-
		pkg_emit_progress_tick(1, 1);
+
		return (EPKG_OK);
+

+
	pkg_emit_delete_files_begin(pkg);
+
	pkg_emit_progress_start(NULL);

	while (pkg_files(pkg, &file) == EPKG_OK) {
		pkg_emit_progress_tick(cur_file++, nfiles);
@@ -177,6 +178,7 @@ pkg_delete_files(struct pkg *pkg, unsigned force)
	}

	pkg_emit_progress_tick(nfiles, nfiles);
+
	pkg_emit_delete_files_finished(pkg);

	return (EPKG_OK);
}
modified libpkg/pkg_event.c
@@ -612,6 +612,28 @@ pkg_emit_extract_finished(struct pkg *p)
}

void
+
pkg_emit_delete_files_begin(struct pkg *p)
+
{
+
	struct pkg_event ev;
+

+
	ev.type = PKG_EVENT_DELETE_FILES_BEGIN;
+
	ev.e_delete_files_begin.pkg = p;
+

+
	pkg_emit_event(&ev);
+
}
+

+
void
+
pkg_emit_delete_files_finished(struct pkg *p)
+
{
+
	struct pkg_event ev;
+

+
	ev.type = PKG_EVENT_DELETE_FILES_FINISHED;
+
	ev.e_delete_files_finished.pkg = p;
+

+
	pkg_emit_event(&ev);
+
}
+

+
void
pkg_emit_integritycheck_begin(void)
{
	struct pkg_event ev;
modified libpkg/private/event.h
@@ -74,5 +74,7 @@ void pkg_emit_add_deps_begin(struct pkg *p);
void pkg_emit_add_deps_finished(struct pkg *p);
void pkg_emit_extract_begin(struct pkg *p);
void pkg_emit_extract_finished(struct pkg *p);
+
void pkg_emit_delete_files_begin(struct pkg *p);
+
void pkg_emit_delete_files_finished(struct pkg *p);

#endif
modified src/event.c
@@ -675,12 +675,26 @@ event_callback(void *data, struct pkg_event *ev)
		job_status_begin(msg_buf);

		pkg = ev->e_install_begin.pkg;
-
		pkg_sbuf_printf(msg_buf, "Deleting %n-%v", pkg, pkg);
+
		pkg_sbuf_printf(msg_buf, "Deinstalling %n-%v...\n", pkg, pkg);
+
		sbuf_finish(msg_buf);
+
		printf("%s", sbuf_data(msg_buf));
		break;
	case PKG_EVENT_DEINSTALL_FINISHED:
		if (quiet)
			break;
		break;
+
	case PKG_EVENT_DELETE_FILES_BEGIN:
+
		if (quiet)
+
			break;
+
		else {
+
			job_status_begin(msg_buf);
+
			pkg = ev->e_install_begin.pkg;
+
			pkg_sbuf_printf(msg_buf, "Deleting files for %n-%v",
+
			    pkg, pkg);
+
		}
+
		break;
+
	case PKG_EVENT_DELETE_FILES_FINISHED:
+
		break;
	case PKG_EVENT_UPGRADE_BEGIN:
		if (quiet)
			break;