/***********************************************************************
*
*   Projet   : DilibXml
*   Module   : XmlNode
*   Fichier  : XmlRecordRange.c
*   Auteur   : F. PARMENTIER
*   Date     : Novembre 2002
*   $Id: XmlRecordRange.c,v 1.2 2003/04/03 15:18:38 parmentf Exp $
*
************************************************************************/
#include <stdlib.h>
#include "BufferParser.h"
#include "Except.h"

void usage() {
  perror("usage: XmlRecordRange -fm -tn <inputFile \n");
  exit(1);
} /* usage */

int main(int argc, char **argv) {
  int      fromRecord;
  int      toRecord;
  int      i;
  char    *bIn;
  
  /* Arguments' treatment */
  if (argc != 3) { 
    perror("Bad number of arguments.\n"); 
    usage(); 
  }
  else {
    /* At least "-fm", ie 3 characters */
    if (strlen(argv[1]) < 3) { 
      perror("Less than 3 characters in -f\n"); 
      usage(); 
    }
    if (*(argv[1]+1) == 'f') {
      fromRecord = atoi(argv[1]+2);
    }
    else if (*(argv[1]+1) == 't') {
      toRecord = atoi(argv[1]+2);
    }
    else usage();

    /* At least "-tn", ie 3 characters */
    if (strlen(argv[2]) < 3) { 
      perror("Less than 3 characters in -t\n"); 
      usage(); 
    }
    if (*(argv[2]+1) == 't') {
      toRecord = atoi(argv[2]+2);
    }
    else if (*(argv[2]+1) == 'f') {
      fromRecord = atoi(argv[2]+2);
    }
    else usage();
  }
  
  i = 1;
  for (bIn = BufferParserStdinGetXmlUnit(); 
       bIn;
       bIn = BufferParserStdinGetXmlUnit()) {
    if (i >= fromRecord && i <= toRecord) {
      printf("%s",bIn);
    }
    if (bIn[0] == '\n') {
      i++;
      if(i>toRecord) exit(0);
    }
  }
  
  exit(0);
  return 0;
} /* main */
