Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Implement automatically reexcuting the initial command if a new pkg version has been detected and this upgrade has been performed
Baptiste Daroussin committed 12 years ago
commit b6b517cb64cb50155c90fd69350aa88c00b7f714
parent 50239e3
5 files changed +16 -2
modified pkg/event.c
@@ -284,9 +284,9 @@ event_callback(void *data, struct pkg_event *ev)
		fprintf(stderr, "Local package database nonexistent!\n");
		break;
	case PKG_EVENT_NEWPKGVERSION:
+
		newpkgversion = true;
		printf("New version of pkg detected; it needs to be "
-
		    "installed first.\nAfter this upgrade it is recommended "
-
		    "that you do a full upgrade using: 'pkg upgrade'\n\n");
+
		    "installed first.\n");
		break;
	case PKG_EVENT_FILE_MISMATCH:
		pkg = ev->e_file_mismatch.pkg;
modified pkg/install.c
@@ -201,5 +201,8 @@ cleanup:
	pkg_jobs_free(jobs);
	pkgdb_close(db);

+
	if (!yes && newpkgversion)
+
		newpkgversion = false;
+

	return (retcode);
}
modified pkg/main.c
@@ -57,6 +57,8 @@ static void usage(const char *);
static void usage_help(void);
static int exec_help(int, char **);
bool quiet = false;
+
static char **cmdargv;
+
bool newpkgversion = false;

static struct commands {
	const char * const name;
@@ -517,6 +519,8 @@ main(int argc, char **argv)
	if (argc < 2)
		usage(NULL);

+
	cmdargv = argv;
+

#ifndef NO_LIBJAIL
	while ((ch = getopt(argc, argv, "dj:c:C:lNvq")) != -1) {
#else
@@ -706,6 +710,9 @@ main(int argc, char **argv)
	if (alias != NULL)
		argv_free(&newargc, &newargv);

+
	if (ret == EX_OK && newpkgversion)
+
		execvp(getprogname(), cmdargv);
+

	return (ret);
}

modified pkg/pkgcli.h
@@ -31,6 +31,7 @@ extern bool quiet;
extern int nbactions;
int nbactions;
extern int nbdone;
+
extern bool newpkgversion;
int nbdone;

/* pkg add */
modified pkg/upgrade.c
@@ -177,5 +177,8 @@ exec_upgrade(int argc, char **argv)
	pkg_jobs_free(jobs);
	pkgdb_close(db);

+
	if (!yes && newpkgversion)
+
		newpkgversion = false;
+

	return (retcode);
}