Commit Diff


commit - c9ee9e62f63bb875d2e49c455cbba97fc471b814
commit + 3fe9465ac99f9aa3a23f71f01df9e097f0c1da87
blob - 521ef7a7d90564d89bb4e2741c02727fcc18d3a5
blob + 5e0267ff8cfc26a9704a439c0625d63f84c04999
--- src/cmd/mk/arc.c
+++ src/cmd/mk/arc.c
@@ -41,7 +41,7 @@ nrep(void)
 
 	sym = symlook("NREP", S_VAR, 0);
 	if(sym){
-		w = (Word *) sym->value;
+		w = sym->u.ptr;
 		if (w && w->s && *w->s)
 			nreps = atoi(w->s);
 	}
blob - 9955b3fd9c9eda9e0399555119cc11f4694a6299
blob + 01288908f8d8ffbb632eb153f4cd41107aeaa331
--- src/cmd/mk/archive.c
+++ src/cmd/mk/archive.c
@@ -55,15 +55,15 @@ atimeof(int force, char *name)
 	t = mtime(archive);
 	sym = symlook(archive, S_AGG, 0);
 	if(sym){
-		if(force || (t > (long)sym->value)){
+		if(force || (t > sym->u.value)){
 			atimes(archive);
-			sym->value = (void *)t;
+			sym->u.value = t;
 		}
 	}
 	else{
 		atimes(archive);
 		/* mark the aggegate as having been done */
-		symlook(strdup(archive), S_AGG, "")->value = (void *)t;
+		symlook(strdup(archive), S_AGG, "")->u.value = t;
 	}
 		/* truncate long member name to sizeof of name field in archive header */
 	if(dolong)
@@ -72,7 +72,7 @@ atimeof(int force, char *name)
 		snprint(buf, sizeof(buf), "%s(%.*s)", archive, SARNAME, member);
 	sym = symlook(buf, S_TIME, 0);
 	if (sym)
-		return (long)sym->value;	/* uggh */
+		return sym->u.value;
 	return 0;
 }
 
@@ -196,7 +196,7 @@ atimes(char *ar)
 		}
 		snprint(buf, sizeof buf, "%s(%s)", ar, name);
 		sym = symlook(strdup(buf), S_TIME, (void *)t);
-		sym->value = (void *)t;
+		sym->u.value = t;
 	skip:
 		t = atol(h.size);
 		if(t&01) t++;
blob - ffb2762e75e30f59f549007cd3ee8c9a785b1247
blob + 11df34e31051127ecc860caeeeb079dce3e24498
--- src/cmd/mk/env.c
+++ src/cmd/mk/env.c
@@ -79,7 +79,7 @@ ecopy(Symtab *s)
 	for(p = myenv; *p; p++)
 		if(strcmp(*p, s->name) == 0)
 			return;
-	envinsert(s->name, (Word *) s->value);
+	envinsert(s->name, s->u.ptr);
 }
 
 void
blob - 2533343fd8ddabab29e513918c7f0e53bb0c3c35
blob + d9409ba7a5cce5047aae2db964e1849bc6caf9db
--- src/cmd/mk/file.c
+++ src/cmd/mk/file.c
@@ -23,7 +23,7 @@ timeof(char *name, int force)
 
 	sym = symlook(name, S_TIME, 0);
 	if (sym)
-		return (long) sym->value;		/* uggh */
+		return sym->u.value;
 
 	t = mtime(name);
 	if(t == 0)
@@ -77,7 +77,7 @@ timeinit(char *s)
 		} while(*s);
 		c = *s;
 		*s = 0;
