Commit Graph

38 Commits

Author SHA1 Message Date
christos 37a296c0b9 PR/48057: psi: skip and msgfmt cannot be used together. Looks like a pasto;
fixed.
2013-07-17 12:55:48 +00:00
jym 331bd1b067 As suggested by Enami, rework the msgfmt logic a bit:
- error out when an unknown specifier is used. Do this in f_msgfmt(),
before dd(1) starts operation.
- allow buffer_write() to flush the internal buffer even when NULL is
passed as parameter.

Some whitespace fixes too.
2011-11-07 22:24:23 +00:00
jym 234ccf064a Add a new command to dd(1): msgfmt. The command modifies the
output of the information summary returned by dd(1). This can be used
to specify messages in a more usable (or parseable) format like
human-readable values.

My intent is to re-use this for building image files and quick I/O
benchmarking.

Reviewed by tsutsui@ on tech-userlevel. See also
http://mail-index.netbsd.org/tech-userlevel/2010/12/03/msg004179.html

Some examples:

 $ dd if=/dev/zero of=/dev/null bs=1m count=1 msgfmt=human
1+0 records in
1+0 records out
1048576 bytes (1,0 MB) transferred in 0.001 secs (1048576000 bytes/sec - 1,0 GB/sec)

 $ dd if=/dev/zero of=/dev/null count=1 msgfmt='
 > <speed>%E</speed>
 > <time>%s</time>
 > <bytes>%b</bytes>
 > '
<speed>500 KB/sec</speed>
<time>0.001</time>
<bytes>512</bytes>
2011-11-06 21:22:23 +00:00
joerg 6b5273200c Use __dead for the small build too 2011-09-16 16:06:23 +00:00
pooka 37c4e1235f 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!)
2011-02-04 19:42:12 +00:00
jym d4045078ec No need to cast with bsearch(), it returns a void *. Use __arraycount(). 2011-01-13 23:45:13 +00:00
enami a46391d703 Add iseek and oseek option as aliases for skip and seek respectively.
These options exist in dd of solaris or svr3.  From FreeBSD.
2010-12-22 09:42:53 +00:00
enami db65e26847 Copy argument before modifying it so that ps shows entire argument.
From OpenBSD via FreeBSD.
2010-12-22 09:39:06 +00:00
pooka 49242e416d Make compile on non-NetBSD. 2010-12-14 19:03:21 +00:00
enami 8701b1fd0e Wrap long line. 2010-12-09 10:24:56 +00:00
jym 44e64860fc Hmm, for 'rof', I believe that C_ROF|C_OF is invalid rather than
C_ROF|C_ROF.

Hi pooka :)
2010-12-05 23:35:59 +00:00
pooka 6b03da8b7e Add two new operands: "rif" and "rof". They operate exactly like
"if" and "of" with the exception that the communicate with a rump
kernel instead of the host kernel.

For example, to write stdout to /tmp/file.txt in a rump kernel namespace:
	dd rof=/tmp/file.txt

copy /file1 to /file2 inside a rump kernel:
	dd rif=/file1 rof=/file2

copy a snippet from /dev/rmd0d on the rump kernel to the host fs:
	dd rif=/dev/rmd0d of=save seek=1000 count=3

Eat that, usermode OS.

(I'll document the operands one I have some manpage to refer to
for rump client use).
2010-11-22 21:04:27 +00:00
apb b7d86f5e4c In "dd progress=N", let the value of N control how often
to print a "." to stderr.  Previously, any non-zero
value behaved like "progress=1".

PR 24300

Approved by christos
2006-01-09 10:17:05 +00:00
dbj 6b4933739d add support for conv=sparse
inspired by freebsd, although this patch attempts
to avoid some potential bugs in their implementation.
2004-01-17 20:48:57 +00:00
dbj cae90fa713 Add C_ASCII and C_EBCDIC to list of options which unset C_BS semantics.
Without this fix, the bs option would cause any of the ascii<->ebcdic
conv options to be ignored.
2004-01-17 05:42:50 +00:00
agc b5b2954259 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22249, verified by myself.
2003-08-07 09:05:01 +00:00
jschauma 458ed23412 As discusses a little while back on tech-userlevel:
If stdout is a tty, use vis(3) to print any filenames to prevent garbage
from being printed if the filename contains control- or other non-printable
characters.

