/* * Copyright 1993, 1995 Christopher Seiwald. * * This file is part of Jam - see jam.c for Copyright information. */ /* * As there's no documnented way of executing script on MPW, we just write commands to the * standard output. * * External routines: * execcmd() - launch an async command execution * execwait() - wait and drive at most one execution completion * * Internal routines: * onintr() - bump intr to note command interruption * * 04/08/94 (seiwald) - Coherent/386 support added. * 05/04/94 (seiwald) - async multiprocess interface * 01/22/95 (seiwald) - $(JAMSHELL) support * 01/20/00 (seiwald) - Upgraded from K&R to ANSI C */ # include "jam.h" # include "lists.h" # include "execcmd.h" # include <errno.h> # ifdef OS_MAC #ifdef GRAPHISOFT_MPW_FIX # include "parse.h" # include "rules.h" # include "command.h" # include <stdio.h> # include <stdlib.h> #endif #ifdef GRAPHISOFT_MPW_FIX /* * printexeccmd() - prints a command execution script */ void printexeccmd ( FILE* f, CMD* cmd) { bool first = true; char *string = cmd->buf; while (*string) { char *command; /* Strip trailing comments */ while ((*string == '\t') || (*string == ' ')) { string++; } command = string; while ((*string != '\n') && (*string != '\r') && (*string != 0)) { string++; } if (command != string) { if (*string) { *string = 0; string++; } if (!first) fprintf (f,"&& %s\n",command); else fprintf (f,"%s\n",command); first = false; } else if (*string) { string++; } } if (!first) { fprintf (f,"|| ("); if ( !( cmd->rule->flags & RULE_IGNORE ) ) { fprintf (f,"Set JamMakeFailed 1"); if (DEBUG_MAKE) { fprintf (f," ; Echo \'...failed %s ",cmd->rule->name); list_print( lol_get( &cmd->args, 0 ) ); fprintf (f,"...\'"); } /* If the command was interrupted or failed and the target */ /* is not "precious", remove the targets. */ /* Precious == 'actions updated' -- the target maintains state. */ if (!(cmd->rule->flags & RULE_UPDATED)) { LIST *targets = lol_get( &cmd->args, 0 ); for (; targets; targets = list_next(targets)) { fprintf (f," ; If \"`exists -f \'%s\'`\" ; Delete \'%s\' ; end if ",targets->string,targets->string); } } } fprintf (f,")\n"); } } #endif /* * execcmd() - launch an async command execution */ #ifdef GRAPHISOFT_MPW_FIX void execcmd( char *string, void (*func)( void *closure, int status ), void *closure, LIST *shell ) { TARGET *t = (TARGET *)closure; CMD *cmd = (CMD *)t->cmds; printexeccmd (stdout, cmd); (*func)( closure, EXEC_CMD_OK ); } #else void execcmd( char *string, void (*func)( void *closure, int status ), void *closure, LIST *shell ) { printf( "%s", string ); (*func)( closure, EXEC_CMD_OK ); } #endif /* * execwait() - wait and drive at most one execution completion */ int execwait() { return 0; } # endif /* OS_MAC */
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#8 | 2578 | Miklos Fazekas | Integrate new lexical scanner code to GSJam | ||
#7 | 2521 | Miklos Fazekas | Compile error fixes after merge | ||
#6 | 2519 | Miklos Fazekas | Sync to 2.5rc1 | ||
#5 | 1573 | Miklos Fazekas | Merge to jam mainline. | ||
#4 | 1398 | Miklos Fazekas | Cleanup. | ||
#3 | 1395 | Miklos Fazekas | Merge with main jam | ||
#2 | 1320 | Miklos Fazekas |
MacOS related fixes: - emulation of jam's behaviour in MPW shell's scripting language (ie.: failed targets are removed) - fix for out of memory errors on MacOS. - together targets are removed |
||
#1 | 1212 | Miklos Fazekas | Created a Jam branch | ||
//guest/perforce_software/jam/src/execmac.c | |||||
#3 | 486 | Perforce staff |
Jam 2.3. See RELNOTES for a list of changes from 2.2.x. Just about every source file was touched when jam got ANSI-fied. |
||
#2 | 212 | Perforce staff |
An interpretative integration of Peter Glasscock's -o file support. This is handled in the make1() routine, rather than in all the exec*.c files. -o x writes the actions to file x rather than actually running them. Implies -n (but not -d2). |
||
#1 | 2 | laura | Add Jam/MR 2.2 source |