Diff for /freem/src/operator.c between versions 1.6 and 1.11

version 1.6, 2025/04/09 19:52:02 version 1.11, 2025/05/05 23:09:19
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.11  2025/05/05 23:09:19  snw
    *   Revert errors in E notation parsing
    *
    *   Revision 1.10  2025/05/05 23:02:39  snw
    *   More fixes around E notation
    *
    *   Revision 1.9  2025/05/05 22:52:32  snw
    *   Make E notation error message more appropriate
    *
    *   Revision 1.8  2025/05/05 19:34:46  snw
    *   Fix E notation code to disallow more than one minus sign after the E
    *
    *   Revision 1.7  2025/04/10 01:24:38  snw
    *   Remove C++ style comments
    *
  *   Revision 1.6  2025/04/09 19:52:02  snw   *   Revision 1.6  2025/04/09 19:52:02  snw
  *   Eliminate as many warnings as possible while building with -Wall   *   Eliminate as many warnings as possible while building with -Wall
  *   *
Line 38 Line 53
 #include "mpsdef.h"  #include "mpsdef.h"
 #include <stdlib.h>  #include <stdlib.h>
 #include <math.h>  #include <math.h>
   #include <ctype.h>
   
 int unit (char *str);  int unit (char *str);
 extern void cond_round (char *a, int digits); /* defined in expr.c */  extern void cond_round (char *a, int digits); /* defined in expr.c */
Line 1126  void mdiv (char *uu, char *v, short typ) Line 1142  void mdiv (char *uu, char *v, short typ)
   
             case '#':              case '#':
                 snprintf (uu, STRLEN - 1, "%ld\201", (((long) fp_uu) % ((long) fp_v)));                  snprintf (uu, STRLEN - 1, "%ld\201", (((long) fp_uu) % ((long) fp_v)));
                 //snprintf (uu, STRLEN - 1, "%ld\201", ((long) fp_uu < 0 ? (((long) fp_uu % (long) fp_v) + (long) fp_v) % (long) fp_v : (long) fp_uu % (long) fp_v));                  /*snprintf (uu, STRLEN - 1, "%ld\201", ((long) fp_uu < 0 ? (((long) fp_uu % (long) fp_v) + (long) fp_v) % (long) fp_v : (long) fp_uu % (long) fp_v)); */
                 break;                  break;
         }          }
                   
Line 1970  int numlit (char *str) Line 1986  int numlit (char *str)
             }              }
             continue;              continue;
         }          }
         if (expflg) {          if (expflg) {            
             if (ch == MINUS) {              if (ch == MINUS) {
                   /* TODO: revisit this; it breaks string coercion
                   if (str[i + 1] == '-') {                    
                       merr_raise (INVEXPR);
                       return (0);
                   }
                   if (!isdigit (str[i + 1])) {
                       merr_raise (INVEXPR);
                       return (0);
                   }
                   */
                 expflg = (-expflg);                  expflg = (-expflg);
                 continue;                  continue;
             }              }
             if (ch == PLUS)              if (ch == PLUS) {
                   /* TODO: revisit this; it breaks string coercion
                   if (str[i + 1] == '+') {
                       merr_raise (INVEXPR);
                       return (0);
                   }
                   if (!isdigit (str[i + 1])) {
                       merr_raise (INVEXPR);
                       return (0);
                   }
                   */
                 continue;                  continue;
               }
         }          }
         if ((result = unit (&str[i])))          if ((result = unit (&str[i])))
             ch = str[i] = EOL;              ch = str[i] = EOL;

Removed from v.1.6  
changed lines
  Added in v.1.11


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>