|
|
| 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'; | |
| } | |