arnold@gatech.UUCP (Mister Snufilupagus) (09/17/84)
Here is a useful function which I wrote some time ago. It will expand environment variables inside file names. This is particularly useful for any screen editors or text formatters you may happent to be writing... (That's what I used it for...) An environment variable starts with a dollar sign. To get a literal dollar sign, escape it with a \. ---------------- cut here -------------------- cat > expandenv.c << 'End of expandenv.c' /* expand_env --- expand environment variables in file names */ #include <stdio.h> char *expand_env (file) register char *file; /* file name to be expanded */ { register int i, j, k; /* indices */ char *getenv (); char var[BUFSIZ]; /* variable name */ char *val; /* value of environment variable */ static char buf[BUFSIZ * 2]; /* expanded file name, static */ i = j = k = 0; while (file[i] != '\0') { if (file[i] == '\\') { if (file[i+1] == '$') { buf[j++] = file[++i]; /* the actual $ */ i++; /* for next time around the loop */ } else buf[j++] = file[i++]; /* the \ */ } else if (file[i] != '$') /* normal char */ buf[j++] = file[i++]; else /* environment var */ { i++; /* skip $ */ k = 0; while (file[i] != '/' && file[i] != '\0') var[k++] = file[i++]; /* get var name */ var[k] = '\0'; if ((val = getenv (var)) != NULL) for (k = 0; val[k] != '\0'; k++) buf[j++] = val[k]; /* copy val into file name */ /* else var not in enviroment; leave file name alone, multiple slashes are legal */ } } buf[j] = '\0'; return (buf); } End of expandenv.c exit -- Arnold Robbins CSNET: arnold@gatech ARPA: arnold%gatech.csnet@csnet-relay.arpa UUCP: { akgua, allegra, hplabs, ihnp4 }!gatech!arnold Can you tell me how to get, how to get to Sesame Street?
ron@trsvax.UUCP (09/21/84)
> Can you tell me how to get, how to get to Sesame Street?
:-) Yes, go down three functions and turn to the right. Do not pass GO. :-)