Diff for /np2/common/profile.c between versions 1.3 and 1.4

version 1.3, 2004/02/19 11:32:11 version 1.4, 2004/02/21 04:48:35
Line 143  const char *profile_getarg(const char *s Line 143  const char *profile_getarg(const char *s
         return(str);          return(str);
 }  }
   
   
 // ----  
   
 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.3  
changed lines
  Added in v.1.4


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