|
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
os_cmds.c - operating system commands for xsldbg
|
|
|
|
-------------------
|
|
|
|
begin : Wed Nov 21 2001
|
|
|
|
copyright : (C) 2001 by Keith Isdale
|
|
|
|
email : k_isdale@tpg.com.au
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#include "xsldbg.h"
|
|
|
|
#include "debugXSL.h"
|
|
|
|
#include "files.h"
|
|
|
|
|
|
|
|
/* -----------------------------------------
|
|
|
|
|
|
|
|
Operating system related commands
|
|
|
|
|
|
|
|
------------------------------------------- */
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* xslDbgShellChangeWd:
|
|
|
|
* @path: The path to change to
|
|
|
|
*
|
|
|
|
* Change the current working directory of the operating system
|
|
|
|
*
|
|
|
|
* Returns 1 if able to change xsldbg's working directory to @path
|
|
|
|
* 0 otherwise
|
|
|
|
*/
|
|
|
|
int
|
|
|
|
xslDbgShellChangeWd(xmlChar * path)
|
|
|
|
{
|
|
|
|
int result = 0;
|
|
|
|
|
|
|
|
if (xmlStrLen(path)) {
|
|
|
|
/* call function in files.c to do the work */
|
|
|
|
result = changeDir(path);
|
|
|
|
} else
|
|
|
|
xsldbgGenericErrorFunc(i18n("Error: Missing arguments for the command %1.\n").tqarg("chdir"));
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* xslDbgShellExecute:
|
|
|
|
* @name: The name of command string to be executed by operating system shell
|
|
|
|
* @verbose: If 1 then print extra debugging messages,
|
|
|
|
* normal messages otherwise
|
|
|
|
*
|
|
|
|
* Execute an operating system command
|
|
|
|
*
|
|
|
|
* Returns 1 on success,
|
|
|
|
* 0 otherwise
|
|
|
|
*/
|
|
|
|
int
|
|
|
|
xslDbgShellExecute(xmlChar * name, int verbose)
|
|
|
|
{
|
|
|
|
int result = 0;
|
|
|
|
|
|
|
|
/* Quick check to see if we have a command processor; embedded systems
|
|
|
|
* may not have such a thing */
|
|
|
|
if (system(NULL) == 0) {
|
|
|
|
xsldbgGenericErrorFunc(i18n("Error: No command processor available for shell command \"%1\".\n").tqarg(xsldbgText(name)));
|
|
|
|
} else {
|
|
|
|
int return_code;
|
|
|
|
|
|
|
|
if (verbose)
|
|
|
|
xsldbgGenericErrorFunc(i18n("Information: Starting shell command \"%1\".\n").tqarg(xsldbgText(name)));
|
|
|
|
|
|
|
|
return_code = system((char *) name);
|
|
|
|
/* JRF: Strictly system returns an implementation defined value -
|
|
|
|
* we are interpreting that value here, so we need
|
|
|
|
* implementation specific code to handle each case */
|
|
|
|
|
|
|
|
#ifdef __riscos
|
|
|
|
/* on RISC OS -2 means 'system call failed', otherwise it is the
|
|
|
|
* return code from the sub-program */
|
|
|
|
if (return_code != -2) {
|
|
|
|
#else
|
|
|
|
if (return_code == 0) {
|
|
|
|
#endif
|
|
|
|
if (verbose)
|
|
|
|
xsldbgGenericErrorFunc(i18n("Information: Finished shell command.\n"));
|
|
|
|
result = 1;
|
|
|
|
} else {
|
|
|
|
if (verbose)
|
|
|
|
xsldbgGenericErrorFunc(i18n("Error: Unable to run command. System error %1.\n").tqarg(return_code));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|