Allow using /dev/stderr as output under GTK, per #9

This commit is contained in:
Alcaro
2018-04-20 18:32:52 +02:00
parent a4274bf35a
commit 55e85b3113
5 changed files with 75 additions and 65 deletions

View File

@@ -1,69 +1,13 @@
//Module name: Floating IPS, command line frontend
//Author: Alcaro
//Date: December 22, 2014
//Date: See Git history
//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); }
file* file::create(const char * filename) { return file::create_libc(filename); }
filewrite* filewrite::create(const char * filename) { return filewrite::create_libc(filename); }
int main(int argc, char * argv[])