mirror of
https://github.com/Alcaro/Flips.git
synced 2026-09-08 10:35:11 -05:00
Allow using /dev/stderr as output under GTK, per #9
This commit is contained in:
62
flips.cpp
62
flips.cpp
@@ -41,6 +41,68 @@ void FreeFileMemory(struct mem mem)
|
||||
|
||||
|
||||
|
||||
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_libc(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_libc(const char * filename) { return filewrite_libc::create(filename); }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LPWSTR GetExtension(LPCWSTR fname)
|
||||
{
|
||||
LPWSTR ptr1=(LPWSTR)fname;
|
||||
|
||||
Reference in New Issue
Block a user