Beispiel #1
0
int symAccess( 
    sqlite3_vfs *pVfs, 
    const char *zFilename,  /* Name of file to check */
    int flags,              /* Type of test to make on this file */
    int *pResOut            /* Write result boolean here */
    )
{
    TFileName filename;
    CnvUtfConverter::ConvertToUnicodeFromUtf8( filename, ZSTR2PTR( zFilename ) );

    switch ( flags )
    {
        case SQLITE_ACCESS_READ:
        case SQLITE_ACCESS_EXISTS:
        {
            *pResOut = BaflUtils::FileExists( RFS( pVfs ), filename );
            break;
        }   
        case SQLITE_ACCESS_READWRITE:
        {
            TUint att( 0 );
            RFS( pVfs ).Att( filename, att );
            *pResOut = !( att & KEntryAttReadOnly );
            break;
        }
        default:
            break;
    }
    return SQLITE_OK;
}
Beispiel #2
0
} END_TEST

static struct RFstring *get_str(int choice)
{
    if (choice == 1) {
        return RFS("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
    } else {
        return RFS("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
                   "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ%d",
                   1337);
    }
}
Beispiel #3
0
} END_TEST

START_TEST (test_RFS_same_ptr) {
    struct RFstring *s1;
    RFS_PUSH();
    s1 = RFS("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
    ck_assert_rf_str_eq_cstr(s1, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
    s1 = RFS(RFS_PF "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ",
             RFS_PA(s1));
    ck_assert_rf_str_eq_cstr(s1,
        "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
        "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ");
    RFS_POP();
} END_TEST
Beispiel #4
0
} END_TEST

START_TEST (test_RFS_realloc_vararg_at_second_use) {
    struct RFstring *s1;
    struct RFstring *s2;
    RFS_PUSH();
    s1 = RFS("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz%d%d", 23, 24);
    ck_assert_rf_str_eq_cstr(s1, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz2324");
    RFS_PUSH();
    s2 = RFS("ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ%s%d", "eleos", 124);
    ck_assert_rf_str_eq_cstr(s1, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz2324");
    ck_assert_rf_str_eq_cstr(s2, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZeleos124");
    RFS_POP();
    RFS_POP();
} END_TEST
Beispiel #5
0
} END_TEST

static struct RFstring *get_str_rec(struct RFstring *s, int num, bool first)
{
    if (first) {
        s = RFS("%dabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz", num);
    } else {
        s = RFS(RFS_PF "%dabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
                RFS_PA(s), num);
    }
    if (num > 0) {
        s = get_str_rec(s, num - 1, false);
    }

    return s;
}
Beispiel #6
0
int symOpen( 
    sqlite3_vfs *pVfs,
    const char *zName,  /* Name of the file (UTF-8) */
    sqlite3_file *id,   /* Write the SQLite file handle here */
    int flags,          /* Open mode flags */
    int* /*pOutFlags*/      /* Status return flags */
    )
{
    symFile *pFile = (symFile*) id;

    pFile->isOpen = 0;
    pFile->locktype = NO_LOCK;
    pFile->pMethods = &symbian_io;
    pFile->sharedLockByte = 0;

    TFileName filename;
    CnvUtfConverter::ConvertToUnicodeFromUtf8( filename, ZSTR2PTR( zName ) );

    int ret = 0;
    if ( flags & SQLITE_OPEN_CREATE )
    {
        if ( BaflUtils::FileExists( RFS( pVfs ), filename ) == 1 )
        {
            ret = pFile->file.Open( RFS( pVfs ), filename, EFileStream | EFileWrite | EFileShareAny );
        }
        else
        {
            ret = pFile->file.Create( RFS( pVfs ), filename, EFileStream | EFileWrite | EFileShareAny );
        }
    }
    else if ( flags & SQLITE_OPEN_READWRITE )
    {
        ret = pFile->file.Open( RFS( pVfs ), filename, EFileStream | EFileWrite | EFileShareAny );
    }
    else
    {
        ret = pFile->file.Open( RFS( pVfs ), filename, EFileStream | EFileRead | EFileShareAny );
    }

    if ( ret != KErrNone )
    {
        return SQLITE_IOERR;
    }

    pFile->isOpen = 1;
    return SQLITE_OK;
}
Beispiel #7
0
// test RFS calls in recursive functions that add local RFS initialized strings
// to the returned string
static struct RFstring *get_str_rec_with_local(struct RFstring *ret, int num)
{
    if (num > 0) {
        ret = get_str_rec_with_local(ret, num - 1);
    }
    struct RFstring *s;
    s = RFS("pre%d", num);
    if (num == 0) {
        ret = RFS(RFS_PF"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
                  RFS_PA(s));
    } else {
        ret = RFS(RFS_PF
                  RFS_PF
                  "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
                  RFS_PA(ret), RFS_PA(s));
    }

    return ret;
}
Beispiel #8
0
} END_TEST

START_TEST (test_RFS_realloc_at_first_use) {
    struct RFstring *s1;
    struct RFstring *s2;
    RFS_PUSH();
    s1 = RFS(
        "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
        "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
    ck_assert_rf_str_eq_cstr(
        s1,
        "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
        "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
    RFS_PUSH();
    s2 = RFS("ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ");
    ck_assert_rf_str_eq_cstr(
        s1,
        "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
        "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
    ck_assert_rf_str_eq_cstr(s2, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ");
    RFS_POP();
    RFS_POP();
} END_TEST
Beispiel #9
0
int symDelete( 
    sqlite3_vfs *pVfs,
    const char *zFilename,  /* Name of file to delete */
    int /*syncDir*/
    )
{
    TFileName filename;
    CnvUtfConverter::ConvertToUnicodeFromUtf8( filename, ZSTR2PTR( zFilename ) );
    
    if ( BaflUtils::DeleteFile( RFS( pVfs ), filename ) == KErrNone )
        return SQLITE_OK;
    else
        return SQLITE_IOERR_DELETE;
}
Beispiel #10
0
bool rir_binaryop_tostring(struct rirtostr_ctx *ctx, const struct rir_expression *e)
{
    bool ret = false;
    RFS_PUSH();

    const struct RFstring *memtype_s = rir_type_string(e->binaryop.a->type);
    if (e->val.category == RIR_VALUE_NIL) {
        if (!rf_stringx_append(
                ctx->rir->buff,
                RFS(RIRTOSTR_INDENT RF_STR_PF_FMT"(" RF_STR_PF_FMT ", "RF_STR_PF_FMT ", " RF_STR_PF_FMT ")\n",
                    RF_STR_PF_ARG(&rir_bop_type_strings[e->type]),
                    RF_STR_PF_ARG(memtype_s),
                    RF_STR_PF_ARG(rir_value_string(e->binaryop.a)),
                    RF_STR_PF_ARG(rir_value_string(e->binaryop.b)))
            )) {
            goto end;
        }
    } else {
        if (!rf_stringx_append(
                ctx->rir->buff,
                RFS(RIRTOSTR_INDENT RF_STR_PF_FMT" = "RF_STR_PF_FMT"(" RF_STR_PF_FMT ", "RF_STR_PF_FMT ", " RF_STR_PF_FMT ")\n",
                    RF_STR_PF_ARG(rir_value_string(&e->val)),
                    RF_STR_PF_ARG(&rir_bop_type_strings[e->type]),
                    RF_STR_PF_ARG(memtype_s),
                    RF_STR_PF_ARG(rir_value_string(e->binaryop.a)),
                    RF_STR_PF_ARG(rir_value_string(e->binaryop.b)))
            )) {
            goto end;
        }
    }

    ret = true;
end:
    RFS_POP();
    return ret;
}
Beispiel #11
0
int symFullName(
    sqlite3_vfs *pVfs,      /* Pointer to vfs object */
    const char *zRelative,  /* Possibly relative input path */
    int nFull,              /* Size of output buffer in bytes */
    char *zFull             /* Output buffer */
)
{
    TFileName relative;
    CnvUtfConverter::ConvertToUnicodeFromUtf8( relative, ZSTR2PTR( zRelative ) );
    
    TParse parse;
    RFS( pVfs ).Parse( relative, parse );
    
    TPtr8 full( (TUint8*) zFull, MAX_FILE_NAME );
    CnvUtfConverter::ConvertFromUnicodeToUtf8( full, parse.FullName() );
    full.ZeroTerminate();
    
    return SQLITE_OK;
}
Beispiel #12
0
void Dumper::printRuntimeFunction(const Context &Ctx,
                                  const coff_section *Section,
                                  uint64_t SectionOffset,
                                  const RuntimeFunction &RF) {
  DictScope RFS(SW, "RuntimeFunction");
  printRuntimeFunctionEntry(Ctx, Section, SectionOffset, RF);

  const coff_section *XData;
  uint64_t Offset;
  resolveRelocation(Ctx, Section, SectionOffset + 8, XData, Offset);

  ArrayRef<uint8_t> Contents;
  error(Ctx.COFF.getSectionContents(XData, Contents));
  if (Contents.empty())
    return;

  Offset = Offset + RF.UnwindInfoOffset;
  if (Offset > Contents.size())
    return;

  const auto UI = reinterpret_cast<const UnwindInfo*>(Contents.data() + Offset);
  printUnwindInfo(Ctx, XData, Offset, *UI);
}