int Web_Htmlify()

in src/generic/conv.c [71:155]


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

    ConvData *convData = NULL;
    Tcl_Obj *res = NULL;
    int useNumeric = TCL_ERROR;
    int iCurArg = 0;
    static TCLCONST char *params[] = { "-numeric", NULL };
    enum params
    { NUMERIC };


    /* --------------------------------------------------------------------------
     * sanitiy
     * ----------------------------------------------------------------------- */
    WebAssertData(interp, clientData, "web::hmtlify", TCL_ERROR)
	convData = (ConvData *) clientData;

    /* --------------------------------------------------------------------------
     * args
     * ----------------------------------------------------------------------- */
    if (objc < 2) {
	LOG_MSG(interp, WRITE_LOG | SET_RESULT, __FILE__, __LINE__,
		"web::htmlify", WEBLOG_INFO,
		"usage: ?-numeric? string", NULL);
	return TCL_ERROR;
    }
    else if (objc == 2) {
	/* ------------------------------------------------------------------------
	 * assume that there are no options
	 * --------------------------------------------------------------------- */
	iCurArg = 1;

    }
    else {

	iCurArg = argIndexOfFirstOpt(objc, objv);
	if (iCurArg == -1) {
	    iCurArg = argIndexOfFirstArg(objc, objv, params, NULL);
	    if (iCurArg != (objc - 1)) {
		LOG_MSG(interp, WRITE_LOG | SET_RESULT, __FILE__, __LINE__,
			"web::htmlify", WEBLOG_INFO,
			"usage: ?-numeric? string", NULL);
		return TCL_ERROR;
	    }
	}
	else {

	    if (strcmp(Tcl_GetString(objv[iCurArg]), params[NUMERIC]) == 0) {

		int numArgs = objc - iCurArg;
		/* --------------------------------------------------------------------
		 * NUMERIC
		 * ----------------------------------------------------------------- */
		switch (numArgs) {
		case 2:
		    iCurArg++;
		    useNumeric = TCL_OK;
		    break;
		default:
		    LOG_MSG(interp, WRITE_LOG | SET_RESULT, __FILE__,
			    __LINE__, "web::htmlify", WEBLOG_INFO,
			    "usage: ?-numeric? string", NULL);
		    return TCL_ERROR;
		}
	    }
	}
    }

    res = webHtmlify(convData, objv[iCurArg], useNumeric);

    if (res == NULL) {
	LOG_MSG(interp, WRITE_LOG | SET_RESULT,
		__FILE__, __LINE__,
		"web::htmlify", WEBLOG_ERROR,
		"error converting \"", Tcl_GetString(objv[iCurArg]), "\"",
		NULL);
	return TCL_ERROR;
    }

    Tcl_SetObjResult(interp, res);
    Tcl_DecrRefCount(res);
    return TCL_OK;
}