blob: 6cc8ea5c006ccb56aee00e7c5717f100bbd7475c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
/*
Copyright (C) 2015-2020, Dirk Krause
SPDX-License-Identifier: BSD-3-Clause
*/
/*
WARNING: This file was generated by the dkct program (see
http://dktools.sourceforge.net/ for details).
Changes you make here will be lost if dkct is run again!
You should modify the original source and run dkct on it.
Original source: dk3bom.ctr
*/
#ifndef DK3BOM_H_INCLUDED
/** Avoid multiple inclusions. */
#define DK3BOM_H_INCLUDED 1
#line 9 "dk3bom.ctr"
#include "dk3conf.h"
#include "dk3types.h"
/** @file dk3bom.h Byte order marker detection.
The functions in this module check for a byte order marker at the
start of a data stream.
First use dk3bom_detect_init() to initialize a detector structure.
Use dk3bom_detect_add() to add the first byte to the dectector.
As long as the result is DK3_STM_ACCEPT, continue adding bytes.
On DK3_STM_FINISHED use dk3bom_detect_results() to retrieve the
detected encoding and the array of rejected bytes.
Process the rejected bytes before processing the remaining bytes
from the data stream.
*/
/** State machine to detect a BOM (byte order marker) at
the start of a data stream.
*/
typedef struct {
int defenc;
int found;
int state;
size_t rjb;
unsigned char rj[4];
} dk3_bom_detector_t;
#ifdef __cplusplus
extern "C" {
#endif
/** Initialize detector structure.
@param ptr Detector structure to initialize.
*/
void
dk3bom_detect_init(dk3_bom_detector_t *ptr, int de);
/** Add one byte to detector.
@param ptr Detector structure.
@param b Byte to add.
@return
DK3_STM_ACCEPT if there is no result yet,
DK3_STM_FINISHED if a result was found or
DK3_STM_ERROR on attempts to add further bytes
after a result was found.
*/
int
dk3bom_detect_add(dk3_bom_detector_t *ptr, unsigned char b);
/** Retrieve results from detector structure.
@param enc Pointer to variable receiving encoding.
@param rjptr Address of pointer receiving address of rejected bytes
array.
@param rjsz Pointer to variable receiving size of rejected bytes
array.
@param ptr Detector structure (data source).
*/
void
dk3bom_detect_results(
int *enc, const unsigned char **rjptr, size_t *rjsz, dk3_bom_detector_t *ptr
);
#ifdef __cplusplus
}
#endif
#endif
|