* Get rid of io.c/io.h: IO functions are now in libcucul.
This commit is contained in:
parent
71ab147f05
commit
0d17008396
4 changed files with 0 additions and 239 deletions
|
@ -2,7 +2,6 @@
|
||||||
bin_PROGRAMS = toilet
|
bin_PROGRAMS = toilet
|
||||||
|
|
||||||
toilet_SOURCES = main.c toilet.h \
|
toilet_SOURCES = main.c toilet.h \
|
||||||
io.c io.h \
|
|
||||||
render.c render.h \
|
render.c render.h \
|
||||||
filter.c filter.h \
|
filter.c filter.h \
|
||||||
export.c export.h \
|
export.c export.h \
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
|
|
||||||
#include "toilet.h"
|
#include "toilet.h"
|
||||||
#include "render.h"
|
#include "render.h"
|
||||||
#include "io.h"
|
|
||||||
|
|
||||||
#define STD_GLYPHS (127 - 32)
|
#define STD_GLYPHS (127 - 32)
|
||||||
#define EXT_GLYPHS (STD_GLYPHS + 7)
|
#define EXT_GLYPHS (STD_GLYPHS + 7)
|
||||||
|
|
213
src/io.c
213
src/io.c
|
@ -1,213 +0,0 @@
|
||||||
/*
|
|
||||||
* TOIlet The Other Implementation’s letters
|
|
||||||
* Copyright (c) 2006 Sam Hocevar <sam@zoy.org>
|
|
||||||
* All Rights Reserved
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*
|
|
||||||
* This program is free software. It comes without any warranty, to
|
|
||||||
* the extent permitted by applicable law. You can redistribute it
|
|
||||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
|
||||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
|
||||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file contains functions for compressed file I/O.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if defined HAVE_ZLIB_H
|
|
||||||
# include <zlib.h>
|
|
||||||
# define READSIZE 128 /* Read buffer size */
|
|
||||||
# define WRITESIZE 128 /* Inflate buffer size */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "io.h"
|
|
||||||
|
|
||||||
#if defined HAVE_ZLIB_H
|
|
||||||
static int zipread(TOIFILE *, void *, unsigned int);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct toifile
|
|
||||||
{
|
|
||||||
#if defined HAVE_ZLIB_H
|
|
||||||
unsigned char read_buffer[READSIZE];
|
|
||||||
z_stream stream;
|
|
||||||
gzFile gz;
|
|
||||||
int eof, zip;
|
|
||||||
#endif
|
|
||||||
FILE *f;
|
|
||||||
};
|
|
||||||
|
|
||||||
TOIFILE *toiopen(char const *path, const char *mode)
|
|
||||||
{
|
|
||||||
TOIFILE *toif = malloc(sizeof(*toif));
|
|
||||||
|
|
||||||
#if defined HAVE_ZLIB_H
|
|
||||||
uint8_t buf[4];
|
|
||||||
unsigned int skip_size = 0;
|
|
||||||
|
|
||||||
toif->gz = gzopen(path, "rb");
|
|
||||||
if(!toif->gz)
|
|
||||||
{
|
|
||||||
free(toif);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
toif->eof = 0;
|
|
||||||
toif->zip = 0;
|
|
||||||
|
|
||||||
/* Parse ZIP file and go to start of first file */
|
|
||||||
gzread(toif->gz, buf, 4);
|
|
||||||
if(memcmp(buf, "PK\3\4", 4))
|
|
||||||
{
|
|
||||||
gzseek(toif->gz, 0, SEEK_SET);
|
|
||||||
return toif;
|
|
||||||
}
|
|
||||||
|
|
||||||
toif->zip = 1;
|
|
||||||
|
|
||||||
gzseek(toif->gz, 22, SEEK_CUR);
|
|
||||||
|
|
||||||
gzread(toif->gz, buf, 2); /* Filename size */
|
|
||||||
skip_size += (uint16_t)buf[0] | ((uint16_t)buf[1] << 8);
|
|
||||||
gzread(toif->gz, buf, 2); /* Extra field size */
|
|
||||||
skip_size += (uint16_t)buf[0] | ((uint16_t)buf[1] << 8);
|
|
||||||
|
|
||||||
gzseek(toif->gz, skip_size, SEEK_CUR);
|
|
||||||
|
|
||||||
/* Initialise inflate stream */
|
|
||||||
toif->stream.total_out = 0;
|
|
||||||
toif->stream.zalloc = NULL;
|
|
||||||
toif->stream.zfree = NULL;
|
|
||||||
toif->stream.opaque = NULL;
|
|
||||||
toif->stream.next_in = NULL;
|
|
||||||
toif->stream.avail_in = 0;
|
|
||||||
|
|
||||||
if(inflateInit2(&toif->stream, -MAX_WBITS))
|
|
||||||
{
|
|
||||||
free(toif);
|
|
||||||
gzclose(toif->gz);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
toif->f = fopen(path, mode);
|
|
||||||
|
|
||||||
if(!toif->f)
|
|
||||||
{
|
|
||||||
free(toif);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return toif;
|
|
||||||
}
|
|
||||||
|
|
||||||
int toiclose(TOIFILE *toif)
|
|
||||||
{
|
|
||||||
#if defined HAVE_ZLIB_H
|
|
||||||
gzFile gz = toif->gz;
|
|
||||||
if(toif->zip)
|
|
||||||
inflateEnd(&toif->stream);
|
|
||||||
free(toif);
|
|
||||||
return gzclose(gz);
|
|
||||||
#else
|
|
||||||
FILE *f = toif->f;
|
|
||||||
free(toif);
|
|
||||||
return fclose(f);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
int toieof(TOIFILE *toif)
|
|
||||||
{
|
|
||||||
#if defined HAVE_ZLIB_H
|
|
||||||
return toif->zip ? toif->eof : gzeof(toif->gz);
|
|
||||||
#else
|
|
||||||
return feof(toif->f);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
char *toigets(char *s, int size, TOIFILE *toif)
|
|
||||||
{
|
|
||||||
#if defined HAVE_ZLIB_H
|
|
||||||
if(toif->zip)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for(i = 0; i < size; i++)
|
|
||||||
{
|
|
||||||
int ret = zipread(toif, s + i, 1);
|
|
||||||
|
|
||||||
if(ret < 0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if(ret == 0 || s[i] == '\n')
|
|
||||||
{
|
|
||||||
if(i + 1 < size)
|
|
||||||
s[i + 1] = '\0';
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
return gzgets(toif->gz, s, size);
|
|
||||||
#else
|
|
||||||
return fgets(s, size, toif->f);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined HAVE_ZLIB_H
|
|
||||||
static int zipread(TOIFILE *toif, void *buf, unsigned int len)
|
|
||||||
{
|
|
||||||
unsigned int total_read = 0;
|
|
||||||
|
|
||||||
if(len == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
toif->stream.next_out = buf;
|
|
||||||
toif->stream.avail_out = len;
|
|
||||||
|
|
||||||
while(toif->stream.avail_out > 0)
|
|
||||||
{
|
|
||||||
unsigned int tmp;
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
if(toif->stream.avail_in == 0 && !gzeof(toif->gz))
|
|
||||||
{
|
|
||||||
int bytes_read;
|
|
||||||
|
|
||||||
bytes_read = gzread(toif->gz, toif->read_buffer, READSIZE);
|
|
||||||
if(bytes_read < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
toif->stream.next_in = toif->read_buffer;
|
|
||||||
toif->stream.avail_in = bytes_read;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = toif->stream.total_out;
|
|
||||||
ret = inflate(&toif->stream, Z_SYNC_FLUSH);
|
|
||||||
total_read += toif->stream.total_out - tmp;
|
|
||||||
|
|
||||||
if(ret == Z_STREAM_END)
|
|
||||||
{
|
|
||||||
toif->eof = 1;
|
|
||||||
return total_read;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(ret != Z_OK)
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return total_read;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
24
src/io.h
24
src/io.h
|
@ -1,24 +0,0 @@
|
||||||
/*
|
|
||||||
* TOIlet The Other Implementation’s letters
|
|
||||||
* Copyright (c) 2006 Sam Hocevar <sam@zoy.org>
|
|
||||||
* All Rights Reserved
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*
|
|
||||||
* This program is free software. It comes without any warranty, to
|
|
||||||
* the extent permitted by applicable law. You can redistribute it
|
|
||||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
|
||||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
|
||||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This header defines functions for compressed file I/O.
|
|
||||||
*/
|
|
||||||
typedef struct toifile TOIFILE;
|
|
||||||
|
|
||||||
TOIFILE *toiopen(const char *, const char *);
|
|
||||||
int toiclose(TOIFILE *);
|
|
||||||
int toieof(TOIFILE *);
|
|
||||||
char *toigets(char *, int, TOIFILE *);
|
|
||||||
|
|
Loading…
Reference in a new issue