[Midnightbsd-cvs] src [7035] trunk/usr.sbin/mport/mport.c: add lock and unlock commands

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Jun 14 16:43:25 EDT 2015


Revision: 7035
          http://svnweb.midnightbsd.org/src/?rev=7035
Author:   laffer1
Date:     2015-06-14 16:43:25 -0400 (Sun, 14 Jun 2015)
Log Message:
-----------
add lock and unlock commands

Modified Paths:
--------------
    trunk/usr.sbin/mport/mport.c

Modified: trunk/usr.sbin/mport/mport.c
===================================================================
--- trunk/usr.sbin/mport/mport.c	2015-06-14 20:43:09 UTC (rev 7034)
+++ trunk/usr.sbin/mport/mport.c	2015-06-14 20:43:25 UTC (rev 7035)
@@ -55,6 +55,8 @@
 static int indexCheck(mportInstance *, mportPackageMeta *);
 static int updateDown(mportInstance *, mportPackageMeta *);
 static int verify(mportInstance *);
+static int lock(mportInstance *, const char *);
+static int unlock(mportInstance *, const char *);
 
 int 
 main(int argc, char *argv[]) {
@@ -118,6 +120,18 @@
 		resultCode = execl(buf, "mport.list", flag, (char *)0);
                 free(flag);
                 free(buf);
+	} else if (!strcmp(argv[1], "lock")) {
+		if (argc > 2) {
+			lock(mport, argv[2]);
+		} else {
+			usage();
+		}
+	} else if (!strcmp(argv[1], "unlock")) {
+		if (argc > 2) {
+			unlock(mport, argv[2]);
+		} else {
+			usage();
+		}
         } else if (!strcmp(argv[1], "list")) {
 		asprintf(&buf, "%s%s", MPORT_TOOLS_PATH, "mport.list");
 		if (argc > 2) {
@@ -179,8 +193,10 @@
 		"       mport info [package name]\n"
 		"       mport install [package name]\n"
 		"       mport list [updates]\n"
+		"       mport lock [package name]\n"
 		"       mport locks\n"
 		"       mport search [query ...]\n"
+		"       mport unlock [package name]\n"
 		"       mport update [package name]\n"
 		"       mport upgrade\n"
 		"       mport verify\n"
@@ -241,6 +257,54 @@
 }
 
 int
+lock(mportInstance *mport, const char *packageName) {
+	mportPackageMeta **packs;
+
+	if (packageName == NULL) {
+                warnx("%s", "Specify package name");
+                return (1);
+        }
+
+	if (mport_pkgmeta_search_master(mport, &packs, "pkg=%Q", packageName) != MPORT_OK) {
+		warnx("%s", mport_err_string());
+		return (1);
+	}
+
+	if (packs == NULL) {
+		warnx("Package name not found, %s", packageName);
+		return (1);
+	} else {
+		mport_lock_lock(mport, (*packs));
+	}
+
+	return (0);
+}
+
+int
+unlock(mportInstance *mport, const char *packageName) {
+        mportPackageMeta **packs;
+
+	if (packageName == NULL) {
+		warnx("%s", "Specify package name");
+		return (1);
+	}
+
+	if (mport_pkgmeta_search_master(mport, &packs, "pkg=%Q", packageName) != MPORT_OK) {
+		warnx("%s", mport_err_string());
+		return (1);
+	}
+
+	if (packs == NULL) {
+		warnx("Package name not found, %s", packageName);
+		return (1);
+	} else {
+		mport_lock_unlock(mport, (*packs));
+	}
+
+	return (0);
+}
+
+int
 info(mportInstance *mport, const char *packageName) {
 	mportIndexEntry **indexEntry;
 	mportPackageMeta **packs;
@@ -247,6 +311,7 @@
 	char *status, *origin;
 	char *os_release;
 	char *cpe;
+	int locked;
 
 	if (packageName == NULL) {
 		warnx("%s", "Specify package name");
@@ -274,9 +339,10 @@
 		origin = (*packs)->origin;
 		os_release = (*packs)->os_release;
 		cpe = (*packs)->cpe;
+		locked = (*packs)->locked;
 	}
 
-	printf("%s\nlatest: %s\ninstalled: %s\nlicense: %s\norigin: %s\nos: %s\n\n%s\ncpe: %s\n",
+	printf("%s\nlatest: %s\ninstalled: %s\nlicense: %s\norigin: %s\nos: %s\n\n%s\ncpe: %s\nlocked: %s\n",
 		(*indexEntry)->pkgname,
 		(*indexEntry)->version,
 		status,
@@ -284,7 +350,8 @@
 		origin,
 		os_release,
 		(*indexEntry)->comment,
-		cpe);
+		cpe,
+		locked ? "yes" : "no");
 
 	if (packs == NULL) {
 		free(status);



More information about the Midnightbsd-cvs mailing list