Module Name: src
Committed By: pooka
Date: Fri Feb 4 19:42:13 UTC 2011
Modified Files:
src/bin/dd: Makefile args.c dd.c dd.h
src/distrib/sets/lists/base: mi
src/distrib/sets/lists/comp: mi
Added Files:
src/bin/dd: dd_hostops.c dd_rumpops.c
Log Message:
Remove the rif/rof options and add rump.dd. This makes usage
consistent with other rump clients. Copying between kernels is
done using the host pipe, e.g.:
dd if=foo rof=bar skip=1 seek=1 => dd if=foo skip=1 | rump.dd of=bar seek=1
Also, the pipe idiom extends to copying between different rump
kernels, e.g.:
env RUMP_SERVER=unix://srv1 rump.dd if=thefile \
| env RUMP_SERVER=unix://srv2 rump.dd of=thefile
Pipe approach suggested by yamt (thanks!)
To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/bin/dd/Makefile src/bin/dd/dd.h
cvs rdiff -u -r1.33 -r1.34 src/bin/dd/args.c
cvs rdiff -u -r1.46 -r1.47 src/bin/dd/dd.c
cvs rdiff -u -r0 -r1.1 src/bin/dd/dd_hostops.c src/bin/dd/dd_rumpops.c
cvs rdiff -u -r1.919 -r1.920 src/distrib/sets/lists/base/mi
cvs rdiff -u -r1.1580 -r1.1581 src/distrib/sets/lists/comp/mi
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/bin/dd/Makefile
diff -u src/bin/dd/Makefile:1.14 src/bin/dd/Makefile:1.15
--- src/bin/dd/Makefile:1.14 Mon Nov 22 21:59:09 2010
+++ src/bin/dd/Makefile Fri Feb 4 19:42:12 2011
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.14 2010/11/22 21:59:09 pooka Exp $
+# $NetBSD: Makefile,v 1.15 2011/02/04 19:42:12 pooka Exp $
# @(#)Makefile 8.1 (Berkeley) 5/31/93
-PROG= dd
+RUMPPRG=dd
SRCS= args.c conv.c dd.c misc.c position.c
DPADD+= ${LIBUTIL}
Index: src/bin/dd/dd.h
diff -u src/bin/dd/dd.h:1.14 src/bin/dd/dd.h:1.15
--- src/bin/dd/dd.h:1.14 Mon Dec 6 15:23:29 2010
+++ src/bin/dd/dd.h Fri Feb 4 19:42:12 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: dd.h,v 1.14 2010/12/06 15:23:29 pooka Exp $ */
+/* $NetBSD: dd.h,v 1.15 2011/02/04 19:42:12 pooka Exp $ */
/*-
* Copyright (c) 1991, 1993, 1994
@@ -38,6 +38,8 @@
#include <sys/stat.h>
struct ddfops {
+ int (*op_init)(void);
+
int (*op_open)(const char *, int, ...);
int (*op_close)(int);
@@ -119,6 +121,3 @@
#define C_UNBLOCK 0x80000
#define C_OSYNC 0x100000
#define C_SPARSE 0x200000
-#define C_RIF 0x400000
-#define C_ROF 0x800000
-#define C_RUMP 0x1000000
Index: src/bin/dd/args.c
diff -u src/bin/dd/args.c:1.33 src/bin/dd/args.c:1.34
--- src/bin/dd/args.c:1.33 Thu Jan 13 23:45:13 2011
+++ src/bin/dd/args.c Fri Feb 4 19:42:12 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: args.c,v 1.33 2011/01/13 23:45:13 jym Exp $ */
+/* $NetBSD: args.c,v 1.34 2011/02/04 19:42:12 pooka Exp $ */
/*-
* Copyright (c) 1991, 1993, 1994
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)args.c 8.3 (Berkeley) 4/2/94";
#else
-__RCSID("$NetBSD: args.c,v 1.33 2011/01/13 23:45:13 jym Exp $");
+__RCSID("$NetBSD: args.c,v 1.34 2011/02/04 19:42:12 pooka Exp $");
#endif
#endif /* not lint */
@@ -55,12 +55,6 @@
#include "dd.h"
#include "extern.h"
-#if !defined(SMALL) && defined(__NetBSD__)
-#define _HAVE_RUMPOPS
-
-#include <rump/rumpclient.h>
-#endif
-
static int c_arg(const void *, const void *);
#ifndef NO_CONV
static int c_conv(const void *, const void *);
@@ -78,11 +72,6 @@
static void f_skip(char *);
static void f_progress(char *);
-#ifdef _HAVE_RUMPOPS
-static void f_rif(char *);
-static void f_rof(char *);
-#endif
-
static const struct arg {
const char *name;
void (*f)(char *);
@@ -96,16 +85,12 @@
{ "count", f_count, C_COUNT, C_COUNT },
{ "files", f_files, C_FILES, C_FILES },
{ "ibs", f_ibs, C_IBS, C_BS|C_IBS },
- { "if", f_if, C_IF, C_IF|C_RIF },
+ { "if", f_if, C_IF, C_IF },
{ "iseek", f_skip, C_SKIP, C_SKIP },
{ "obs", f_obs, C_OBS, C_BS|C_OBS },
- { "of", f_of, C_OF, C_OF|C_ROF },
+ { "of", f_of, C_OF, C_OF },
{ "oseek", f_seek, C_SEEK, C_SEEK },
{ "progress", f_progress, 0, 0 },
-#ifdef _HAVE_RUMPOPS
- { "rif", f_rif, C_RIF|C_RUMP, C_RIF|C_IF },
- { "rof", f_rof, C_ROF|C_RUMP, C_ROF|C_OF },
-#endif
{ "seek", f_seek, C_SEEK, C_SEEK },
{ "skip", f_skip, C_SKIP, C_SKIP },
};
@@ -207,12 +192,6 @@
* if (in.offset > INT_MAX/in.dbsz || out.offset > INT_MAX/out.dbsz)
* errx(1, "seek offsets cannot be larger than %d", INT_MAX);
*/
-
-#ifdef _HAVE_RUMPOPS
- if (ddflags & C_RUMP)
- if (rumpclient_init() == -1)
- err(1, "rumpclient init failed");
-#endif
}
static int
@@ -285,40 +264,6 @@
out.name = arg;
}
-#ifdef _HAVE_RUMPOPS
-#include <rump/rump.h>
-#include <rump/rump_syscalls.h>
-
-static const struct ddfops ddfops_rump = {
- .op_open = rump_sys_open,
- .op_close = rump_sys_close,
- .op_fcntl = rump_sys_fcntl,
- .op_ioctl = rump_sys_ioctl,
- .op_fstat = rump_sys_fstat,
- .op_fsync = rump_sys_fsync,
- .op_ftruncate = rump_sys_ftruncate,
- .op_lseek = rump_sys_lseek,
- .op_read = rump_sys_read,
- .op_write = rump_sys_write,
-};
-
-static void
-f_rif(char *arg)
-{
-
- in.name = arg;
- in.ops = &ddfops_rump;
-}
-
-static void
-f_rof(char *arg)
-{
-
- out.name = arg;
- out.ops = &ddfops_rump;
-}
-#endif
-
static void
f_seek(char *arg)
{
Index: src/bin/dd/dd.c
diff -u src/bin/dd/dd.c:1.46 src/bin/dd/dd.c:1.47
--- src/bin/dd/dd.c:1.46 Thu Dec 23 21:55:40 2010
+++ src/bin/dd/dd.c Fri Feb 4 19:42:12 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: dd.c,v 1.46 2010/12/23 21:55:40 riz Exp $ */
+/* $NetBSD: dd.c,v 1.47 2011/02/04 19:42:12 pooka Exp $ */
/*-
* Copyright (c) 1991, 1993, 1994
@@ -43,7 +43,7 @@
#if 0
static char sccsid[] = "@(#)dd.c 8.5 (Berkeley) 4/2/94";
#else
-__RCSID("$NetBSD: dd.c,v 1.46 2010/12/23 21:55:40 riz Exp $");
+__RCSID("$NetBSD: dd.c,v 1.47 2011/02/04 19:42:12 pooka Exp $");
#endif
#endif /* not lint */
@@ -87,7 +87,10 @@
const u_char *ctab; /* conversion table */
sigset_t infoset; /* a set blocking SIGINFO */
-static const struct ddfops ddfops_host = {
+/*
+ * Ops for stdin/stdout and crunch'd dd. These are always host ops.
+ */
+static const struct ddfops ddfops_stdfd = {
.op_open = open,
.op_close = close,
.op_fcntl = fcntl,
@@ -99,6 +102,7 @@
.op_read = read,
.op_write = write,
};
+extern const struct ddfops ddfops_prog;
int
main(int argc, char *argv[])
@@ -119,6 +123,10 @@
argv += (optind - 1);
jcl(argv);
+#ifndef CRUNCHOPS
+ if (ddfops_prog.op_init && ddfops_prog.op_init() == -1)
+ err(1, "prog init");
+#endif
setup();
(void)signal(SIGINFO, summaryx);
@@ -139,15 +147,18 @@
static void
setup(void)
{
+#ifdef CRUNCHOPS
+ const struct ddfops *prog_ops = &ddfops_stdfd;
+#else
+ const struct ddfops *prog_ops = &ddfops_prog;
+#endif
- if (in.ops == NULL)
- in.ops = &ddfops_host;
- if (out.ops == NULL)
- out.ops = &ddfops_host;
if (in.name == NULL) {
in.name = "stdin";
in.fd = STDIN_FILENO;
+ in.ops = &ddfops_stdfd;
} else {
+ in.ops = prog_ops;
in.fd = ddop_open(in, in.name, O_RDONLY, 0);
if (in.fd < 0)
err(EXIT_FAILURE, "%s", in.name);
@@ -168,7 +179,9 @@
/* No way to check for read access here. */
out.fd = STDOUT_FILENO;
out.name = "stdout";
+ out.ops = &ddfops_stdfd;
} else {
+ out.ops = prog_ops;
#define OFLAGS \
(O_CREAT | (ddflags & (C_SEEK | C_NOTRUNC) ? 0 : O_TRUNC))
out.fd = ddop_open(out, out.name, O_RDWR | OFLAGS, DEFFILEMODE);
Index: src/distrib/sets/lists/base/mi
diff -u src/distrib/sets/lists/base/mi:1.919 src/distrib/sets/lists/base/mi:1.920
--- src/distrib/sets/lists/base/mi:1.919 Fri Jan 28 18:52:48 2011
+++ src/distrib/sets/lists/base/mi Fri Feb 4 19:42:12 2011
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.919 2011/01/28 18:52:48 pooka Exp $
+# $NetBSD: mi,v 1.920 2011/02/04 19:42:12 pooka Exp $
#
# Note: Don't delete entries from here - mark them as "obsolete" instead,
# unless otherwise stated below.
@@ -24,6 +24,7 @@
./bin/chgrp base-util-root
./bin/date base-util-root
./bin/dd base-util-root
+./bin/rump.dd base-util-root
./bin/df base-util-root
./bin/domainname base-nis-root
./bin/echo base-util-root
Index: src/distrib/sets/lists/comp/mi
diff -u src/distrib/sets/lists/comp/mi:1.1580 src/distrib/sets/lists/comp/mi:1.1581
--- src/distrib/sets/lists/comp/mi:1.1580 Fri Feb 4 07:32:37 2011
+++ src/distrib/sets/lists/comp/mi Fri Feb 4 19:42:13 2011
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1580 2011/02/04 07:32:37 yamt Exp $
+# $NetBSD: mi,v 1.1581 2011/02/04 19:42:13 pooka Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -2934,6 +2934,7 @@
./usr/libdata/debug/bin/csh.debug comp-util-debug debug
./usr/libdata/debug/bin/date.debug comp-util-debug debug
./usr/libdata/debug/bin/dd.debug comp-util-debug debug
+./usr/libdata/debug/bin/rump.dd.debug comp-util-debug debug
./usr/libdata/debug/bin/df.debug comp-util-debug debug
./usr/libdata/debug/bin/domainname.debug comp-nis-debug debug
./usr/libdata/debug/bin/echo.debug comp-util-debug debug
Added files:
Index: src/bin/dd/dd_hostops.c
diff -u /dev/null src/bin/dd/dd_hostops.c:1.1
--- /dev/null Fri Feb 4 19:42:14 2011
+++ src/bin/dd/dd_hostops.c Fri Feb 4 19:42:12 2011
@@ -0,0 +1,53 @@
+/* $NetBSD: dd_hostops.c,v 1.1 2011/02/04 19:42:12 pooka Exp $ */
+
+/*-
+ * Copyright (c) 2010 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+__RCSID("$NetBSD: dd_hostops.c,v 1.1 2011/02/04 19:42:12 pooka Exp $");
+#endif /* !lint */
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "dd.h"
+
+const struct ddfops ddfops_prog = {
+ .op_open = open,
+ .op_close = close,
+ .op_fcntl = fcntl,
+ .op_ioctl = ioctl,
+ .op_fstat = fstat,
+ .op_fsync = fsync,
+ .op_ftruncate = ftruncate,
+ .op_lseek = lseek,
+ .op_read = read,
+ .op_write = write,
+};
Index: src/bin/dd/dd_rumpops.c
diff -u /dev/null src/bin/dd/dd_rumpops.c:1.1
--- /dev/null Fri Feb 4 19:42:14 2011
+++ src/bin/dd/dd_rumpops.c Fri Feb 4 19:42:12 2011
@@ -0,0 +1,52 @@
+/* $NetBSD: dd_rumpops.c,v 1.1 2011/02/04 19:42:12 pooka Exp $ */
+
+/*-
+ * Copyright (c) 2010 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+__RCSID("$NetBSD: dd_rumpops.c,v 1.1 2011/02/04 19:42:12 pooka Exp $");
+#endif /* !lint */
+
+#include <rump/rump_syscalls.h>
+#include <rump/rumpclient.h>
+
+#include "dd.h"
+
+const struct ddfops ddfops_prog = {
+ .op_init = rumpclient_init,
+
+ .op_open = rump_sys_open,
+ .op_close = rump_sys_close,
+ .op_fcntl = rump_sys_fcntl,
+ .op_ioctl = rump_sys_ioctl,
+ .op_fstat = rump_sys_fstat,
+ .op_fsync = rump_sys_fsync,
+ .op_ftruncate = rump_sys_ftruncate,
+ .op_lseek = rump_sys_lseek,
+ .op_read = rump_sys_read,
+ .op_write = rump_sys_write,
+};