summaryrefslogtreecommitdiff
path: root/copt/copt.c
diff options
context:
space:
mode:
authorRobert de Bath <rdebath@poboxes.com>1998-02-01 11:26:21 +0100
committerLubomir Rintel <lkundrak@v3.sk>2013-10-23 23:40:14 +0200
commit48f0b3eb836162d41622cedc1eb5f5168168fb8e (patch)
treec53156383d4682a0a296f6611575dbc1d64d1881 /copt/copt.c
parent48798bf2eb93ec3b99720ac2e16093441156653d (diff)
downloaddev86-48f0b3eb836162d41622cedc1eb5f5168168fb8e.tar.gz
Import Dev86src-0.13.5.tar.gzv0.13.5
Diffstat (limited to 'copt/copt.c')
-rw-r--r--copt/copt.c72
1 files changed, 39 insertions, 33 deletions
diff --git a/copt/copt.c b/copt/copt.c
index 83ee18f..6cef964 100644
--- a/copt/copt.c
+++ b/copt/copt.c
@@ -302,13 +302,6 @@ static void readinfile(char *filename, char comment)
(void)fclose(fp);
}
-
-
-/*
- * Eval an expression into an integer number
- */
-static long eval(char *str, int len)
-{
#define NO_OP 0
#define ADD_OP 1
#define SUB_OP 2
@@ -317,39 +310,52 @@ static long eval(char *str, int len)
#define SHL_OP 5
#define SHR_OP 6
- char *oldcp, *cp, c;
long retval = 0;
long num = 0;
int sign = 1;
int base = 10;
- int state = 0;
int op = NO_OP;
+
+/* Apply operation to current numeric value */
+static void doretval(void)
+{
+ switch (op) {
+ case NO_OP: retval = num * sign;
+ break;
+ case ADD_OP: retval += num * sign;
+ break;
+ case SUB_OP: retval -= num * sign;
+ break;
+ case MUL_OP: retval *= num * sign;
+ break;
+ case DIV_OP: retval /= num * sign;
+ break;
+ case SHL_OP: retval <<= num;
+ break;
+ case SHR_OP: retval >>= num;
+ break;
+ }
+ op = NO_OP;
+ num = 0;
+ sign = 1;
+ base = 10;
+}
+
+
+/*
+ * Eval an expression into an integer number
+ */
+static long eval(char *str, int len)
+{
+ char *oldcp, *cp, c;
+ int state = 0;
int i, varnum;
- /* Apply operation to current numeric value */
- static void doretval(void)
- {
- switch (op) {
- case NO_OP: retval = num * sign;
- break;
- case ADD_OP: retval += num * sign;
- break;
- case SUB_OP: retval -= num * sign;
- break;
- case MUL_OP: retval *= num * sign;
- break;
- case DIV_OP: retval /= num * sign;
- break;
- case SHL_OP: retval <<= num;
- break;
- case SHR_OP: retval >>= num;
- break;
- }
- op = NO_OP;
- num = 0;
- sign = 1;
- base = 10;
- }
+ retval = 0;
+ num = 0;
+ sign = 1;
+ base = 10;
+ op = NO_OP;
/* Scan through whole string and decode it */
for (cp = str, i = 0; *cp && i < len; cp++, i++) {