int Web_ConfigPath_AP()

in src/generic/modwebsh_ap.c [461:518]


int Web_ConfigPath_AP(Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]) {

  /* these options should be in sync with the options in Web_Cfg
   * not the order or anything, but the actual text strings */
  static TCLCONST char *subCmd[] = {
    "script",
    "server_root",
    "document_root",
    "interpclass",
    NULL
  };
  
  enum subCmd
  {
    SCRIPT,
    SERVER_ROOT,
    DOCUMENT_ROOT,
    INTERPCLASS
  };
  
  int index;
  
  if (Tcl_GetIndexFromObj(interp, objv[1], subCmd, "subcommand", 0, &index)
      != TCL_OK) {
    /* let the caller handle the web::config command */
    Tcl_ResetResult(interp);
    return TCL_CONTINUE;
  }
  
  WebAssertObjc(objc != 2, 2, NULL);
  
  switch ((enum subCmd) index) {
    
  case SCRIPT: {
    request_rec *r;
    r = (request_rec *)Tcl_GetAssocData(interp, WEB_AP_ASSOC_DATA, NULL);
    Tcl_SetObjResult(interp, Tcl_NewStringObj(r->filename, -1));
    break;
  }
  case SERVER_ROOT: {
    Tcl_SetObjResult(interp, Tcl_NewStringObj(ap_server_root, -1));
    break;
  }
  case DOCUMENT_ROOT: {
    request_rec *r;
    r = (request_rec *)Tcl_GetAssocData(interp, WEB_AP_ASSOC_DATA, NULL);
    Tcl_SetObjResult(interp, Tcl_NewStringObj(ap_document_root(r), -1));
    break;
  }
  case INTERPCLASS: {
    WebInterp *webInterp;
    webInterp = (WebInterp *)Tcl_GetAssocData(interp, WEB_INTERP_ASSOC_DATA, NULL);
    Tcl_SetObjResult(interp, Tcl_NewStringObj(webInterp->interpClass->filename, -1));
    break;
  }
  }
  return TCL_OK;
}