/**********************************************************************
*
*  module   : Buffer
*  fichier  : BufferSelect.c
*  Auteur   : Jacques DUCLOY
*  Date     : Octobre 93
*  $Id: DilibSelect.c,v 1.5 2005/08/30 09:47:26 parmentf Exp $
*
***********************************************************************/

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

    int getopt();
    extern char *optarg;
    int atoi();
void perror();

int nRecordRead;
int nRecordPrint;

void skipLine()
{
  int c; /* char c; */
  nRecordRead++;
  while((c=getchar())!=EOF)
    {
      if (c=='\n') return;
    }
  exit(0);
}

void printLine()
{
  int c; /* char c; */
  nRecordRead++;
  nRecordPrint++;
  while((c=getchar())!=EOF)
    {
      putchar(c);
      if (c=='\n') return;
    }
  exit(0);
}

void usage()
{
  perror ("usage: DamSelect -f n1 -t n2 -s n3 -m n4 \n");
  exit(1);
}

int main(int argc, char **argv)
{
  int cod_arg;

  int nFrom;
  int nTo;
  int nMax;
  int nStep;

  nFrom=0;
  nTo=-1;
  nMax=-1;
  nStep=1;


  while ((cod_arg = getopt(argc,argv,"f:t:s:m:"))!=EOF)
    {
      switch(cod_arg) 
	{
	case 'f':
	  nFrom=atoi(optarg);
	  break;
	case 't':
	  nTo=atoi(optarg);
	  break;
	case 's':
	  nStep=atoi(optarg);
	  break;
	case 'm':
	  nMax=atoi(optarg);
	  nTo=0;
	  break;
	}
    } 

  nRecordPrint=0;
  nRecordRead=0;

  while (nRecordRead<nFrom) skipLine();

  while (1)
    {
      if ((nTo>0)&& (nRecordRead>nTo)) exit (0);
      if ((nMax>0) && (nRecordPrint>=nMax)) exit (0);
      printLine();
      if(nStep>1)
	{
	  int nSkip;
	  nSkip=1;
	  while (nSkip++<nStep){skipLine();}
	}
    }
  return(0);
}
