30 wchar_t *
dest = rz_utf8_to_utf16(
path);
50 fwrite(file_buf,
sizeof(
char), (
size_t)
len,
f);
61 bool downloaded =
false;
68 char *abspath_to_file =
rz_str_newf(
"%s%s%s%s%s%s%s",
75 eprintf(
"File already downloaded.\n");
76 return abspath_to_file;
80 char *extractor_cmd =
NULL;
82 archive_name[strlen(archive_name) - 1] =
'_';
83 char *abspath_to_archive =
rz_str_newf(
"%s%s%s%s%s%s%s",
90 eprintf(
"Attempting to download compressed pdb in %s\n", abspath_to_archive);
93 if (opt->
extract > 0 && downloaded) {
94 eprintf(
"Attempting to decompress pdb\n");
101 free(abspath_to_dir);
102 free(abspath_to_archive);
106 eprintf(
"Falling back to uncompressed pdb\n");
107 eprintf(
"Attempting to download uncompressed pdb in %s\n", abspath_to_file);
113 return downloaded ? abspath_to_file :
NULL;
126 eprintf(
"Cannot allocate memory for SPDBDownloaderOpt.\n");
156 for (
i = 0; guid[
i];
i++) {
225 char *server = strtok(symbol_server,
";");
226 while (server && !
path) {
234 server = strtok(
NULL,
";");
RZ_DEPRECATE RZ_API RZ_BORROW RzBinInfo * rz_bin_get_info(RzBin *bin)
RzBinInfo * info(RzBinFile *bf)
RZ_API int rz_cons_printf(const char *format,...)
static static fork const void static count static fd const char const char static newpath const char static path const char path
RZ_API void Ht_() free(HtName_(Ht) *ht)
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
static const char struct stat static buf struct stat static buf static vhangup int options
RZ_API RZ_OWN char * rz_bin_symserver_download(RZ_NONNULL const SPDBDownloaderOpt *options)
downloads file from symbol server
void deinit_pdb_downloader(SPDBDownloader *pd)
deinitialization of PDB downloader
static bool is_valid_guid(const char *guid)
static bool download_and_write(SPDBDownloaderOpt *opt, const char *file)
static char * download(struct SPDBDownloader *pd)
RZ_API int rz_bin_pdb_download(RZ_NONNULL RzBin *bin, RZ_NULLABLE PJ *pj, int isradjson, RZ_NONNULL SPDBOptions *options)
Download PDB file for currently opened RzBin file.
void init_pdb_downloader(SPDBDownloaderOpt *opt, SPDBDownloader *pd)
initialization of pdb downloader by SPDBDownloaderOpt
#define rz_return_val_if_fail(expr, val)
RZ_API const char * rz_file_dos_basename(RZ_BORROW RZ_NONNULL const char *path)
RZ_API bool rz_file_exists(const char *str)
RZ_API char * rz_file_dirname(const char *path)
RZ_API bool rz_file_rm(const char *file)
#define RZ_LOG_ERROR(fmtstr,...)
RZ_API PJ * pj_ko(PJ *j, const char *k)
RZ_API PJ * pj_kb(PJ *j, const char *k, bool v)
RZ_API PJ * pj_end(PJ *j)
RZ_API PJ * pj_ks(PJ *j, const char *k, const char *v)
RZ_API char * rz_socket_http_get(const char *url, int *code, int *rlen)
RZ_API char * rz_str_newf(const char *fmt,...) RZ_PRINTF_CHECK(1
#define RZ_STR_ISEMPTY(x)
RZ_API bool rz_str_startswith(RZ_NONNULL const char *str, RZ_NONNULL const char *needle)
Checks if a string starts with a specifc sequence of characters (case sensitive)
RZ_API bool rz_sys_mkdirp(const char *dir)
const char * symbol_server
const char * symbol_store_path
char *(* download)(struct SPDBDownloader *pdb_downloader)