PERFORCE change 79895 for review
soc-cjones
soc-cjones at FreeBSD.org
Sun Jul 10 06:36:57 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=79895
Change 79895 by soc-cjones at soc-cjones_ides on 2005/07/10 06:36:22
Fully fleshed-out userland for gvinum 'move'
Affected files ...
.. //depot/projects/soc2005/gvinum/src/sbin/gvinum/gvinum.c#3 edit
Differences ...
==== //depot/projects/soc2005/gvinum/src/sbin/gvinum/gvinum.c#3 (text+ko) ====
@@ -604,10 +604,71 @@
return;
}
+/* Note that move is currently of form '[-r] target object [...]' */
void
gvinum_move(int argc, char **argv)
{
- /* NOP */
+ struct gctl_req *req;
+ int flags = 0, i, j;
+ const char *errstr;
+ char buf[20], *cmd;
+
+ if (argc) {
+ optreset = 1;
+ optind = 1;
+ cmd = argv[0];
+ while ((j = getopt(argc, argv, "r")) != -1) {
+ switch (j) {
+ case 'r':
+ flags |= GV_FLAG_R;
+ break;
+ case '?':
+ default:
+ return;
+ }
+ }
+ argc -= optind;
+ argv += optind;
+ }
+
+ req = gctl_get_handle();
+ gctl_ro_param(req, "class", -1, "VINUM");
+ gctl_ro_param(req, "verb", -1, "move");
+ gctl_ro_param(req, "cmd", -1, cmd);
+ gctl_ro_param(req, "argc", sizeof(int), &argc);
+ gctl_ro_param(req, "flags", sizeof(int), &flags);
+ if (argc) {
+ for (i = 0; i < argc; i++) {
+ snprintf(buf, sizeof(buf), "argv%d", i);
+ gctl_ro_param(req, buf, -1, argv[i]);
+ }
+ } else {
+ warnx("no destination or object(s) to move specified");
+ gctl_free(req);
+ return;
+ }
+
+ /* We incremented argv such that the 0th argument is
+ the destination, and arguments 1..$ are the objects. */
+ gctl_ro_param(req, "destination", -1, argv[0]);
+ if (argc > 1) {
+ for (i = 1; i < argc; i++) {
+ snprintf(buf, sizeof(buf), "object%d", i - 1);
+ gctl_ro_param(req, buf, -1, argv[i]);
+ }
+ } else { /* There isn't at least one object specified! */
+ warnx("no object(s) to move specified");
+ gctl_free(req);
+ return;
+ }
+ errstr = gctl_issue(req);
+ if (errstr != NULL) {
+ warnx("can't move object(s): %s", errstr);
+ gctl_free(req);
+ return;
+ }
+ gctl_free(req);
+ return;
}
void
More information about the p4-projects
mailing list