#!/bin/csh -f
#
# bextract - extract the block sequence in a given pattern file
#
# usage:
#   bextract [patternfile [blocksize]]
# If blocksize is not given, 1024 is assumed.
# If patternfile is not given, stdin is used for the already extracted pattern.
# output is to stdout, one block number per line

if ($#argv > 2) then
    echo 'usage: bextract patternfile [blocksize]'
    exit 1
endif

if ($#argv >= 1) then
    set extract=(extract $1)
    if ($#argv == 2) then
        set blocksize=$2
    else
        set blocksize=1024
    endif
else
    set blocksize=1024
    set extract=cat
endif
    
$extract | awk "\
BEGIN {blocksize = $blocksize; prev=-1}"'\
NF > 0 {\
    first = int($2 / blocksize);\
    last = int(($2+$3-1) / blocksize);\
    for (block = first; block <= last; block++) {\
    	   if (block != prev) \
        	   print block; \
    	   prev = block; \
    } \
}\
NF == 0 { print }'