While here, sprinkle some EXIT_FAILURE and NOTREACHED where appropriate.
2003-08-04 22:31:21 +00:00
lukem 550a64a8e9 convert to using strsuftoll(3) from libc 2002-11-29 13:11:10 +00:00
enami cd5b60066b a bit more cosmetic changes. 2001-11-26 00:56:33 +00:00
lukem b6ce735c04 - Use u_longlong_t instead of u_quad_t, u_long, or int for various buffer sizes
- Add strsuftoull(), which parses a number into a u_longlong_t, with
  multiplication support, and support for 'g' (GB) and 't' (TB) suffices.
  If an error occurs, print to stderr and exit.
  Based on get_blk() from args.c and strsufto*() (in other programs)
- Add strsuftoullx(), which acts as per strsuftoull() but returns the
  error in the supplied buffer instead (if the returned buffer != "", an
  error occurred)
- Replace get_bsz() use with strsuftoull()
- Remove (now) unnecessary argument validation
- Remove unused {f,p,s,t}_stats fields in struct IO
2001-11-25 10:50:06 +00:00
lukem 6848de8fe5 fix WARNS=2 for -DNO_CONV 2001-11-25 06:57:55 +00:00
lukem 8605a1aa68 - ANSI KNF
- WARNS=2 (mainly converting some "char *" -> "const char *")
2001-11-25 06:53:48 +00:00
wiz a9356936b4 seperate -> separate 2001-07-22 13:33:58 +00:00
ross aecbd4c404 In the words of Our Fearless Leader, I am "utterly sick" of dd(1)
lying to me about transfer rates. Do some fixed point frobbing to get
stuff like: 2486864 bytes transferred in 0.272 secs (9142882 bytes/sec)
2001-04-28 22:47:23 +00:00
hubertf 4d486ab67d Add "progress=1" switch to show a sign of life by printing a '.' for
every block written to the output file.
1999-07-29 19:03:31 +00:00
mycroft ce7d757530 Delint. 1998-07-28 03:47:14 +00:00
msaitoh eb590dc473 "static" should be located at the beginning of declaration. 1998-07-09 18:06:17 +00:00
enami 0c5c9f41f8 Lineup `case' label and `default' label with `switch'. 1998-02-28 04:22:34 +00:00
enami d376e10e90 Put space after the keyword `switch'. 1998-02-28 04:20:02 +00:00
phil d355fd58e8 Do multiply in lseek calls as off_t arithmetic. This allows for seeks
of more than INT_MAX.  Removed Check for INT_MAX as maximum seeks.
Fixes PR 2101.
1997-07-25 06:46:23 +00:00
christos 4a3a58b6f2 Fix compiler warnings.
Add WARNS=1
1997-07-20 21:58:35 +00:00
jtc 6ea95846cb add const qualifier to args and clist tables 1996-03-01 01:18:58 +00:00
jtc dba6c61918 Re-do change to use const qualifer with conversion tables.
Fixed bug where pre-computed upper/lower case conversion tables were
used.  This won't work if user selected a different locale.
1996-02-20 19:29:01 +00:00
gwr f8791fb073 Add -DNO_CONV to make this smaller in my ramdisk. 1995-10-08 23:01:22 +00:00
cgd 49f0ad8601 convert to new RCS id conventions. 1995-03-21 09:01:59 +00:00
mycroft 667b5ea158 Merge 4.4-Lite version. 1994-09-22 09:24:46 +00:00
mycroft a579b792ce Add RCS identifiers. 1993-08-01 18:59:54 +00:00
glass 28bef3964d added dd(1) from ftp.uu.net:bsd-sources; torching GNU dd 1993-05-04 07:08:38 +00:00