mirror of
https://github.com/Alcaro/Flips.git
synced 2026-03-21 17:45:09 -05:00
74 lines
1.3 KiB
C++
74 lines
1.3 KiB
C++
//Module name: Floating IPS, command line frontend
|
|
//Author: Alcaro
|
|
//Date: December 22, 2014
|
|
//Licence: GPL v3.0 or higher
|
|
|
|
#include "flips.h"
|
|
|
|
#ifdef FLIPS_CLI
|
|
class file_libc : public file {
|
|
size_t size;
|
|
FILE* io;
|
|
|
|
public:
|
|
static file* create(const char * filename)
|
|
{
|
|
FILE* f = fopen(filename, "rb");
|
|
if (!f) return NULL;
|
|
return new file_libc(f);
|
|
}
|
|
|
|
private:
|
|
file_libc(FILE* io) : io(io)
|
|
{
|
|
fseek(io, 0, SEEK_END);
|
|
size = ftell(io);
|
|
}
|
|
|
|
public:
|
|
size_t len() { return size; }
|
|
|
|
bool read(uint8_t* target, size_t start, size_t len)
|
|
{
|
|
fseek(io, start, SEEK_SET);
|
|
return (fread(target, 1,len, io) == len);
|
|
}
|
|
|
|
~file_libc() { fclose(io); }
|
|
};
|
|
|
|
file* file::create(const char * filename) { return file_libc::create(filename); }
|
|
|
|
|
|
class filewrite_libc : public filewrite {
|
|
FILE* io;
|
|
|
|
public:
|
|
static filewrite* create(const char * filename)
|
|
{
|
|
FILE* f = fopen(filename, "wb");
|
|
if (!f) return NULL;
|
|
return new filewrite_libc(f);
|
|
}
|
|
|
|
private:
|
|
filewrite_libc(FILE* io) : io(io) {}
|
|
|
|
public:
|
|
bool append(const uint8_t* data, size_t len)
|
|
{
|
|
return (fwrite(data, 1,len, io)==len);
|
|
}
|
|
|
|
~filewrite_libc() { fclose(io); }
|
|
};
|
|
|
|
filewrite* filewrite::create(const char * filename) { return filewrite_libc::create(filename); }
|
|
|
|
|
|
int main(int argc, char * argv[])
|
|
{
|
|
return flipsmain(argc, argv);
|
|
}
|
|
#endif
|