IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 25822


Ignore:
Timestamp:
Oct 9, 2009, 2:02:24 PM (17 years ago)
Author:
bills
Message:

code to clean up magicDSRuns

Location:
trunk
Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippScripts/Build.PL

    r25299 r25822  
    5959        scripts/magic_destreak.pl
    6060        scripts/magic_destreak_revert.pl
     61        scripts/magic_destreak_cleanup.pl
    6162        scripts/ippdb.pl
    6263        scripts/ipp_cleanup.pl
  • trunk/ippTasks/destreak.pro

    r25708 r25822  
    1010book init magicToDS
    1111book init magicDSToRevert
     12book init magicDSToCleanup
    1213
    1314### indexes into Database lists
     
    1617$magicDSToRevert_DB = 0
    1718$magicDSCompletedRevert_DB = 0
     19$magicDSToCleanup_DB = 0
    1820
    1921#list of stages
     
    3234    book listbook magicToDS
    3335    book listbook magicDSToRevert
     36    book init magicDSToCleanup
    3437end
    3538
     
    3841    book init magicToDS
    3942    book init magicDSToRevert
     43    book init magicDSToCleanup
    4044end
    4145
     
    7175end
    7276
     77macro destreak.cleanup.on
     78    task destreak.cleanup.load
     79        active true
     80    end
     81    task destreak.cleanup.run
     82        active true
     83    end
     84end
     85
    7386### Turn tasks off
    7487macro destreak.off
     
    92105    end
    93106    task destreak.completed.revert
     107        active false
     108    end
     109end
     110macro destreak.cleanup.off
     111    task destreak.cleanup.load
     112        active false
     113    end
     114    task destreak.cleanup.run
    94115        active false
    95116    end
     
    489510end
    490511
     512task           destreak.cleanup.load
     513  host         local
     514
     515  periods      -poll $LOADPOLL
     516  periods      -exec $LOADEXEC
     517  periods      -timeout 20
     518  npending     1
     519  active       false
     520
     521  stdout NULL
     522  stderr $LOGSUBDIR/destreak.cleanup.load.log
     523
     524  task.exec
     525    $run = magicdstool -tocleanup
     526    if ($DB:n == 0)
     527      option DEFAULT
     528    else
     529
     530      # save the DB name for the exit tasks
     531      option $DB:$magicDSToCleanup_DB
     532      $run = $run -dbname $DB:$magicDSToCleanup_DB
     533
     534      # only bump database number after we have gone through all of the stages
     535      $magicDSToCleanup_DB ++
     536      if ($magicDSToCleanup_DB >= $DB:n) set magicDSToCleanup_DB = 0
     537    end
     538    add_poll_args run
     539    add_poll_labels run
     540    command $run
     541  end
     542
     543  # success
     544  task.exit    0
     545    # convert 'stdout' to book format
     546    ipptool2book stdout magicDSToCleanup -key magic_ds_id -uniq -setword dbname $options:0 -setword pantaskState INIT
     547    if ($VERBOSE > 2)
     548      book listbook magicDSToCleanup
     549    end
     550
     551    # delete existing entries in the appropriate pantaskStates
     552    process_cleanup magicDSToCleanup
     553  end
     554
     555  # locked list
     556  task.exit    default
     557    showcommand failure
     558  end
     559
     560  task.exit    crash
     561    showcommand crash
     562  end
     563
     564  # operation times out?
     565  task.exit    timeout
     566    showcommand timeout
     567  end
     568end
     569
     570task           destreak.cleanup.run
     571  periods      -poll $RUNPOLL
     572  periods      -exec $RUNEXEC
     573  periods      -timeout 60
     574  active       false
     575
     576  task.exec
     577    stdout $LOGSUBDIR/destreak.cleanup.run.log
     578    stderr $LOGSUBDIR/destreak.cleanup.run.log
     579
     580    book npages magicDSToCleanup -var N
     581    if ($N == 0) break
     582    if ($NETWORK == 0) break
     583   
     584    # look for new images (pantaskState == INIT)
     585    book getpage magicDSToCleanup 0 -var pageName -key pantaskState INIT
     586    if ("$pageName" == "NULL") break
     587
     588    book setword magicDSToCleanup $pageName pantaskState RUN
     589    book getword magicDSToCleanup $pageName magic_ds_id -var MAGIC_DS_ID
     590    book getword magicDSToCleanup $pageName camera -var CAMERA
     591    book getword magicDSToCleanup $pageName outroot -var OUTROOT
     592    book getword magicDSToCleanup $pageName dbname -var DBNAME
     593
     594    sprintf logfile "%s/mds.%s.cleanup.log" $OUTROOT $MAGIC_DS_ID
     595
     596    host anyhost
     597
     598    $run = magic_destreak_cleanup.pl --magic_ds_id $MAGIC_DS_ID --camera $CAMERA --logfile $logfile
     599
     600    add_standard_args run
     601
     602    # save the pageName for future reference below
     603    options $pageName
     604
     605    # create the command line
     606    if ($VERBOSE > 1)
     607      echo command $run
     608    end
     609    command $run
     610  end
     611
     612  # default exit status
     613  task.exit    0
     614    process_exit magicDSToCleanup $options:0 $JOB_STATUS
     615   end
     616
     617  # locked list
     618  task.exit    default
     619    showcommand failure
     620    process_exit magicDSToCleanup $options:0 $JOB_STATUS
     621  end
     622
     623  task.exit    crash
     624    showcommand crash
     625    book setword magicDSToCleanup $options:0 pantaskState CRASH
     626  end
     627
     628  # operation timed out?
     629  task.exit    timeout
     630    showcommand timeout
     631    book setword magicDSToCleanup $options:0 pantaskState TIMEOUT
     632  end
     633end
     634
  • trunk/ippTools/share/Makefile.am

    r25816 r25822  
    3636     chiptool_revertprocessedimfile.sql \
    3737     chiptool_run.sql \
     38     chiptool_runstate.sql \
    3839     chiptool_export_imfile.sql \
    3940     chiptool_export_processed_imfile.sql \
     
    190191     magicdstool_getskycells.sql \
    191192     magicdstool_revertdestreakedfile.sql \
     193     magicdstool_tocleanup.sql \
    192194     magicdstool_todestreak_camera.sql \
    193195     magicdstool_todestreak_chip.sql \
     
    272274     warptool_revertoverlap.sql \
    273275     warptool_revertwarped_delete.sql \
     276     warptool_runstate.sql \
    274277     warptool_scmap.sql \
    275278     warptool_tooverlap.sql \
  • trunk/ippTools/src/chiptool.c

    r25800 r25822  
    5757static bool exportrunMode(pxConfig *config);
    5858static bool importrunMode(pxConfig *config);
     59static bool runstateMode(pxConfig *config);
    5960
    6061# define MODECASE(caseName, func) \
     
    9798        MODECASE(CHIPTOOL_MODE_EXPORTRUN,               exportrunMode);
    9899        MODECASE(CHIPTOOL_MODE_IMPORTRUN,               importrunMode);
     100        MODECASE(CHIPTOOL_MODE_RUNSTATE,                runstateMode);
    99101        default:
    100102            psAbort("invalid option (this should not happen)");
     
    15081510    return true;
    15091511}
     1512
     1513static bool runstateMode(pxConfig *config)
     1514{
     1515    PS_ASSERT_PTR_NON_NULL(config, false);
     1516
     1517    psMetadata *where = psMetadataAlloc();
     1518    PXOPT_COPY_S64(config->args, where, "-chip_id",    "chipRun.chip_id", "==");
     1519    PXOPT_COPY_S64(config->args, where, "-exp_id",     "rawExp.exp_id", "==");
     1520    PXOPT_COPY_STR(config->args, where, "-exp_name",   "rawExp.exp_name", "==");
     1521    pxAddLabelSearchArgs (config, where, "-label",     "chipRun.label", "LIKE");
     1522
     1523//    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     1524    PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false);
     1525
     1526    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1527    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1528
     1529    psString query = pxDataGet("chiptool_runstate.sql");
     1530    if (!query) {
     1531        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1532        return false;
     1533    }
     1534
     1535    if (psListLength(where->list)) {
     1536        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1537        psStringAppend(&query, " WHERE %s", whereClause);
     1538        psFree(whereClause);
     1539    } else {
     1540        psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required");
     1541        return false;
     1542    }
     1543    psFree(where);
     1544
     1545    // treat limit == 0 as "no limit"
     1546    if (limit) {
     1547        psString limitString = psDBGenerateLimitSQL(limit);
     1548        psStringAppend(&query, " %s", limitString);
     1549        psFree(limitString);
     1550    }
     1551
     1552    if (!p_psDBRunQuery(config->dbh, query)) {
     1553        psError(PS_ERR_UNKNOWN, false, "database error");
     1554        psFree(query);
     1555        return false;
     1556    }
     1557    psFree(query);
     1558
     1559    psArray *output = p_psDBFetchResult(config->dbh);
     1560    if (!output) {
     1561        psErrorCode err = psErrorCodeLast();
     1562        switch (err) {
     1563            case PS_ERR_DB_CLIENT:
     1564                psError(PXTOOLS_ERR_SYS, false, "database error");
     1565            case PS_ERR_DB_SERVER:
     1566                psError(PXTOOLS_ERR_PROG, false, "database error");
     1567            default:
     1568                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1569        }
     1570
     1571        return false;
     1572    }
     1573    if (!psArrayLength(output)) {
     1574        psTrace("chiptool", PS_LOG_INFO, "no rows found");
     1575        psFree(output);
     1576        return true;
     1577    }
     1578
     1579    if (psArrayLength(output)) {
     1580        // negative simple so the default is true
     1581        if (!ippdbPrintMetadatas(stdout, output, "chipRunState", !simple)) {
     1582            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1583            psFree(output);
     1584            return false;
     1585        }
     1586    }
     1587
     1588    psFree(output);
     1589
     1590    return true;
     1591}
  • trunk/ippTools/src/chiptool.h

    r25324 r25822  
    4747    CHIPTOOL_MODE_TOSCRUBBEDIMFILE,
    4848    CHIPTOOL_MODE_EXPORTRUN,
    49     CHIPTOOL_MODE_IMPORTRUN
     49    CHIPTOOL_MODE_IMPORTRUN,
     50    CHIPTOOL_MODE_RUNSTATE
    5051} chiptoolMode;
    5152
  • trunk/ippTools/src/chiptoolConfig.c

    r25800 r25822  
    271271    psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile",  0,          "import from this file (required)", NULL);
    272272
     273    // -runstate
     274    psMetadata *runstateArgs = psMetadataAlloc();
     275    psMetadataAddS64(runstateArgs, PS_LIST_TAIL, "-chip_id", 0,           "search by chip ID", 0);
     276    psMetadataAddS64(runstateArgs, PS_LIST_TAIL, "-exp_id", 0,            "search by exposure tag", 0);
     277    psMetadataAddStr(runstateArgs, PS_LIST_TAIL, "-exp_name", 0,          "search by exposure tag", 0);
     278    psMetadataAddStr(runstateArgs, PS_LIST_TAIL,  "-label",  PS_META_DUPLICATE_OK, "search by warpRun label", NULL);
     279    psMetadataAddBool(runstateArgs, PS_LIST_TAIL, "-no_magic",  0,        "magic is not necessary for result", false);
     280
     281    psMetadataAddU64(runstateArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
     282    psMetadataAddBool(runstateArgs, PS_LIST_TAIL, "-simple",  0,          "use the simple output format", false);
     283
    273284    psMetadata *argSets = psMetadataAlloc();
    274285    psMetadata *modes = psMetadataAlloc();
     
    281292    PXOPT_ADD_MODE("-updateprocessedimfile","change procesed imfile properties",    CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,updateprocessedimfileArgs);
    282293    PXOPT_ADD_MODE("-revertprocessedimfile","undo a processed imfile",              CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,revertprocessedimfileArgs);
     294    PXOPT_ADD_MODE("-runstate",             "list the states of chip run",          CHIPTOOL_MODE_RUNSTATE,             runstateArgs);
    283295    PXOPT_ADD_MODE("-advanceexp",           "advance completed exposures",          CHIPTOOL_MODE_ADVANCEEXP,           advanceexpArgs);
    284296    PXOPT_ADD_MODE("-block",                "set a label block",                    CHIPTOOL_MODE_BLOCK,                blockArgs);
  • trunk/ippTools/src/magicdstool.c

    r25792 r25822  
    4343static bool torevertMode(pxConfig *config);
    4444static bool completedrevertMode(pxConfig *config);
     45static bool tocleanupMode(pxConfig *config);
    4546
    4647static bool setmagicDSRunState(pxConfig *config, psS64 magic_id, psMetadata *where, const char *state);
     
    7677        MODECASE(MAGICDSTOOL_MODE_TOREVERT,            torevertMode);
    7778        MODECASE(MAGICDSTOOL_MODE_COMPLETEDREVERT,     completedrevertMode);
     79        MODECASE(MAGICDSTOOL_MODE_TOCLEANUP,           tocleanupMode);
    7880        default:
    7981            psAbort("invalid option (this should not happen)");
     
    12211223
    12221224
     1225static bool tocleanupMode(pxConfig *config)
     1226{
     1227    PS_ASSERT_PTR_NON_NULL(config, false);
     1228
     1229    psMetadata *where = psMetadataAlloc();
     1230
     1231    PXOPT_COPY_S64(config->args, where, "-stage", "stage", "==");
     1232    PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magic_ds_id", "==");
     1233    PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "==");
     1234    pxAddLabelSearchArgs (config, where, "-label", "magicDSRun.label", "==");
     1235
     1236    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1237    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1238
     1239    psString query = pxDataGet("magicdstool_tocleanup.sql");
     1240    if (!query) {
     1241        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1242        return false;
     1243    }
     1244
     1245    if (psListLength(where->list)) {
     1246        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1247        psStringAppend(&query, " AND %s", whereClause);
     1248        psFree(whereClause);
     1249    }
     1250    psFree(where);
     1251
     1252    // treat limit == 0 as "no limit"
     1253    if (limit) {
     1254        psString limitString = psDBGenerateLimitSQL(limit);
     1255        psStringAppend(&query, " %s", limitString);
     1256        psFree(limitString);
     1257    }
     1258
     1259    if (!p_psDBRunQuery(config->dbh, query)) {
     1260        psError(PS_ERR_UNKNOWN, false, "database error");
     1261        psFree(query);
     1262        return false;
     1263    }
     1264    psFree(query);
     1265
     1266    psArray *output = p_psDBFetchResult(config->dbh);
     1267    if (!output) {
     1268        psErrorCode err = psErrorCodeLast();
     1269        switch (err) {
     1270            case PS_ERR_DB_CLIENT:
     1271                psError(PXTOOLS_ERR_SYS, false, "database error");
     1272            case PS_ERR_DB_SERVER:
     1273                psError(PXTOOLS_ERR_PROG, false, "database error");
     1274            default:
     1275                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1276        }
     1277
     1278        return false;
     1279    }
     1280    if (!psArrayLength(output)) {
     1281        psTrace("magicdstool", PS_LOG_INFO, "no rows found");
     1282        psFree(output);
     1283        return true;
     1284    }
     1285
     1286    if (psArrayLength(output)) {
     1287        // negative simple so the default is true
     1288        if (!ippdbPrintMetadatas(stdout, output, "tocleanup", !simple)) {
     1289            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1290            psFree(output);
     1291            return false;
     1292        }
     1293    }
     1294
     1295    psFree(output);
     1296
     1297    return true;
     1298}
  • trunk/ippTools/src/magicdstool.h

    r25465 r25822  
    3636    MAGICDSTOOL_MODE_TOREVERT,
    3737    MAGICDSTOOL_MODE_COMPLETEDREVERT,
     38    MAGICDSTOOL_MODE_TOCLEANUP,
    3839} MAGICDStoolMode;
    3940
  • trunk/ippTools/src/magicdstoolConfig.c

    r25792 r25822  
    157157    psMetadataAddU64(advancerunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);
    158158
     159    // -tocleanup
     160    psMetadata *tocleanupArgs = psMetadataAlloc();
     161    psMetadataAddS64(tocleanupArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magic Destreak ID", 0);
     162    psMetadataAddS64(tocleanupArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magic ID", 0);
     163    psMetadataAddStr(tocleanupArgs, PS_LIST_TAIL, "-stage", 0, "define output directory", NULL);
     164    psMetadataAddStr(tocleanupArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL);
     165    psMetadataAddU64(tocleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);
     166    psMetadataAddBool(tocleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    159167    psFree(now);
    160168
     
    185193    PXOPT_ADD_MODE("-completedrevert", "change state for runs that have finished reverting",
    186194                    MAGICDSTOOL_MODE_COMPLETEDREVERT, completedrevertArgs);
     195    PXOPT_ADD_MODE("-tocleanup", "destreak runs to clean up",
     196                    MAGICDSTOOL_MODE_TOCLEANUP, tocleanupArgs);
    187197
    188198
  • trunk/ippTools/src/warptool.c

    r25800 r25822  
    5858static bool exportrunMode(pxConfig *config);
    5959static bool importrunMode(pxConfig *config);
     60static bool runstateMode(pxConfig *config);
    6061
    6162static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile);
     
    108109        MODECASE(WARPTOOL_MODE_EXPORTRUN,          exportrunMode);
    109110        MODECASE(WARPTOOL_MODE_IMPORTRUN,          importrunMode);
     111        MODECASE(WARPTOOL_MODE_RUNSTATE,           runstateMode);
    110112
    111113        default:
     
    19151917  return true;
    19161918}
     1919
     1920static bool runstateMode(pxConfig *config)
     1921{
     1922    PS_ASSERT_PTR_NON_NULL(config, false);
     1923
     1924    psMetadata *where = psMetadataAlloc();
     1925    PXOPT_COPY_S64(config->args, where, "-warp_id",    "warpRun.warp_id", "==");
     1926    PXOPT_COPY_S64(config->args, where, "-exp_id",     "rawExp.exp_id", "==");
     1927    PXOPT_COPY_STR(config->args, where, "-exp_name",   "rawExp.exp_name", "==");
     1928    pxAddLabelSearchArgs (config, where, "-label",     "warpRun.label", "LIKE");
     1929
     1930//    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     1931    PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false);
     1932
     1933    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1934    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1935
     1936    psString query = pxDataGet("warptool_runstate.sql");
     1937    if (!query) {
     1938        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1939        return false;
     1940    }
     1941
     1942    if (psListLength(where->list)) {
     1943        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1944        psStringAppend(&query, " WHERE %s", whereClause);
     1945        psFree(whereClause);
     1946    } else {
     1947        psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required");
     1948        return false;
     1949    }
     1950    psFree(where);
     1951
     1952    // treat limit == 0 as "no limit"
     1953    if (limit) {
     1954        psString limitString = psDBGenerateLimitSQL(limit);
     1955        psStringAppend(&query, " %s", limitString);
     1956        psFree(limitString);
     1957    }
     1958
     1959    if (!p_psDBRunQuery(config->dbh, query)) {
     1960        psError(PS_ERR_UNKNOWN, false, "database error");
     1961        psFree(query);
     1962        return false;
     1963    }
     1964    psFree(query);
     1965
     1966    psArray *output = p_psDBFetchResult(config->dbh);
     1967    if (!output) {
     1968        psErrorCode err = psErrorCodeLast();
     1969        switch (err) {
     1970            case PS_ERR_DB_CLIENT:
     1971                psError(PXTOOLS_ERR_SYS, false, "database error");
     1972            case PS_ERR_DB_SERVER:
     1973                psError(PXTOOLS_ERR_PROG, false, "database error");
     1974            default:
     1975                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1976        }
     1977
     1978        return false;
     1979    }
     1980    if (!psArrayLength(output)) {
     1981        psTrace("warptool", PS_LOG_INFO, "no rows found");
     1982        psFree(output);
     1983        return true;
     1984    }
     1985
     1986    if (psArrayLength(output)) {
     1987        // negative simple so the default is true
     1988        if (!ippdbPrintMetadatas(stdout, output, "warpRunState", !simple)) {
     1989            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1990            psFree(output);
     1991            return false;
     1992        }
     1993    }
     1994
     1995    psFree(output);
     1996
     1997    return true;
     1998}
  • trunk/ippTools/src/warptool.h

    r25324 r25822  
    5353    WARPTOOL_MODE_UPDATESKYFILE,
    5454    WARPTOOL_MODE_EXPORTRUN,
    55     WARPTOOL_MODE_IMPORTRUN
     55    WARPTOOL_MODE_IMPORTRUN,
     56    WARPTOOL_MODE_RUNSTATE,
    5657} warptoolMode;
    5758
  • trunk/ippTools/src/warptoolConfig.c

    r25800 r25822  
    318318    psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile",  0,          "import from this file (required)", NULL);
    319319
     320    // -runstate
     321    psMetadata *runstateArgs = psMetadataAlloc();
     322    psMetadataAddS64(runstateArgs, PS_LIST_TAIL, "-warp_id", 0,           "search by warptool ID", 0);
     323//    psMetadataAddStr(runstateArgs, PS_LIST_TAIL, "-tess_id",  0,          "search by tessellation ID", NULL);
     324    psMetadataAddS64(runstateArgs, PS_LIST_TAIL, "-exp_id", 0,            "search by exposure tag", 0);
     325    psMetadataAddStr(runstateArgs, PS_LIST_TAIL, "-exp_name", 0,          "search by exposure tag", 0);
     326    psMetadataAddStr(runstateArgs, PS_LIST_TAIL,  "-label",  PS_META_DUPLICATE_OK, "search by warpRun label", NULL);
     327    psMetadataAddBool(runstateArgs, PS_LIST_TAIL, "-no_magic",  0,        "magic is not necessary for result", false);
     328
     329    psMetadataAddU64(runstateArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
     330    psMetadataAddBool(runstateArgs, PS_LIST_TAIL, "-simple",  0,          "use the simple output format", false);
     331
    320332
    321333    psFree(now);
     
    336348    PXOPT_ADD_MODE("-advancerun",      "", WARPTOOL_MODE_ADVANCERUN,     advancerunArgs);
    337349    PXOPT_ADD_MODE("-warped",          "", WARPTOOL_MODE_WARPED,         warpedArgs);
     350    PXOPT_ADD_MODE("-runstate",        "", WARPTOOL_MODE_RUNSTATE,       runstateArgs);
    338351    PXOPT_ADD_MODE("-revertwarped",    "", WARPTOOL_MODE_REVERTWARPED,   revertwarpedArgs);
    339352    PXOPT_ADD_MODE("-block",                 "set a label block",                    WARPTOOL_MODE_BLOCK,          blockArgs);
Note: See TracChangeset for help on using the changeset viewer.