Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Execute commands provided by plugins if any
Marin Atanasov Nikolov committed 13 years ago
commit 0d2a419fbbca043008ec3d4e6979e5051b744802
parent dbb8aad161dcd7fc01c5c6cd2db61b075301b035
2 files changed +11 -1
modified libpkg/plugins.c
@@ -473,6 +473,7 @@ pkg_plugins_cmd_run(const char *cmd, int argc, char **argv)

	while (pkg_plugins_list(&p) != EPKG_END)
		if ((pkg_plugins_is_loaded(p)) &&
+
		    (pkg_plugins_provides_cmd(p)) &&
		    (strcmp(cmd, pkg_plugins_get(p, PKG_PLUGINS_NAME)) == 0)) {
			cmd_found = true;
			p->exec_cmd(argc, argv);
modified pkg/main.c
@@ -108,6 +108,9 @@ usage(void)
	for (unsigned int i = 0; i < cmd_len; i++)
		fprintf(stderr, "\t%-15s%s\n", cmd[i].name, cmd[i].desc);

+
	if (pkg_init(NULL) != EPKG_OK)
+
		errx(EX_SOFTWARE, "Cannot parse configuration file!");
+
	
	pkg_config_bool(PKG_CONFIG_ENABLE_PLUGINS, &plugins_enabled);

	if (plugins_enabled) {
@@ -332,9 +335,15 @@ main(int argc, char **argv)
	}

	if (command == NULL) {
+
		/* Check if a plugin provides the requested command */
+
		if (plugins_enabled)
+
			ret = pkg_plugins_cmd_run(argv[0], argc, argv);
+
		
		pkg_shutdown();
		pkg_plugins_shutdown();
-
		usage();
+
		if (ret != EPKG_OK)
+
			usage();
+
		
		return (ret); /* Not reached but makes scanbuild happy */
	}