/* File: order.c
   Make a file of sorted integers to test our
   sorting programs.
*/

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <time.h>

main(int argc, char *argv[]) {
   int i, r1, r2, n, n1, n2, *A ;
   long seed ;
   FILE *ofile ;

   /* Sanity check */
   if (argc != 4) {
      fprintf(stderr, "Usage: order n1 n2 filename\n") ;
      exit(1) ;
   }

   /* Get endpoints */
   r1 = sscanf(argv[1],"%d", &n1) ;
   r2 = sscanf(argv[2],"%d", &n2) ;

   if ((r1 != 1) || (r2 != 1)) {
      fprintf(stderr, "Both %s and %s should be integers!\n", 
      argv[1], argv[2]) ;
      exit(1) ;
   }

   /* Open file */
   ofile = fopen(argv[3],"wb") ; 
   if (ofile == NULL) {
      printf("Could not open file: %s\n", argv[2]) ;
      exit(1) ;
   }

   if (n1 <= n2) { 
      n = n2 - n1 + 1 ;
      A = (int *) malloc(n * sizeof(int)) ;
      for ( i = n1 ; i <= n2 ; i++) {
	 A[i-n1] = i ;
      }
   } else {
      n = n1 - n2 + 1 ;
      A = (int *) malloc(n * sizeof(int)) ;
      for ( i = n1 ; i >= n2 ; i--) {
	 A[n1-i] = i ;
      }
   }

   r1 = fwrite(A, sizeof(int), n, ofile) ;
   if (r1 != n) {
      fprintf(stderr, "Oops, only %d numbers written\n", r1) ;
   }
   fclose(ofile) ;
}
