Evince
Evince is a document viewer capable of displaying multiple and single page document formats like PDF and Postscript.
Main Page
Related Pages
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
unarr-imp.h
Go to the documentation of this file.
1
/* Copyright 2015 the unarr project authors (see AUTHORS file).
2
License: LGPLv3 */
3
4
/* this is the common private/implementation API of unarr which should only be used by unarr code */
5
6
#ifndef common_unarr_imp_h
7
#define common_unarr_imp_h
8
9
#include "../unarr.h"
10
#include "
allocator.h
"
11
12
#include <stdlib.h>
13
#include <stdio.h>
14
#include <stdarg.h>
15
#include <string.h>
16
#include <inttypes.h>
17
18
/***** conv ****/
19
20
size_t
ar_conv_rune_to_utf8
(
wchar_t
rune,
char
*out,
size_t
size);
21
char
*
ar_conv_dos_to_utf8
(
const
char
*astr);
22
time64_t
ar_conv_dosdate_to_filetime
(uint32_t dosdate);
23
24
/***** crc32 *****/
25
26
uint32_t
ar_crc32
(uint32_t crc32,
const
unsigned
char
*
data
,
size_t
data_len);
27
28
/***** stream *****/
29
30
typedef
void (*
ar_stream_close_fn
)(
void
*
data
);
31
typedef
size_t (*
ar_stream_read_fn
)(
void
*
data
,
void
*buffer,
size_t
count);
32
typedef
bool (*
ar_stream_seek_fn
)(
void
*
data
,
off64_t
offset
,
int
origin);
33
typedef
off64_t
(*
ar_stream_tell_fn
)(
void
*
data
);
34
35
struct
ar_stream_s
{
36
ar_stream_close_fn
close
;
37
ar_stream_read_fn
read
;
38
ar_stream_seek_fn
seek
;
39
ar_stream_tell_fn
tell
;
40
void
*
data
;
41
};
42
43
ar_stream
*
ar_open_stream
(
void
*data,
ar_stream_close_fn
close,
ar_stream_read_fn
read,
ar_stream_seek_fn
seek,
ar_stream_tell_fn
tell);
44
45
/***** unarr *****/
46
47
#define warn(...) ar_log("!", __FILE__, __LINE__, __VA_ARGS__)
48
#ifndef NDEBUG
49
#define log(...) ar_log("-", __FILE__, __LINE__, __VA_ARGS__)
50
#else
51
#define log(...) ((void)0)
52
#endif
53
void
ar_log
(
const
char
*
prefix
,
const
char
*file,
int
line,
const
char
*msg, ...);
54
55
typedef
void (*
ar_archive_close_fn
)(
ar_archive
*ar);
56
typedef
bool (*
ar_parse_entry_fn
)(
ar_archive
*ar,
off64_t
offset);
57
typedef
const
char
*(* ar_entry_get_name_fn)(
ar_archive
*ar);
58
typedef
bool (*
ar_entry_uncompress_fn
)(
ar_archive
*ar,
void
*buffer,
size_t
count);
59
typedef
size_t (*
ar_get_global_comment_fn
)(
ar_archive
*ar,
void
*buffer,
size_t
count);
60
61
struct
ar_archive_s
{
62
ar_archive_close_fn
close
;
63
ar_parse_entry_fn
parse_entry
;
64
ar_entry_get_name_fn
get_name
;
65
ar_entry_uncompress_fn
uncompress
;
66
ar_get_global_comment_fn
get_comment
;
67
68
ar_stream
*
stream
;
69
bool
at_eof
;
70
off64_t
entry_offset
;
71
off64_t
entry_offset_first
;
72
off64_t
entry_offset_next
;
73
size_t
entry_size_uncompressed
;
74
time64_t
entry_filetime
;
75
};
76
77
ar_archive
*
ar_open_archive
(
ar_stream
*stream,
size_t
struct_size,
ar_archive_close_fn
close,
ar_parse_entry_fn
parse_entry,
78
ar_entry_get_name_fn
get_name,
ar_entry_uncompress_fn
uncompress,
ar_get_global_comment_fn
get_comment,
79
off64_t
first_entry_offset);
80
81
#endif
evince-master
cut-n-paste
unarr
common
unarr-imp.h
Generated on Thu Jul 13 2017 13:41:45 for Evince by
1.8.4