예제 #1
0
파일: ssX.c 프로젝트: q3k/ski
/*ARGSUSED*/
static void simCmdCallback(CALLBACK_ARGS)
{
    char s[100];

    if (client_data) {
	XmString xms = XmStringCreateLocalized((char *)client_data);

	XmListAddItemUnselected(cmdHist, xms, 0);
	XmListSetBottomPos(cmdHist, 0);
	XmStringFree(xms);
	(void)strcpy(prevCmdStr, (char*)client_data);
	(void)sprintf(s, "%s\n", (char *)client_data);
    } else {
	XmCommandCallbackStruct *cbs = (XmCommandCallbackStruct *)call_data;
	char *cmdStr;

	(void)XmStringGetLtoR(cbs->value, XmSTRING_DEFAULT_CHARSET, &cmdStr);
	if (cmdStr[0] == 'X') {
	    XmString msg = XmStringCreateLocalized("Bad command");

	    XmCommandError(cmd, msg);
	    XmStringFree(msg);
	}
	if (cmdStr[0] == '\0' && prevCmdStr != '\0') {
	    (void)strcpy(cmdStr, prevCmdStr);
	    XmStringFree(cbs->value);
	    cbs->value = XmStringCreateLocalized(cmdStr);
	}
	(void)strcpy(prevCmdStr, cmdStr);
	(void)sprintf(s, "%s\n", cmdStr);
    }
    if (!cmdExLin(s)) {
	XmString msg = XmStringCreateLocalized("Bad command");

	XmCommandError(cmd, msg);
	XmStringFree(msg);
    }
    (void)XmProcessTraversal(cmd, XmTRAVERSE_CURRENT);
}
예제 #2
0
// Forward Gnuplot error messages to DDD status line
static void SetStatusHP(Agent *, void *client_data, void *call_data)
{
    PlotWindowInfo *plot = (PlotWindowInfo *)client_data;
    DataLength* dl = (DataLength *) call_data;
    string s(dl->data, dl->length);

    (void) plot;		// Use it
#if 0
    if (!plot->active)
    {
	// Probably an invocation problem
	post_gdb_message(s);
	return;
    }
#endif

    if (plot->command != 0)
    {
	string msg = s;
	strip_space(msg);
	MString xmsg = tb(msg);
	XmCommandError(plot->command, xmsg.xmstring());
    }

    while (!s.empty())
    {
	string line;
	if (s.contains('\n'))
	    line = s.before('\n');
	else
	    line = s;
	s = s.after('\n');
	strip_space(line);

	if (!line.empty())
	    set_status(line);
    }
}