Diff for /np2/common/profile.c between versions 1.1 and 1.2

version 1.1, 2003/10/16 17:57:10 version 1.2, 2004/02/11 17:39:59
Line 103  gden_err0: Line 103  gden_err0:
         return(r);          return(r);
 }  }
   
   
   // ----
   
   typedef struct {
           UINT8   num;
           char    str[7];
   } KEYNAME;
   
   #include        "pf_key.tbl"
   
   static const char *getarg(const char *str, char *buf, UINT leng) {
   
           UINT8   c;
   
           if (leng) {
                   leng--;
           }
           else {
                   buf = NULL;
           }
           if (str) {
                   c = (UINT8)*str;
                   while(((c - 1) & 0xff) < 0x20) {
                           str++;
                           c = (UINT8)*str;
                   }
                   if (c == 0) {
                           str = NULL;
                   }
           }
           if (str) {
                   c = (UINT8)*str;
                   while(c > 0x20) {
                           if (leng) {
                                   *buf++ = c;
                                   leng--;
                           }
                           str++;
                           c = (UINT8)*str;
                   }
           }
           if (buf) {
                   buf[0] = '\0';
           }
           return(str);
   }
   
   static const KEYNAME *searchkeynum(const char *str) {
   
   const KEYNAME   *n;
   const KEYNAME   *nterm;
   
           n = keyname;
           nterm = keyname + (sizeof(keyname) / sizeof(KEYNAME));
           while(n < nterm) {
                   if (!milstr_cmp(str, n->str)) {
                           return(n);
                   }
                   n++;
           }
           return(NULL);
   }
   
   static const KEYNAME *searchkeystr(UINT8 num) {
   
   const KEYNAME   *n;
   const KEYNAME   *nterm;
   
           n = keyname;
           nterm = keyname + (sizeof(keyname) / sizeof(KEYNAME));
           while(n < nterm) {
                   if (n->num == num) {
                           return(n);
                   }
                   n++;
           }
           return(NULL);
   }
   
   UINT profile_setkeys(const char *str, UINT8 *key, UINT keymax) {
   
           UINT            ret;
           char            work[7];
   const KEYNAME   *k;
   
           ret = 0;
           while(ret < keymax) {
                   str = getarg(str, work, sizeof(work));
                   if (str == NULL) {
                           break;
                   }
                   k = searchkeynum(work);
                   if (k) {
                           key[ret] = k->num;
                           ret++;
                   }
           }
           return(ret);
   }
   
   void profile_getkeys(char *str, UINT strmax, const UINT8 *key, UINT keys) {
   
           UINT            space;
           UINT            i;
   const KEYNAME   *k;
           UINT            len;
   
           if ((str == NULL) || (strmax == 0)) {
                   return;
           }
           strmax--;
           space = 0;
           for (i=0; i<keys; i++) {
                   k = searchkeystr(key[i]);
                   if (k) {
                           len = strlen(k->str);
                           if ((len + space) > strmax) {
                                   break;
                           }
                           if (space) {
                                   *str++ = ' ';
                           }
                           CopyMemory(str, k->str, len);
                           str += len;
                           space = 1;
                   }
           }
           str[0] = '\0';
   }
   

Removed from v.1.1  
changed lines
  Added in v.1.2


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