#include #include #include #define MAXENV 1024 char *envstr; char *mgetenv(str) char *str; { static int EnvInit=0; char *eptr, *esptr, *bp; int i,esize; FILE *fenv; if (EnvInit==0) { EnvInit=1; if ((fenv=fopen("environment","r"))!=NULL) { if ((envstr=malloc((size_t)(esize=MAXENV)))==NULL) { fclose(fenv); goto noenv;} esptr=envstr; esize -= 10; while (fgets(esptr,esize,fenv)!=NULL) { if ((bp=strchr(esptr,'\n'))!=NULL) *bp='\0'; esize -= (i=strlen(esptr)+1); esptr += i; } fclose(fenv); esptr='\0'; } else envstr=NULL; } if (envstr==NULL) return NULL; else { for (eptr=envstr; *eptr; eptr += strlen(eptr)+1) { if (strncmp(str,eptr,(long)strlen(str))==0) { return strchr(eptr,'=')+1; } } return NULL; } noenv: envstr=NULL; return NULL; } strnpcpy(to,from,max) char *to; Str255 from; size_t max; { size_t i, n; n = (*from