Merge branch 'master' of github.com:wombatant/memphis
This commit is contained in:
+9
-3
@@ -1,5 +1,11 @@
|
|||||||
language: cpp
|
language: cpp
|
||||||
compiler: clang
|
sudo: false
|
||||||
install:
|
dist: trusty
|
||||||
- sudo apt-get install cmake
|
compiler:
|
||||||
|
- clang
|
||||||
|
- gcc
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- cmake
|
||||||
script: ./scripts/cibuild
|
script: ./scripts/cibuild
|
||||||
|
|||||||
+8
-3
@@ -1,5 +1,10 @@
|
|||||||
#! /usr/bin/env sh
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
./scripts/setup_build
|
./scripts/setup_build
|
||||||
./scripts/setup_build_debug
|
./scripts/setup_build_debug
|
||||||
make -j -C build/release all test
|
make -j -C build/release all
|
||||||
make -j -C build/debug all test
|
make -j -C build/release test
|
||||||
|
make -j -C build/debug all
|
||||||
|
make -j -C build/debug test
|
||||||
|
|||||||
@@ -24,8 +24,10 @@ install(
|
|||||||
include/ox/fs
|
include/ox/fs
|
||||||
)
|
)
|
||||||
|
|
||||||
install(TARGETS oxfstool
|
install(TARGETS oxfstool OxFS
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION bin
|
||||||
|
LIBRARY DESTINATION lib
|
||||||
|
ARCHIVE DESTINATION lib
|
||||||
)
|
)
|
||||||
|
|
||||||
if(OX_BUILD_EXEC STREQUAL "ON")
|
if(OX_BUILD_EXEC STREQUAL "ON")
|
||||||
|
|||||||
+17
-17
@@ -16,13 +16,13 @@ template<typename FsT>
|
|||||||
class FileStore {
|
class FileStore {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef uint16_t InodeId_t;
|
typedef uint16_t InodeId_t;
|
||||||
typedef FsT FsSize_t;
|
typedef FsT FsSize_t;
|
||||||
|
|
||||||
struct StatInfo {
|
struct StatInfo {
|
||||||
InodeId_t inodeId;
|
InodeId_t inodeId;
|
||||||
FsSize_t size;
|
FsSize_t size;
|
||||||
uint8_t fileType;
|
uint8_t fileType;
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -31,13 +31,13 @@ class FileStore {
|
|||||||
FsSize_t prev, next;
|
FsSize_t prev, next;
|
||||||
FsSize_t dataLen;
|
FsSize_t dataLen;
|
||||||
InodeId_t id;
|
InodeId_t id;
|
||||||
uint8_t refs;
|
uint8_t refs;
|
||||||
uint8_t fileType;
|
uint8_t fileType;
|
||||||
FsSize_t left, right;
|
FsSize_t left, right;
|
||||||
|
|
||||||
FsSize_t size();
|
FsSize_t size();
|
||||||
void setId(InodeId_t);
|
void setId(InodeId_t);
|
||||||
void setData(void *data, FsSize_t size);
|
void setData(void *data, FsSize_t size);
|
||||||
void *data();
|
void *data();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ class FileStore {
|
|||||||
* @param data the contents of the file
|
* @param data the contents of the file
|
||||||
* @param dataLen the number of bytes data points to
|
* @param dataLen the number of bytes data points to
|
||||||
*/
|
*/
|
||||||
int write(void *data, FsSize_t dataLen, uint8_t fileType = 0);
|
int write(void *data, FsSize_t dataLen, uint8_t fileType = 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes the given data to a "file" with the given id.
|
* Writes the given data to a "file" with the given id.
|
||||||
@@ -60,7 +60,7 @@ class FileStore {
|
|||||||
* @param data the contents of the file
|
* @param data the contents of the file
|
||||||
* @param dataLen the number of bytes data points to
|
* @param dataLen the number of bytes data points to
|
||||||
*/
|
*/
|
||||||
int write(InodeId_t id, void *data, FsSize_t dataLen, uint8_t fileType = 0);
|
int write(InodeId_t id, void *data, FsSize_t dataLen, uint8_t fileType = 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes the inode of the given ID.
|
* Removes the inode of the given ID.
|
||||||
@@ -92,9 +92,9 @@ class FileStore {
|
|||||||
*/
|
*/
|
||||||
FsSize_t size();
|
FsSize_t size();
|
||||||
|
|
||||||
static uint8_t version();
|
static uint8_t version();
|
||||||
|
|
||||||
static uint8_t *format(uint8_t *buffer, FsSize_t size, uint32_t fsType = 0);
|
static uint8_t *format(uint8_t *buffer, FsSize_t size, uint32_t fsType = 0);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
@@ -166,11 +166,11 @@ class FileStore {
|
|||||||
*/
|
*/
|
||||||
void updateInodeAddress(InodeId_t id, FsSize_t addr);
|
void updateInodeAddress(InodeId_t id, FsSize_t addr);
|
||||||
|
|
||||||
uint8_t *begin() {
|
uint8_t *begin() {
|
||||||
return (uint8_t*) this;
|
return (uint8_t*) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *end() {
|
uint8_t *end() {
|
||||||
return begin() + this->m_size;
|
return begin() + this->m_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -411,10 +411,10 @@ FsSize_t FileStore<FsSize_t>::nextInodeAddr() {
|
|||||||
template<typename FsSize_t>
|
template<typename FsSize_t>
|
||||||
void *FileStore<FsSize_t>::alloc(FsSize_t size) {
|
void *FileStore<FsSize_t>::alloc(FsSize_t size) {
|
||||||
FsSize_t next = nextInodeAddr();
|
FsSize_t next = nextInodeAddr();
|
||||||
if ((next + size) > (uint64_t) end()) {
|
if ((next + size) > (uint64_t) end()) {
|
||||||
compress(firstInode());
|
compress(firstInode());
|
||||||
next = nextInodeAddr();
|
next = nextInodeAddr();
|
||||||
if ((next + size) > (uint64_t) end()) {
|
if ((next + size) > (uint64_t) end()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -480,7 +480,7 @@ FsSize_t FileStore<FsSize_t>::ptr(void *ptr) {
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4244)
|
#pragma warning(disable:4244)
|
||||||
#endif
|
#endif
|
||||||
return ((uint8_t*) ptr) - begin();
|
return ((uint8_t*) ptr) - begin();
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(default:4244)
|
#pragma warning(default:4244)
|
||||||
#endif
|
#endif
|
||||||
@@ -512,7 +512,7 @@ uint8_t *FileStore<FsSize_t>::format(uint8_t *buffer, FsSize_t size, uint32_t fs
|
|||||||
((Inode*) (fs + 1))->prev = fs->firstInode();
|
((Inode*) (fs + 1))->prev = fs->firstInode();
|
||||||
fs->lastInode()->next = sizeof(FileStore<FsSize_t>);
|
fs->lastInode()->next = sizeof(FileStore<FsSize_t>);
|
||||||
|
|
||||||
return (uint8_t*) buffer;
|
return (uint8_t*) buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef FileStore<uint16_t> FileStore16;
|
typedef FileStore<uint16_t> FileStore16;
|
||||||
|
|||||||
@@ -29,12 +29,5 @@ FileSystem *createFileSystem(void *buff) {
|
|||||||
return fs;
|
return fs;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
|
||||||
FsType FileSystemTemplate<FileStore16>::FS_TYPE = OxFS_16;
|
|
||||||
template<>
|
|
||||||
FsType FileSystemTemplate<FileStore32>::FS_TYPE = OxFS_32;
|
|
||||||
template<>
|
|
||||||
FsType FileSystemTemplate<FileStore64>::FS_TYPE = OxFS_64;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+31
-33
@@ -36,9 +36,9 @@ class FileSystem {
|
|||||||
public:
|
public:
|
||||||
virtual ~FileSystem() {};
|
virtual ~FileSystem() {};
|
||||||
|
|
||||||
virtual int read(uint64_t inode, void *buffer, uint64_t size) = 0;
|
virtual int read(uint64_t inode, void *buffer, size_t size) = 0;
|
||||||
|
|
||||||
virtual uint8_t *read(uint64_t inode, uint64_t *size) = 0;
|
virtual uint8_t *read(uint64_t inode, size_t *size) = 0;
|
||||||
|
|
||||||
virtual int remove(uint64_t inode) = 0;
|
virtual int remove(uint64_t inode) = 0;
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ class FileSystem {
|
|||||||
|
|
||||||
FileSystem *createFileSystem(void *buff);
|
FileSystem *createFileSystem(void *buff);
|
||||||
|
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
class FileSystemTemplate: public FileSystem {
|
class FileSystemTemplate: public FileSystem {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -82,8 +82,6 @@ class FileSystemTemplate: public FileSystem {
|
|||||||
// static members
|
// static members
|
||||||
static typename FileStore::InodeId_t INODE_ROOT_DIR;
|
static typename FileStore::InodeId_t INODE_ROOT_DIR;
|
||||||
|
|
||||||
static FsType FS_TYPE;
|
|
||||||
|
|
||||||
FileStore *store = nullptr;
|
FileStore *store = nullptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -93,9 +91,9 @@ class FileSystemTemplate: public FileSystem {
|
|||||||
|
|
||||||
int read(const char *path, void *buffer);
|
int read(const char *path, void *buffer);
|
||||||
|
|
||||||
uint8_t *read(uint64_t inode, uint64_t *size) override;
|
uint8_t *read(uint64_t inode, size_t *size) override;
|
||||||
|
|
||||||
int read(uint64_t inode, void *buffer, uint64_t size) override;
|
int read(uint64_t inode, void *buffer, size_t size) override;
|
||||||
|
|
||||||
int remove(uint64_t inode) override;
|
int remove(uint64_t inode) override;
|
||||||
|
|
||||||
@@ -108,21 +106,21 @@ class FileSystemTemplate: public FileSystem {
|
|||||||
static uint8_t *format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories);
|
static uint8_t *format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories);
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
FileSystemTemplate<FileStore>::FileSystemTemplate(void *buff) {
|
FileSystemTemplate<FileStore, FS_TYPE>::FileSystemTemplate(void *buff) {
|
||||||
store = (FileStore*) buff;
|
store = (FileStore*) buff;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
typename FileStore::InodeId_t FileSystemTemplate<FileStore>::INODE_ROOT_DIR = 2;
|
typename FileStore::InodeId_t FileSystemTemplate<FileStore, FS_TYPE>::INODE_ROOT_DIR = 2;
|
||||||
|
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
int FileSystemTemplate<FileStore>::mkdir(const char *path) {
|
int FileSystemTemplate<FileStore, FS_TYPE>::mkdir(const char *path) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
FileStat FileSystemTemplate<FileStore>::stat(const char *path) {
|
FileStat FileSystemTemplate<FileStore, FS_TYPE>::stat(const char *path) {
|
||||||
FileStat stat;
|
FileStat stat;
|
||||||
return stat;
|
return stat;
|
||||||
}
|
}
|
||||||
@@ -130,8 +128,8 @@ FileStat FileSystemTemplate<FileStore>::stat(const char *path) {
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4244)
|
#pragma warning(disable:4244)
|
||||||
#endif
|
#endif
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
FileStat FileSystemTemplate<FileStore>::stat(uint64_t inode) {
|
FileStat FileSystemTemplate<FileStore, FS_TYPE>::stat(uint64_t inode) {
|
||||||
FileStat stat;
|
FileStat stat;
|
||||||
auto s = store->stat(inode);
|
auto s = store->stat(inode);
|
||||||
stat.size = s.size;
|
stat.size = s.size;
|
||||||
@@ -146,8 +144,8 @@ FileStat FileSystemTemplate<FileStore>::stat(uint64_t inode) {
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4244)
|
#pragma warning(disable:4244)
|
||||||
#endif
|
#endif
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
int FileSystemTemplate<FileStore>::read(uint64_t inode, void *buffer, uint64_t size) {
|
int FileSystemTemplate<FileStore, FS_TYPE>::read(uint64_t inode, void *buffer, size_t size) {
|
||||||
auto err = 1;
|
auto err = 1;
|
||||||
auto s = store->stat(inode);
|
auto s = store->stat(inode);
|
||||||
if (size == s.size) {
|
if (size == s.size) {
|
||||||
@@ -162,8 +160,8 @@ int FileSystemTemplate<FileStore>::read(uint64_t inode, void *buffer, uint64_t s
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4244)
|
#pragma warning(disable:4244)
|
||||||
#endif
|
#endif
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
uint8_t *FileSystemTemplate<FileStore>::read(uint64_t inode, uint64_t *size) {
|
uint8_t *FileSystemTemplate<FileStore, FS_TYPE>::read(uint64_t inode, size_t *size) {
|
||||||
auto s = store->stat(inode);
|
auto s = store->stat(inode);
|
||||||
auto buff = new uint8_t[s.size];
|
auto buff = new uint8_t[s.size];
|
||||||
if (size) {
|
if (size) {
|
||||||
@@ -182,8 +180,8 @@ uint8_t *FileSystemTemplate<FileStore>::read(uint64_t inode, uint64_t *size) {
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4244)
|
#pragma warning(disable:4244)
|
||||||
#endif
|
#endif
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
int FileSystemTemplate<FileStore>::remove(uint64_t inode) {
|
int FileSystemTemplate<FileStore, FS_TYPE>::remove(uint64_t inode) {
|
||||||
return store->remove(inode);
|
return store->remove(inode);
|
||||||
}
|
}
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
@@ -193,8 +191,8 @@ int FileSystemTemplate<FileStore>::remove(uint64_t inode) {
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4244)
|
#pragma warning(disable:4244)
|
||||||
#endif
|
#endif
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
int FileSystemTemplate<FileStore>::write(uint64_t inode, void *buffer, uint64_t size, uint8_t fileType) {
|
int FileSystemTemplate<FileStore, FS_TYPE>::write(uint64_t inode, void *buffer, uint64_t size, uint8_t fileType) {
|
||||||
return store->write(inode, buffer, size, fileType);
|
return store->write(inode, buffer, size, fileType);
|
||||||
}
|
}
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
@@ -204,16 +202,16 @@ int FileSystemTemplate<FileStore>::write(uint64_t inode, void *buffer, uint64_t
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable:4244)
|
#pragma warning(disable:4244)
|
||||||
#endif
|
#endif
|
||||||
template<typename FileStore>
|
template<typename FileStore, FsType FS_TYPE>
|
||||||
uint8_t *FileSystemTemplate<FileStore>::format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories) {
|
uint8_t *FileSystemTemplate<FileStore, FS_TYPE>::format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories) {
|
||||||
buffer = FileStore::format((uint8_t*) buffer, size, (uint32_t) FileSystemTemplate<FileStore>::FS_TYPE);
|
buffer = FileStore::format((uint8_t*) buffer, size, (uint32_t) FS_TYPE);
|
||||||
auto fs = createFileSystem(buffer);
|
FileSystemTemplate<FileStore, FS_TYPE> fs(buffer);
|
||||||
|
|
||||||
if (buffer && useDirectories) {
|
if (buffer && useDirectories) {
|
||||||
char dirBuff[sizeof(Directory) + sizeof(DirectoryEntry) + 2];
|
char dirBuff[sizeof(Directory) + sizeof(DirectoryEntry) + 2];
|
||||||
auto *dir = (Directory*) dirBuff;
|
auto *dir = (Directory*) dirBuff;
|
||||||
dir->files();
|
dir->files();
|
||||||
fs->write(INODE_ROOT_DIR, dirBuff, useDirectories);
|
fs.write(INODE_ROOT_DIR, dirBuff, useDirectories, FileType::Directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (uint8_t*) buffer;
|
return (uint8_t*) buffer;
|
||||||
@@ -222,9 +220,9 @@ uint8_t *FileSystemTemplate<FileStore>::format(void *buffer, typename FileStore:
|
|||||||
#pragma warning(default:4244)
|
#pragma warning(default:4244)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef FileSystemTemplate<FileStore16> FileSystem16;
|
typedef FileSystemTemplate<FileStore16, OxFS_16> FileSystem16;
|
||||||
typedef FileSystemTemplate<FileStore32> FileSystem32;
|
typedef FileSystemTemplate<FileStore32, OxFS_32> FileSystem32;
|
||||||
typedef FileSystemTemplate<FileStore64> FileSystem64;
|
typedef FileSystemTemplate<FileStore64, OxFS_64> FileSystem64;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-7
@@ -5,6 +5,7 @@
|
|||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
#include <iostream>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -17,6 +18,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
using namespace ox::fs;
|
using namespace ox::fs;
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
const static auto oxfstoolVersion = "1.0.0";
|
const static auto oxfstoolVersion = "1.0.0";
|
||||||
const static auto usage = "usage:\n"
|
const static auto usage = "usage:\n"
|
||||||
@@ -44,7 +46,7 @@ char *loadFileBuff(const char *path, ::size_t *sizeOut = nullptr) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t bytes(const char *str) {
|
size_t bytes(const char *str) {
|
||||||
auto size = ::ox_strlen(str);
|
auto size = ::ox_strlen(str);
|
||||||
const auto lastChar = str[size-1];
|
const auto lastChar = str[size-1];
|
||||||
auto multiplier = 1;
|
auto multiplier = 1;
|
||||||
@@ -69,7 +71,7 @@ uint64_t bytes(const char *str) {
|
|||||||
multiplier = -1;
|
multiplier = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const auto retval = ((uint64_t) ::ox_atoi(copy)) * multiplier;
|
const auto retval = ((size_t) ox_atoi(copy)) * multiplier;
|
||||||
delete []copy;
|
delete []copy;
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
@@ -79,16 +81,17 @@ int format(int argc, char **args) {
|
|||||||
auto err = 0;
|
auto err = 0;
|
||||||
if (argc >= 5) {
|
if (argc >= 5) {
|
||||||
auto type = ox_atoi(args[2]);
|
auto type = ox_atoi(args[2]);
|
||||||
|
cout << args[3] << endl;
|
||||||
auto size = bytes(args[3]);
|
auto size = bytes(args[3]);
|
||||||
auto path = args[4];
|
auto path = args[4];
|
||||||
auto buff = (uint8_t*) malloc(size);
|
auto buff = (uint8_t*) malloc(size);
|
||||||
|
|
||||||
printf("Size: %llu bytes\n", size);
|
cout << "Size: " << size << " bytes\n";
|
||||||
printf("Type: %d\n", type);
|
cout << "Type: " << type << endl;
|
||||||
|
|
||||||
if (size < sizeof(FileStore64)) {
|
if (size < sizeof(FileStore64)) {
|
||||||
err = 1;
|
err = 1;
|
||||||
fprintf(stderr, "File system size %llu too small, must be at least %llu\n", (uint64_t) size, (uint64_t) sizeof(FileStore64));
|
cerr << "File system size " << size << " too small, must be at least " << sizeof(FileStore64) << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!err) {
|
if (!err) {
|
||||||
@@ -136,8 +139,8 @@ int read(int argc, char **args) {
|
|||||||
if (argc >= 4) {
|
if (argc >= 4) {
|
||||||
auto fsPath = args[2];
|
auto fsPath = args[2];
|
||||||
auto inode = ox_atoi(args[3]);
|
auto inode = ox_atoi(args[3]);
|
||||||
::size_t fsSize;
|
size_t fsSize;
|
||||||
uint64_t fileSize;
|
size_t fileSize;
|
||||||
|
|
||||||
auto fsBuff = loadFileBuff(fsPath, &fsSize);
|
auto fsBuff = loadFileBuff(fsPath, &fsSize);
|
||||||
|
|
||||||
|
|||||||
@@ -7,18 +7,18 @@
|
|||||||
*/
|
*/
|
||||||
#include "memops.hpp"
|
#include "memops.hpp"
|
||||||
|
|
||||||
void *ox_memcpy(void *dest, const void *src, size_t size) {
|
void *ox_memcpy(void *dest, const void *src, int64_t size) {
|
||||||
char *srcBuf = (char*) src;
|
char *srcBuf = (char*) src;
|
||||||
char *dstBuf = (char*) dest;
|
char *dstBuf = (char*) dest;
|
||||||
for (size_t i = 0; i < size; i++) {
|
for (int64_t i = 0; i < size; i++) {
|
||||||
dstBuf[i] = (char) srcBuf[i];
|
dstBuf[i] = (char) srcBuf[i];
|
||||||
}
|
}
|
||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *ox_memset(void *ptr, int val, size_t size) {
|
void *ox_memset(void *ptr, int val, int64_t size) {
|
||||||
char *buf = (char*) ptr;
|
char *buf = (char*) ptr;
|
||||||
for (size_t i = 0; i < size; i++) {
|
for (int64_t i = 0; i < size; i++) {
|
||||||
buf[i] = val;
|
buf[i] = val;
|
||||||
}
|
}
|
||||||
return ptr;
|
return ptr;
|
||||||
|
|||||||
@@ -9,6 +9,6 @@
|
|||||||
|
|
||||||
#include "types.hpp"
|
#include "types.hpp"
|
||||||
|
|
||||||
void *ox_memcpy(void *src, const void *dest, size_t size);
|
void *ox_memcpy(void *src, const void *dest, int64_t size);
|
||||||
|
|
||||||
void *ox_memset(void *ptr, int val, size_t size);
|
void *ox_memset(void *ptr, int val, int64_t size);
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ int ox_strcmp(const char *str1, const char *str2) {
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t ox_strlen(const char *str1) {
|
int ox_strlen(const char *str1) {
|
||||||
int len;
|
int len;
|
||||||
for (len = 0; str1[len]; len++);
|
for (len = 0; str1[len]; len++);
|
||||||
return len;
|
return len;
|
||||||
@@ -34,7 +34,7 @@ int ox_atoi(const char *str) {
|
|||||||
int total = 0;
|
int total = 0;
|
||||||
int multiplier = 1;
|
int multiplier = 1;
|
||||||
|
|
||||||
for (auto i = ox_strlen(str) - 1; i != 0; i--) {
|
for (auto i = ox_strlen(str) - 1; i != -1; i--) {
|
||||||
total += (str[i] - '0') * multiplier;
|
total += (str[i] - '0') * multiplier;
|
||||||
multiplier *= 10;
|
multiplier *= 10;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,6 @@
|
|||||||
|
|
||||||
int ox_strcmp(const char *str1, const char *str2);
|
int ox_strcmp(const char *str1, const char *str2);
|
||||||
|
|
||||||
size_t ox_strlen(const char *str1);
|
int ox_strlen(const char *str1);
|
||||||
|
|
||||||
int ox_atoi(const char *str);
|
int ox_atoi(const char *str);
|
||||||
|
|||||||
@@ -14,8 +14,13 @@ typedef unsigned short uint16_t;
|
|||||||
typedef int int32_t;
|
typedef int int32_t;
|
||||||
typedef unsigned int uint32_t;
|
typedef unsigned int uint32_t;
|
||||||
typedef unsigned uint_t;
|
typedef unsigned uint_t;
|
||||||
typedef long int64_t;
|
#if defined(_MSC_VER) || defined(__APPLE__)
|
||||||
|
typedef long long int64_t;
|
||||||
typedef unsigned long long uint64_t;
|
typedef unsigned long long uint64_t;
|
||||||
|
#else
|
||||||
|
typedef long int64_t;
|
||||||
|
typedef unsigned long uint64_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace ox {
|
namespace ox {
|
||||||
namespace std {
|
namespace std {
|
||||||
|
|||||||
Reference in New Issue
Block a user