Introduction
Introduction Statistics Contact Development Disclaimer Help
dd: implement conv=notrunc support - ubase - suckless linux base utils
git clone git://git.suckless.org/ubase
Log
Files
Refs
README
LICENSE
---
commit e0dc3f9546b3cd839aef8e58376c6295679a5ed5
parent 596663c1b1f140c10ba1facede783201d6a876a7
Author: Eivind Uggedal <[email protected]>
Date: Wed, 16 Mar 2016 09:23:50 +0000
dd: implement conv=notrunc support
Diffstat:
M dd.1 | 2 ++
M dd.c | 11 +++++++----
2 files changed, 9 insertions(+), 4 deletions(-)
---
diff --git a/dd.1 b/dd.1
@@ -61,4 +61,6 @@ blocks from the beginning of the output before copying.
Skip
.Ar N
blocks from the beginning of the input before copying.
+.It Ar conv=notrunc
+Do not truncate the output file.
.El
diff --git a/dd.c b/dd.c
@@ -32,7 +32,7 @@ struct dd_config {
uint64_t skip, seek, count, b_in, b_out, rec_in, rec_out;
off_t fsize;
blksize_t bs;
- char quiet, nosync, direct;
+ char quiet, nosync, notrunc, direct;
time_t t_start, t_end;
};
@@ -99,7 +99,7 @@ prepare_copy(struct dd_config *ddc, int *ifd, int *ofd)
return -1;
}
- if (!ddc->seek)
+ if (!ddc->seek && !ddc->notrunc)
flo |= O_TRUNC;
if (!ddc->out) *ofd = 1;
@@ -108,7 +108,7 @@ prepare_copy(struct dd_config *ddc, int *ifd, int *ofd)
return -1;
}
- if (ddc->seek) {
+ if (ddc->seek && !ddc->notrunc) {
if (fstat(*ofd, &st) < 0)
return -1;
if (!S_ISREG(st.st_mode))
@@ -238,7 +238,8 @@ static void
usage(void)
{
eprintf("usage: %s [-h] [if=infile] [of=outfile] [bs[=N]] [seek=N] "
- "[skip=N] [count=N] [direct] [quiet] [nosync]\n", argv0);
+ "[skip=N] [count=N] [direct] [quiet] [nosync]"
+ "[conv=notrunc]\n", argv0);
}
int
@@ -278,6 +279,8 @@ main(int argc, char *argv[])
config.quiet = 1;
else if (strcmp(argv[i], "nosync") == 0)
config.nosync = 1;
+ else if (strcmp(argv[i], "conv=notrunc") == 0)
+ config.notrunc = 1;
else if (strcmp(argv[i], "-h") == 0)
usage();
}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.