From 9d9936b2bf8966602b3e756a9884c9ce3d3b10ab Mon Sep 17 00:00:00 2001 From: Ben Gras Date: Thu, 8 Sep 2005 15:45:33 +0000 Subject: [PATCH] Add devsize --- commands/simple/Makefile | 9 +++++++ commands/simple/devsize.c | 57 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100755 commands/simple/devsize.c diff --git a/commands/simple/Makefile b/commands/simple/Makefile index e4884d0e9..6ce210b70 100755 --- a/commands/simple/Makefile +++ b/commands/simple/Makefile @@ -68,6 +68,7 @@ ALL = \ dd \ decomp16 \ dev2name \ + devsize \ df \ dhrystone \ diff \ @@ -321,6 +322,10 @@ dev2name: dev2name.c $(CCLD) -o $@ $? @install -S 4kw $@ +devsize: devsize.c + $(CCLD) -o $@ $? + @install -S 4kw $@ + df: df.c $(CCLD) -I$(SYS) -o $@ $? @install -S 4kw $@ @@ -897,6 +902,7 @@ install: \ /usr/bin/dd \ /usr/bin/decomp16 \ /bin/dev2name \ + /usr/bin/devsize \ /usr/bin/df \ /usr/bin/dhrystone \ /usr/bin/diff \ @@ -1161,6 +1167,9 @@ install: \ /bin/dev2name: dev2name install -cs -o bin $? $@ +/usr/bin/devsize: devsize + install -cs -o bin $? $@ + /usr/bin/decomp16: decomp16 install -cs -o bin $? $@ diff --git a/commands/simple/devsize.c b/commands/simple/devsize.c new file mode 100755 index 000000000..3ee48c29e --- /dev/null +++ b/commands/simple/devsize.c @@ -0,0 +1,57 @@ +/* Ben Gras + * + * Based on sizeup() in mkfs.c. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +unsigned long sizeup(char *); + +int main(int argc, char *argv[]) +{ + int sec; + + if(argc != 2) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return 1; + } + + printf("%lu\n", sizeup(argv[optind])); + return 0; +} + + +unsigned long sizeup(device) +char *device; +{ + int fd; + struct partition entry; + unsigned long d; + struct stat st; + + if ((fd = open(device, O_RDONLY)) == -1) { + perror("sizeup open"); + exit(1); + } + if (ioctl(fd, DIOCGETP, &entry) == -1) { + perror("sizeup ioctl"); + exit(1); + } + close(fd); + d = div64u(entry.size, 512); + return d; +}