--- /dev/null
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#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<max) ? *from : max;
+ from++;
+
+ for (i=0; i<n; i++) *to++ = *from++;
+ if (n<max) *to='\0';
+ }