-		symlook(strdup(cp), S_TIME, (void *)t)->value = (void *)t;
+		symlook(strdup(cp), S_TIME, (void *)t)->u.value = t;
 		if (c)
 			*s++ = c;
 		while(*s){
blob - da346c0345bac3bdb5421017ad00b84b4c9cdd00
blob + 4c46f7bb922f04452b6580af746aaae05744a9fc
--- src/cmd/mk/graph.c
+++ src/cmd/mk/graph.c
@@ -40,14 +40,14 @@ applyrules(char *target, char *cnt)
 /*	print("applyrules(%lux='%s')\n", target, target); */
 	sym = symlook(target, S_NODE, 0);
 	if(sym)
-		return (Node *)(sym->value);
+		return sym->u.ptr;
 	target = strdup(target);
 	node = newnode(target);
 	head.n = 0;
 	head.next = 0;
 	sym = symlook(target, S_TARGET, 0);
 	memset((char*)rmatch, 0, sizeof(rmatch));
-	for(r = sym? (Rule *)(sym->value):0; r; r = r->chain){
+	for(r = sym? sym->u.ptr:0; r; r = r->chain){
 		if(r->attr&META) continue;
 		if(strcmp(target, r->target)) continue;
 		if((!r->recipe || !*r->recipe) && (!r->tail || !r->tail->s || !*r->tail->s)) continue;	/* no effect; ignore */
blob - 5ae4fc214309bbd103137c386cdf8c153045b368
blob + 654d063496c03c82ffbd581343c49714457bcba4
--- src/cmd/mk/mk.c
+++ src/cmd/mk/mk.c
@@ -221,11 +221,11 @@ outofdate(Node *node, Arc *arc, int eval)
 				str = strdup(buf);
 			ret = pcmp(arc->prog, node->name, arc->n->name, arc->r->shellt, arc->r->shellcmd);
 			if(sym)
-				sym->value = (void *)ret;
+				sym->u.value = ret;
 			else
 				symlook(str, S_OUTOFDATE, (void *)ret);
 		} else
-			ret = (int)sym->value;
+			ret = sym->u.value;
 		return(ret-1);
 	} else if(strchr(arc->n->name, '(') && arc->n->time == 0)  /* missing archive member */
 		return 1;
blob - 81f9d70c5232014cb6a7b7c82e613c567a18b85e
blob + a40e9ded8078ffe24f17e9b41830f41c191d87fc
--- src/cmd/mk/mk.h
+++ src/cmd/mk/mk.h
@@ -129,7 +129,10 @@ typedef struct Symtab
 {
 	short		space;
 	char		*name;
-	void		*value;
+	union {
+		void	*ptr;
+		uintptr	value;
+	} u;
 	struct Symtab	*next;
 } Symtab;
 
blob - bf7f8ab1e8a865d23ea513f2338770c0e3988878
blob + 7993e091b69c77a7de0c30a28e0670ce4a1796cd
--- src/cmd/mk/recipe.c
+++ src/cmd/mk/recipe.c
@@ -59,7 +59,7 @@ dorecipe(Node *node)
 			aw = aw->next;
 			if((s = symlook(buf, S_NODE, 0)) == 0)
 				continue;	/* not a node we are interested in */
-			n = (Node *)s->value;
+			n = s->u.ptr;
 			if(aflag == 0 && n->time) {
 				for(a = n->prereqs; a; a = a->next)
 					if(a->n && outofdate(n, a, 0))
blob - d73595d2614c113977806f2d5b7e82ff3b544ff7
blob + 439d611483ef1c1f220d0ddd32b0edfa21edfdba
--- src/cmd/mk/rule.c
+++ src/cmd/mk/rule.c
@@ -15,7 +15,7 @@ addrule(char *head, Word *tail, char *body, Word *ahea
 	r = 0;
 	reuse = 0;
 	if(sym = symlook(head, S_TARGET, 0)){
-		for(r = (Rule *)sym->value; r; r = r->chain)
+		for(r = sym->u.ptr; r; r = r->chain)
 			if(rcmp(r, head, tail) == 0){
 				reuse = 1;
 				break;
@@ -35,7 +35,7 @@ addrule(char *head, Word *tail, char *body, Word *ahea
 	r->prog = prog;
 	r->rule = nrules++;
 	if(!reuse){
-		rr = (Rule *)symlook(head, S_TARGET, (void *)r)->value;
+		rr = symlook(head, S_TARGET, (void *)r)->u.ptr;
 		if(rr != r){
 			r->chain = rr->chain;
 			rr->chain = r;
blob - 439cc0a5c85fee67304c6b05ea25b63c00eed081
blob + dd225c0d0be0936b6ded1823e79481ebe867d7e8
--- src/cmd/mk/run.c
+++ src/cmd/mk/run.c
@@ -168,7 +168,7 @@ again:		/* rogue processes */
 	for(w = j->t; w; w = w->next){
 		if((s = symlook(w->s, S_NODE, 0)) == 0)
 			continue;	/* not interested in this node */
-		update(uarg, (Node *)s->value);
+		update(uarg, s->u.ptr);
 	}
 	if(nrunning < nproclimit)
 		sched();
@@ -182,7 +182,7 @@ nproc(void)
 	Word *w;
 
 	if(sym = symlook("NPROC", S_VAR, 0)) {
-		w = (Word *) sym->value;
+		w = sym->u.ptr;
 		if (w && w->s && w->s[0])
 			nproclimit = atoi(w->s);
 	}
blob - 06a4d146563e8d41747ebb7fd88fff4f7d82eb4a
blob + 17674c437b10c8ca383ea3f423f3e8e14f10c953
--- src/cmd/mk/symtab.c
+++ src/cmd/mk/symtab.c
@@ -38,7 +38,7 @@ symlook(char *sym, int space, void *install)
 	s = (Symtab *)Malloc(sizeof(Symtab));
 	s->space = space;
 	s->name = sym;
-	s->value = install;
+	s->u.ptr = install;
 	s->next = hash[h];
 	hash[h] = s;
 	return(s);
blob - 7ecce69fa2b83e3a3c50c4046c8065b1ed991bbe
blob + c63d3cefd0246d4644ba8a9e2758eb349beea255
--- src/cmd/mk/unix.c
+++ src/cmd/mk/unix.c
@@ -41,7 +41,7 @@ readenv(void)
 			continue;
 		s = strdup(*p);
 		setvar(s, (void *)w);
-		symlook(s, S_EXPORTED, (void*)"")->value = (void*)"";
+		symlook(s, S_EXPORTED, (void*)"")->u.ptr = "";
 	}
 }
 
blob - 8429918d57093e0a2d27cf1262f086df04588923
blob + 3efe3827836e8171774fc2ccc6765b2314f1f44c
--- src/cmd/mk/var.c
+++ src/cmd/mk/var.c
@@ -1,9 +1,9 @@
 #include	"mk.h"
 
 void
-setvar(char *name, void *value)
+setvar(char *name, void *ptr)
 {
-	symlook(name, S_VAR, value)->value = value;
+	symlook(name, S_VAR, ptr)->u.ptr = ptr;
 	symlook(name, S_MAKEVAR, (void*)"");
 }
 
@@ -13,7 +13,7 @@ print1(Symtab *s)
 	Word *w;
 
 	Bprint(&bout, "\t%s=", s->name);
-	for (w = (Word *) s->value; w; w = w->next)
+	for (w = s->u.ptr; w; w = w->next)
 		Bprint(&bout, "'%s'", w->s);
 	Bprint(&bout, "\n");
 }
blob - 5b7c984a72529dd3fec588acabe3c464ac19d051
blob + 223ba78dfd812344a02bfb0b31897d9b0e6ca907
--- src/cmd/mk/varsub.c
+++ src/cmd/mk/varsub.c
@@ -66,7 +66,7 @@ varmatch(char *name, char **s)
 	sym = symlook(name, S_VAR, 0);
 	if(sym){
 			/* check for at least one non-NULL value */
-		for (w = (Word*)sym->value; w; w = w->next)
+		for (w = sym->u.ptr; w; w = w->next)
 			if(w->s && *w->s)
 				return wdup(w);
 	}
@@ -113,10 +113,10 @@ expandvar(char **s)
 	*s = end+1;
 	
 	sym = symlook(buf->start, S_VAR, 0);
-	if(sym == 0 || sym->value == 0)
+	if(sym == 0 || sym->u.ptr == 0)
 		w = newword(buf->start);
 	else
-		w = subsub((Word*) sym->value, cp, end);
+		w = subsub(sym->u.ptr, cp, end);
 	freebuf(buf);
 	return w;
 }