mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 18:13:03 +00:00
Create a branch for network fixes.
svn path=/branches/aicom-network-fixes/; revision=34994
This commit is contained in:
parent
0e213bbc00
commit
c501d8112c
18148 changed files with 0 additions and 860488 deletions
104
base/shell/cmd/call.c
Normal file
104
base/shell/cmd/call.c
Normal file
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* CALL.C - call internal batch command.
|
||||
*
|
||||
*
|
||||
* History:
|
||||
*
|
||||
* 16 Jul 1998 (Hans B Pufal)
|
||||
* started.
|
||||
*
|
||||
* 16 Jul 1998 (John P Price)
|
||||
* Seperated commands into individual files.
|
||||
*
|
||||
* 27-Jul-1998 (John P Price <linux-guru@gcfl.net>)
|
||||
* added config.h include
|
||||
*
|
||||
* 04-Aug-1998 (Hans B Pufal)
|
||||
* added lines to initialize for pointers (HBP004) This fixed the
|
||||
* lock-up that happened sometimes when calling a batch file from
|
||||
* another batch file.
|
||||
*
|
||||
* 07-Jan-1999 (Eric Kohl)
|
||||
* Added help text ("call /?") and cleaned up.
|
||||
*
|
||||
* 20-Jan-1999 (Eric Kohl)
|
||||
* Unicode and redirection safe!
|
||||
*
|
||||
* 02-Apr-2005 (Magnus Olsen) <magnus@greatlord.com>)
|
||||
* Remove all hardcode string to En.rc
|
||||
*/
|
||||
|
||||
#include <precomp.h>
|
||||
|
||||
|
||||
/*
|
||||
* Perform CALL command.
|
||||
*
|
||||
* Allocate a new batch context and add it to the current chain.
|
||||
* Call parsecommandline passing in our param string
|
||||
* If No batch file was opened then remove our newly allocted
|
||||
* context block.
|
||||
*/
|
||||
|
||||
INT cmd_call (LPTSTR cmd, LPTSTR param)
|
||||
{
|
||||
LPBATCH_CONTEXT n = NULL;
|
||||
|
||||
TRACE ("cmd_call: (\'%s\',\'%s\')\n", debugstr_aw(cmd), debugstr_aw(param));
|
||||
if (!_tcsncmp (param, _T("/?"), 2))
|
||||
{
|
||||
ConOutResPaging(TRUE,STRING_CALL_HELP);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (*param == _T(':') && (bc))
|
||||
{
|
||||
bc->lCallPosition = SetFilePointer(bc->hBatchFile, 0, &bc->lCallPositionHigh, FILE_CURRENT);
|
||||
cmd_goto(_T("goto"), param);
|
||||
return 0;
|
||||
}
|
||||
|
||||
nErrorLevel = 0;
|
||||
|
||||
n = (LPBATCH_CONTEXT)cmd_alloc (sizeof (BATCH_CONTEXT));
|
||||
|
||||
if (n == NULL)
|
||||
{
|
||||
error_out_of_memory ();
|
||||
return 1;
|
||||
}
|
||||
|
||||
n->prev = bc;
|
||||
bc = n;
|
||||
|
||||
bc->hBatchFile = INVALID_HANDLE_VALUE;
|
||||
bc->params = NULL;
|
||||
bc->shiftlevel = 0;
|
||||
bc->forvar = 0; /* HBP004 */
|
||||
bc->forproto = NULL; /* HBP004 */
|
||||
ParseCommandLine (param);
|
||||
if (bc->prev)
|
||||
{
|
||||
_tcscpy(bc->In, bc->prev->In);
|
||||
_tcscpy(bc->Out, bc->prev->Out);
|
||||
_tcscpy(bc->Err, bc->prev->Err);
|
||||
}
|
||||
else
|
||||
{
|
||||
bc->In[0] = _T('\0');
|
||||
bc->Out[0] = _T('\0');
|
||||
bc->Err[0] = _T('\0');
|
||||
}
|
||||
|
||||
|
||||
/* Wasn't a batch file so remove conext */
|
||||
if (bc->hBatchFile == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
bc = bc->prev;
|
||||
cmd_free (n);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* EOF */
|
Loading…
Add table
Add a link
Reference in a new issue