X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fencoding.h;h=93f69863562cedba392b94916e5673b0af810e37;hb=84f96f49d14f1bae8a7f58a25bfd3b0f9d31f34b;hp=6623e61d3b8e15a7f8463eb9d45677408567aea6;hpb=ba123c650193eb37ab152b5083b67364e8bacf30;p=gedcom-parse.git diff --git a/gedcom/encoding.h b/gedcom/encoding.h index 6623e61..93f6986 100644 --- a/gedcom/encoding.h +++ b/gedcom/encoding.h @@ -25,17 +25,31 @@ #ifndef __ENCODING_H #define __ENCODING_H -typedef enum _ENC { - ONE_BYTE = 0, - TWO_BYTE_HILO = 1, - TWO_BYTE_LOHI = 2 -} ENCODING; +#include "gedcom.h" +#include "utf8tools.h" + +#define MAX_CHARSET_LEN 32 +#define MAX_TERMINATOR_LEN 2 + +struct encoding_state { + char charset[MAX_CHARSET_LEN + 1]; + const char* encoding; + Encoding width; + Enc_bom bom; + char terminator[MAX_TERMINATOR_LEN + 1]; +}; + +struct encoding_state read_encoding; -int open_conv_to_internal(char* fromcode); -void close_conv_to_internal(); -char* to_internal(char* str, size_t len, - char* output_buffer, size_t out_len); void init_encodings(); -void set_encoding_width(ENCODING enc); +char* get_encoding(const char* gedcom_n, Encoding enc); +void update_gconv_search_path(); + +int open_conv_to_internal(const char* fromcode); +void close_conv_to_internal(); +char* to_internal(const char* str, size_t len, struct conv_buffer *output_buf); +void set_encoding_width(Encoding enc); +void set_encoding_bom(Enc_bom bom); +void set_encoding_terminator(char* term); #endif /* __ENCODING_H */