From 12828dfcf5a79384e6c7b854ddfbf18525c0cb56 Mon Sep 17 00:00:00 2001 From: zrj Date: Wed, 31 Jan 2018 14:08:56 +0200 Subject: [PATCH] truncate(1): Add support for T. While there, add fallthrough. --- usr.bin/truncate/Makefile | 1 - usr.bin/truncate/truncate.1 | 13 +++++++------ usr.bin/truncate/truncate.c | 10 ++++++++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/usr.bin/truncate/Makefile b/usr.bin/truncate/Makefile index 20ce190377..bd4d30fa89 100644 --- a/usr.bin/truncate/Makefile +++ b/usr.bin/truncate/Makefile @@ -1,5 +1,4 @@ # $FreeBSD: src/usr.bin/truncate/Makefile,v 1.1.2.1 2000/08/04 08:05:52 sheldonh Exp $ -# $DragonFly: src/usr.bin/truncate/Makefile,v 1.5 2008/11/03 00:25:45 pavalos Exp $ PROG= truncate diff --git a/usr.bin/truncate/truncate.1 b/usr.bin/truncate/truncate.1 index 8d57ded7e0..b6fc75e6f8 100644 --- a/usr.bin/truncate/truncate.1 +++ b/usr.bin/truncate/truncate.1 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD: src/usr.bin/truncate/truncate.1,v 1.4.2.7 2001/08/16 13:17:08 ru Exp $ .\" -.Dd July 4, 2000 +.Dd February 2, 2018 .Dt TRUNCATE 1 .Os .Sh NAME @@ -39,7 +39,7 @@ .Sm off .Op Cm + | - .Ar size -.Op Cm K | M | G +.Op Cm K | M | G | T .Sm on .Xc .Ek @@ -71,7 +71,7 @@ Truncate files to the length of the file .Sm off .Op Cm + | - .Ar size -.Op Cm K | M | G +.Op Cm K | M | G | T .Sm on .Xc If the @@ -94,11 +94,12 @@ The .Ar size argument may be suffixed with one of .Cm K , -.Cm M -or +.Cm M , .Cm G +or +.Cm T to indicate a multiple of -Kilobytes, Megabytes or Gigabytes +Kilobytes, Megabytes, Gigabytes or Terabytes respectively. .El .Pp diff --git a/usr.bin/truncate/truncate.c b/usr.bin/truncate/truncate.c index 8fee51661d..82dad800d5 100644 --- a/usr.bin/truncate/truncate.c +++ b/usr.bin/truncate/truncate.c @@ -24,7 +24,6 @@ * SUCH DAMAGE. * * $FreeBSD: src/usr.bin/truncate/truncate.c,v 1.6.2.1 2000/08/04 08:05:52 sheldonh Exp $ - * $DragonFly: src/usr.bin/truncate/truncate.c,v 1.3 2003/10/04 20:36:53 hmp Exp $ */ #include @@ -158,6 +157,7 @@ parselength(char *ls, off_t *sz) switch (*ls) { case '-': lsign = -1; + /* FALLTHROUGH */ case '+': ls++; } @@ -173,12 +173,18 @@ parselength(char *ls, off_t *sz) } switch (*ls) { + case 'T': + oflow = length * 1024; + ASSIGN_CHK_OFLOW(oflow, length); + /* FALLTHROUGH */ case 'G': oflow = length * 1024; ASSIGN_CHK_OFLOW(oflow, length); + /* FALLTHROUGH */ case 'M': oflow = length * 1024; ASSIGN_CHK_OFLOW(oflow, length); + /* FALLTHROUGH */ case 'K': if (ls[1] != '\0') return -1; @@ -198,7 +204,7 @@ static void usage(void) { fprintf(stderr, "%s\n%s\n", - "usage: truncate [-c] -s [+|-]size[K|M|G] file ...", + "usage: truncate [-c] -s [+|-]size[K|M|G|T] file ...", " truncate [-c] -r rfile file ..."); exit(EXIT_FAILURE); } -- 2.11.4.GIT