#include <string.h>
#include <stdio.h>
#include <cbm.h>
#define MAX_BUF_SIZE 80

int writefile()
{
    FILE *fptr;
    int ssRet=0;
    int count=0;
    char text1[20];
    char text2[20];
    
    if((fptr=fopen("test","w")) != NULL)
    {
      do {
        strcpy(text1, "text");
        strcpy(text2, "pwd");
        fprintf(fptr, "%d %s %s ", count, text1, text2);
        ++count;
      } while (count < 10);
    } else {
      printf("can't write file\n");
    }
    
    ssRet=fclose(fptr);

    return ssRet;
}

int readfile()
{  
    FILE *fptr;
    int ssRet=0;
    int count=0;
    int val=0;
    char text1[20];
    char text2[20];
    
    if((fptr=fopen("test","r")) != NULL)
    {
      do {
        fscanf(fptr, "%d %s %s ", &val, text1, text2);
        if(strcmp(text1, "lodger"))
          printf("%d %s %s\n", val, text1, text2);
        ++count;
      } while (count < 10);
    } else {
      printf("can't read file\n");
    }
    
    ssRet=fclose(fptr);
    
    return ssRet;
}

int cbmwritefile()
{
  char data[80];
  int ssRet=0;
  char ucDev=8;
  char filename[20];
  int len=0;
  
  strcpy(data, "this is just an example text.");
  len=(int)strlen(data);

  strcpy(filename, "@0:cbmdata,w");
    
    ssRet = cbm_open(2, ucDev, CBM_WRITE, filename);
    
    if(! ssRet)
      {
         if(data != NULL) {
         
           if(len >= MAX_BUF_SIZE) {
             len=MAX_BUF_SIZE;
             data[MAX_BUF_SIZE]='\0';
             cbm_write(2, &len, 2);
             cbm_write(2, data, len);
           } else {
             cbm_write(2, &len, 2);
             cbm_write(2, data, len);
           }   
           printf("writing file '%s'\r\n", filename);
         }
      }
    else
      {
         printf("**error - can't write file: '%s'", filename);        
      }

    cbm_close(2);
    
    return ssRet;

}

int cbmreadfile()
{
  int ssRet=0;
  char ucDev=8;
  char buffer[MAX_BUF_SIZE];
  char filename[20];
  int flen=0;
  
  strcpy(filename, "@0:cbmdata,r");
  memset(buffer, 0, MAX_BUF_SIZE);
 
  ssRet = cbm_open(2, ucDev, CBM_READ, filename);
 
  if(! ssRet)
    {
      cbm_read(2, &flen, 2);
      cbm_read(2, buffer, flen);
      printf("reading file '%s'\r\nlength: %d [ %d max.]", filename, flen, MAX_BUF_SIZE);
      printf("\r\ntext  : %s\r\n", buffer);  
    }
    else
    {
       printf("**error - can't read file '%s' ", filename);
    }

    cbm_close(2);

    return ssRet;
    
}

int main()
{
   int ssRet=0;
 
   printf("** filetest 0.2 stdio.h / cbm.h **\n");

   /*
   printf("calling writefile()\n");
   ssRet = writefile();
   printf("err: %d\n", ssRet);

   printf("calling readfile()\n");  
   ssRet = readfile();   
   printf("err: %d\n", ssRet);
   */
   
   /*
   printf("calling cbmwritefile()\r\n");
   ssRet = cbmwritefile();
   printf("err: %d\r\n", ssRet);
   */
   
   printf("calling cbmreadfile()\r\n");  
   ssRet = cbmreadfile();   
   printf("err: %d\r\n", ssRet);
   
   return 0;

}
