fix crash installing from real-debrid webdav

This commit is contained in:
Chee Yee
2024-06-27 22:04:06 -07:00
parent f80b3112c6
commit b9ab71577f
7 changed files with 164 additions and 109 deletions
+1
View File
@@ -70,6 +70,7 @@ add_self(ezremote_client)
add_pkg(ezremote_client ${CMAKE_SOURCE_DIR}/data "RMTC00001" "ezRemote Client" "01.27" 32 0)
target_link_libraries(ezremote_client
dbglogger
c
c++
png
+58 -45
View File
@@ -197,21 +197,21 @@ int SmbClient::Get(const std::string &outputfile, const std::string &ppath, uint
return 0;
}
struct smb2fh* in = smb2_open(smb2, path.c_str(), O_RDONLY);
struct smb2fh *in = smb2_open(smb2, path.c_str(), O_RDONLY);
if (in == NULL)
{
sprintf(response, "%s", smb2_get_error(smb2));
return 0;
}
FILE* out = FS::Create(outputfile);
FILE *out = FS::Create(outputfile);
if (out == NULL)
{
sprintf(response, "%s", lang_strings[STR_FAILED]);
return 0;
}
uint8_t *buff = (uint8_t*)malloc(max_read_size);
uint8_t *buff = (uint8_t *)malloc(max_read_size);
int count = 0;
bytes_transfered = 0;
sceRtcGetCurrentTick(&prev_tick);
@@ -223,7 +223,7 @@ int SmbClient::Get(const std::string &outputfile, const std::string &ppath, uint
sprintf(response, "%s", smb2_get_error(smb2));
FS::Close(out);
smb2_close(smb2, in);
free((void*)buff);
free((void *)buff);
return 0;
}
FS::Write(out, buff, count);
@@ -231,7 +231,7 @@ int SmbClient::Get(const std::string &outputfile, const std::string &ppath, uint
}
FS::Close(out);
smb2_close(smb2, in);
free((void*)buff);
free((void *)buff);
return 1;
}
@@ -239,7 +239,7 @@ int SmbClient::GetRange(const std::string &ppath, DataSink &sink, uint64_t size,
{
std::string path = std::string(ppath);
path = Util::Trim(path, "/");
struct smb2fh* in = smb2_open(smb2, path.c_str(), O_RDONLY);
struct smb2fh *in = smb2_open(smb2, path.c_str(), O_RDONLY);
if (in == NULL)
{
return 0;
@@ -253,34 +253,34 @@ int SmbClient::GetRange(const std::string &ppath, DataSink &sink, uint64_t size,
int SmbClient::GetRange(void *fp, DataSink &sink, uint64_t size, uint64_t offset)
{
struct smb2fh* in = (struct smb2fh*)fp;
struct smb2fh *in = (struct smb2fh *)fp;
smb2_lseek(smb2, in, offset, SEEK_SET, NULL);
smb2_lseek(smb2, in, offset, SEEK_SET, NULL);
uint8_t *buff = (uint8_t*)malloc(max_read_size);
int count = 0;
size_t bytes_remaining = size;
do
{
size_t bytes_to_read = std::min<size_t>(max_read_size, bytes_remaining);
count = smb2_read(smb2, in, buff, bytes_to_read);
if (count > 0)
{
bytes_remaining -= count;
bool ok = sink.write((char*)buff, count);
uint8_t *buff = (uint8_t *)malloc(max_read_size);
int count = 0;
size_t bytes_remaining = size;
do
{
size_t bytes_to_read = std::min<size_t>(max_read_size, bytes_remaining);
count = smb2_read(smb2, in, buff, bytes_to_read);
if (count > 0)
{
bytes_remaining -= count;
bool ok = sink.write((char *)buff, count);
if (!ok)
{
free((uint8_t *)buff);
return 0;
}
}
else
{
break;
}
} while (1);
}
else
{
break;
}
} while (1);
free((char *)buff);
free((char *)buff);
return 1;
}
@@ -295,7 +295,7 @@ int SmbClient::GetRange(const std::string &ppath, void *buffer, uint64_t size, u
return 0;
}
struct smb2fh* in = smb2_open(smb2, path.c_str(), O_RDONLY);
struct smb2fh *in = smb2_open(smb2, path.c_str(), O_RDONLY);
if (in == NULL)
{
return 0;
@@ -309,13 +309,27 @@ int SmbClient::GetRange(const std::string &ppath, void *buffer, uint64_t size, u
int SmbClient::GetRange(void *fp, void *buffer, uint64_t size, uint64_t offset)
{
struct smb2fh* in = (struct smb2fh*) fp;
struct smb2fh *in = (struct smb2fh *)fp;
smb2_lseek(smb2, in, offset, SEEK_SET, NULL);
int count = smb2_read(smb2, in, (uint8_t*)buffer, size);
if (count != size)
return 0;
uint8_t *buff = (uint8_t *)buffer;
int count = 0;
size_t bytes_remaining = size;
do
{
size_t bytes_to_read = std::min<size_t>(max_read_size, bytes_remaining);
count = smb2_read(smb2, in, buff, bytes_to_read);
if (count > 0)
{
bytes_remaining -= count;
buff += count;
}
else
{
break;
}
} while (1);
return 1;
}
@@ -342,14 +356,14 @@ int SmbClient::CopyToSocket(const std::string &ppath, int socket_fd)
return 0;
}
struct smb2fh* in = smb2_open(smb2, path.c_str(), O_RDONLY);
struct smb2fh *in = smb2_open(smb2, path.c_str(), O_RDONLY);
if (in == NULL)
{
sprintf(response, "%s", smb2_get_error(smb2));
return 0;
}
uint8_t *buff = (uint8_t*)malloc(max_read_size);
uint8_t *buff = (uint8_t *)malloc(max_read_size);
int count = 0;
while ((count = smb2_read(smb2, in, buff, max_read_size)) > 0)
{
@@ -357,7 +371,7 @@ int SmbClient::CopyToSocket(const std::string &ppath, int socket_fd)
{
sprintf(response, "%s", smb2_get_error(smb2));
smb2_close(smb2, in);
free((void*)buff);
free((void *)buff);
return 0;
}
int ret = sceNetSend(socket_fd, buff, count, 0);
@@ -367,7 +381,7 @@ int SmbClient::CopyToSocket(const std::string &ppath, int socket_fd)
}
}
smb2_close(smb2, in);
free((void*)buff);
free((void *)buff);
return 1;
}
@@ -403,21 +417,21 @@ int SmbClient::Put(const std::string &inputfile, const std::string &ppath, uint6
return 0;
}
FILE* in = FS::OpenRead(inputfile);
FILE *in = FS::OpenRead(inputfile);
if (in == NULL)
{
sprintf(response, "%s", lang_strings[STR_FAILED]);
return 0;
}
struct smb2fh* out = smb2_open(smb2, path.c_str(), O_WRONLY | O_CREAT | O_TRUNC);
struct smb2fh *out = smb2_open(smb2, path.c_str(), O_WRONLY | O_CREAT | O_TRUNC);
if (out == NULL)
{
sprintf(response, "%s", smb2_get_error(smb2));
return 0;
}
uint8_t* buff = (uint8_t*)malloc(max_write_size);
uint8_t *buff = (uint8_t *)malloc(max_write_size);
int count = 0;
bytes_transfered = 0;
sceRtcGetCurrentTick(&prev_tick);
@@ -440,7 +454,6 @@ int SmbClient::Put(const std::string &inputfile, const std::string &ppath, uint6
free(buff);
return 1;
}
int SmbClient::Rename(const std::string &src, const std::string &dst)
@@ -574,13 +587,13 @@ int SmbClient::Head(const std::string &ppath, void *buffer, uint64_t len)
return 0;
}
struct smb2fh* in = smb2_open(smb2, path.c_str(), O_RDONLY);
struct smb2fh *in = smb2_open(smb2, path.c_str(), O_RDONLY);
if (in == NULL)
{
return 0;
}
int count = smb2_read(smb2, in, (uint8_t*)buffer, len);
int count = smb2_read(smb2, in, (uint8_t *)buffer, len);
smb2_close(smb2, in);
if (count != len)
return 0;
@@ -593,13 +606,13 @@ void *SmbClient::Open(const std::string &ppath, int flags)
std::string path = std::string(ppath);
path = Util::Trim(path, "/");
struct smb2fh* in = smb2_open(smb2, path.c_str(), flags);
return in;
struct smb2fh *in = smb2_open(smb2, path.c_str(), flags);
return in;
}
void SmbClient::Close(void *fp)
{
smb2_close(smb2, (struct smb2fh*)fp);
smb2_close(smb2, (struct smb2fh *)fp);
}
ClientType SmbClient::clientType()
+53 -13
View File
@@ -10,10 +10,10 @@
#include "windows.h"
using httplib::Client;
using httplib::ContentProvider;
using httplib::Headers;
using httplib::Progress;
using httplib::Result;
using httplib::ContentProvider;
static const char *months[12] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
@@ -43,6 +43,50 @@ Result WebDAVClient::PropFind(const std::string &path, int depth)
return client->send(req);
}
int WebDAVClient::Size(const std::string &path, int64_t *size)
{
std::string encoded_path = httplib::detail::encode_url(GetFullPath(path));
if (auto res = PropFind(encoded_path, 0))
{
if (HTTP_SUCCESS(res->status))
{
pugi::xml_document document;
document.load_buffer(res->body.c_str(), res->body.length());
auto multistatus = document.select_node("*[local-name()='multistatus']").node();
auto responses = multistatus.select_nodes("*[local-name()='response']");
for (auto response : responses)
{
pugi::xml_node href = response.node().select_node("*[local-name()='href']").node();
std::string resource_path = httplib::detail::decode_url(href.first_child().value(), true);
auto target_path_without_sep = GetFullPath(path);
if (!target_path_without_sep.empty() && target_path_without_sep.back() == '/')
target_path_without_sep.resize(target_path_without_sep.length() - 1);
auto resource_path_without_sep = resource_path.erase(resource_path.find_last_not_of('/') + 1);
size_t pos = resource_path_without_sep.find(this->host_url);
if (pos != std::string::npos)
resource_path_without_sep.erase(pos, this->host_url.length());
if (resource_path_without_sep != target_path_without_sep)
continue;
auto propstat = response.node().select_node("*[local-name()='propstat']").node();
auto prop = propstat.select_node("*[local-name()='prop']").node();
std::string content_length = prop.select_node("*[local-name()='getcontentlength']").node().first_child().value();
*size = std::strtoll(content_length.c_str(), nullptr, 10);
return 1;
}
}
}
else
{
sprintf(this->response, "%s", httplib::to_string(res.error()).c_str());
}
return 0;
}
std::vector<DirEntry> WebDAVClient::ListDir(const std::string &path)
{
std::vector<DirEntry> out;
@@ -152,12 +196,11 @@ int WebDAVClient::Put(const std::string &inputfile, const std::string &path, uin
size_t bytes_remaining = FS::GetSize(inputfile);
bytes_transfered = 0;
sceRtcGetCurrentTick(&prev_tick);
FILE* in = FS::OpenRead(inputfile);
if (auto res = client->Put(GetFullPath(path),
[&](size_t offset, DataSink &sink)
{
FILE *in = FS::OpenRead(inputfile);
if (auto res = client->Put(GetFullPath(path), [&](size_t offset, DataSink &sink)
{
size_t buf_size = MIN(bytes_remaining, CPPHTTPLIB_RECV_BUFSIZ);
char* buf = (char*) malloc(buf_size);
FS::Seek(in, offset);
@@ -171,9 +214,7 @@ int WebDAVClient::Put(const std::string &inputfile, const std::string &path, uin
}
sink.done();
free(buf);
return true;
},
"application/octet-stream"))
return true; }, "application/octet-stream"))
{
if (HTTP_SUCCESS(res->status))
{
@@ -230,15 +271,14 @@ int WebDAVClient::Delete(const std::string &path)
if (HTTP_SUCCESS(res->status))
return 1;
}
return 0;
return 0;
}
int WebDAVClient::Copy(const std::string &from, const std::string &to)
{
Request req;
Headers header = {{"Accept", "*/*"}, {"Destination", httplib::detail::encode_url(GetFullPath(to)) }};
Headers header = {{"Accept", "*/*"}, {"Destination", httplib::detail::encode_url(GetFullPath(to))}};
req.method = "COPY";
req.path = httplib::detail::encode_url(GetFullPath(from));
@@ -257,7 +297,7 @@ int WebDAVClient::Copy(const std::string &from, const std::string &to)
int WebDAVClient::Move(const std::string &from, const std::string &to)
{
Request req;
Headers header = {{"Accept", "*/*"}, {"Destination", httplib::detail::encode_url(GetFullPath(to)) }};
Headers header = {{"Accept", "*/*"}, {"Destination", httplib::detail::encode_url(GetFullPath(to))}};
req.method = "MOVE";
req.path = httplib::detail::encode_url(GetFullPath(from));
+1
View File
@@ -19,6 +19,7 @@ public:
int Copy(const std::string &from, const std::string &to);
int Move(const std::string &from, const std::string &to);
int Put(const std::string &inputfile, const std::string &path, uint64_t offset = 0);
int Size(const std::string &path, int64_t *size);
std::vector<DirEntry> ListDir(const std::string &path);
ClientType clientType();
uint32_t SupportedActions();
+41 -43
View File
@@ -26,8 +26,8 @@
struct BgProgressCheck
{
ArchivePkgInstallData* archive_pkg_data;
SplitPkgInstallData* split_pkg_data;
ArchivePkgInstallData *archive_pkg_data;
SplitPkgInstallData *split_pkg_data;
int task_id;
std::string hash;
};
@@ -109,22 +109,22 @@ namespace INSTALLER
s_bgft_initialized = false;
}
std::string GetRemotePkgTitle(RemoteClient *client, const std::string &path, pkg_header *header)
{
std::string GetRemotePkgTitle(RemoteClient *client, const std::string &path, pkg_header *header)
{
size_t entry_count = BE32(header->pkg_entry_count);
uint32_t entry_table_offset = BE32(header->pkg_table_offset);
uint64_t entry_table_size = entry_count * sizeof(pkg_table_entry);
void *entry_table_data = malloc(entry_table_size);
int ret = client->GetRange(path, entry_table_data, entry_table_size, entry_table_offset);
if (ret == 0)
{
free(entry_table_data);
return "";
}
int ret = client->GetRange(path, entry_table_data, entry_table_size, entry_table_offset);
if (ret == 0)
{
free(entry_table_data);
return "";
}
pkg_table_entry *entries = (pkg_table_entry *)entry_table_data;
void* param_sfo_data = nullptr;
void *param_sfo_data = nullptr;
uint32_t param_sfo_offset = 0;
uint32_t param_sfo_size = 0;
for (size_t i = 0; i < entry_count; ++i)
@@ -134,7 +134,7 @@ namespace INSTALLER
param_sfo_offset = BE32(entries[i].offset);
param_sfo_size = BE32(entries[i].size);
break;
}
}
}
free(entry_table_data);
@@ -142,10 +142,10 @@ namespace INSTALLER
if (param_sfo_offset > 0 && param_sfo_size > 0)
{
param_sfo_data = malloc(param_sfo_size);
int ret = client->GetRange(path, param_sfo_data, param_sfo_size, param_sfo_offset);
if (ret)
int ret = client->GetRange(path, param_sfo_data, param_sfo_size, param_sfo_offset);
if (ret)
{
const char* tmp_title = SFO::GetString((const char*)param_sfo_data, param_sfo_size, "TITLE");
const char *tmp_title = SFO::GetString((const char *)param_sfo_data, param_sfo_size, "TITLE");
if (tmp_title != nullptr)
title = std::string(tmp_title);
}
@@ -153,7 +153,7 @@ namespace INSTALLER
}
return title;
}
}
std::string GetLocalPkgTitle(const std::string &path, pkg_header *header)
{
@@ -167,7 +167,7 @@ namespace INSTALLER
FS::Read(fd, entry_table_data, entry_table_size);
pkg_table_entry *entries = (pkg_table_entry *)entry_table_data;
void* param_sfo_data = NULL;
void *param_sfo_data = NULL;
uint32_t param_sfo_offset = 0;
uint32_t param_sfo_size = 0;
void *icon0_png_data = NULL;
@@ -190,7 +190,7 @@ namespace INSTALLER
param_sfo_data = malloc(param_sfo_size);
FS::Seek(fd, param_sfo_offset);
FS::Read(fd, param_sfo_data, param_sfo_size);
const char* tmp_title = SFO::GetString((const char*)param_sfo_data, param_sfo_size, "TITLE");
const char *tmp_title = SFO::GetString((const char *)param_sfo_data, param_sfo_size, "TITLE");
if (tmp_title != nullptr)
title = std::string(tmp_title);
free(param_sfo_data);
@@ -221,8 +221,8 @@ namespace INSTALLER
}
else
{
std::string encoded_path = httplib::detail::encode_url(path);
std::string encoded_site_name = httplib::detail::encode_url(remote_settings->site_name);
std::string encoded_path = httplib::detail::encode_url(path);
std::string encoded_site_name = httplib::detail::encode_url(remote_settings->site_name);
std::string full_url = std::string("http://localhost:") + std::to_string(http_server_port) + "/rmt_inst/" + encoded_site_name + encoded_path;
return full_url;
}
@@ -234,7 +234,7 @@ namespace INSTALLER
{
bool completed = false;
OrbisBgftTaskProgress progress_info;
BgProgressCheck *bg_check_data = (BgProgressCheck*) argp;
BgProgressCheck *bg_check_data = (BgProgressCheck *)argp;
int ret;
while (!completed)
@@ -259,7 +259,7 @@ namespace INSTALLER
{
bg_check_data->archive_pkg_data->stop_write_thread = true;
pthread_join(bg_check_data->archive_pkg_data->thread, NULL);
delete(bg_check_data->archive_pkg_data->split_file);
delete (bg_check_data->archive_pkg_data->split_file);
free(bg_check_data->archive_pkg_data);
RemoveArchivePkgInstallData(bg_check_data->hash);
free(bg_check_data);
@@ -269,8 +269,8 @@ namespace INSTALLER
bg_check_data->split_pkg_data->stop_write_thread = true;
bg_check_data->split_pkg_data->split_file->Close();
pthread_join(bg_check_data->split_pkg_data->thread, NULL);
delete(bg_check_data->split_pkg_data->split_file);
delete(bg_check_data->split_pkg_data->remote_client);
delete (bg_check_data->split_pkg_data->split_file);
delete (bg_check_data->split_pkg_data->remote_client);
free(bg_check_data->split_pkg_data);
RemoveSplitPkgInstallData(bg_check_data->hash);
free(bg_check_data);
@@ -411,7 +411,7 @@ namespace INSTALLER
ret = sceBgftServiceDownloadGetProgress(task_id, &progress_info);
if (ret || (progress_info.transferred > 0 && progress_info.errorResult != 0))
return 0;
if (progress_info.length > 0)
{
completed = progress_info.transferred == progress_info.length;
@@ -423,7 +423,7 @@ namespace INSTALLER
}
else
{
BgProgressCheck *bg_check_data = (BgProgressCheck*) malloc(sizeof(BgProgressCheck));
BgProgressCheck *bg_check_data = (BgProgressCheck *)malloc(sizeof(BgProgressCheck));
memset(bg_check_data, 0, sizeof(BgProgressCheck));
bg_check_data->archive_pkg_data = nullptr;
bg_check_data->split_pkg_data = nullptr;
@@ -532,13 +532,13 @@ namespace INSTALLER
{
int ret;
bool completed = false;
if (strncmp(path.c_str(), "/data/", 6) != 0 &&
strncmp(path.c_str(), "/user/data/", 11) != 0 &&
strncmp(path.c_str(), "/mnt/usb", 8) != 0)
return -1;
std::string filename = path.substr(path.find_last_of("/")+1);
std::string filename = path.substr(path.find_last_of("/") + 1);
char filepath[1024];
snprintf(filepath, 1023, "%s", path.c_str());
if (strncmp(path.c_str(), "/data/", 6) == 0)
@@ -658,7 +658,7 @@ namespace INSTALLER
FS::Read(fd, entry_table_data, entry_table_size);
pkg_table_entry *entries = (pkg_table_entry *)entry_table_data;
void* param_sfo_data = NULL;
void *param_sfo_data = NULL;
uint32_t param_sfo_offset = 0;
uint32_t param_sfo_size = 0;
void *icon0_png_data = NULL;
@@ -729,7 +729,7 @@ namespace INSTALLER
return false;
pkg_table_entry *entries = (pkg_table_entry *)entry_table_data;
void* param_sfo_data = NULL;
void *param_sfo_data = NULL;
uint32_t param_sfo_offset = 0;
uint32_t param_sfo_size = 0;
void *icon0_png_data = NULL;
@@ -797,7 +797,7 @@ namespace INSTALLER
void AddArchivePkgInstallData(const std::string &hash, ArchivePkgInstallData *pkg_data)
{
std::pair<std::string, ArchivePkgInstallData*> pair = std::make_pair(hash, pkg_data);
std::pair<std::string, ArchivePkgInstallData *> pair = std::make_pair(hash, pkg_data);
archive_pkg_install_data_list.erase(hash);
archive_pkg_install_data_list.insert(pair);
}
@@ -807,10 +807,10 @@ namespace INSTALLER
archive_pkg_install_data_list.erase(hash);
}
bool InstallArchivePkg(const std::string &path, ArchivePkgInstallData* pkg_data, bool bg)
bool InstallArchivePkg(const std::string &path, ArchivePkgInstallData *pkg_data, bool bg)
{
pkg_header header;
pkg_data->split_file->Read((char*)&header, sizeof(pkg_header), 0);
pkg_data->split_file->Read((char *)&header, sizeof(pkg_header), 0);
int ret;
std::string cid = std::string((char *)header.pkg_content_id);
@@ -958,7 +958,7 @@ namespace INSTALLER
}
else
{
BgProgressCheck *bg_check_data = (BgProgressCheck*) malloc(sizeof(BgProgressCheck));
BgProgressCheck *bg_check_data = (BgProgressCheck *)malloc(sizeof(BgProgressCheck));
memset(bg_check_data, 0, sizeof(BgProgressCheck));
bg_check_data->archive_pkg_data = pkg_data;
bg_check_data->split_pkg_data = nullptr;
@@ -971,11 +971,10 @@ namespace INSTALLER
finish:
pkg_data->stop_write_thread = true;
pthread_join(pkg_data->thread, NULL);
delete(pkg_data->split_file);
delete (pkg_data->split_file);
free(pkg_data);
RemoveArchivePkgInstallData(hash);
return ret;
}
SplitPkgInstallData *GetSplitPkgInstallData(const std::string &hash)
@@ -985,7 +984,7 @@ namespace INSTALLER
void AddSplitPkgInstallData(const std::string &hash, SplitPkgInstallData *pkg_data)
{
std::pair<std::string, SplitPkgInstallData*> pair = std::make_pair(hash, pkg_data);
std::pair<std::string, SplitPkgInstallData *> pair = std::make_pair(hash, pkg_data);
split_pkg_install_data_list.erase(hash);
split_pkg_install_data_list.insert(pair);
}
@@ -995,10 +994,10 @@ namespace INSTALLER
split_pkg_install_data_list.erase(hash);
}
bool InstallSplitPkg(const std::string &path, SplitPkgInstallData* pkg_data, bool bg)
bool InstallSplitPkg(const std::string &path, SplitPkgInstallData *pkg_data, bool bg)
{
pkg_header header;
pkg_data->split_file->Read((char*)&header, sizeof(pkg_header), 0);
pkg_data->split_file->Read((char *)&header, sizeof(pkg_header), 0);
int ret;
std::string cid = std::string((char *)header.pkg_content_id);
@@ -1146,7 +1145,7 @@ namespace INSTALLER
}
else
{
BgProgressCheck *bg_check_data = (BgProgressCheck*) malloc(sizeof(BgProgressCheck));
BgProgressCheck *bg_check_data = (BgProgressCheck *)malloc(sizeof(BgProgressCheck));
memset(bg_check_data, 0, sizeof(BgProgressCheck));
bg_check_data->split_pkg_data = pkg_data;
bg_check_data->archive_pkg_data = nullptr;
@@ -1160,14 +1159,13 @@ namespace INSTALLER
pkg_data->stop_write_thread = true;
pkg_data->split_file->Close();
pthread_join(pkg_data->thread, NULL);
delete(pkg_data->split_file);
delete(pkg_data->remote_client);
delete (pkg_data->split_file);
delete (pkg_data->remote_client);
free(pkg_data);
RemoveSplitPkgInstallData(hash);
activity_inprogess = false;
file_transfering = false;
Windows::SetModalMode(false);
return ret;
}
}
+3 -3
View File
@@ -11,7 +11,7 @@
#include <orbis/Pad.h>
#include <orbis/AudioOut.h>
#include <orbis/Net.h>
// #include <dbglogger.h>
#include <dbglogger.h>
#include "imgui.h"
#include "SDL2/SDL.h"
@@ -271,8 +271,8 @@ static void terminate()
int main()
{
// dbglogger_init();
// dbglogger_log("If you see this you've set up dbglogger correctly.");
dbglogger_init();
dbglogger_log("If you see this you've set up dbglogger correctly.");
int rc;
// No buffering
setvbuf(stdout, NULL, _IONBF, 0);
+7 -5
View File
@@ -290,7 +290,7 @@ namespace ZipUtil
static int extract2fd(struct archive *a, const std::string &pathname, int fd)
{
ssize_t len;
unsigned char *buffer = (unsigned char *) malloc(ARCHIVE_TRANSFER_SIZE);
unsigned char *buffer = (unsigned char *)malloc(ARCHIVE_TRANSFER_SIZE);
bytes_transfered = 0;
sceRtcGetCurrentTick(&prev_tick);
@@ -312,7 +312,7 @@ namespace ZipUtil
return 0;
}
bytes_transfered += len;
if (write(fd, buffer, len) != len)
{
sprintf(status_message, "error write('%s')", pathname.c_str());
@@ -479,7 +479,7 @@ namespace ZipUtil
ret = data->client->GetRange((data->fp), data->buf, to_read, data->offset);
else
ret = data->client->GetRange(data->path, data->buf, to_read, data->offset);
if (ret == 0)
return -1;
data->offset = data->offset + to_read;
@@ -521,7 +521,7 @@ namespace ZipUtil
return data->offset;
}
int64_t SkipRemoteArchive(struct archive *, void *client_data, int64_t request)
int64_t SkipRemoteArchive(struct archive *, void *client_data, int64_t request)
{
RemoteArchiveData *data = (RemoteArchiveData *)client_data;
@@ -529,7 +529,7 @@ namespace ZipUtil
return request;
}
/*
* Main loop: open the zipfile, iterate over its contents and decide what
* to do with each entry.
@@ -672,7 +672,9 @@ namespace ZipUtil
}
if (ret == ARCHIVE_EOF)
{
break;
}
if ((pathname = pathdup(archive_entry_pathname(e))) == NULL)
{