File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / tool / extract.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:17 2012 UTC (12 years, 4 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    1: /*
    2: ** Extract a range of bytes from a file.
    3: **
    4: ** Usage:
    5: **
    6: **    extract FILENAME OFFSET AMOUNT
    7: **
    8: ** The bytes are written to standard output.
    9: */
   10: #include <stdio.h>
   11: #include <stdlib.h>
   12: 
   13: int main(int argc, char **argv){
   14:   FILE *f;
   15:   char *zBuf;
   16:   int ofst;
   17:   int n;
   18:   size_t got;
   19: 
   20:   if( argc!=4 ){
   21:     fprintf(stderr, "Usage: %s FILENAME OFFSET AMOUNT\n", *argv);
   22:     return 1;
   23:   }
   24:   f = fopen(argv[1], "rb");
   25:   if( f==0 ){
   26:     fprintf(stderr, "cannot open \"%s\"\n", argv[1]);
   27:     return 1;
   28:   }
   29:   ofst = atoi(argv[2]);
   30:   n = atoi(argv[3]);
   31:   zBuf = malloc( n );
   32:   if( zBuf==0 ){
   33:     fprintf(stderr, "out of memory\n");
   34:     return 1;
   35:   }
   36:   fseek(f, ofst, SEEK_SET);
   37:   got = fread(zBuf, 1, n, f);
   38:   fclose(f);
   39:   if( got<n ){
   40:     fprintf(stderr, "got only %d of %d bytes\n", got, n);
   41:     return 1;
   42:   }else{
   43:     fwrite(zBuf, 1, n, stdout);
   44:   }
   45:   return 0;
   46: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>