|
|
| version 1.6, 2025/03/22 03:05:19 | version 1.10, 2025/03/24 04:13:11 |
|---|---|
| Line 24 | Line 24 |
| * along with FreeM. If not, see <https://www.gnu.org/licenses/>. | * along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
| * | * |
| * $Log$ | * $Log$ |
| * Revision 1.10 2025/03/24 04:13:11 snw | |
| * Replace action macro dat with fra_dat to avoid symbol conflict on OS/2 | |
| * | |
| * Revision 1.9 2025/03/24 01:32:22 snw | |
| * Guard declaration of time function in expr.c for portability | |
| * | |
| * Revision 1.8 2025/03/22 04:47:18 snw | |
| * Silently truncate long names in STRING exprs when evaluates to an obsolete MDC standard | |
| * | |
| * Revision 1.7 2025/03/22 03:39:23 snw | |
| * Fix reverse query polyfill call-in from C side and make NAME exprs silently truncate long names in obsolete MDC dialects | |
| * | |
| * Revision 1.6 2025/03/22 03:05:19 snw | * Revision 1.6 2025/03/22 03:05:19 snw |
| * Comply with X11-96/13 portable length of names | * Comply with X11-96/13 portable length of names |
| * | * |
| Line 132 | Line 144 |
| #define GET 'Y' | #define GET 'Y' |
| #define GETX ':' | #define GETX ':' |
| #if !defined(__OpenBSD__) && !defined(_AIX) && !defined(__osf__) && !defined(MSDOS) && !defined(__vax__) | #if !defined(__OpenBSD__) && !defined(_AIX) && !defined(__osf__) && !defined(MSDOS) && !defined(__vax__) && !defined(__OS2__) |
| long time (); | long time (); |
| #endif | #endif |
| void cond_round (char *a, int digits); | void cond_round (char *a, int digits); |
| Line 218 void expr (short extyp) | Line 230 void expr (short extyp) |
| varnam[i++] = ch; | varnam[i++] = ch; |
| } | } |
| else { | else { |
| merr_raise (M56); | if ((rtn_dialect () == D_M77) || |
| return; | (rtn_dialect () == D_M84) || |
| (rtn_dialect () == D_M90) || | |
| (rtn_dialect () == D_M95)) { | |
| /* silently truncate... yeah, the standard is stupid af */ | |
| continue; | |
| } | |
| else { | |
| merr_raise (M56); | |
| return; | |
| } | |
| } | } |
| } | } |
| varnam[i] = EOL; | varnam[i] = EOL; |
| #if 0 | |
| { | |
| char gooby[256]; | |
| stcpy (gooby, varnam); | |
| stcnv_m2c (gooby); | |
| printf ("name = '%s'\r\n", gooby); | |
| } | |
| #endif | |
| if (ch == '(') { /* it's an array */ | if (ch == '(') { /* it's an array */ |
| Line 345 scan_name: | Line 375 scan_name: |
| merr_raise (INVEXPR); | merr_raise (INVEXPR); |
| return; | return; |
| } | } |
| varnam[i++] = ch; | if ((i + 1) <= max_namlen) { |
| varnam[i++] = ch; | |
| } | |
| else { | |
| if ((rtn_dialect () == D_M77) || | |
| (rtn_dialect () == D_M84) || | |
| (rtn_dialect () == D_M90) || | |
| (rtn_dialect () == D_M95)) { | |
| /* silently truncate... yeah, the standard is stupid af */ | |
| continue; | |
| } | |
| else { | |
| merr_raise (M56); | |
| return; | |
| } | |
| } | |
| lastch = ch; | lastch = ch; |
| } | } |
| Line 362 scan_name: | Line 407 scan_name: |
| else { /* local variable name */ | else { /* local variable name */ |
| while (isalnum (ch = *++codptr)) { | while (isalnum (ch = *++codptr)) { |
| varnam[i++] = ch; | |
| if ((i + 1) <= max_namlen) { | |
| varnam[i++] = ch; | |
| } | |
| else { | |
| if ((rtn_dialect () == D_M77) || | |
| (rtn_dialect () == D_M84) || | |
| (rtn_dialect () == D_M90) || | |
| (rtn_dialect () == D_M95)) { | |
| /* silently truncate... yeah, the standard is stupid af */ | |
| continue; | |
| } | |
| else { | |
| merr_raise (M56); | |
| return; | |
| } | |
| } | |
| } | } |
| varnam[i] = EOL; | varnam[i] = EOL; |
| Line 502 var1: | Line 564 var1: |
| case 'd': /* $DATA */ | case 'd': /* $DATA */ |
| ch = dat; | ch = fra_dat; |
| glv_fcn: | glv_fcn: |
| Line 2235 f20: | Line 2297 f20: |
| stcnv_c2m (qryarg_ext); | stcnv_c2m (qryarg_ext); |
| /* put the $QUERY argument into the local variable %INT.REVQ */ | /* put the $QUERY argument into the local variable %INT.REVQ */ |
| symtab (set_sym, "%INT.REVQ\201\201", qryarg_ext); | symtab (set_sym, "%INTREVQ\201\201", qryarg_ext); |
| /* set up for calling into polyfill wrapper */ | /* set up for calling into polyfill wrapper */ |
| code[0] = '\201'; | code[0] = '\201'; |