Changeset 297

Show
Ignore:
Timestamp:
10/10/06 15:47:19 (2 years ago)
Author:
krobillard
Message:

Orca - Added /return refinement to 'quit.

Location:
trunk/orca
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/orca/boot.c

    r136 r297  
    309309  "recycle: native [/off /on]\n" 
    310310  "halt: native []\n" 
    311   "quit: native []\n" 
     311  "quit: native [/return code]\n" 
    312312  "protect: native [\n" 
    313313  "    value [word! block!]\n" 
  • trunk/orca/boot.r

    r136 r297  
    415415 
    416416    halt: native [] 
    417     quit: native [] 
     417    quit: native [/return code] 
    418418 
    419419    protect: native [ 
  • trunk/orca/console.c

    r144 r297  
    7676        if( orErrorThrown ) 
    7777        { 
    78             if( ! orErrorIsType(OR_ERROR_QUIT) ) 
     78            if( orErrorIsType(OR_ERROR_QUIT) ) 
     79            { 
     80                ret = orErrorThrown->error.msg; 
     81            } 
     82            else 
    7983            { 
    8084                if( ! orErrorIsType(OR_ERROR_HALT) ) 
     
    118122                { 
    119123                    if( orErrorIsType(OR_ERROR_QUIT) ) 
     124                    { 
     125                        ret = orErrorThrown->error.msg; 
    120126                        break; 
     127                    } 
    121128                    if( ! orErrorIsType(OR_ERROR_HALT) ) 
    122129                        orPrintNative( orErrorThrown ); 
  • trunk/orca/ovalue.c

    r154 r297  
    18411841OR_NATIVE( orQuitNative ) 
    18421842{ 
     1843#define REF_QUIT_RETURN  a1 
     1844    OValue* a2 = a1 + 1; 
     1845    int code = 0; 
     1846 
     1847    if( orRefineSet(REF_QUIT_RETURN) ) 
     1848    { 
     1849        if( orIs(a2, OT_INTEGER) ) 
     1850            code = orInt(a2); 
     1851        else if( orIs(a2, OT_LOGIC) ) 
     1852            code = orLogic(a2) ? 0 : -1; 
     1853    } 
     1854 
    18431855    orSetError( a1, OR_ERROR_QUIT ); 
    18441856 
    1845     a1->error.msg     = 0; 
     1857    a1->error.msg     = code; 
    18461858    a1->error.block   = 0; 
    18471859    a1->error.nearVal = 0;