-int gedcom_write_set_encoding(Enc_from from, const char* new_charset,
- Encoding width, Enc_bom bom)
-{
- char* new_encoding = NULL;
- if (from == ENC_FROM_SYS) {
- return 1;
- }
- write_encoding_from = from;
- if (from == ENC_MANUAL) {
- if (!strcmp(new_charset, "UNICODE")) {
- if (width == ONE_BYTE) {
- gedcom_error(_("Unicode cannot be encoded into one byte"));
- return 1;
- }
- else {
- new_encoding = get_encoding(new_charset, width);
- if (new_encoding) {
- write_encoding.encoding = new_encoding;
- write_encoding.width = width;
- write_encoding.bom = bom;
- strncpy(write_encoding.charset, new_charset, MAX_CHARSET_LEN);
- }
- else
- return 1;
- }
- }
- else {
- new_encoding = get_encoding(new_charset, ONE_BYTE);
- if (new_encoding) {
- write_encoding.encoding = new_encoding;
- write_encoding.width = ONE_BYTE;
- write_encoding.bom = bom;
- strncpy(write_encoding.charset, new_charset, MAX_CHARSET_LEN);
- }
- else
- return 1;
- }
- }
- return 0;
-}
-
-void copy_write_encoding_from_file()
-{
- if (read_encoding.charset[0] != '\0') {
- strncpy(write_encoding.charset, read_encoding.charset, MAX_CHARSET_LEN);
- write_encoding.encoding = read_encoding.encoding;
- write_encoding.width = read_encoding.width;
- write_encoding.bom = read_encoding.bom;
- }
-}
-
-int gedcom_write_set_line_terminator(Enc_from from, Enc_line_end end)
-{
- const char* new_term = NULL;
- write_terminator_from = from;
- if (from == ENC_FROM_SYS) {
- new_term = SYS_NEWLINE;
- }
- else if (from == ENC_MANUAL) {
- new_term = terminator[end];
- }
- if (new_term)
- strncpy(write_encoding.terminator, new_term, MAX_TERMINATOR_LEN);
- return 0;
-}
-
-void copy_write_terminator_from_file()
-{
- if (read_encoding.terminator[0] != '\0') {
- strncpy(write_encoding.terminator, read_encoding.terminator,
- MAX_TERMINATOR_LEN);
- }
-}
-