12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /*
- ** 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;
- }
|