Various windows fixes (microsoft plz)

This commit is contained in:
2016-01-23 21:06:54 -08:00
parent 5d5dfdc3da
commit 9114be2a4d
7 changed files with 69 additions and 30 deletions

View File

@@ -1,4 +1,4 @@
#ifdef WIN32
#ifdef _WIN32
#include <windows.h>
#else
#include <sys/stat.h>

View File

@@ -5,6 +5,7 @@
#include <stdio.h>
#include <errno.h>
#ifndef _WIN32
#include <unistd.h>
#endif
@@ -138,9 +139,14 @@ static uint64_t GetInode(const SystemChar* path)
{
uint64_t inode;
#if _WIN32
OFSTRUCT ofs;
HFILE fp = OpenFile(path, &ofs, OF_READ);
if (fp == HFILE_ERROR)
HANDLE fp = CreateFileW(path,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
nullptr,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
nullptr);
if (!fp)
LogModule.report(LogVisor::FatalError, _S("unable to open %s"), path);
BY_HANDLE_FILE_INFORMATION info;
if (!GetFileInformationByHandle(fp, &info))
@@ -212,7 +218,7 @@ void DiscBuilderBase::PartitionBuilderBase::recursiveBuildNodes(bool system, con
++m_parent.m_progressIdx;
while (xferSz < e.m_fileSz)
{
size_t rdSz = fread(buf, 1, std::min(0x8000ul, e.m_fileSz - xferSz), fp);
size_t rdSz = fread(buf, 1, NOD::min(size_t(0x8000ul), e.m_fileSz - xferSz), fp);
if (!rdSz)
break;
ws->write(buf, rdSz);
@@ -263,12 +269,12 @@ bool DiscBuilderBase::PartitionBuilderBase::buildFromDirectory(const SystemChar*
const SystemChar* apploaderIn)
{
if (!dirIn || !dolIn || !apploaderIn)
LogModule.report(LogVisor::FatalError, "all arguments must be supplied to buildFromDirectory()");
LogModule.report(LogVisor::FatalError, _S("all arguments must be supplied to buildFromDirectory()"));
/* Clear file */
m_parent.getFileIO().beginWriteStream();
++m_parent.m_progressIdx;
m_parent.m_progressCB(m_parent.m_progressIdx, "Preparing output image", -1);
m_parent.m_progressCB(m_parent.m_progressIdx, _S("Preparing output image"), -1);
/* Add root node */
m_buildNodes.emplace_back(true, m_buildNameOff, 0, 1);

View File

@@ -361,7 +361,7 @@ public:
std::unique_ptr<IDiscIO::IReadStream> rs = m_parent.getDiscIO().beginReadStream(m_offset);
while (rem)
{
size_t rdSz = std::min(rem, 8192ul);
size_t rdSz = NOD::min(rem, size_t(8192ul));
rs->read(buf, rdSz);
fwrite(buf, 1, rdSz, fp);
rem -= rdSz;
@@ -792,7 +792,7 @@ bool DiscBuilderWii::buildFromDirectory(const SystemChar* dirIn, const SystemCha
}
++m_progressIdx;
m_progressCB(m_progressIdx, "Finishing Disc", -1);
m_progressCB(m_progressIdx, _S("Finishing Disc"), -1);
/* Populate disc header */
std::unique_ptr<IFileIO::IWriteStream> ws = imgOut->beginWriteStream(0);

View File

@@ -16,7 +16,9 @@
# define SHA_BIG_ENDIAN
# endif
#else // ! defined __LITTLE_ENDIAN__
#ifndef _WIN32
# include <endian.h> // machine/endian.h
#endif
# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
# define SHA_BIG_ENDIAN
# endif