modernc.org/cc@v1.0.1/v2/testdata/_sqlite/ext/lsm1/lsm-test/lsmtest_bt.c (about)

     1  
     2  #include "lsmtest.h"
     3  #include "bt.h"
     4  
     5  int do_bt(int nArg, char **azArg){
     6    struct Option {
     7      const char *zName;
     8      int bPgno;
     9      int eOpt;
    10    } aOpt [] = { 
    11      { "dbhdr",          0, BT_INFO_HDRDUMP },
    12      { "filename",       0, BT_INFO_FILENAME },
    13      { "block_freelist", 0, BT_INFO_BLOCK_FREELIST },
    14      { "page_freelist",  0, BT_INFO_PAGE_FREELIST },
    15      { "filename",       0, BT_INFO_FILENAME },
    16      { "page",           1, BT_INFO_PAGEDUMP },
    17      { "page_ascii",     1, BT_INFO_PAGEDUMP_ASCII },
    18      { "leaks",          0, BT_INFO_PAGE_LEAKS },
    19      { 0, 0 } 
    20    };
    21    int iOpt;
    22    int rc;
    23    bt_info buf;
    24    char *zOpt;
    25    char *zFile;
    26  
    27    bt_db *db = 0;
    28  
    29    if( nArg<2 ){
    30      testPrintUsage("FILENAME OPTION ...");
    31      return -1;
    32    }
    33    zFile = azArg[0];
    34    zOpt = azArg[1];
    35  
    36    rc = testArgSelect(aOpt, "option", zOpt, &iOpt);
    37    if( rc!=0 ) return rc;
    38    if( nArg!=2+aOpt[iOpt].bPgno ){
    39      testPrintFUsage("FILENAME %s %s", zOpt, aOpt[iOpt].bPgno ? "PGNO" : "");
    40      return -4;
    41    }
    42  
    43    rc = sqlite4BtNew(sqlite4_env_default(), 0, &db);
    44    if( rc!=SQLITE4_OK ){
    45      testPrintError("sqlite4BtNew() failed: %d", rc);
    46      return -2;
    47    }
    48    rc = sqlite4BtOpen(db, zFile);
    49    if( rc!=SQLITE4_OK ){
    50      testPrintError("sqlite4BtOpen() failed: %d", rc);
    51      return -3;
    52    }
    53  
    54    buf.eType = aOpt[iOpt].eOpt;
    55    buf.pgno = 0;
    56    sqlite4_buffer_init(&buf.output, 0);
    57  
    58    if( aOpt[iOpt].bPgno ){
    59      buf.pgno = (u32)atoi(azArg[2]);
    60    }
    61  
    62    rc = sqlite4BtControl(db, BT_CONTROL_INFO, &buf);
    63    if( rc!=SQLITE4_OK ){
    64      testPrintError("sqlite4BtControl() failed: %d\n", rc);
    65      return -4;
    66    }
    67  
    68    printf("%s\n", (char*)buf.output.p);
    69    sqlite4_buffer_clear(&buf.output);
    70    return 0;
    71  }
    72  
    73  
    74  
    75