Hello all, We're using a slightly modified Samba as part of a larger product. Among other things, we've taught Samba to expand environment variables in the config file; occurrences of `%$(envvar)' are replaced with the value of the environment variable `envvar'. Is there any reason why Samba shouldn't have this capability? I think that would be a nice feature to have (and it would save us some work when merging our mods with a newer version, too :-). Anyway, I've attached a patch against 1.9.18p2 to do this. Comments appreciated. Regards, Brane -- Branko Cibej <branko.cibej@hermes.si> HERMES SoftLab, Litijska 51, 1000 Ljubljana, Slovenia phone: (++386 61) 186 53 49 fax: (++386 61) 186 52 70 -------------- next part -------------- 1998-02-03 19:12 Branko Cibej <branko.cibej@hermes.si> * util.c (standard_sub_basic): Replace occurrences of `%$(envvar)' with the value of the environment variable `envvar'. *** util.c Mon Jan 26 21:05:48 1998 --- util.c Tue Feb 3 17:54:01 1998 *************** *** 3807,3812 **** --- 3807,3838 ---- case 'h' : string_sub(p,"%h", myhostname); break; case 'm' : string_sub(p,"%m", remote_machine); break; case 'v' : string_sub(p,"%v", VERSION); break; + case '$' : /* Expand environment variables */ + { + fstring envname; + char *envval; + char *q, *r; + + if (*(p+2) != '(') { p+=2; break; } + if ((q = strchr(p,')')) == NULL) + { + DEBUG(0,("Unterminated environment variable [%s]\n", p)); + p+=2; break; + } + + r = p+3; + strncpy(envname,r,q-r); + envname[q-r] = '\0'; + if ((envval = getenv(envname)) == NULL) + { + DEBUG(0,("Environment variable [%s] not set\n", envname)); + envval = ""; + } + strncpy(envname,p,q+1-p); + envname[q+1-p] = '\0'; + string_sub(p,envname,envval); + break; + } case '\0': p++; break; /* don't run off end if last character is % */ default : p+=2; break; }