#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

const int xdim = 5449;
const int ydim = 4161;

int main()
{
   unsigned char * array;
   int fd;
   int i;
   char * filename;
   char * new_filename;

   array = (unsigned char *)malloc(xdim*ydim);
   filename = (char *)malloc(24);
   new_filename = (char *)malloc(30);

   sprintf(filename,"%5.5i-%5.5i.%5.5i-%5.5i",1,xdim,1,ydim);
   sprintf(new_filename,"%5.5i-%5.5i.%5.5i-%5.5i.urban",1,xdim,1,ydim);

   fd = open(filename,O_RDONLY);
   read(fd, (void *)array, xdim*ydim);
   close(fd);

   for(i=0; i<xdim*ydim; i++)
   {
      if ((int)array[i] == 21)          /*   NOTE:                          */
         array[i] = (unsigned char)31;  /*   For 2001 data, both categories */
      else if ((int)array[i] == 22)     /*   21 and 22 are mapped onto      */
         array[i] = (unsigned char)31;  /*   category                       */
      else if ((int)array[i] == 23) 
         array[i] = (unsigned char)32;
      else if ((int)array[i] == 24) 
         array[i] = (unsigned char)33;
      else
         array[i] = (unsigned char)0;
   }

   fd = open(new_filename,O_CREAT|O_WRONLY,S_IWUSR|S_IRUSR|S_IRGRP|S_IROTH);
   write(fd, (void *)array, xdim*ydim);
   close(fd);

   free(array);
   free(filename);
   free(new_filename);

   return 0;
}

