svn commit: r252776 - in stable/9: . sbin/hastctl

Dmitry Morozovsky marck at FreeBSD.org
Fri Jul 5 08:16:41 UTC 2013


Author: marck (doc committer)
Date: Fri Jul  5 08:16:40 2013
New Revision: 252776
URL: http://svnweb.freebsd.org/changeset/base/252776

Log:
  Finish MFC of r248291,249741:
  
  Change 'status' command to produce one-line easy-parseable output.
  
  Approved by:	trociny

Modified:
  stable/9/UPDATING
  stable/9/sbin/hastctl/hastctl.8
  stable/9/sbin/hastctl/hastctl.c
Directory Properties:
  stable/9/sbin/hastctl/   (props changed)

Modified: stable/9/UPDATING
==============================================================================
--- stable/9/UPDATING	Fri Jul  5 06:52:07 2013	(r252775)
+++ stable/9/UPDATING	Fri Jul  5 08:16:40 2013	(r252776)
@@ -11,6 +11,10 @@ handbook:
 Items affecting the ports and packages system can be found in
 /usr/ports/UPDATING.  Please read that file before running portupgrade.
 
+20130705:
+	hastctl(8)'s `status' command output changed to terse one-liner format.
+	Scripts using this should switch to `list' command or be rewritten.
+
 20130618:
         Fix a bug that allowed a tracing process (e.g. gdb) to write
         to a memory-mapped file in the traced process's address space

Modified: stable/9/sbin/hastctl/hastctl.8
==============================================================================
--- stable/9/sbin/hastctl/hastctl.8	Fri Jul  5 06:52:07 2013	(r252775)
+++ stable/9/sbin/hastctl/hastctl.8	Fri Jul  5 08:16:40 2013	(r252776)
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 24, 2013
+.Dd July 5, 2013
 .Dt HASTCTL 8
 .Os
 .Sh NAME
@@ -145,18 +145,10 @@ GEOM provider
 will not be created on secondary node.
 .El
 .It Cm list
-.It Cm status
 Present verbose status of the configured resources.
-For now, list and status commands are equivalent.
-In the near future the output of 
-.Nm
-status command will change to more terse format.
-If you use `
-.Nm
-status' for parsing in your scripts, switch to `
-.Nm
-list'.
-
+.It Cm status
+Present terse (and more easy machine-parseable) status of the configured
+resources.
 .It Cm dump
 Dump metadata stored on local component for the configured resources.
 .El

Modified: stable/9/sbin/hastctl/hastctl.c
==============================================================================
--- stable/9/sbin/hastctl/hastctl.c	Fri Jul  5 06:52:07 2013	(r252775)
+++ stable/9/sbin/hastctl/hastctl.c	Fri Jul  5 08:16:40 2013	(r252776)
@@ -291,7 +291,7 @@ control_set_role(struct nv *nv, const ch
 }
 
 static int
-control_status(struct nv *nv)
+control_list(struct nv *nv)
 {
 	unsigned int ii;
 	const char *str;
@@ -355,6 +355,43 @@ control_status(struct nv *nv)
 	return (ret);
 }
 
+static int
+control_status(struct nv *nv)
+{
+	unsigned int ii;
+	const char *str;
+	int error, hprinted, ret;
+
+	hprinted = 0;
+	ret = 0;
+
+	for (ii = 0; ; ii++) {
+		str = nv_get_string(nv, "resource%u", ii);
+		if (str == NULL)
+			break;
+		if (!hprinted) {
+			printf("Name\tStatus\t Role\t\tComponents\n");
+			hprinted = 1;
+		}
+		printf("%s\t", str);
+		error = nv_get_int16(nv, "error%u", ii);
+		if (error != 0) {
+			if (ret == 0)
+				ret = error;
+			printf("ERR%d\n", error);
+			continue;
+		}
+		str = nv_get_string(nv, "status%u", ii);
+		printf("%-9s", (str != NULL) ? str : "-");
+		printf("%-15s", nv_get_string(nv, "role%u", ii));
+		printf("%s\t",
+		    nv_get_string(nv, "localpath%u", ii));
+		printf("%s\n",
+		    nv_get_string(nv, "remoteaddr%u", ii));
+	}
+	return (ret);
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -523,6 +560,8 @@ main(int argc, char *argv[])
 		error = control_set_role(nv, argv[0]);
 		break;
 	case CMD_LIST:
+		error = control_list(nv);
+		break;
 	case CMD_STATUS:
 		error = control_status(nv);
 		break;


More information about the svn-src-all mailing list