Index: third_party/sqlite/sqlite-src-3080704/tool/extract.c |
diff --git a/third_party/sqlite/sqlite-src-3080704/tool/extract.c b/third_party/sqlite/sqlite-src-3080704/tool/extract.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5bf5caa31c9d1950b4e4eaa04ed68ab609429765 |
--- /dev/null |
+++ b/third_party/sqlite/sqlite-src-3080704/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; |
+} |