1
0
mirror of https://github.com/rkd77/elinks.git synced 2025-02-02 15:09:23 -05:00
elinks/src/encoding/encoding.h
Witold Filipczyk 4f4df33638 Compile with C++.
Weak points:
- alignof
- js problems

Todo:
- make js work with C++ and mozjs-17
- then mozjs-24
- then mozjs-52
- then mozjs-60
- decrease number of warnings
2019-02-17 20:46:16 +01:00

50 lines
1.6 KiB
C

#ifndef EL__ENCODING_ENCODING_H
#define EL__ENCODING_ENCODING_H
#include "network/state.h"
#include "util/string.h"
enum stream_encoding {
ENCODING_NONE = 0,
ENCODING_GZIP,
ENCODING_BZIP2,
ENCODING_LZMA,
ENCODING_DEFLATE,
ENCODING_BROTLI,
/* Max. number of known encoding including ENCODING_NONE. */
ENCODINGS_KNOWN,
};
struct stream_encoded {
enum stream_encoding encoding;
void *data;
};
struct decoding_backend {
const unsigned char *name;
const unsigned char *const *extensions;
int (*open)(struct stream_encoded *stream, int fd);
int (*read)(struct stream_encoded *stream, unsigned char *data, int len);
unsigned char *(*decode_buffer)(struct stream_encoded *stream, unsigned char *data, int len, int *new_len);
void (*close)(struct stream_encoded *stream);
};
struct stream_encoded *open_encoded(int, enum stream_encoding);
int read_encoded(struct stream_encoded *, unsigned char *, int);
unsigned char *decode_encoded_buffer(struct stream_encoded *stream, enum stream_encoding encoding, unsigned char *data, int len, int *new_len);
void close_encoded(struct stream_encoded *);
const unsigned char *const *listext_encoded(enum stream_encoding);
enum stream_encoding guess_encoding(unsigned char *filename);
const unsigned char *get_encoding_name(enum stream_encoding encoding);
/* Read from open @stream into the @page string */
struct connection_state
read_file(struct stream_encoded *stream, int readsize, struct string_ *page);
/* Reads the file with the given @filename into the string @source. */
struct connection_state read_encoded_file(struct string_ *filename, struct string_ *source);
#endif