Diff for /np2/win9x/ini.cpp between versions 1.38 and 1.42

version 1.38, 2005/03/20 08:58:19 version 1.42, 2006/12/24 07:53:01
Line 15 Line 15
   
   
   
 static BOOL inigetbmp(const UINT8 *ptr, UINT pos) {  
   
         return((ptr[pos >> 3] >> (pos & 7)) & 1);  // ---- user
 }  
   
 static void inisetbmp(UINT8 *ptr, UINT pos, BOOL set) {  
   
         UINT8   bit;  
   
         ptr += (pos >> 3);  
         bit = 1 << (pos & 7);  
         if (set) {  
                 *ptr |= bit;  
         }  
         else {  
                 *ptr &= ~bit;  
         }  
 }  
   
 static void inirdargs16(const OEMCHAR *src, const PFTBL *ini) {  static void inirdargs16(const OEMCHAR *src, const PFTBL *ini) {
   
Line 61  static void inirdargs16(const OEMCHAR *s Line 45  static void inirdargs16(const OEMCHAR *s
         }          }
 }  }
   
 static void inirdargh8(const OEMCHAR *src, const PFTBL *ini) {  static void inirdbyte3(const OEMCHAR *src, const PFTBL *ini) {
   
         UINT8   *dst;          UINT    i;
         int             dsize;  
         int             i;          for (i=0; i<3; i++) {
                   if (src[i] == '\0') {
                           break;
                   }
                   if ((((src[i] - '0') & 0xff) < 9) ||
                           (((src[i] - 'A') & 0xdf) < 26)) {
                           ((UINT8 *)ini->value)[i] = (UINT8)src[i];
                   }
           }
   }
   
   static void inirdkb(const OEMCHAR *src, const PFTBL *ini) {
   
           if ((!milstr_extendcmp(src, OEMTEXT("PC98"))) ||
                   (!milstr_cmp(src, OEMTEXT("98")))) {
                   *(UINT8 *)ini->value = KEY_PC98;
           }
           else if ((!milstr_extendcmp(src, OEMTEXT("DOS"))) ||
                           (!milstr_cmp(src, OEMTEXT("PCAT"))) ||
                           (!milstr_cmp(src, OEMTEXT("AT")))) {
                   *(UINT8 *)ini->value = KEY_KEY106;
           }
           else if ((!milstr_extendcmp(src, OEMTEXT("KEY101"))) ||
                           (!milstr_cmp(src, OEMTEXT("101")))) {
                   *(UINT8 *)ini->value = KEY_KEY101;
           }
   }
   
   
   // ---- Use WinAPI
   
   #if !defined(_UNICODE)
   static void bitmapset(UINT8 *ptr, UINT pos, BOOL set) {
   
           UINT8   bit;
   
           ptr += (pos >> 3);
           bit = 1 << (pos & 7);
           if (set) {
                   *ptr |= bit;
           }
           else {
                   *ptr &= ~bit;
           }
   }
   
   static BOOL bitmapget(const UINT8 *ptr, UINT pos) {
   
           return((ptr[pos >> 3] >> (pos & 7)) & 1);
   }
   
   static void binset(UINT8 *bin, UINT binlen, const OEMCHAR *src) {
   
           UINT    i;
         UINT8   val;          UINT8   val;
         BOOL    set;          BOOL    set;
         OEMCHAR c;          OEMCHAR c;
   
         dst = (UINT8 *)ini->value;          for (i=0; i<binlen; i++) {
         dsize = ini->arg;  
   
         for (i=0; i<dsize; i++) {  
                 val = 0;                  val = 0;
                 set = FALSE;                  set = FALSE;
                 while(*src == ' ') {                  while(*src == ' ') {
Line 102  static void inirdargh8(const OEMCHAR *sr Line 136  static void inirdargh8(const OEMCHAR *sr
                 if (set == FALSE) {                  if (set == FALSE) {
                         break;                          break;
                 }                  }
                 dst[i] = val;                  bin[i] = val;
         }          }
 }  }
   
 static void iniwrsetargh8(OEMCHAR *work, int size, const PFTBL *ini) {  static void binget(OEMCHAR *work, int size, const UINT8 *bin, UINT binlen) {
   
         UINT    i;          UINT    i;
 const UINT8     *ptr;  
         UINT    arg;  
         OEMCHAR tmp[8];          OEMCHAR tmp[8];
   
         ptr = (UINT8 *)ini->value;          if (binlen) {
         arg = ini->arg;                  OEMSPRINTF(tmp, OEMTEXT("%.2x"), bin[0]);
         if (arg > 0) {  
                 OEMSPRINTF(tmp, OEMTEXT("%.2x"), ptr[0]);  
                 milstr_ncpy(work, tmp, size);                  milstr_ncpy(work, tmp, size);
         }          }
         for (i=1; i<arg; i++) {          for (i=1; i<binlen; i++) {
                 OEMSPRINTF(tmp, OEMTEXT(" %.2x"), ptr[i]);                  OEMSPRINTF(tmp, OEMTEXT(" %.2x"), bin[i]);
                 milstr_ncat(work, tmp, size);                  milstr_ncat(work, tmp, size);
         }          }
 }  }
   
   
 // ---- user  
   
 static void inirdbyte3(const OEMCHAR *src, const PFTBL *ini) {  
   
         UINT    i;  
   
         for (i=0; i<3; i++) {  
                 if (src[i] == '\0') {  
                         break;  
                 }  
                 if ((((src[i] - '0') & 0xff) < 9) ||  
                         (((src[i] - 'A') & 0xdf) < 26)) {  
                         ((UINT8 *)ini->value)[i] = (UINT8)src[i];  
                 }  
         }  
 }  
   
 static void inirdkb(const OEMCHAR *src, const PFTBL *ini) {  
   
         if ((!milstr_extendcmp(src, OEMTEXT("PC98"))) ||  
                 (!milstr_cmp(src, OEMTEXT("98")))) {  
                 *(UINT8 *)ini->value = KEY_PC98;  
         }  
         else if ((!milstr_extendcmp(src, OEMTEXT("DOS"))) ||  
                         (!milstr_cmp(src, OEMTEXT("PCAT"))) ||  
                         (!milstr_cmp(src, OEMTEXT("AT")))) {  
                 *(UINT8 *)ini->value = KEY_KEY106;  
         }  
         else if ((!milstr_extendcmp(src, OEMTEXT("KEY101"))) ||  
                         (!milstr_cmp(src, OEMTEXT("101")))) {  
                 *(UINT8 *)ini->value = KEY_KEY101;  
         }  
 }  
   
   
 // ----  
   
 void ini_read(const OEMCHAR *path, const OEMCHAR *title,  void ini_read(const OEMCHAR *path, const OEMCHAR *title,
                                                                                         const PFTBL *tbl, UINT count) {                                                                                          const PFTBL *tbl, UINT count) {
   
Line 189  const PFTBL *pterm; Line 181  const PFTBL *pterm;
   
                         case PFTYPE_BITMAP:                          case PFTYPE_BITMAP:
                                 GetPrivateProfileString(title, p->item,                                  GetPrivateProfileString(title, p->item,
                                         (inigetbmp((UINT8 *)p->value, p->arg))?str_true:str_false,                                          (bitmapget((UINT8 *)p->value, p->arg))?str_true:str_false,
                                                                                                 work, NELEMENTS(work), path);                                                                                                  work, NELEMENTS(work), path);
                                 inisetbmp((UINT8 *)p->value, p->arg,                                  bitmapset((UINT8 *)p->value, p->arg,
                                                                                 (milstr_cmp(work, str_true) == 0));                                                                                  (milstr_cmp(work, str_true) == 0));
                                 break;                                  break;
   
                         case PFTYPE_ARGS16:  
                                 GetPrivateProfileString(title, p->item, str_null,  
                                                                                                 work, NELEMENTS(work), path);  
                                 inirdargs16(work, p);  
                                 break;  
   
                         case PFTYPE_BIN:                          case PFTYPE_BIN:
                                 GetPrivateProfileString(title, p->item, str_null,                                  GetPrivateProfileString(title, p->item, str_null,
                                                                                                 work, NELEMENTS(work), path);                                                                                                  work, NELEMENTS(work), path);
                                 inirdargh8(work, p);                                  binset((UINT8 *)p->value, p->arg, work);
                                 break;                                  break;
   
                         case PFTYPE_SINT8:                          case PFTYPE_SINT8:
Line 252  const PFTBL *pterm; Line 238  const PFTBL *pterm;
                                 *(UINT32 *)p->value = (UINT32)val;                                  *(UINT32 *)p->value = (UINT32)val;
                                 break;                                  break;
   
                           case PFTYPE_ARGS16:
                                   GetPrivateProfileString(title, p->item, str_null,
                                                                                                   work, NELEMENTS(work), path);
                                   inirdargs16(work, p);
                                   break;
   
                         case PFTYPE_BYTE3:                          case PFTYPE_BYTE3:
                                 GetPrivateProfileString(title, p->item, str_null,                                  GetPrivateProfileString(title, p->item, str_null,
                                                                                                 work, NELEMENTS(work), path);                                                                                                  work, NELEMENTS(work), path);
Line 291  const OEMCHAR *set; Line 283  const OEMCHAR *set;
                                         set = (*((UINT8 *)p->value))?str_true:str_false;                                          set = (*((UINT8 *)p->value))?str_true:str_false;
                                         break;                                          break;
   
                                   case PFTYPE_BITMAP:
                                           set = (bitmapget((UINT8 *)p->value, p->arg))?
                                                                                                                   str_true:str_false;
                                           break;
   
                                 case PFTYPE_BIN:                                  case PFTYPE_BIN:
                                         iniwrsetargh8(work, NELEMENTS(work), p);                                          binget(work, NELEMENTS(work), (UINT8 *)p->value, p->arg);
                                         break;                                          break;
   
                                 case PFTYPE_SINT8:                                  case PFTYPE_SINT8:
Line 343  const OEMCHAR *set; Line 340  const OEMCHAR *set;
         }          }
 }  }
   
   #else   // !defined(_UNICODE)
   
   // ---- Use profile.c
   
   static void pfread(const PFTBL *item, const OEMCHAR *string) {
   
           switch(item->itemtype & PFTYPE_MASK) {
                   case PFTYPE_ARGS16:
                           inirdargs16(string, item);
                           break;
   
                   case PFTYPE_BYTE3:
                           inirdbyte3(string, item);
                           break;
   
                   case PFTYPE_KB:
                           inirdkb(string, item);
                           break;
           }
   }
   
   void ini_read(const OEMCHAR *path, const OEMCHAR *title,
                                                                                           const PFTBL *tbl, UINT count) {
   
           profile_iniread(path, title, tbl, count, pfread);
   }
   
   void ini_write(const OEMCHAR *path, const OEMCHAR *title,
                                                                                           const PFTBL *tbl, UINT count) {
   
           profile_iniwrite(path, title, tbl, count, NULL);
   }
   
   #endif  // !defined(_UNICODE)
   
   
 // ----  // ----
   
Line 383  static const PFTBL iniitem[] = { Line 415  static const PFTBL iniitem[] = {
         PFVAL("hdrv_acc", PFRO_UINT8,           &np2cfg.hdrvacc),          PFVAL("hdrv_acc", PFRO_UINT8,           &np2cfg.hdrvacc),
 #endif  #endif
   
         PFSTR("pc_model", PFTYPE_STR,           &np2cfg.model),          PFSTR("pc_model", PFTYPE_STR,           np2cfg.model),
         PFVAL("clk_base", PFTYPE_UINT32,        &np2cfg.baseclock),          PFVAL("clk_base", PFTYPE_UINT32,        &np2cfg.baseclock),
         PFVAL("clk_mult", PFTYPE_UINT32,        &np2cfg.multiple),          PFVAL("clk_mult", PFTYPE_UINT32,        &np2cfg.multiple),
   
Line 504  static const PFTBL iniitem[] = { Line 536  static const PFTBL iniitem[] = {
         PFVAL("force400", PFRO_BOOL,            &np2oscfg.force400),          PFVAL("force400", PFRO_BOOL,            &np2oscfg.force400),
         PFVAL("e_resume", PFTYPE_BOOL,          &np2oscfg.resume),          PFVAL("e_resume", PFTYPE_BOOL,          &np2oscfg.resume),
         PFVAL("STATSAVE", PFRO_BOOL,            &np2oscfg.statsave),          PFVAL("STATSAVE", PFRO_BOOL,            &np2oscfg.statsave),
   #if !defined(_WIN64)
         PFVAL("nousemmx", PFTYPE_BOOL,          &np2oscfg.disablemmx),          PFVAL("nousemmx", PFTYPE_BOOL,          &np2oscfg.disablemmx),
   #endif
         PFVAL("windtype", PFTYPE_UINT8,         &np2oscfg.wintype),          PFVAL("windtype", PFTYPE_UINT8,         &np2oscfg.wintype),
         PFVAL("toolwind", PFTYPE_BOOL,          &np2oscfg.toolwin),          PFVAL("toolwind", PFTYPE_BOOL,          &np2oscfg.toolwin),
         PFVAL("keydispl", PFTYPE_BOOL,          &np2oscfg.keydisp),          PFVAL("keydispl", PFTYPE_BOOL,          &np2oscfg.keydisp),
Line 516  static const PFTBL iniitem[] = { Line 550  static const PFTBL iniitem[] = {
         PFVAL("I286SAVE", PFRO_BOOL,            &np2oscfg.I286SAVE)};          PFVAL("I286SAVE", PFRO_BOOL,            &np2oscfg.I286SAVE)};
   
   
   static const OEMCHAR ext_ini[] = OEMTEXT(".ini");
   
 void initgetfile(OEMCHAR *path, UINT size) {  void initgetfile(OEMCHAR *path, UINT size) {
   
 const OEMCHAR   *ext;  const OEMCHAR   *ext;
Line 531  const OEMCHAR *ext; Line 567  const OEMCHAR *ext;
                 }                  }
                 ext = file_getext(path);                  ext = file_getext(path);
                 if (ext[0] != '\0') {                  if (ext[0] != '\0') {
                         file_catname(path, OEMTEXT(".ini"), size);                          file_catname(path, ext_ini, size);
                 }                  }
         }          }
         else {          else {
                 file_cutext(path);                  file_cutext(path);
                 file_catname(path, OEMTEXT(".ini"), size);                  file_catname(path, ext_ini, size);
         }          }
 }  }
   

Removed from v.1.38  
changed lines
  Added in v.1.42


RetroPC.NET-CVS <cvs@retropc.net>