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; }
} END_TEST static struct RFstring *get_str(int choice) { if (choice == 1) { return RFS("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); } else { return RFS("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ%d", 1337); } }
} 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
} 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
} 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; }
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; }
// 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; }
} 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
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; }
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; }
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; }
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); }