/**
 * Nametry
 * (c) Kenta Cho (cs8k-cyu@asahi-net.or.jp)
 * http://www.asahi-net.or.jp/~cs8k-cyu/
 *
 * prefmng.c(handle preference in ram0)
 */

#include <fcntl.h>
#include "nametry.h"

/* preference data file */
#define PREFERENCES_FILE "/ram0/ntr_pref.dat"
#define PREFERENCES_FILE_INFO "Nametry pref"

Boolean loadPreferences(char far *prefData, int size) {
  int prefFd;
  struct stat statbuf; 
  if(stat(PREFERENCES_FILE, &statbuf) == E_FS_FILE_NOT_FOUND) {
    return FALSE;
  }
  if((prefFd = open(PREFERENCES_FILE, O_RDWR, 0)) < 0) { 
    return FALSE;
  }
  lseek(prefFd, 0, 0);
  read(prefFd, prefData, size);
  close(prefFd);
  return TRUE;
}
    
Boolean savePreferences(char far *prefData, int size) {
  int prefFd;
  struct stat statbuf; 
  if(stat(PREFERENCES_FILE, &statbuf) == E_FS_FILE_NOT_FOUND) { 
    if(creat(PREFERENCES_FILE, FMODE_W|FMODE_R, (size/128)+1) != E_FS_SUCCESS) { 
      return FALSE;
    }
    fs_setinfo(PREFERENCES_FILE, PREFERENCES_FILE_INFO);
  }
  if((prefFd = open(PREFERENCES_FILE, O_RDWR, 0)) < 0) { 
    return FALSE;
  }
  lseek(prefFd, 0, 0); 
  write(prefFd, prefData, size);
  close(prefFd);
  return TRUE;
}
