Annotation of src/bin/dd/misc.c, Revision 1.7
1.7 ! thorpej 1: /* $NetBSD: misc.c,v 1.6 1998/02/04 06:42:32 enami Exp $ */
1.4 cgd 2:
1.1 glass 3: /*-
1.3 mycroft 4: * Copyright (c) 1991, 1993, 1994
5: * The Regents of the University of California. All rights reserved.
1.1 glass 6: *
7: * This code is derived from software contributed to Berkeley by
8: * Keith Muller of the University of California, San Diego and Lance
9: * Visser of Convex Computer Corporation.
10: *
11: * Redistribution and use in source and binary forms, with or without
12: * modification, are permitted provided that the following conditions
13: * are met:
14: * 1. Redistributions of source code must retain the above copyright
15: * notice, this list of conditions and the following disclaimer.
16: * 2. Redistributions in binary form must reproduce the above copyright
17: * notice, this list of conditions and the following disclaimer in the
18: * documentation and/or other materials provided with the distribution.
19: * 3. All advertising materials mentioning features or use of this software
20: * must display the following acknowledgement:
21: * This product includes software developed by the University of
22: * California, Berkeley and its contributors.
23: * 4. Neither the name of the University nor the names of its contributors
24: * may be used to endorse or promote products derived from this software
25: * without specific prior written permission.
26: *
27: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
28: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
31: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37: * SUCH DAMAGE.
38: */
39:
1.5 christos 40: #include <sys/cdefs.h>
1.1 glass 41: #ifndef lint
1.4 cgd 42: #if 0
43: static char sccsid[] = "@(#)misc.c 8.3 (Berkeley) 4/2/94";
44: #else
1.7 ! thorpej 45: __RCSID("$NetBSD: misc.c,v 1.6 1998/02/04 06:42:32 enami Exp $");
1.4 cgd 46: #endif
1.1 glass 47: #endif /* not lint */
48:
49: #include <sys/types.h>
50:
1.3 mycroft 51: #include <err.h>
1.1 glass 52: #include <stdio.h>
53: #include <stdlib.h>
54: #include <string.h>
1.3 mycroft 55: #include <time.h>
1.1 glass 56: #include <unistd.h>
57:
58: #include "dd.h"
59: #include "extern.h"
60:
61: void
1.3 mycroft 62: summary()
1.1 glass 63: {
64: time_t secs;
65: char buf[100];
66:
67: (void)time(&secs);
68: if ((secs -= st.start) == 0)
69: secs = 1;
70: /* Use snprintf(3) so that we don't reenter stdio(3). */
71: (void)snprintf(buf, sizeof(buf),
1.5 christos 72: "%lu+%lu records in\n%lu+%lu records out\n",
1.1 glass 73: st.in_full, st.in_part, st.out_full, st.out_part);
74: (void)write(STDERR_FILENO, buf, strlen(buf));
75: if (st.swab) {
1.5 christos 76: (void)snprintf(buf, sizeof(buf), "%lu odd length swab %s\n",
1.1 glass 77: st.swab, (st.swab == 1) ? "block" : "blocks");
78: (void)write(STDERR_FILENO, buf, strlen(buf));
79: }
80: if (st.trunc) {
1.5 christos 81: (void)snprintf(buf, sizeof(buf), "%lu truncated %s\n",
1.1 glass 82: st.trunc, (st.trunc == 1) ? "block" : "blocks");
83: (void)write(STDERR_FILENO, buf, strlen(buf));
84: }
85: (void)snprintf(buf, sizeof(buf),
1.6 enami 86: "%qu bytes transferred in %lu secs (%qu bytes/sec)\n",
1.7 ! thorpej 87: (long long) st.bytes, (long) secs, (long long) (st.bytes / secs));
1.1 glass 88: (void)write(STDERR_FILENO, buf, strlen(buf));
89: }
90:
91: /* ARGSUSED */
92: void
1.3 mycroft 93: summaryx(notused)
1.1 glass 94: int notused;
95: {
1.3 mycroft 96:
97: summary();
1.1 glass 98: }
99:
1.3 mycroft 100: /* ARGSUSED */
1.1 glass 101: void
1.3 mycroft 102: terminate(notused)
103: int notused;
1.1 glass 104: {
105:
1.3 mycroft 106: exit(0);
1.1 glass 107: }
CVSweb <webmaster@jp.NetBSD.org>