Changeset 3739 for trunk/tools


Ignore:
Timestamp:
Jun 21, 2000, 8:42:17 PM (25 years ago)
Author:
bird
Message:

Corrected HELPNDX.
Corrected/rewrote some the enviroment add functions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/DailyBuild/odin32env.cmd

    r3667 r3739  
    1 /* $Id: odin32env.cmd,v 1.7 2000-06-07 22:15:28 bird Exp $
     1/* $Id: odin32env.cmd,v 1.8 2000-06-21 18:42:17 bird Exp $
    22 *
    33 * Sets the build environment.
     
    1919    call EnvVar_Set 0, 'HOME',      'd:\knut\home'
    2020    call EnvVar_Set 0, 'USER',      'bird'
     21
    2122
    2223    /*
     
    8889    call EnvVar_AddFront fRM, 'INFOPATH',           sEMXForw'/info'
    8990    call EnvVar_Set      fRM, 'EMXBOOK',            'emxdev.inf+emxlib.inf+emxgnu.inf+emxbsd.inf'
    90     call EnvVar_AddFront fRM, 'HELPNDX',            'emxbook.ndx', '+'
     91    call EnvVar_AddFront fRM, 'HELPNDX',            'emxbook.ndx', '+', 1
    9192    call EnvVar_Set      fRM, 'EMXOPT',             '-c -n -h1024'
    9293    if EnvVar_Get('TERM') = '' then do
     
    210211    call EnvVar_Set      fRM, 'sombase',        sTkMain'\SOM'
    211212    call EnvVar_Set      fRM, 'somruntime',     sTkMain'\SOM\COMMON'
     213    call EnvVar_AddEnd   fRM, 'helpndx',        'EPMKWHLP.NDX+', '+', 1
    212214
    213215    call EnvVar_Set      fRM, 'cpref',          'CP1.INF+CP2.INF+CP3.INF'
     
    269271    call EnvVar_AddEnd   fRM, 'lib',         sTkMain'\SPEECH\LIB;'
    270272    call EnvVar_AddFront fRM, 'lib',         sTkMain'\lib;'
    271     call EnvVar_AddFront fRM, 'helpndx',     'EPMKWHLP.NDX+', '+'
     273    call EnvVar_AddEnd   fRM, 'helpndx',     'EPMKWHLP.NDX', '+', 1
    272274    call EnvVar_AddFront fRM, 'ipfc',        sTkMain'\ipfc;'
    273275    call EnvVar_Set      fRM, 'LANG',        'en_us'
     
    337339
    338340    /* FIXME THESE USES '+' AS SEPERATOR NOT ';'!!! */
    339     call EnvVar_AddFront fRM, 'helpndx',        'EPMKWHLP.NDX+CPP.NDX+CPPBRS.NDX', '+'
     341    call EnvVar_AddFront fRM, 'helpndx',        'CPP.NDX+CPPBRS.NDX', '+',1
    340342    call EnvVar_AddFront fRM, 'ipf_keys',       'SHOWNAV'
    341343    return 0;
     
    398400 */
    399401EnvVar_addFront: procedure
    400     parse arg fRM, sEnvVar, sToAdd, sSeparator
    401 
    402     /* sets default separator if not specified. */
     402    parse arg fRM, sEnvVar, sToAdd, sSeparator, fNoEnd
     403
     404    /* Sets default separator and fNoEnd if not specified. */
    403405    if (sSeparator = '') then sSeparator = ';';
    404 
    405     /* checks that sToAdd ends with an ';'. Adds one if not. */
     406    if (fNoEnd = '')     then fNoEnd = 0;
     407
     408    /* Add evt. missing separator at end. */
    406409    if (substr(sToAdd, length(sToAdd), 1) <> sSeparator) then
    407410        sToAdd = sToAdd || sSeparator;
    408411
    409     /* check and evt. remove ';' at start of sToAdd */
    410     if (substr(sToAdd, 1, 1) = ';') then
     412    /* Check and evt. remove separator at start of sToAdd */
     413    if (substr(sToAdd, 1, 1) = cSeparator) then
    411414        sToAdd = substr(sToAdd, 2);
    412415
    413     /* loop thru sToAdd */
     416    /* Loop thru sToAdd */
    414417    rc = 0;
    415418    i = length(sToAdd);
    416419    do while i > 1 & rc = 0
    417420        j = lastpos(sSeparator, sToAdd, i-1);
    418         rc = EnvVar_AddFront2(fRM, sEnvVar, substr(sToAdd, j+1, i - j), sSeparator);
     421        rc = _EnvVar_AddFront2(fRM, sEnvVar, substr(sToAdd, j+1, i - j), sSeparator, fNoEnd);
    419422        i = j;
    420423    end
     
    428431 *                 is at the end and don't end with a ';'.
    429432 */
    430 EnvVar_AddFront2: procedure
    431     parse arg fRM, sEnvVar, sToAdd, sSeparator
    432 
    433     /* sets default separator if not specified. */
    434     if (sSeparator = '') then sSeparator = ';';
    435 
    436     /* checks that sToAdd ends with a separator. Adds one if not. */
     433_EnvVar_AddFront2: procedure
     434    parse arg fRM, sEnvVar, sToAdd, sSeparator, fNoEnd
     435
     436    /* Add evt. missing separator at end. */
    437437    if (substr(sToAdd, length(sToAdd), 1) <> sSeparator) then
    438438        sToAdd = sToAdd || sSeparator;
    439439
    440     /* check and evt. remove the separator at start of sToAdd */
     440    /* Check and evt. remove the separator at start of sToAdd */
    441441    if (substr(sToAdd, 1, 1) = sSeparator) then
    442442        sToAdd = substr(sToAdd, 2);
    443443
    444     /* Get original variable value */
    445     sOrgEnvVar = EnvVar_Get(sEnvVar);
    446 
    447     /* Remove previously sToAdd if exists. (Changing sOrgEnvVar). */
    448     i = pos(translate(sToAdd), translate(sOrgEnvVar));
    449     if (i > 0) then
    450         sOrgEnvVar = substr(sOrgEnvVar, 1, i-1) || substr(sOrgEnvVar, i + length(sToAdd));
    451 
    452     /* set environment */
     444    /* Get original variable without sToAdd. */
     445    sOrgEnvVar = _EnvVar_RemoveFrom(EnvVar_Get(sEnvVar),,
     446                                    sToAdd, sSeparator, fNoEnd);
     447
     448    /* If only removing - nothing more to do */
    453449    if (fRM) then
    454450        return EnvVar_Set(0, sEnvVar, sOrgEnvVar);
    455     return EnvVar_Set(0, sEnvVar, sToAdd||sOrgEnvVar);
     451
     452    /* Create new value */
     453    sNewValue = sToAdd || sOrgEnvVar;
     454
     455    /* Remove or add separator if necessary */
     456    if (fNoEnd  & substr(sNewValue, length(sNewValue), 1) =  sSeparator) then
     457        sNewValue = substr(sNewValue, 1, length(sNewValue) - 1);
     458    if (\fNoEnd & substr(sNewValue, length(sNewValue), 1) <> sSeparator) then
     459        sNewValue = sNewValue || sSeparator;
     460
     461    /* Set environment */
     462    return EnvVar_Set(0, sEnvVar, sNewValue);
    456463
    457464
     
    464471 */
    465472EnvVar_addEnd: procedure
    466     parse arg fRM, sEnvVar, sToAdd, sSeparator
    467 
    468     /* sets default separator if not specified. */
     473    parse arg fRM, sEnvVar, sToAdd, sSeparator, fNoEnd
     474
     475    /* Sets default separator and fNoEnd if not specified. */
    469476    if (sSeparator = '') then sSeparator = ';';
    470 
    471     /* checks that sToAdd ends with a separator. Adds one if not. */
     477    if (fNoEnd = '')     then fNoEnd = 0;
     478
     479    /* Add evt. missing separator at end. */
    472480    if (substr(sToAdd, length(sToAdd), 1) <> sSeparator) then
    473481        sToAdd = sToAdd || sSeparator;
    474482
    475     /* check and evt. remove ';' at start of sToAdd */
     483    /* Check and evt. remove separator at start of sToAdd */
    476484    if (substr(sToAdd, 1, 1) = sSeparator) then
    477485        sToAdd = substr(sToAdd, 2);
    478486
    479     /* loop thru sToAdd */
     487    /* Loop thru sToAdd */
    480488    rc = 0;
    481489    i = length(sToAdd);
    482490    do while i > 1 & rc = 0
    483491        j = lastpos(sSeparator, sToAdd, i-1);
    484         rc = EnvVar_AddEnd2(fRM, sEnvVar, substr(sToAdd, j+1, i - j), sSeparator);
     492        rc = _EnvVar_AddEnd2(fRM, sEnvVar, substr(sToAdd, j+1, i - j), sSeparator, fNoEnd);
    485493        i = j;
    486494    end
     
    494502 *                 is at the end and don't end with a ';'.
    495503 */
    496 EnvVar_AddEnd2: procedure
    497     parse arg fRM, sEnvVar, sToAdd, sSeparator
    498 
    499     /* sets default separator if not specified. */
    500     if (sSeparator = '') then sSeparator = ';';
    501 
    502     /* checks that sToAdd ends with a separator. Adds one if not. */
    503     if (substr(sToAdd, length(sToAdd), 1) <> sSeparator) then
    504         sToAdd = sToAdd || sSeparator;
    505 
    506     /* check and evt. remove separator at start of sToAdd */
     504_EnvVar_AddEnd2: procedure
     505    parse arg fRM, sEnvVar, sToAdd, sSeparator, fNoEnd
     506
     507    /* Check and evt. remove separator at start of sToAdd */
    507508    if (substr(sToAdd, 1, 1) = sSeparator) then
    508509        sToAdd = substr(sToAdd, 2);
    509510
    510     /* Get original variable value */
    511     sOrgEnvVar = EnvVar_Get(sEnvVar);
    512 
    513     /* Remove previously sToAdd if exists. (Changing sOrgEnvVar). */
    514     i = pos(translate(sToAdd), translate(sOrgEnvVar));
    515     if (i > 0) then
    516         sOrgEnvVar = substr(sOrgEnvVar, 1, i-1) || substr(sOrgEnvVar, i + length(sToAdd));
    517 
    518     /* checks that sOrgEnvVar ends with a separator. Adds one if not. */
    519     if (substr(sOrgEnvVar, length(sOrgEnvVar), 1) <> sSeparator) then
    520         sOrgEnvVar = sOrgEnvVar || sSeparator;
    521 
    522     /* set environment */
    523     if fRM then return EnvVar_Set(0, sEnvVar, sOrgEnvVar);
     511    /* Get original variable without sToAdd. */
     512    sOrgEnvVar = _EnvVar_RemoveFrom(EnvVar_Get(sEnvVar),,
     513                                    sToAdd, sSeparator, fNoEnd);
     514
     515    /* If we're only to remove the sToAdd value, we're finised now. */
     516    if (fRM) then
     517        reutrn EnvVar_Set(0, sEnvVar, sOrgEnvVar);
     518
     519    /* fNoEnd: remove separator at end (if any) and remove previously sToAdd. */
     520    if (fNoEnd & substr(sToAdd, length(sToAdd), 1) = sSeparator) then
     521        sToAdd = substr(sToAdd, 1, length(sToAdd) - 1);
     522
     523    /* Add separator to sOrgEnvVar if fNoEnd and sOrgEnvVar is not empty */
     524    if (fNoEnd & length(sOrgEnvVar) > 0) then
     525        return EnvVar_Set(0, sEnvVar, sOrgEnvVar||sSeparator||sToAdd);
    524526    return EnvVar_Set(0, sEnvVar, sOrgEnvVar||sToAdd);
     527
     528
     529/*
     530 * Removes a value for a separated enviroment string.
     531 */
     532_EnvVar_RemoveFrom: procedure
     533    parse arg sOrgValue, sValue, sSeparator, fNoEnd
     534
     535    /* test for empty org value */
     536    if (sOrgValue = '') then
     537        return '';
     538
     539    /* remove any separators in front or end of sValue. */
     540    if (substr(sValue, 1, 1) = sSeparator) then
     541        sValue = substr(sValue, 2);
     542    if (substr(sValue, length(sValue), 1) = sSeparator) then
     543        sValue = substr(sValue, 1, length(sValue) - 1);
     544
     545    /* look for sValue */
     546    i = pos(translate(sValue), translate(sOrgValue));
     547    do while (i > 0)
     548        cch = length(sValue);
     549        fEnd = length(sOrgValue) <= cch + i;
     550
     551        /* check if ok */
     552        if (i <= 1) then fOkFront = 1;
     553        else    fOkFront = (substr(sOrgValue, i - 1, 1) = sSeparator);
     554        if (fOkFront & (fEnd | substr(sOrgValue, i + cch, 1) = sSeparator)) then
     555        do
     556            /* addjust length / index to remove separators */
     557            if (i > 1)         then
     558            do
     559                cch = cch + 1;
     560                i = i - 1;
     561            end
     562            if (\fEnd & i = 1) then
     563                cch = cch + 1;
     564
     565            /* create new sOrgValue */
     566            if (i > 1) then
     567                sOrgValue = substr(sOrgValue, 1, i - 1) || substr(sOrgValue, i + cch);
     568            else if (cch < length(sOrgValue)) then
     569                sOrgValue = substr(sOrgValue, i + cch);
     570            else
     571                sOrgValue = '';
     572        end
     573        else
     574            i = i + 1;
     575
     576        /* more occurences? */
     577        j = i;
     578        i = pos(translate(sValue), translate(sOrgValue), i);
     579    end
     580
     581    /* remove any start separator */
     582    do while (length(sOrgValue) > 0)
     583        if (substr(sOrgValue, 1, 1) <> sSeparator) then
     584            leave
     585        sOrgValue = substr(sOrgValue, 2);
     586    end
     587
     588    /* Remove all separators at end */
     589    do while (length(sOrgValue) > 1)
     590        if (substr(sOrgValue, length(sOrgValue), 1) <> sSeparator) then
     591            leave;
     592        sOrgValue = substr(sOrgValue, 1, length(sOrgValue) - 1);
     593    end
     594
     595    /* Just in case fix for value with only separator. (paranoia) */
     596    if (length(sOrgValue) = 1 & sOrgValue = sSeparator) then
     597        sOrgValue = '';
     598
     599    /* Add end separator */
     600    if (length(sOrgValue) > 0 & \fNoEnd) then
     601        sOrgValue = sOrgValue || sSeparator;
     602
     603    return sOrgValue;
    525604
    526605
     
    555634
    556635
     636
Note: See TracChangeset for help on using the changeset viewer.