VirtualBox

Changeset 3173 in kBuild for trunk/src/kmk/kmkbuiltin/kSubmit.c


Ignore:
Timestamp:
Mar 21, 2018 9:37:41 PM (7 years ago)
Author:
bird
Message:

kmkbultin: environment fixes and stats.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kmk/kmkbuiltin/kSubmit.c

    r3156 r3173  
    12501250    int             iArg;
    12511251    unsigned        cAllocatedEnvVars;
    1252     unsigned        iEnvVar;
    12531252    unsigned        cEnvVars;
    1254     char          **papszEnv            = NULL;
     1253    char          **papszEnvVars;
    12551254    const char     *pszExecutable       = NULL;
    12561255    int             iPostCmd            = argc;
     
    12671266    /*
    12681267     * Create default program environment.
     1268     *
     1269     * Note! We only clean up the environment on successful return, assuming
     1270     *       make will stop after that.
    12691271     */
    12701272    if (getcwd_fs(szCwd, cbCwdBuf) != NULL)
     
    12731275        return err(1, "getcwd_fs failed\n");
    12741276
    1275     papszEnv = pChild->environment;
    1276     if (!papszEnv)
    1277         pChild->environment = papszEnv = target_environment(pChild->file);
     1277    /* The environment starts out in read-only mode and will be duplicated if modified. */
     1278    cAllocatedEnvVars = 0;
     1279    papszEnvVars = envp;
    12781280    cEnvVars = 0;
    1279     while (papszEnv[cEnvVars] != NULL)
     1281    while (papszEnvVars[cEnvVars] != NULL)
    12801282        cEnvVars++;
    1281     cAllocatedEnvVars = cEnvVars;
    12821283
    12831284    /*
     
    13871388                    case 'Z':
    13881389                    case 'i': /* GNU env compatibility. */
    1389                         for (iEnvVar = 0; iEnvVar < cEnvVars; iEnvVar++)
    1390                             free(papszEnv[iEnvVar]);
    1391                         papszEnv[0] = NULL;
    1392                         cEnvVars = 0;
    1393                         break;
    1394 
    1395                     case 'E':
    1396                         rcExit = kBuiltinOptEnvSet(&papszEnv, &cEnvVars, &cAllocatedEnvVars, cVerbosity, pszValue);
    1397                         pChild->environment = papszEnv;
     1390                        rcExit = kBuiltinOptEnvZap(&papszEnvVars, &cEnvVars, &cAllocatedEnvVars, cVerbosity);
    13981391                        if (rcExit == 0)
    13991392                            break;
    14001393                        return rcExit;
    14011394
    1402                     case 'A':
    1403                         rcExit = kBuiltinOptEnvAppend(&papszEnv, &cEnvVars, &cAllocatedEnvVars, cVerbosity, pszValue);
    1404                         pChild->environment = papszEnv;
     1395                    case 'E':
     1396                        rcExit = kBuiltinOptEnvSet(&papszEnvVars, &cEnvVars, &cAllocatedEnvVars, cVerbosity, pszValue);
    14051397                        if (rcExit == 0)
    14061398                            break;
    14071399                        return rcExit;
    14081400
    1409                     case 'D':
    1410                         rcExit = kBuiltinOptEnvPrepend(&papszEnv, &cEnvVars, &cAllocatedEnvVars, cVerbosity, pszValue);
    1411                         pChild->environment = papszEnv;
     1401                    case 'A':
     1402                        rcExit = kBuiltinOptEnvAppend(&papszEnvVars, &cEnvVars, &cAllocatedEnvVars, cVerbosity, pszValue);
    14121403                        if (rcExit == 0)
    14131404                            break;
    14141405                        return rcExit;
    14151406
     1407                    case 'D':
     1408                        rcExit = kBuiltinOptEnvPrepend(&papszEnvVars, &cEnvVars, &cAllocatedEnvVars, cVerbosity, pszValue);
     1409                        if (rcExit == 0)
     1410                            break;
     1411                        return rcExit;
     1412
    14161413                    case 'U':
    1417                         rcExit = kBuiltinOptEnvUnset(papszEnv, &cEnvVars, cVerbosity, pszValue);
     1414                        rcExit = kBuiltinOptEnvUnset(&papszEnvVars, &cEnvVars, &cAllocatedEnvVars, cVerbosity, pszValue);
    14181415                        if (rcExit == 0)
    14191416                            break;
     
    14581455                    case 'h':
    14591456                        usage(stdout, argv[0]);
     1457                        kBuiltinOptEnvCleanup(&papszEnvVars, cEnvVars, &cAllocatedEnvVars);
    14601458                        return 0;
    14611459
    14621460                    case 'V':
     1461                        kBuiltinOptEnvCleanup(&papszEnvVars, cEnvVars, &cAllocatedEnvVars);
    14631462                        return kbuild_version(argv[0]);
    14641463                }
     
    14781477    {
    14791478        uint32_t        cbMsg;
    1480         void           *pvMsg   = kSubmitComposeJobMessage(pszExecutable, &argv[iArg], papszEnv, szCwd,
     1479        void           *pvMsg   = kSubmitComposeJobMessage(pszExecutable, &argv[iArg], papszEnvVars, szCwd,
    14811480                                                           fWatcomBrainDamage, fNoPchCaching,
    14821481                                                           &argv[iPostCmd], cPostCmdArgs, &cbMsg);
     
    15051504    }
    15061505
     1506    kBuiltinOptEnvCleanup(&papszEnvVars, cEnvVars, &cAllocatedEnvVars);
    15071507    return rcExit;
    15081508}
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette