version 1.4, 1997/07/13 23:54:03 |
version 1.5, 1997/11/14 00:24:01 |
|
|
assign(name, value) |
assign(name, value) |
char name[], value[]; |
char name[], value[]; |
{ |
{ |
register struct var *vp; |
struct var *vp; |
register int h; |
int h; |
|
|
h = hash(name); |
h = hash(name); |
vp = lookup(name); |
vp = lookup(name); |
|
|
return(""); |
return(""); |
len = strlen(str) + 1; |
len = strlen(str) + 1; |
if ((new = (char *)malloc(len)) == NULL) |
if ((new = (char *)malloc(len)) == NULL) |
panic("Out of memory"); |
errx(1, "Out of memory"); |
(void)memcpy(new, str, len); |
(void)memcpy(new, str, len); |
return(new); |
return(new); |
} |
} |
|
|
value(name) |
value(name) |
char name[]; |
char name[]; |
{ |
{ |
register struct var *vp; |
struct var *vp; |
|
|
if ((vp = lookup(name)) == NOVAR) |
if ((vp = lookup(name)) == NOVAR) |
return(getenv(name)); |
return(getenv(name)); |
|
|
|
|
struct var * |
struct var * |
lookup(name) |
lookup(name) |
register char name[]; |
char name[]; |
{ |
{ |
register struct var *vp; |
struct var *vp; |
|
|
for (vp = variables[hash(name)]; vp != NOVAR; vp = vp->v_link) |
for (vp = variables[hash(name)]; vp != NOVAR; vp = vp->v_link) |
if (*vp->v_name == *name && equal(vp->v_name, name)) |
if (*vp->v_name == *name && equal(vp->v_name, name)) |
|
|
|
|
struct grouphead * |
struct grouphead * |
findgroup(name) |
findgroup(name) |
register char name[]; |
char name[]; |
{ |
{ |
register struct grouphead *gh; |
struct grouphead *gh; |
|
|
for (gh = groups[hash(name)]; gh != NOGRP; gh = gh->g_link) |
for (gh = groups[hash(name)]; gh != NOGRP; gh = gh->g_link) |
if (*gh->g_name == *name && equal(gh->g_name, name)) |
if (*gh->g_name == *name && equal(gh->g_name, name)) |
|
|
printgroup(name) |
printgroup(name) |
char name[]; |
char name[]; |
{ |
{ |
register struct grouphead *gh; |
struct grouphead *gh; |
register struct group *gp; |
struct group *gp; |
|
|
if ((gh = findgroup(name)) == NOGRP) { |
if ((gh = findgroup(name)) == NOGRP) { |
printf("\"%s\": not a group\n", name); |
printf("\"%s\": not a group\n", name); |
|
|
*/ |
*/ |
int |
int |
hash(name) |
hash(name) |
register char *name; |
char *name; |
{ |
{ |
register h = 0; |
int h = 0; |
|
|
while (*name) { |
while (*name) { |
h <<= 2; |
h <<= 2; |