Changeset 2894 for trunk/src/kmk
- Timestamp:
- Sep 8, 2016, 3:27:56 PM (9 years ago)
- Location:
- trunk/src/kmk/kmkbuiltin
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/kmkbuiltin/kDepObj.c
r2856 r2894 28 28 *******************************************************************************/ 29 29 #define MSCFAKES_NO_WINDOWS_H 30 #include "config.h"31 30 #include <stdio.h> 32 31 #include <stdlib.h> … … 36 35 #include <ctype.h> 37 36 #include <stdarg.h> 38 #ifdef HAVE_ALLOCA_H39 # include <alloca.h>40 #endif41 37 #if !defined(_MSC_VER) 42 38 # include <unistd.h> … … 54 50 * Defined Constants And Macros * 55 51 *******************************************************************************/ 56 /*#define DEBUG*/ 57 #ifdef DEBUG 52 #if 0 58 53 # define dprintf(a) printf a 59 54 # define dump(pb, cb, offBase) depHexDump(pb,cb,offBase) … … 576 571 * @param cbSyms Size of the symbol section. 577 572 */ 578 int kDepObjCOFFParseCV8SymbolSection(const KU8 *pbSyms, K SIZEcbSyms)573 int kDepObjCOFFParseCV8SymbolSection(const KU8 *pbSyms, KU32 cbSyms) 579 574 { 580 575 char const * pchStrTab = NULL; … … 765 760 int rc; 766 761 767 printf("COFF file!\n");762 dprintf(("COFF file!\n")); 768 763 769 764 for (iSHdr = 0; iSHdr < cSHdrs; iSHdr++) … … 784 779 return rc; 785 780 } 786 printf("#%d: %.8s\n", iSHdr, paSHdrs[iSHdr].Name);781 dprintf(("#%d: %.8s\n", iSHdr, paSHdrs[iSHdr].Name)); 787 782 } 788 783 return rcRet; -
trunk/src/kmk/kmkbuiltin/kSubmit.c
r2884 r2894 574 574 * @param pszCwd The current directory. 575 575 * @param fWatcomBrainDamage The wcc/wcc386 workaround. 576 * @param papszPostCmdArgs The post command and it's arguments. 577 * @param cPostCmdArgs Number of post command argument, including the 578 * command. Zero if no post command scheduled. 576 579 * @param pcbMsg Where to return the message length. 577 580 */ 578 581 static void *kSubmitComposeJobMessage(const char *pszExecutable, char **papszArgs, char **papszEnvVars, 579 const char *pszCwd, int fWatcomBrainDamage, uint32_t *pcbMsg) 582 const char *pszCwd, int fWatcomBrainDamage, 583 char **papszPostCmdArgs, uint32_t cPostCmdArgs, uint32_t *pcbMsg) 580 584 { 581 585 size_t cbTmp; … … 613 617 cbMsg += 1; 614 618 619 cbMsg += sizeof(cPostCmdArgs); 620 for (i = 0; i < cPostCmdArgs; i++) 621 cbMsg += strlen(papszPostCmdArgs[i]) + 1; 622 615 623 /* 616 624 * Compose the message. … … 618 626 pbMsg = pbCursor = xmalloc(cbMsg); 619 627 628 /* header */ 620 629 memcpy(pbCursor, &cbMsg, sizeof(cbMsg)); 621 630 pbCursor += sizeof(cbMsg); … … 623 632 pbCursor += sizeof("JOB"); 624 633 634 /* executable. */ 625 635 cbTmp = strlen(pszExecutable) + 1; 626 636 memcpy(pbCursor, pszExecutable, cbTmp); 627 637 pbCursor += cbTmp; 628 638 639 /* cwd */ 629 640 cbTmp = strlen(pszCwd) + 1; 630 641 memcpy(pbCursor, pszCwd, cbTmp); 631 642 pbCursor += cbTmp; 632 643 644 /* argument */ 633 645 memcpy(pbCursor, &cArgs, sizeof(cArgs)); 634 646 pbCursor += sizeof(cArgs); … … 642 654 assert(i == cArgs); 643 655 656 /* environment */ 644 657 memcpy(pbCursor, &cEnvVars, sizeof(cEnvVars)); 645 658 pbCursor += sizeof(cEnvVars); … … 652 665 assert(i == cEnvVars); 653 666 667 /* flags */ 654 668 *pbCursor++ = fWatcomBrainDamage != 0; 655 669 670 /* post command */ 671 memcpy(pbCursor, &cPostCmdArgs, sizeof(cPostCmdArgs)); 672 pbCursor += sizeof(cPostCmdArgs); 673 for (i = 0; i < cPostCmdArgs; i++) 674 { 675 cbTmp = strlen(papszPostCmdArgs[i]) + 1; 676 memcpy(pbCursor, papszPostCmdArgs[i], cbTmp); 677 pbCursor += cbTmp; 678 } 679 assert(i == cPostCmdArgs); 680 656 681 assert(pbCursor - pbMsg == (size_t)cbMsg); 657 682 658 /* done */ 683 /* 684 * Done. 685 */ 659 686 *pcbMsg = cbMsg; 660 687 return pbMsg; … … 1339 1366 "usage: %s [-Z|--zap-env] [-E|--set <var=val>] [-U|--unset <var=val>]\n" 1340 1367 " [-C|--chdir <dir>] [--wcc-brain-damage]\n" 1341 " [-3|--32-bit] [-6|--64-bit] [-v] -- <program> [args]\n" 1368 " [-3|--32-bit] [-6|--64-bit] [-v]\n" 1369 " [-P|--post-cmd <cmd> [args]] -- <program> [args]\n" 1342 1370 " or: %s --help\n" 1343 1371 " or: %s --version\n" … … 1362 1390 " -v,--verbose\n" 1363 1391 " More verbose execution.\n" 1392 " -P|--post-cmd <cmd> ...\n" 1393 " For running a built-in command on the output, specifying the command\n" 1394 " and all it's parameters. Currently supported commands:\n" 1395 " kDepObj\n" 1364 1396 " -V,--version\n" 1365 1397 " Show the version number.\n" … … 1383 1415 const char *pszExecutable = NULL; 1384 1416 const char *pszCwd = NULL; 1417 int iPostCmd = argc; 1418 int cPostCmdArgs = 0; 1385 1419 unsigned cBitsWorker = g_cArchBits; 1386 1420 int fWatcomBrainDamage = 0; … … 1457 1491 else if (strcmp(pszArg, "chdir") == 0) 1458 1492 chOpt = 'C'; 1493 else if (strcmp(pszArg, "post-cmd") == 0) 1494 chOpt = 'P'; 1459 1495 else if (strcmp(pszArg, "32-bit") == 0) 1460 1496 chOpt = '3'; … … 1489 1525 else 1490 1526 { 1491 errx(1, "Option -%c requires a nvalue!", chOpt);1527 errx(1, "Option -%c requires a value!", chOpt); 1492 1528 return usage(stderr, argv[0]); 1493 1529 } … … 1524 1560 return rcExit; 1525 1561 1562 case 'P': 1563 if (cPostCmdArgs > 0) 1564 return errx(1, "The -P option can only be used once!"); 1565 if (*pszArg != '\0') 1566 return errx(1, "The cmd part of the -P needs to be a separate argument!"); 1567 iPostCmd = ++iArg; 1568 if (iArg >= argc) 1569 return errx(1, "The -P option requires a command following it!"); 1570 while (iArg < argc && strcmp(argv[iArg], "--") != 0) 1571 iArg++; 1572 cPostCmdArgs = iArg - iPostCmd; 1573 iArg--; 1574 break; 1575 1526 1576 case '3': 1527 1577 cBitsWorker = 32; … … 1563 1613 uint32_t cbMsg; 1564 1614 void *pvMsg = kSubmitComposeJobMessage(pszExecutable, &argv[iArg], papszEnv, szCwd, 1565 fWatcomBrainDamage, & cbMsg);1615 fWatcomBrainDamage, &argv[iPostCmd], cPostCmdArgs, &cbMsg); 1566 1616 PWORKERINSTANCE pWorker = kSubmitSelectWorkSpawnNewIfNecessary(cBitsWorker, cVerbosity); 1567 1617 if (pWorker)
Note:
See TracChangeset
for help on using the changeset viewer.