Changeset 431

Show
Ignore:
Timestamp:
05/22/07 21:28:31 (1 year ago)
Author:
athomas
Message:

On Dir: Only expand environment variables set explicitly by On Dir. Let the shell pick up the rest.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ondir/trunk/conf.c

    r333 r431  
    156156} 
    157157 
    158 /* Expand all environment variables */ 
     158/* Expand internal ONDIR environment variables */ 
    159159char *expand_envars(const char *in) { 
    160160int inlen = strlen(in), outmax = inlen * 2, outlen = 0; 
     
    181181                                strncpy(var, varstart, varlen); 
    182182                                var[varlen] = 0; 
    183                                 val = getenv(var); 
    184                                 if (val) { 
    185                                 int vallen = strlen(val); 
    186  
    187                                         if (outlen + vallen >= outmax) { 
    188                                                 outmax = outmax * 2 + vallen; 
    189                                                 out = realloc(out, outmax); 
     183 
     184                                if (strcmp(var, "ONDIRWD") && (var[0] < '0' || var[0] > '9')) { 
     185                                        in = mark; 
     186                                } else { 
     187                                        val = getenv(var); 
     188                                        if (val) { 
     189                                        int vallen = strlen(val); 
     190 
     191                                                if (outlen + vallen >= outmax) { 
     192                                                        outmax = outmax * 2 + vallen; 
     193                                                        out = realloc(out, outmax); 
     194                                                } 
     195                                                strcat(out, val); 
     196                                                outlen += vallen; 
     197                                                in = mark + varlen + bracketed * 2 + 1; 
     198                                                continue; 
     199                                        } else { 
     200                                                in = mark; 
     201                                                out[outlen] = 0; 
    190202                                        } 
    191                                         strcat(out, val); 
    192                                         outlen += vallen; 
    193                                         in = mark + varlen + bracketed * 2 + 1; 
    194                                         continue; 
    195                                 } else { 
    196                                         in = mark; 
    197                                         out[outlen] = 0; 
    198203                                } 
    199204                        }