int Web_GetCommand()

in src/generic/command.c [81:146]


int Web_GetCommand(ClientData clientData,
		   Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[])
{

    RequestData *requestData = NULL;
    Tcl_Obj *res = NULL;

    /* --------------------------------------------------------------------------
     * check for private data
     * ----------------------------------------------------------------------- */
    WebAssertData(interp, clientData, "Web_GetCommand", TCL_ERROR)
	requestData = (RequestData *) clientData;

    /* --------------------------------------------------------------------------
     * check for arguments
     * ----------------------------------------------------------------------- */
    WebAssertObjc(objc < 1 || objc > 2, 1, "?command?");

    /* --------------------------------------------------------------------------
     * no argument --> return code for command WEB_REQ_DEFAULT
     * ----------------------------------------------------------------------- */
    if (objc == 1) {

	res =
	    (Tcl_Obj *) getFromHashTable(requestData->cmdList,
					 WEB_REQ_DEFAULT);
	if (res != NULL) {

	    Tcl_Obj *tmp = NULL;

	    Tcl_ListObjIndex(interp, res, 0, &tmp);

	    Tcl_SetObjResult(interp, tmp);
	    return TCL_OK;
	}
	else {
	    LOG_MSG(interp, WRITE_LOG | SET_RESULT, __FILE__, __LINE__,
		    "web::getcommand", WEBLOG_INFO,
		    "command \"", WEB_REQ_DEFAULT, "\" not found", NULL);
	    return TCL_ERROR;
	}
    }

    /* --------------------------------------------------------------------------
     * one argument --> return code for command "name"
     * ----------------------------------------------------------------------- */
    if (objc == 2) {
	res = (Tcl_Obj *) getFromHashTable(requestData->cmdList,
					   Tcl_GetString(objv[1]));
	if (res != NULL) {

	    Tcl_Obj *tmp = NULL;

	    Tcl_ListObjIndex(interp, res, 0, &tmp);

	    Tcl_SetObjResult(interp, tmp);
	    return TCL_OK;
	}
	else {
	    Tcl_SetResult(interp, "no such command: \"", NULL);
	    Tcl_AppendResult(interp, Tcl_GetString(objv[1]), "\".", NULL);
	    return TCL_ERROR;
	}
    }
    return TCL_ERROR;
}