mirror of
https://github.com/Alcaro/Flips.git
synced 2026-09-02 16:04:36 -05:00
Initial commit - version 1.31
This commit is contained in:
73
flips-cli.cpp
Normal file
73
flips-cli.cpp
Normal file
@@ -0,0 +1,73 @@
|
||||
//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
|
||||
Reference in New Issue
Block a user