source: rtems/cpukit/libmisc/shell/dd-misc.c @ 9a77af8

4.104.115
Last change on this file since 9a77af8 was 9a77af8, checked in by Ralf Corsepius <ralf.corsepius@…>, on Mar 26, 2010 at 5:18:43 PM

Add HAVE_CONFIG_H support to let files receive configure defines.

  • Property mode set to 100644
File size: 3.5 KB
Line 
1/*-
2 * Copyright (c) 1991, 1993, 1994
3 *      The Regents of the University of California.  All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Keith Muller of the University of California, San Diego and Lance
7 * Visser of Convex Computer Corporation.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 *    notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in the
16 *    documentation and/or other materials provided with the distribution.
17 * 4. Neither the name of the University nor the names of its contributors
18 *    may be used to endorse or promote products derived from this software
19 *    without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34#ifdef HAVE_CONFIG_H
35#include "config.h"
36#endif
37
38#ifndef lint
39#if 0
40static char sccsid[] = "@(#)misc.c      8.3 (Berkeley) 4/2/94";
41#endif
42#endif /* not lint */
43#if 0
44#include <sys/cdefs.h>
45__FBSDID("$FreeBSD: src/bin/dd/misc.c,v 1.27 2004/04/06 20:06:46 markm Exp $");
46#endif
47
48#include <sys/types.h>
49#include <sys/time.h>
50
51#include <errno.h>
52#include <inttypes.h>
53#include <stdio.h>
54#include <stdlib.h>
55#include <string.h>
56#include <unistd.h>
57
58#include "dd.h"
59#include "extern-dd.h"
60
61void
62summary(rtems_shell_dd_globals* globals)
63{
64        struct timeval tv;
65        double secs;
66        char buf[100];
67
68        (void)gettimeofday(&tv, (struct timezone *)NULL);
69        secs = tv.tv_sec + tv.tv_usec * 1e-6 - st.start;
70        if (secs < 1e-6)
71                secs = 1e-6;
72        /* Use snprintf(3) so that we don't reenter stdio(3). */
73        (void)snprintf(buf, sizeof(buf),
74            "%ju+%ju records in\n%ju+%ju records out\n",
75            st.in_full, st.in_part, st.out_full, st.out_part);
76        (void)write(STDERR_FILENO, buf, strlen(buf));
77        if (st.swab) {
78                (void)snprintf(buf, sizeof(buf), "%ju odd length swab %s\n",
79                     st.swab, (st.swab == 1) ? "block" : "blocks");
80                (void)write(STDERR_FILENO, buf, strlen(buf));
81        }
82        if (st.trunc) {
83                (void)snprintf(buf, sizeof(buf), "%ju truncated %s\n",
84                     st.trunc, (st.trunc == 1) ? "block" : "blocks");
85                (void)write(STDERR_FILENO, buf, strlen(buf));
86        }
87        (void)snprintf(buf, sizeof(buf),
88            "%ju bytes transferred in %.6f secs (%.0f bytes/sec)\n",
89            st.bytes, secs, st.bytes / secs);
90        (void)write(STDERR_FILENO, buf, strlen(buf));
91}
92
93/* ARGSUSED */
94void
95summaryx(rtems_shell_dd_globals* globals, int __unused)
96{
97        int save_errno = errno;
98
99        summary(globals);
100        errno = save_errno;
101}
102
103#if RTEMS_REMOVED
104/* ARGSUSED */
105void
106terminate(int sig)
107{
108
109        summary();
110        _exit(sig == 0 ? 0 : 1);
111}
112#endif
Note: See TracBrowser for help on using the repository browser.