Example #1
0
static void tvfsExecTcl(
  Testvfs p, 
  string zMethod,
  Tcl_Obj arg1,
  Tcl_Obj arg2,
  Tcl_Obj arg3
){
  int rc;                         /* Return code from Tcl_EvalObj() */
  Tcl_Obj pEval;
  Debug.Assert( p.pScript!=null );

  Debug.Assert( zMethod != null );
  Debug.Assert( p != null );
  Debug.Assert( arg2 == null || arg1 != null );
  Debug.Assert( arg3 == null || arg2 != null );

  pEval = TCL.Tcl_DuplicateObj(p.pScript);
  TCL.Tcl_IncrRefCount(p.pScript);
  TCL.Tcl_ListObjAppendElement( p.interp, pEval, TCL.Tcl_NewStringObj( zMethod, -1 ) );
  if ( arg1!=null )
    TCL.Tcl_ListObjAppendElement( p.interp, pEval, arg1 );
  if ( arg2 !=null )
    TCL.Tcl_ListObjAppendElement( p.interp, pEval, arg2 );
  if ( arg3 != null )
    TCL.Tcl_ListObjAppendElement( p.interp, pEval, arg3 );

  rc = TCL.Tcl_EvalObjEx(p.interp, pEval, TCL.TCL_EVAL_GLOBAL);
  if ( rc != TCL.TCL_OK )
  {
    TCL.Tcl_BackgroundError( p.interp );
    TCL.Tcl_ResetResult( p.interp );
  }
}
Example #2
0
static int tvfsInjectCantopenerr(Testvfs p){
  return tvfsInjectFault(p.cantopen_err);
}
Example #3
0
static int tvfsInjectIoerr(Testvfs p){
  return tvfsInjectFault(p.ioerr_err);
}
Example #4
0
static int tvfsInjectFullerr(Testvfs p){
  return tvfsInjectFault(p.full_err);
}
Example #5
0
    static int tvfsResultCode(Testvfs p, ref int pRc){
errcode[] aCode = new errcode[]  {
    new errcode( SQLITE_OK,     "SQLITE_OK"     ),
    new errcode( SQLITE_ERROR,  "SQLITE_ERROR"  ),
    new errcode( SQLITE_IOERR,  "SQLITE_IOERR"  ),
    new errcode( SQLITE_LOCKED, "SQLITE_LOCKED" ),
    new errcode( SQLITE_BUSY,   "SQLITE_BUSY"  )
  };

  string z;
  int i;

  z = TCL.Tcl_GetStringResult(p.interp);
  for(i=0; i<ArraySize(aCode); i++){
    if ( 0 == z.CompareTo( aCode[i].zCode ) )
    {
      pRc = aCode[i].eCode;
      return 1;
    }
  }

  return 0;
}