diff options
author | 2012-04-14 13:13:09 +0000 | |
---|---|---|
committer | 2012-04-14 13:13:09 +0000 | |
commit | dbe60eea59e076f767d5d7dce342b5ed0430e8f7 (patch) | |
tree | cbbe70f70e0ed6f1fc7f75b0778dd4703d71e71c /lib/libsqlite3/tool/extract.c | |
parent | Make kvm_getfile2() have a fighting change to work correctly on crash (diff) | |
download | wireguard-openbsd-dbe60eea59e076f767d5d7dce342b5ed0430e8f7.tar.xz wireguard-openbsd-dbe60eea59e076f767d5d7dce342b5ed0430e8f7.zip |
sqlite 3.7.11 library, vendor sources
Diffstat (limited to 'lib/libsqlite3/tool/extract.c')
-rw-r--r-- | lib/libsqlite3/tool/extract.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/libsqlite3/tool/extract.c b/lib/libsqlite3/tool/extract.c new file mode 100644 index 00000000000..5bf5caa31c9 --- /dev/null +++ b/lib/libsqlite3/tool/extract.c @@ -0,0 +1,46 @@ +/* +** Extract a range of bytes from a file. +** +** Usage: +** +** extract FILENAME OFFSET AMOUNT +** +** The bytes are written to standard output. +*/ +#include <stdio.h> +#include <stdlib.h> + +int main(int argc, char **argv){ + FILE *f; + char *zBuf; + int ofst; + int n; + size_t got; + + if( argc!=4 ){ + fprintf(stderr, "Usage: %s FILENAME OFFSET AMOUNT\n", *argv); + return 1; + } + f = fopen(argv[1], "rb"); + if( f==0 ){ + fprintf(stderr, "cannot open \"%s\"\n", argv[1]); + return 1; + } + ofst = atoi(argv[2]); + n = atoi(argv[3]); + zBuf = malloc( n ); + if( zBuf==0 ){ + fprintf(stderr, "out of memory\n"); + return 1; + } + fseek(f, ofst, SEEK_SET); + got = fread(zBuf, 1, n, f); + fclose(f); + if( got<n ){ + fprintf(stderr, "got only %d of %d bytes\n", got, n); + return 1; + }else{ + fwrite(zBuf, 1, n, stdout); + } + return 0; +} |