Changeset 3173 in kBuild for trunk/src/kmk/kmkbuiltin/kSubmit.c
- Timestamp:
- Mar 21, 2018 9:37:41 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/kmkbuiltin/kSubmit.c
r3156 r3173 1250 1250 int iArg; 1251 1251 unsigned cAllocatedEnvVars; 1252 unsigned iEnvVar;1253 1252 unsigned cEnvVars; 1254 char **papszEnv = NULL;1253 char **papszEnvVars; 1255 1254 const char *pszExecutable = NULL; 1256 1255 int iPostCmd = argc; … … 1267 1266 /* 1268 1267 * Create default program environment. 1268 * 1269 * Note! We only clean up the environment on successful return, assuming 1270 * make will stop after that. 1269 1271 */ 1270 1272 if (getcwd_fs(szCwd, cbCwdBuf) != NULL) … … 1273 1275 return err(1, "getcwd_fs failed\n"); 1274 1276 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; 1278 1280 cEnvVars = 0; 1279 while (papszEnv [cEnvVars] != NULL)1281 while (papszEnvVars[cEnvVars] != NULL) 1280 1282 cEnvVars++; 1281 cAllocatedEnvVars = cEnvVars;1282 1283 1283 1284 /* … … 1387 1388 case 'Z': 1388 1389 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); 1398 1391 if (rcExit == 0) 1399 1392 break; 1400 1393 return rcExit; 1401 1394 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); 1405 1397 if (rcExit == 0) 1406 1398 break; 1407 1399 return rcExit; 1408 1400 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); 1412 1403 if (rcExit == 0) 1413 1404 break; 1414 1405 return rcExit; 1415 1406 1407 case 'D': 1408 rcExit = kBuiltinOptEnvPrepend(&papszEnvVars, &cEnvVars, &cAllocatedEnvVars, cVerbosity, pszValue); 1409 if (rcExit == 0) 1410 break; 1411 return rcExit; 1412 1416 1413 case 'U': 1417 rcExit = kBuiltinOptEnvUnset( papszEnv, &cEnvVars, cVerbosity, pszValue);1414 rcExit = kBuiltinOptEnvUnset(&papszEnvVars, &cEnvVars, &cAllocatedEnvVars, cVerbosity, pszValue); 1418 1415 if (rcExit == 0) 1419 1416 break; … … 1458 1455 case 'h': 1459 1456 usage(stdout, argv[0]); 1457 kBuiltinOptEnvCleanup(&papszEnvVars, cEnvVars, &cAllocatedEnvVars); 1460 1458 return 0; 1461 1459 1462 1460 case 'V': 1461 kBuiltinOptEnvCleanup(&papszEnvVars, cEnvVars, &cAllocatedEnvVars); 1463 1462 return kbuild_version(argv[0]); 1464 1463 } … … 1478 1477 { 1479 1478 uint32_t cbMsg; 1480 void *pvMsg = kSubmitComposeJobMessage(pszExecutable, &argv[iArg], papszEnv , szCwd,1479 void *pvMsg = kSubmitComposeJobMessage(pszExecutable, &argv[iArg], papszEnvVars, szCwd, 1481 1480 fWatcomBrainDamage, fNoPchCaching, 1482 1481 &argv[iPostCmd], cPostCmdArgs, &cbMsg); … … 1505 1504 } 1506 1505 1506 kBuiltinOptEnvCleanup(&papszEnvVars, cEnvVars, &cAllocatedEnvVars); 1507 1507 return rcExit; 1508 1508 }
Note:
See TracChangeset
for help on using the changeset viewer.