--- freem/src/expr.c 2025/04/10 01:24:38 1.12 +++ freem/src/expr.c 2025/05/01 03:56:29 1.17 @@ -1,5 +1,5 @@ /* - * $Id: expr.c,v 1.12 2025/04/10 01:24:38 snw Exp $ + * $Id: expr.c,v 1.17 2025/05/01 03:56:29 snw Exp $ * expression parser * * @@ -24,6 +24,21 @@ * along with FreeM. If not, see . * * $Log: expr.c,v $ + * Revision 1.17 2025/05/01 03:56:29 snw + * -m + * + * Revision 1.16 2025/04/30 20:03:09 snw + * Work on entryref parser + * + * Revision 1.15 2025/04/30 14:41:03 snw + * Further debugger work + * + * Revision 1.14 2025/04/14 23:20:23 snw + * Restore support for any 8-bit character in + * + * Revision 1.13 2025/04/13 04:22:43 snw + * Fix snprintf calls + * * Revision 1.12 2025/04/10 01:24:38 snw * Remove C++ style comments * @@ -1685,8 +1700,6 @@ uparrow: case 'c': /* $CHARACTER */ { - char chrtmp[256]; - long pnum; short l, l1, m, n; l1 = f; @@ -1697,14 +1710,6 @@ uparrow: n = 1; l = 0; - stcpy (chrtmp, a); - stcnv_m2c (chrtmp); - pnum = atol (chrtmp); - - if (pnum > 127) { - merr_raise (MXNUM); - return; - } for (;;) { @@ -2989,6 +2994,16 @@ f20: long l1, rouoldc; short reload = FALSE; + /* + printf ("a = %s f = %d arg = %d\r\n", a, f, arg); + for (i = arg; i < arg + f; i++) { + printf ("argstck[%d] = '%s'\r\n", i, argstck[i]); + } + + for (i = 0; i < strlen (a); i++) + printf ("%c = %d\r\n", a[i], (unsigned char) a[i]); + */ + if (f > 3) { merr_raise (FUNARG); return; @@ -4593,9 +4608,9 @@ extra_fun: if (obj_field) { - char t_objf[255]; + char t_objf[STRLEN]; - snprintf (t_objf, 254, "%s\201", object_instance); + snprintf (t_objf, STRLEN - 1, "%s\201", object_instance); dofram0 = dofrmptr; *dofrmptr++ = DELIM; @@ -5559,7 +5574,7 @@ errexfun: { char doggie_bag[50]; - snprintf (doggie_bag, 49, ".%ld\201", ilong); + snprintf (doggie_bag, sizeof (doggie_bag) - 1, ".%ld\201", ilong); stcat (a, doggie_bag); } } @@ -5568,7 +5583,7 @@ errexfun: case SVNsystem: - snprintf (a, 512, "%d,\"%s\"\201", MDC_VENDOR_ID, jour_hostid); + sprintf (a, "%d,\"%s\"\201", MDC_VENDOR_ID, jour_hostid); goto exec; @@ -5580,7 +5595,7 @@ errexfun: case SVNtlevel: - snprintf (a, 255, "%d\201", tp_level); + sprintf (a, "%d\201", tp_level); goto exec; @@ -5608,7 +5623,7 @@ errexfun: case SVNestack: { char esbuf[256]; - snprintf (esbuf, 255, "%d\201", estack); + sprintf (esbuf, "%d\201", estack); stcpy (a, esbuf); goto exec; @@ -5641,17 +5656,17 @@ errexfun: /* $DEVICE */ case 'd': if (devstat[io].mdc_err == 0) { - snprintf (a, 3, "0\201\0"); + sprintf (a, "0\201\0"); } else { - snprintf (a, 120, "%d,%d,%s\201\0", devstat[io].mdc_err, devstat[io].frm_err, devstat[io].err_txt); + sprintf (a, "%d,%d,%s\201\0", devstat[io].mdc_err, devstat[io].frm_err, devstat[io].err_txt); } goto exec; /* $STORAGE */ case 's': - snprintf (a, 255 , "%ld\201", DEFPSIZE); + sprintf (a, "%ld\201", DEFPSIZE); goto exec; /* $WITH */ @@ -5772,7 +5787,7 @@ errexfun: char zdf_key[50]; char fmt_string[128]; - snprintf (zdf_key, 49, "^$JOB\202%d\202ZDATE_FORMAT\201", pid); + snprintf (zdf_key, sizeof (zdf_key) - 1, "^$JOB\202%d\202ZDATE_FORMAT\201", pid); ssvn (get_sym, zdf_key, fmt_string); stcnv_c2m (fmt_string);