You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
5.2 KiB
176 lines
5.2 KiB
|
|
/***************************************************************************
|
|
param_cmds.c - libxslt parameter 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 "options.h"
|
|
|
|
#include "xsldbgmsg.h"
|
|
#include "xsldbgthread.h" /* for get thread status */
|
|
|
|
|
|
/* -----------------------------------------
|
|
|
|
libxslt parameter related commands
|
|
|
|
------------------------------------------- */
|
|
|
|
/**
|
|
* xslDbgShellAddParam:
|
|
* @arg: A string comprised of two words separated by
|
|
* one or more spaces which are in UTF-8
|
|
*
|
|
* Add a libxslt parameter to be sent to libxslt later on
|
|
*
|
|
* Returns 1 on success,
|
|
* 0 otherwise
|
|
*/
|
|
int
|
|
xslDbgShellAddParam(xmlChar * arg)
|
|
{
|
|
int result = 0;
|
|
parameterItemPtr paramItem = NULL;
|
|
static const char *errorPrompt = I18N_NOOP("Failed to add parameter");
|
|
xmlChar *opts[2];
|
|
|
|
if (!arg) {
|
|
xsldbgGenericErrorFunc(i18n("Error: Invalid arguments for the command %1.\n").arg("addparam"));
|
|
}else{
|
|
if ((xmlStrLen(arg) > 1) && splitString(arg, 2, opts) == 2) {
|
|
int count;
|
|
for (count = 0; count < arrayListCount(optionsGetParamItemList()); count++){
|
|
paramItem = (parameterItemPtr)arrayListGet(optionsGetParamItemList(), count);
|
|
if (paramItem != NULL){
|
|
if (xmlStrCmp(opts[0], paramItem->name) == 0){
|
|
/* parameter exist just update its value */
|
|
if (paramItem->value)
|
|
xmlFree(paramItem->value);
|
|
paramItem->value = xmlStrdup(opts[1]);
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
paramItem = optionsParamItemNew(opts[0], opts[1]);
|
|
result = arrayListAdd(optionsGetParamItemList(), paramItem);
|
|
} else {
|
|
xsldbgGenericErrorFunc(i18n("Error: Invalid arguments for the command %1.\n").arg("addparam"));
|
|
}
|
|
}
|
|
if (!result)
|
|
xsldbgGenericErrorFunc(QString("Error: %1\n").arg(i18n(errorPrompt)));
|
|
else {
|
|
xsldbgGenericErrorFunc("\n");
|
|
}
|
|
return result;
|
|
}
|
|
|
|
|
|
/**
|
|
* xslDbgShellDelParam:
|
|
* @arg: A single white space trimmed parameter number to look for
|
|
*
|
|
* Delet a libxslt parameter to be sent to libxslt later on
|
|
*
|
|
* Returns 1 if able to delete parameter @name,
|
|
* 0 otherwise
|
|
*/
|
|
int
|
|
xslDbgShellDelParam(xmlChar * arg)
|
|
{
|
|
int result = 0;
|
|
static const char *errorPrompt = I18N_NOOP("Failed to delete parameter");
|
|
long paramId;
|
|
xmlChar *opts[2];
|
|
|
|
if (!arg) {
|
|
xsldbgGenericErrorFunc(i18n("Error: Invalid arguments for the command %1.\n").arg("delparam"));
|
|
}else{
|
|
if (xmlStrLen(arg) > 0) {
|
|
if (splitString(arg, 1, opts) == 1) {
|
|
if ((xmlStrlen(opts[0]) == 0) ||
|
|
!sscanf((char *) opts[0], "%ld", ¶mId)) {
|
|
xsldbgGenericErrorFunc(i18n("Error: Unable to parse %1 as a line number.\n").arg(xsldbgText(opts[0])));
|
|
} else {
|
|
result =
|
|
arrayListDelete(optionsGetParamItemList(), paramId);
|
|
if (!result)
|
|
xsldbgGenericErrorFunc(i18n("Error: Unable to find parameter %1.\n").arg(paramId));
|
|
}
|
|
} else {
|
|
xsldbgGenericErrorFunc(i18n("Error: Invalid arguments for the command %1.\n").arg("delparam"));
|
|
}
|
|
} else {
|
|
/* Delete all parameters */
|
|
arrayListEmpty(optionsGetParamItemList());
|
|
result = 1;
|
|
}
|
|
}
|
|
if (!result)
|
|
xsldbgGenericErrorFunc(QString("Error: %1\n").arg(i18n(errorPrompt)));
|
|
else
|
|
xsldbgGenericErrorFunc("\n");
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
/**
|
|
* xslDbgShellShowParam:
|
|
* @arg: Not used
|
|
*
|
|
* Print list of current paramters
|
|
*
|
|
* Returns 1 on success,
|
|
* 0 otherwise
|
|
*/
|
|
int
|
|
xslDbgShellShowParam(xmlChar * arg)
|
|
{
|
|
Q_UNUSED(arg);
|
|
int result = 0;
|
|
static const char *errorPrompt = I18N_NOOP("Unable to print parameters");
|
|
|
|
if (getThreadStatus() == XSLDBG_MSG_THREAD_RUN) {
|
|
int paramIndex = 0;
|
|
int itemCount = arrayListCount(optionsGetParamItemList());
|
|
|
|
notifyListStart(XSLDBG_MSG_PARAMETER_CHANGED);
|
|
|
|
if (itemCount > 0) {
|
|
parameterItemPtr paramItem = NULL;
|
|
|
|
while (paramIndex < itemCount) {
|
|
paramItem = (parameterItemPtr)
|
|
arrayListGet(optionsGetParamItemList(), paramIndex++);
|
|
if (paramItem != NULL)
|
|
notifyListQueue(paramItem);
|
|
}
|
|
}
|
|
notifyListSend();
|
|
result = 1;
|
|
} else {
|
|
|
|
if (optionsPrintParamList())
|
|
result = 1;
|
|
else
|
|
xsldbgGenericErrorFunc(QString("Error: %1\n").arg(i18n(errorPrompt)));
|
|
xsldbgGenericErrorFunc("\n");
|
|
}
|
|
return result;
|
|
}
|