!C99Shell v. 1.0 pre-release build #16!

Software: Apache/2.0.54 (Fedora). PHP/5.0.4 

uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 

uid=48(apache) gid=48(apache) groups=48(apache)
context=system_u:system_r:httpd_sys_script_t
 

Safe-mode: OFF (not secure)

/usr/share/doc/db4-devel-4.3.27/examples_cxx/   drwxr-xr-x
Free 3.8 GB of 27.03 GB (14.06%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     BtRecExample.cpp (4.36 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 1997-2004
*    Sleepycat Software.  All rights reserved.
*
* $Id: BtRecExample.cpp,v 11.26 2004/09/17 22:00:28 mjc Exp $
*/

#include <sys/types.h>

#include <errno.h>
#include <iostream>
#include <iomanip>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <db_cxx.h>

using std::cout;
using std::cerr;

#define    DATABASE    "access.db"
#define    WORDLIST    "../test/wordlist"

const char *progname = "BtRecExample";        // Program name.

class BtRecExample
{
public:
    BtRecExample(FILE *fp);
    ~BtRecExample();
    void run();
    void stats();
    void show(const char *msg, Dbt *key, Dbt *data);

private:
    Db *dbp;
    Dbc *dbcp;
};

BtRecExample::BtRecExample(FILE *fp)
{
    char *p, *t, buf[1024], rbuf[1024];
    int ret;

    // Remove the previous database.
    (void)remove(DATABASE);

    dbp = new Db(NULL, 0);

    dbp->set_error_stream(&cerr);
    dbp->set_errpfx(progname);
    dbp->set_pagesize(1024);            // 1K page sizes.

    dbp->set_flags(DB_RECNUM);            // Record numbers.
    dbp->open(NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664);

    //
    // Insert records into the database, where the key is the word
    // preceded by its record number, and the data is the same, but
    // in reverse order.
    //

    for (int cnt = 1; cnt <= 1000; ++cnt) {
        (void)sprintf(buf, "%04d_", cnt);
        if (fgets(buf + 4, sizeof(buf) - 4, fp) == NULL)
            break;
        u_int32_t len = (u_int32_t)strlen(buf);
        buf[len - 1] = '\0';
        for (t = rbuf, p = buf + (len - 2); p >= buf;)
            *t++ = *p--;
        *t++ = '\0';

        // As a convenience for printing, we include the null terminator
        // in the stored data.
        //
        Dbt key(buf, len);
        Dbt data(rbuf, len);

        if ((ret = dbp->put(NULL, &key, &data, DB_NOOVERWRITE)) != 0) {
            dbp->err(ret, "Db::put");
            if (ret != DB_KEYEXIST)
                throw DbException(ret);
        }
    }
}

BtRecExample::~BtRecExample()
{
    if (dbcp != 0)
        dbcp->close();
    dbp->close(0);
    delete dbp;
}

//
// Print out the number of records in the database.
//
void BtRecExample::stats()
{
    DB_BTREE_STAT *statp;

    dbp->stat(NULL, &statp, 0);
    cout << progname << ": database contains "
         << (u_long)statp->bt_ndata << " records\n";

    // Note: must use free, not delete.
    // This struct is allocated by C.
    //
    free(statp);
}

void BtRecExample::run()
{
    db_recno_t recno;
    int ret;
    char buf[1024];

    // Acquire a cursor for the database.
    dbp->cursor(NULL, &dbcp, 0);

    //
    // Prompt the user for a record number, then retrieve and display
    // that record.
    //
    for (;;) {
        // Get a record number.
        cout << "recno #> ";
        cout.flush();
        if (fgets(buf, sizeof(buf), stdin) == NULL)
            break;
        recno = atoi(buf);

        //
        // Start with a fresh key each time,
        // the dbp->get() routine returns
        // the key and data pair, not just the key!
        //
        Dbt key(&recno, sizeof(recno));
        Dbt data;

        if ((ret = dbcp->get(&key, &data, DB_SET_RECNO)) != 0) {
            dbp->err(ret, "DBcursor->get");
            throw DbException(ret);
        }

        // Display the key and data.
        show("k/d\t", &key, &data);

        // Move the cursor a record forward.
        if ((ret = dbcp->get(&key, &data, DB_NEXT)) != 0) {
            dbp->err(ret, "DBcursor->get");
            throw DbException(ret);
        }

        // Display the key and data.
        show("next\t", &key, &data);

        //
        // Retrieve the record number for the following record into
        // local memory.
        //
        data.set_data(&recno);
        data.set_size(sizeof(recno));
        data.set_ulen(sizeof(recno));
        data.set_flags(data.get_flags() | DB_DBT_USERMEM);

        if ((ret = dbcp->get(&key, &data, DB_GET_RECNO)) != 0) {
            if (ret != DB_NOTFOUND && ret != DB_KEYEMPTY) {
                dbp->err(ret, "DBcursor->get");
                throw DbException(ret);
            }
        }
        else {
            cout << "retrieved recno: " << (u_long)recno << "\n";
        }
    }

    dbcp->close();
    dbcp = NULL;
}

//
// show --
//    Display a key/data pair.
//
void BtRecExample::show(const char *msg, Dbt *key, Dbt *data)
{
    cout << msg << (char *)key->get_data()
         << " : " << (char *)data->get_data() << "\n";
}

int
main()
{
    FILE *fp;

    // Open the word database.
    if ((fp = fopen(WORDLIST, "r")) == NULL) {
        fprintf(stderr, "%s: open %s: %s\n",
            progname, WORDLIST, db_strerror(errno));
        return (EXIT_FAILURE);
    }

    try {
        BtRecExample app(fp);

        // Close the word database.
        (void)fclose(fp);
        fp = NULL;

        app.stats();
        app.run();
    }
    catch (DbException &dbe) {
        cerr << "Exception: " << dbe.what() << "\n";
        return (EXIT_FAILURE);
    }

    return (EXIT_SUCCESS);
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #16 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0036 ]--