From 663351029ac49e1c9802e07d1c874a872f147ca3 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 26 Mar 2013 19:32:08 -0400 Subject: [PATCH] Replaced unrtf by our own RTF to HTML converter. Faster, thread safe, a hell lot cleaner. --- OpenChange/GNUmakefile | 23 - OpenChange/MAPIStoreMessage.m | 33 +- OpenChange/RTFHandler.h | 132 + OpenChange/RTFHandler.m | 945 +++ OpenChange/unrtf-0.21.2.diff | 12505 ------------------------------- OpenChange/unrtf-0.21.2.tar.gz | Bin 617656 -> 0 bytes OpenChange/unrtf_config_h | 75 - 7 files changed, 1085 insertions(+), 12628 deletions(-) create mode 100644 OpenChange/RTFHandler.h create mode 100644 OpenChange/RTFHandler.m delete mode 100644 OpenChange/unrtf-0.21.2.diff delete mode 100644 OpenChange/unrtf-0.21.2.tar.gz delete mode 100644 OpenChange/unrtf_config_h diff --git a/OpenChange/GNUmakefile b/OpenChange/GNUmakefile index 197aec8b5..21a2f904a 100644 --- a/OpenChange/GNUmakefile +++ b/OpenChange/GNUmakefile @@ -24,8 +24,6 @@ BUNDLE_NAME = $(SOGOBACKEND) BUNDLE_EXTENSION = .MAPIStore BUNDLE_INSTALL_DIR = $(SOGO_LIBDIR) -UNRTF_DIR = unrtf-$(UNRTF_VERSION) - PYTHON = /usr/bin/python PYTHON_IS_GOOD = $(shell $(PYTHON) -c 'from sys import version_info; a=version_info; print a[0] == 2 and a[1] >= 6') ifeq (${PYTHON_IS_GOOD},False) @@ -37,8 +35,6 @@ all:: SAMBA_PRIVATE_DIR = $(shell $(PYTHON) ./samba-get-config.py "private dir") -$(SOGOBACKEND)_SUBPROJECTS += $(UNRTF_DIR)/src - $(SOGOBACKEND)_PRINCIPAL_CLASS = MAPIApplication $(SOGOBACKEND)_OBJC_FILES += \ @@ -143,25 +139,6 @@ $(SOGOBACKEND)_RESOURCE_FILES += \ $(UNRTF_DIR)/charmaps/SYMBOL.charmap \ $(UNRTF_DIR)/outputs/html.conf -### unrtf -all:: $(UNRTF_DIR)/config.h $(UNRTF_DIR)/src/GNUmakefile - -$(UNRTF_DIR): $(UNRTF_DIR).tar.gz $(UNRTF_DIR).diff - @echo " Extracting and patching $(UNRTF_DIR)..." - @rm -rf $(UNRTF_DIR) - @$(TAR) -xvzf $< > /dev/null - @(cd $(UNRTF_DIR) && patch -p1 < ../$(UNRTF_DIR).diff) > /dev/null - @touch $(UNRTF_DIR) - -$(UNRTF_DIR)-stamp: $(UNRTF_DIR) - @touch $@ - -$(UNRTF_DIR)/config.h: $(UNRTF_DIR)-stamp unrtf_config_h - @cp unrtf_config_h $(UNRTF_DIR)/config.h - -$(UNRTF_DIR)/src/GNUmakefile: $(UNRTF_DIR)-stamp GNUmakefile.unrtf - @cp GNUmakefile.unrtf $@ - ### pl reader PLREADER_TOOL = plreader $(PLREADER_TOOL)_OBJC_FILES += \ diff --git a/OpenChange/MAPIStoreMessage.m b/OpenChange/MAPIStoreMessage.m index 0706432ab..444ecd0fb 100644 --- a/OpenChange/MAPIStoreMessage.m +++ b/OpenChange/MAPIStoreMessage.m @@ -45,11 +45,10 @@ #import "NSData+MAPIStore.h" #import "NSObject+MAPIStore.h" #import "NSString+MAPIStore.h" +#import "RTFHandler.h" #import "MAPIStoreMessage.h" -#include - #undef DEBUG #include #include @@ -60,17 +59,6 @@ static Class MAPIStoreFolderK, MAPIStoreEmbeddedMessageK; static NSString *resourcesDir = nil; -/* rtf conversion via unrtf */ -static int -unrtf_data_output (void *data, const char *str, size_t str_len) -{ - NSMutableData *rtfData = data; - - [rtfData appendBytes: str length: str_len]; - - return str_len; -} - static NSData * uncompressRTF (NSData *compressedRTF) { @@ -97,22 +85,17 @@ rtf2html (NSData *compressedRTF) { NSData *rtf; NSMutableData *html = nil; - int rc; - struct unRTFOptions unrtfOptions; rtf = uncompressRTF (compressedRTF); if (rtf) { - html = [NSMutableData data]; - memset (&unrtfOptions, 0, sizeof (struct unRTFOptions)); - unrtf_set_output_device (&unrtfOptions, unrtf_data_output, html); - unrtfOptions.config_directory = [resourcesDir UTF8String]; - unrtfOptions.output_format = "html"; - unrtfOptions.nopict_mode = YES; - rc = unrtf_convert_from_string (&unrtfOptions, - [rtf bytes], [rtf length]); - if (!rc) - html = nil; + //html = [NSMutableData data]; + RTFHandler *handler; + + handler = [[RTFHandler alloc] initWithData: rtf]; + AUTORELEASE(handler); + + html = [handler parse]; } return html; diff --git a/OpenChange/RTFHandler.h b/OpenChange/RTFHandler.h new file mode 100644 index 000000000..52567cc29 --- /dev/null +++ b/OpenChange/RTFHandler.h @@ -0,0 +1,132 @@ +/* + Copyright (C) 2005-2012 Inverse inc. + + This file is part of SOGo. + + SOGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + SOGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#include +#include +#include +#include +#include + +// +// +// +@interface RTFHandler : NSObject +{ + NSMapTable *_charsets; + NSMutableData *_html; + NSData *_data; + + const char *_bytes; + int _current_pos; + int _len; +} + +- (id) initWithData: (NSData *) theData; +- (NSMutableData *) parse; +@end + +// +// +// +@interface RTFStack: NSObject +{ + NSMutableArray *a; +} +- (void) push: (id) theObject; +- (id) pop; +@end + +// +// +// +@interface RTFFormattingOptions : NSObject +{ +@public + BOOL bold; + BOOL italic; + BOOL underline; + BOOL strikethrough; + int font_index; + int color_index; + int start_pos; +} +@end + +// +// +// +@interface RTFFontInfo : NSObject +{ +@public + NSString *family; + NSString *charset; + NSString *name; + unsigned int pitch; + unsigned int index; +} + +@end + +// +// \fX - font, index in font table +// +@interface RTFFontTable : NSObject +{ + @public + NSMapTable *fontInfos; +} + +- (void) addFontInfo: (RTFFontInfo *) theFontInfo + atIndex: (unsigned int ) theIndex; + +- (RTFFontInfo *) fontInfoAtIndex: (unsigned int ) theIndex; + +@end + +// +// +// +@interface RTFColorDef : NSObject +{ +@public + unsigned char red; + unsigned char green; + unsigned char blue; +} + +@end + +// +// {\colortbl\red0\green0\blue0;\red128\green0\blue0;\red255\green0\blue0;} +// +// \cfX - color/foreground - index +// \cbX - color/background - index +// +// +@interface RTFColorTable : NSObject +{ + @public + NSMutableArray *colorDefs; +} + +- (void) addColorDef: (RTFColorDef *) theColorDef; + +@end diff --git a/OpenChange/RTFHandler.m b/OpenChange/RTFHandler.m new file mode 100644 index 000000000..84a1aa655 --- /dev/null +++ b/OpenChange/RTFHandler.m @@ -0,0 +1,945 @@ +/* + Copyright (C) 2005-2013 Inverse inc. + + This file is part of SOGo. + + SOGo is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + SOGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ + +#include "RTFHandler.h" +#include + +// +// Useful macros +// +#define ADVANCE _bytes++; _current_pos++; +#define REWIND _bytes--; _current_pos--; + + +// +// Charset definitions. See http://msdn.microsoft.com/en-us/goglobal/bb964654 for all details. +// +unsigned short ansicpg1250[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0000, 0x201a, 0x0000, 0x201e, 0x2026, 0x2020, 0x2021, 0x0000, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179, + 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a, + 0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b, + 0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c, + 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, + 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, + 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, + 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9 }; + +unsigned short ansicpg1251[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021, 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f, + 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f, + 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7, 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407, + 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7, 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f }; + +unsigned short ansicpg1252[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0000, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x017d, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x0000, 0x017e, 0x0178, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff }; + +unsigned short ansicpg1253[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0000, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0000, 0x203a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00a0, 0x0385, 0x0386, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x2015, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x00b5, 0x00b6, 0x00b7, 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, + 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, + 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, + 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000 }; + +unsigned short ansicpg1254[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0000, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x0000, 0x0000, 0x0178, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff }; + +unsigned short ansicpg1255[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0000, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0000, 0x203a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7, 0x05b8, 0x05b9, 0x0000, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf, + 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3, 0x05f4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, + 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x200e, 0x200f, 0x0000 }; + +unsigned short ansicpg1256[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, + 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba, + 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f, + 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7, 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643, + 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef, + 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7, 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2 }; + +unsigned short ansicpg1257[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0000, 0x201a, 0x0000, 0x201e, 0x2026, 0x2020, 0x2021, 0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x00a8, 0x02c7, 0x00b8, + 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0000, 0x203a, 0x0000, 0x00af, 0x02db, 0x0000, + 0x00a0, 0x0000, 0x00a2, 0x00a3, 0x00a4, 0x0000, 0x00a6, 0x00a7, 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, + 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, + 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, + 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, + 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x02d9 }; + +unsigned short ansicpg1258[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0000, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0000, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0000, 0x203a, 0x0153, 0x0000, 0x0000, 0x0178, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x0300, 0x00cd, 0x00ce, 0x00cf, + 0x0110, 0x00d1, 0x0309, 0x00d3, 0x00d4, 0x01a0, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x01af, 0x0303, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0301, 0x00ed, 0x00ee, 0x00ef, + 0x0111, 0x00f1, 0x0323, 0x00f3, 0x00f4, 0x01a1, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x01b0, 0x20ab, 0x00ff }; + +unsigned short ansicpg874[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0000, 0x0000, 0x0000, 0x0000, 0x2026, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, + 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, + 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, + 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f, + 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, + 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000 }; + +// +// +// +@implementation RTFStack + +- (id) init +{ + if ((self = [super init])) + { + a = [[NSMutableArray alloc] init]; + } + return self; +} + +- (void) dealloc +{ + RELEASE(a); + [super dealloc]; +} + +- (void) push: (id) theObject +{ + [a addObject: theObject]; +} + +- (id) pop +{ + id o = nil; + + if ([a count]) + { + o = AUTORELEASE([[a lastObject] retain]); + [a removeLastObject]; + } + + return o; +} + +- (id) top +{ + id o = nil; + + if ([a count]) + { + o = AUTORELEASE([[a lastObject] retain]); + } + + return o; +} + +@end + +// +// +// +@implementation RTFFormattingOptions +@end + +// +// +// +@implementation RTFFontInfo + +- (id) init +{ + if ((self = [super init])) + { + + } + return self; +} + +- (void) dealloc +{ + RELEASE(family); + RELEASE(charset); + RELEASE(name); + [super dealloc]; +} + +@end + +// +// +// +@implementation RTFFontTable + +- (id) init +{ + if ((self = [super init])) + { + fontInfos = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 128); + } + return self; +} + +- (void) dealloc +{ + NSFreeMapTable(fontInfos); + [super dealloc]; +} + +- (void) addFontInfo: (RTFFontInfo *) theFontInfo + atIndex: (unsigned int) theIndex +{ + NSNumber *key; + + key = [NSNumber numberWithInt: theIndex]; + NSMapInsert(fontInfos, key, (void*) theFontInfo); +} + +- (RTFFontInfo *) fontInfoAtIndex: (unsigned int) theIndex +{ + NSNumber *key; + + key = [NSNumber numberWithInt: theIndex]; + return NSMapGet(fontInfos, key); +} + +@end + +// +// +// +@implementation RTFColorDef + +@end + +// +// +// +@implementation RTFColorTable + +- (id) init +{ + if ((self = [super init])) + { + colorDefs = [[NSMutableArray alloc] init]; + } + return self; +} + +- (void) dealloc +{ + RELEASE(colorDefs); + [super dealloc]; +} + +- (void) addColorDef: (RTFColorDef *) theColorDef +{ + [colorDefs addObject: theColorDef]; +} + +- (RTFColorDef *) colorDefAtIndex: (unsigned int) theIndex +{ + return [colorDefs objectAtIndex: theIndex]; +} + +@end + +// +// +// +@implementation RTFHandler + +- (id) initWithData: (NSData *) theData +{ + if ((self = [super init])) + { + ASSIGN(_data, theData); + _bytes = (char *)[_data bytes]; + _len = [_data length]; + _current_pos = 0; + + _charsets = NSCreateMapTable(NSObjectMapKeyCallBacks, NSNonOwnedPointerMapValueCallBacks, 10); + NSMapInsert(_charsets, @"ansicpg1250", ansicpg1250); + NSMapInsert(_charsets, @"ansicpg1251", ansicpg1251); + NSMapInsert(_charsets, @"ansicpg1252", ansicpg1252); + NSMapInsert(_charsets, @"ansicpg1253", ansicpg1253); + NSMapInsert(_charsets, @"ansicpg1254", ansicpg1254); + NSMapInsert(_charsets, @"ansicpg1255", ansicpg1255); + NSMapInsert(_charsets, @"ansicpg1256", ansicpg1256); + NSMapInsert(_charsets, @"ansicpg1257", ansicpg1257); + NSMapInsert(_charsets, @"ansicpg1258", ansicpg1258); + NSMapInsert(_charsets, @"ansicpg874", ansicpg874); + } + + return self; +} + +- (void) dealloc +{ + NSFreeMapTable(_charsets); + RELEASE(_data); + [super dealloc]; +} + +- (const char *) parseControlWord: (unsigned int *) len +{ + const char *start, *end; + + start = ADVANCE; + + while (isalnum(*_bytes) || *_bytes == '-') + { + ADVANCE; + } + end = _bytes; + + *len = end-start-1; + return start+1; +} + +// +// {\colortbl\red0\green0\blue0;\red128\green0\blue0;\red255\green0\blue0;} +// +- (RTFColorTable *) parseColorTable +{ + RTFColorTable *colorTable; + RTFColorDef *colorDef; + + colorTable = [[[RTFColorTable alloc] init] autorelease]; + colorDef = [[[RTFColorDef alloc] init] autorelease]; + + while (*_bytes != '}') + { + if (*_bytes == ';') + { + [colorTable addColorDef: colorDef]; + colorDef = [[[RTFColorDef alloc] init] autorelease]; + ADVANCE; + } + else if (*_bytes == '\\') + { + const char *cw; + unsigned int len; + NSString *s; + + cw = [self parseControlWord: &len]; + + // Skip our control word + //if (strncmp(start+1, "colortbl", len) == 0) + // continue; + + s = [[NSString alloc] initWithBytesNoCopy: (void *)cw + length: len + encoding: NSASCIIStringEncoding + freeWhenDone: NO]; + [s autorelease]; + + if ([s hasPrefix: @"red"]) + { + colorDef->red = [[s substringFromIndex: 3] intValue]; + } + else if ([s hasPrefix: @"green"]) + { + colorDef->green = [[s substringFromIndex: 4] intValue]; + } + else + { + colorDef->blue = [[s substringFromIndex: 4] intValue]; + } + } + else + { + ADVANCE; + } + + } + + return colorTable; +} + +// +// Possible formats: +// +// {\fonttbl\f0\fswiss Helvetica;} +// {\fonttbl{\f0\froman\fcharset0\fprq2 Arial;}{\f1\fswiss\fprq2\fcharset0 Arial;}} +// +// FIXME: Complex ones not handled right now: +// +// {\fonttbl{\f2\fnil\fcharset256\fprq2{\*\panose 00020703090202050204}Courier New;}{... +// {\fonttbl{\f31\fnil\fcharset0\fprq0 Times New Roman Monotype{\*\falt Times New Roman};}{... +// +// We receive the full string. +// +- (RTFFontTable *) parseFontTable +{ + NSMutableString *fontName; + RTFFontTable *fontTable; + RTFFontInfo *fontInfo; + + unsigned int count; + + fontTable = [[[RTFFontTable alloc] init] autorelease]; + fontName = nil; + count = 0; + + do + { + if (*_bytes == '{') + { + if (fontTable) + { + fontInfo = [[[RTFFontInfo alloc] init] autorelease]; + fontName = [[[NSMutableString alloc] init] autorelease]; + } + ADVANCE; + count++; + } + else if (*_bytes == '}') + { + if (fontTable) //&& ![NSAllMapTableValues(fontTable->fontInfos) containsObject: fontInfo]) + { + ASSIGN(fontInfo->name, fontName); + [fontTable addFontInfo: fontInfo atIndex: fontInfo->index]; + } + ADVANCE; + count--; + } + else if (*_bytes == '\\') + { + const char *cw; + unsigned int len; + NSString *s; + + cw = [self parseControlWord: &len]; + + // Skip our control word + if (strncmp((const char*)cw, "fonttbl", len) == 0) + continue; + + // We must at least parse + s = [[NSString alloc] initWithBytesNoCopy: (void *)cw+1 + length: len-1 + encoding: NSASCIIStringEncoding + freeWhenDone: NO]; + [s autorelease]; + + // If we got a fontnum, let's parse all three fields at once) + if (isdigit(*(cw+1))) + { + fontInfo->index = [s intValue]; + + // We now parse + cw = [self parseControlWord: &len]; + fontInfo->family = [[NSString alloc] initWithBytesNoCopy: (void *)cw+1 + length: len-1 + encoding: NSASCIIStringEncoding + freeWhenDone: NO]; + + cw = [self parseControlWord: &len]; + fontInfo->charset = [[NSString alloc] initWithBytesNoCopy: (void *)cw+1 + length: len-1 + encoding: NSASCIIStringEncoding + freeWhenDone: NO]; + + // We now skip everything until we find our final group closer ('}') + int cc = 1; + + do + { + if (*_bytes == '{') + cc++; + if (*_bytes == '}') + cc--; + + ADVANCE; + } + while (cc != 0); + + // move back our buffer; + REWIND; + } + } + else + { + if (isalnum(*_bytes)) + [fontName appendFormat: @"%c", *_bytes]; + ADVANCE; + } + } while (count != 0); + + return fontTable; +} + +// +// +// +- (void) parseStyleSheet +{ + unsigned int count; + + count = 0; + + do + { + if (*_bytes == '{') + { + count++; + } + else if (*_bytes == '}') + { + count--; + } + ADVANCE; + + } while (count != 0); +} + +// +// +// +- (void) parsePicture +{ + // Do the same as -parseStyleSheet for now, that is, ignore everything. + [self parseStyleSheet]; +} + +// +// +// +- (NSMutableData *) parse +{ + RTFFormattingOptions *formattingOptions; + RTFColorTable *colorTable; + RTFFontTable *fontTable; + RTFStack *stack; + + unsigned short *charset; + char c; + + stack = [[RTFStack alloc] init]; + fontTable = nil; + colorTable = nil; + charset = NULL; + + _html = [[NSMutableData alloc] init]; + [_html appendBytes: "" length: 34]; + + + + // Check if we got RTF data + if (_len > 4 && strncmp((const char*)_bytes, "{\\rtf", 4) != 0) + return NO; + + while (_current_pos < _len) + { + c = *_bytes; + + // RTF control code + if (c == '\\') + { + unsigned int len; + const char *cw; + NSString *s; + + if (*(_bytes+1) == '\'' && charset) + { + // A hexadecimal value, based on the specified character set (may be used to identify 8-bit values). + NSString *s; + NSData *d; + + const char *b1, *b2; + unsigned short index; + + ADVANCE; + ADVANCE; + + b1 = ADVANCE; + b2 = ADVANCE; + + index = (isdigit(*b1) ? *b1 - 48 : toupper(*b1) - 55) * 16; + index += (isdigit(*b2) ? *b2 - 48 : toupper(*b2) - 55); + + s = [NSString stringWithCharacters: &(charset[index]) length: 1]; + d = [s dataUsingEncoding: NSUTF8StringEncoding]; + [_html appendData: d]; + continue; + } + else if (*(_bytes+1) == '*') + { + while (*_bytes != '}') + { + ADVANCE; + } + + continue; + } + + cw = [self parseControlWord: &len]; + + s = [[NSString alloc] initWithBytesNoCopy: (void *)cw + length: len + encoding: NSASCIIStringEncoding + freeWhenDone: NO]; + [s autorelease]; + + if (strncmp(cw, "ansicpg", 7) == 0) + { + charset = NSMapGet(_charsets, s); + } + else if (strncmp(cw, "fonttbl", 7) == 0) + { + // We rewind our buffer so we start at the beginning of {\fonttbl... + _bytes = cw-2; + _current_pos -= 10; + fontTable = [self parseFontTable]; + + // We go back 1 byte in order to end our section properly ('}' character + REWIND; + } + else if (strncmp(cw, "stylesheet", 10) == 0) + { + _bytes = cw-2; + _current_pos -= 13; + [self parseStyleSheet]; + REWIND; + } + else if (strncmp(cw, "colortbl", 8) == 0) + { + colorTable = [self parseColorTable]; + } + else if (strncmp(cw, "pict", 4) == 0) + { + _bytes = cw-2; + _current_pos -= 7; + [self parsePicture]; + REWIND; + } + else if ([s isEqualToString: @"b"] && formattingOptions) + { + [_html appendBytes: "" length: 3]; + formattingOptions->bold = YES; + } + else if ([s isEqualToString: @"b0"] && formattingOptions) + { + [_html appendBytes: "" length: 4]; + formattingOptions->bold = NO; + } + else if ([s hasPrefix: @"cf"] && [s length] > 2) + { + RTFColorDef *colorDef; + int color_index; + char *v; + + color_index = [[s substringFromIndex: 2] intValue]; + + if (!formattingOptions) + continue; + + if (formattingOptions->color_index >= 0) // && color_index != formattingOptions->color_index) + { + [_html appendBytes: "" length: 7]; + } + + formattingOptions->color_index = color_index; + colorDef = [colorTable colorDefAtIndex: color_index]; + + v = malloc(23*sizeof(char)); + memset(v, 0, 23); + sprintf(v, "", colorDef->red, colorDef->green, colorDef->blue); + [_html appendBytes: v length: strlen(v)]; + free(v); + } + else if ([s hasPrefix: @"fs"]) + { + // ignore + } + else if ([s hasPrefix: @"fbidis"]) + { + // ignore + } + else if ([s hasPrefix: @"fromhtml"]) + { + // ignore + } + else if ([s hasPrefix: @"f"] && [s length] > 1) + { + RTFFontInfo *fontInfo; + int font_index; + + font_index = [[s substringFromIndex: 1] intValue]; + + if (!formattingOptions) + continue; + + if (formattingOptions->font_index >= 0 && + font_index != formattingOptions->font_index) + { + [_html appendBytes: "" length: 7]; + } + + formattingOptions->font_index = font_index; + + fontInfo = [fontTable fontInfoAtIndex: font_index]; + + char *v = malloc(128*sizeof(char)); + memset(v, 0, 128); + sprintf(v, "", [fontInfo->name UTF8String]); + [_html appendBytes: v length: strlen(v)]; + free(v); + } + else if ([s isEqualToString: @"i"] && formattingOptions) + { + [_html appendBytes: "" length: 3]; + formattingOptions->italic = YES; + } + else if ([s isEqualToString: @"i0"] && formattingOptions) + { + [_html appendBytes: "" length: 4]; + formattingOptions->italic = NO; + } + else if ([s isEqualToString: @"tab"]) + { + [_html appendBytes: "  " length: 12]; + } + else if ([s isEqualToString: @"softline"] || [s isEqualToString: @"par"]) + { + [_html appendBytes: "
" length: 4]; + } + else if ([s isEqualToString: @"strike"] && formattingOptions) + { + [_html appendBytes: "" length: 8]; + formattingOptions->strikethrough = YES; + } + else if ([s isEqualToString: @"strike0"] && formattingOptions) + { + [_html appendBytes: "" length: 9]; + formattingOptions->strikethrough = NO; + } + else if ([s hasPrefix: @"u"] && [s length] > 1 && isdigit([s characterAtIndex: 1])) + { + NSData *d; + unichar ch; + + ch = (unichar)[[s substringFromIndex: 1] intValue]; + s = [NSString stringWithCharacters: &ch length: 1]; + d = [s dataUsingEncoding: NSUTF8StringEncoding]; + [_html appendData: d]; + } + else if ([s isEqualToString: @"ul"] && formattingOptions) + { + [_html appendBytes: "" length: 3]; + formattingOptions->underline = YES; + } + else if (([s isEqualToString: @"ul0"] || [s isEqualToString: @"ulnone"]) + && formattingOptions) + { + [_html appendBytes: "" length: 4]; + formattingOptions->underline = NO; + } + + // If a space delimits the control word, the space does not appear in the document. + // Any characters following the delimiter, including spaces, will appear in the document. + if (*_bytes == ' ') + { + ADVANCE; + } + } + else if (c == '{') + { + formattingOptions = [[[RTFFormattingOptions alloc] init] autorelease]; + + formattingOptions->bold = NO; + formattingOptions->italic = NO; + formattingOptions->strikethrough = NO; + formattingOptions->underline = NO; + formattingOptions->font_index = -1; + formattingOptions->color_index = -1; + formattingOptions->start_pos = [_html length]; + [stack push: formattingOptions]; + ADVANCE; + } + else if (c == '}') + { + formattingOptions = [stack pop]; + + if (formattingOptions) + { + // Handle {\b bold} vs. \b bold \b0 + if (formattingOptions->bold) + { + [_html appendBytes: "" length: 4]; + } + + if (formattingOptions->italic) + { + [_html appendBytes: "" length: 4]; + } + + if (formattingOptions->strikethrough) + { + [_html appendBytes: "" length: 9]; + } + + if (formattingOptions->underline) + { + [_html appendBytes: "" length: 4]; + } + + if (formattingOptions->font_index >= 0) + { + [_html appendBytes: "
" length: 7]; + } + + if (formattingOptions->color_index >= 0) + { + [_html appendBytes: "" length: 7]; + } + } + + formattingOptions = [stack top]; + ADVANCE; + } + else + { + // We avoid appending NULL bytes + if (*_bytes) + [_html appendBytes: _bytes length: 1]; + ADVANCE; + } + } + + [_html appendBytes: "" length: 14]; + + RELEASE(stack); + return AUTORELEASE(_html); +} + +@end diff --git a/OpenChange/unrtf-0.21.2.diff b/OpenChange/unrtf-0.21.2.diff deleted file mode 100644 index c49b9cda9..000000000 --- a/OpenChange/unrtf-0.21.2.diff +++ /dev/null @@ -1,12505 +0,0 @@ -diff -durpN unrtf-0.21.2.old/configure.ac unrtf-0.21.2/configure.ac ---- unrtf-0.21.2.old/configure.ac 2010-08-15 03:59:52.000000000 +0200 -+++ unrtf-0.21.2/configure.ac 2013-01-17 02:42:10.681861561 +0100 -@@ -33,7 +33,7 @@ AC_HEADER_STDC - - # following is not really necessary, since it is already done by preceding - # macro, but it shows how to extend HAVE_ macros to other headers. --AC_CHECK_HEADERS([stdlib.h stdio.h ctype.h string.h]) -+AC_CHECK_HEADERS([stdlib.h stdio.h ctype.h string.h stdint.h]) - - # Checks for typedefs, structures, and compiler characteristics. - -diff -durpN unrtf-0.21.2.old/outputs/html.conf unrtf-0.21.2/outputs/html.conf ---- unrtf-0.21.2.old/outputs/html.conf 2010-08-15 14:44:09.000000000 +0200 -+++ unrtf-0.21.2/outputs/html.conf 2013-01-17 02:41:09.681864239 +0100 -@@ -5,7 +5,7 @@ comment_end - --> - - document_begin -- -+ - #Second test of comments - - -@@ -67,7 +67,7 @@ align_right_end - - - forced_space --   -+   - line_break -
- -diff -durpN unrtf-0.21.2.old/src/attr.c unrtf-0.21.2/src/attr.c ---- unrtf-0.21.2.old/src/attr.c 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/attr.c 2013-01-17 02:41:09.681864239 +0100 -@@ -1,23 +1,23 @@ - /*============================================================================= -- GNU UnRTF, a command-line program to convert RTF documents to other formats. -- Copyright (C) 2000,2001,2004 by Zachary Smith -+ GNU UnRTF, a command-line program to convert RTF documents to other formats. -+ Copyright (C) 2000,2001,2004 by Zachary Smith - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -- (at your option) any later version. -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. - -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -- The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au --=============================================================================*/ -+ The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au -+ =============================================================================*/ - - - /*---------------------------------------------------------------------- -@@ -57,47 +57,20 @@ - #include - #endif - -+#include "attr.h" -+#include "convert.h" - #include "malloc.h" - #include "defs.h" - #include "error.h" -+#include "output.h" -+#include "unrtf.h" - - #ifndef HAVE_ATTR_H --#include "attr.h" - #define HAVE_ATTR_H - #endif - - #include "main.h" - --extern void starting_body(); --extern void starting_text(); -- --extern int simulate_allcaps; --extern int simulate_smallcaps; -- -- --#define MAX_ATTRS (10000) -- -- --/* For each RTF text block (the text within braces) we must keep -- * an AttrStack which is a stack of attributes and their optional -- * parameter. Since RTF text blocks are nested, these make up a -- * stack of stacks. And, since RTF text blocks inherit attributes -- * from parent blocks, all new AttrStacks do the same from -- * their parent AttrStack. -- */ --typedef struct _stack { -- unsigned char attr_stack[MAX_ATTRS]; -- char *attr_stack_params[MAX_ATTRS]; -- int tos; -- struct _stack *next; --} AttrStack; -- --/*@null@*/ static AttrStack *stack_of_stacks = NULL; --/*@null@*/ static AttrStack *stack_of_stacks_top = NULL; -- -- -- -- - /*======================================================================== - * Name: attr_express_begin - * Purpose: Print the HTML for beginning an attribute. -@@ -106,95 +79,96 @@ typedef struct _stack { - *=======================================================================*/ - - void --attr_express_begin (int attr, char* param) { -- switch(attr) -- { -- case ATTR_BOLD: -- if (safe_printf(0, op->bold_begin)) fprintf(stderr, TOO_MANY_ARGS, "bold_begin");; -- break; -- case ATTR_ITALIC: -- if (safe_printf(0, op->italic_begin)) fprintf(stderr, TOO_MANY_ARGS, "italic_begin");; -- break; -+attr_express_begin (int attr, char* param, const struct OutputContext *oc) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ switch(attr) -+ { -+ case ATTR_BOLD: -+ if (safe_printf(device, 0, oc->personality->bold_begin)) fprintf(stderr, TOO_MANY_ARGS, "bold_begin");; -+ break; -+ case ATTR_ITALIC: -+ if (safe_printf(device, 0, oc->personality->italic_begin)) fprintf(stderr, TOO_MANY_ARGS, "italic_begin");; -+ break; - -- /* Various underlines, they all resolve to HTML's */ -- case ATTR_THICK_UL: -- case ATTR_WAVE_UL: -- case ATTR_DASH_UL: -- case ATTR_DOT_UL: -- case ATTR_DOT_DASH_UL: -- case ATTR_2DOT_DASH_UL: -- case ATTR_WORD_UL: -- case ATTR_UNDERLINE: -- if (safe_printf(0, op->underline_begin)) fprintf(stderr, TOO_MANY_ARGS, "underline_begin");; -- break; -+ /* Various underlines, they all resolve to HTML's */ -+ case ATTR_THICK_UL: -+ case ATTR_WAVE_UL: -+ case ATTR_DASH_UL: -+ case ATTR_DOT_UL: -+ case ATTR_DOT_DASH_UL: -+ case ATTR_2DOT_DASH_UL: -+ case ATTR_WORD_UL: -+ case ATTR_UNDERLINE: -+ if (safe_printf(device, 0, oc->personality->underline_begin)) fprintf(stderr, TOO_MANY_ARGS, "underline_begin");; -+ break; - -- case ATTR_DOUBLE_UL: -- if (safe_printf(0, op->dbl_underline_begin)) fprintf(stderr, TOO_MANY_ARGS, "dbl_underline_begin");; -- break; -+ case ATTR_DOUBLE_UL: -+ if (safe_printf(device, 0, oc->personality->dbl_underline_begin)) fprintf(stderr, TOO_MANY_ARGS, "dbl_underline_begin");; -+ break; - -- case ATTR_FONTSIZE: -- op_begin_std_fontsize (op, atoi (param)); -- break; -+ case ATTR_FONTSIZE: -+ op_begin_std_fontsize (oc, atoi (param)); -+ break; - -- case ATTR_FONTFACE: -- if (safe_printf(1, op->font_begin,param)) fprintf(stderr, TOO_MANY_ARGS, "font_begin");; -- break; -+ case ATTR_FONTFACE: -+ if (safe_printf(device, 1, oc->personality->font_begin,param)) fprintf(stderr, TOO_MANY_ARGS, "font_begin");; -+ break; - -- case ATTR_FOREGROUND: -- if (safe_printf(1, op->foreground_begin, param)) fprintf(stderr, TOO_MANY_ARGS, "foreground_begin");; -- break; -+ case ATTR_FOREGROUND: -+ if (safe_printf(device, 1, oc->personality->foreground_begin, param)) fprintf(stderr, TOO_MANY_ARGS, "foreground_begin");; -+ break; - -- case ATTR_BACKGROUND: -- if (!simple_mode) -- if (safe_printf(1, op->background_begin,param)) fprintf(stderr, TOO_MANY_ARGS, "background_begin");; -- break; -+ case ATTR_BACKGROUND: -+ if (!oc->conversion->options->simple_mode) -+ if (safe_printf(device, 1, oc->personality->background_begin,param)) fprintf(stderr, TOO_MANY_ARGS, "background_begin");; -+ break; - -- case ATTR_SUPER: -- if (safe_printf(0, op->superscript_begin)) fprintf(stderr, TOO_MANY_ARGS, "superscript_begin");; -- break; -- case ATTR_SUB: -- if (safe_printf(0, op->subscript_begin)) fprintf(stderr, TOO_MANY_ARGS, "subscript_begin");; -- break; -+ case ATTR_SUPER: -+ if (safe_printf(device, 0, oc->personality->superscript_begin)) fprintf(stderr, TOO_MANY_ARGS, "superscript_begin");; -+ break; -+ case ATTR_SUB: -+ if (safe_printf(device, 0, oc->personality->subscript_begin)) fprintf(stderr, TOO_MANY_ARGS, "subscript_begin");; -+ break; - -- case ATTR_STRIKE: -- if (safe_printf(0, op->strikethru_begin)) fprintf(stderr, TOO_MANY_ARGS, "strikethru_begin");; -- break; -+ case ATTR_STRIKE: -+ if (safe_printf(device, 0, oc->personality->strikethru_begin)) fprintf(stderr, TOO_MANY_ARGS, "strikethru_begin");; -+ break; - -- case ATTR_DBL_STRIKE: -- if (safe_printf(0, op->dbl_strikethru_begin)) fprintf(stderr, TOO_MANY_ARGS, "dbl_strikethru_begin");; -- break; -+ case ATTR_DBL_STRIKE: -+ if (safe_printf(device, 0, oc->personality->dbl_strikethru_begin)) fprintf(stderr, TOO_MANY_ARGS, "dbl_strikethru_begin");; -+ break; - -- case ATTR_EXPAND: -- if (safe_printf(1, op->expand_begin, param)) fprintf(stderr, TOO_MANY_ARGS, "expand_begin");; -- break; -+ case ATTR_EXPAND: -+ if (safe_printf(device, 1, oc->personality->expand_begin, param)) fprintf(stderr, TOO_MANY_ARGS, "expand_begin");; -+ break; - -- case ATTR_OUTLINE: -- if (safe_printf(0, op->outline_begin)) fprintf(stderr, TOO_MANY_ARGS, "outline_begin");; -- break; -- case ATTR_SHADOW: -- if (safe_printf(0, op->shadow_begin)) fprintf(stderr, TOO_MANY_ARGS, "shadow_begin");; -- break; -- case ATTR_EMBOSS: -- if (safe_printf(0, op->emboss_begin)) fprintf(stderr, TOO_MANY_ARGS, "emboss_begin");; -- break; -- case ATTR_ENGRAVE: -- if (safe_printf(0, op->engrave_begin)) fprintf(stderr, TOO_MANY_ARGS, "engrave_begin");; -- break; -+ case ATTR_OUTLINE: -+ if (safe_printf(device, 0, oc->personality->outline_begin)) fprintf(stderr, TOO_MANY_ARGS, "outline_begin");; -+ break; -+ case ATTR_SHADOW: -+ if (safe_printf(device, 0, oc->personality->shadow_begin)) fprintf(stderr, TOO_MANY_ARGS, "shadow_begin");; -+ break; -+ case ATTR_EMBOSS: -+ if (safe_printf(device, 0, oc->personality->emboss_begin)) fprintf(stderr, TOO_MANY_ARGS, "emboss_begin");; -+ break; -+ case ATTR_ENGRAVE: -+ if (safe_printf(device, 0, oc->personality->engrave_begin)) fprintf(stderr, TOO_MANY_ARGS, "engrave_begin");; -+ break; - -- case ATTR_CAPS: -- if (op->simulate_all_caps) -- simulate_allcaps = TRUE; -- break; -+ case ATTR_CAPS: -+ if (oc->personality->simulate_all_caps) -+ oc->conversion->simulate_allcaps = TRUE; -+ break; - -- case ATTR_SMALLCAPS: -- if (op->simulate_small_caps) -- simulate_smallcaps = TRUE; -- else { -- if (op->small_caps_begin) -- if (safe_printf(0, op->small_caps_begin)) fprintf(stderr, TOO_MANY_ARGS, "small_caps_begin");; -- } -- break; -- } -+ case ATTR_SMALLCAPS: -+ if (oc->personality->simulate_small_caps) -+ oc->conversion->simulate_smallcaps = TRUE; -+ else { -+ if (oc->personality->small_caps_begin) -+ if (safe_printf(device, 0, oc->personality->small_caps_begin)) fprintf(stderr, TOO_MANY_ARGS, "small_caps_begin");; -+ } -+ break; -+ } - } - - -@@ -206,95 +180,96 @@ attr_express_begin (int attr, char* para - *=======================================================================*/ - - void --attr_express_end (int attr, char *param) -+attr_express_end (int attr, char *param, const struct OutputContext *oc) - { -- switch(attr) -- { -- case ATTR_BOLD: -- if (safe_printf(0, op->bold_end)) fprintf(stderr, TOO_MANY_ARGS, "bold_end");; -- break; -- case ATTR_ITALIC: -- if (safe_printf(0, op->italic_end)) fprintf(stderr, TOO_MANY_ARGS, "italic_end");; -- break; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ switch(attr) -+ { -+ case ATTR_BOLD: -+ if (safe_printf(device, 0, oc->personality->bold_end)) fprintf(stderr, TOO_MANY_ARGS, "bold_end");; -+ break; -+ case ATTR_ITALIC: -+ if (safe_printf(device, 0, oc->personality->italic_end)) fprintf(stderr, TOO_MANY_ARGS, "italic_end");; -+ break; - -- /* Various underlines, they all resolve to HTML's */ -- case ATTR_THICK_UL: -- case ATTR_WAVE_UL: -- case ATTR_DASH_UL: -- case ATTR_DOT_UL: -- case ATTR_DOT_DASH_UL: -- case ATTR_2DOT_DASH_UL: -- case ATTR_WORD_UL: -- case ATTR_UNDERLINE: -- if (safe_printf(0, op->underline_end)) fprintf(stderr, TOO_MANY_ARGS, "underline_end");; -- break; -+ /* Various underlines, they all resolve to HTML's */ -+ case ATTR_THICK_UL: -+ case ATTR_WAVE_UL: -+ case ATTR_DASH_UL: -+ case ATTR_DOT_UL: -+ case ATTR_DOT_DASH_UL: -+ case ATTR_2DOT_DASH_UL: -+ case ATTR_WORD_UL: -+ case ATTR_UNDERLINE: -+ if (safe_printf(device, 0, oc->personality->underline_end)) fprintf(stderr, TOO_MANY_ARGS, "underline_end");; -+ break; - -- case ATTR_DOUBLE_UL: -- if (safe_printf(0, op->dbl_underline_end)) fprintf(stderr, TOO_MANY_ARGS, "dbl_underline_end");; -- break; -+ case ATTR_DOUBLE_UL: -+ if (safe_printf(device, 0, oc->personality->dbl_underline_end)) fprintf(stderr, TOO_MANY_ARGS, "dbl_underline_end");; -+ break; - -- case ATTR_FONTSIZE: -- op_end_std_fontsize (op, atoi (param)); -- break; -+ case ATTR_FONTSIZE: -+ op_end_std_fontsize (oc, atoi (param)); -+ break; - -- case ATTR_FONTFACE: -- if (safe_printf(0, op->font_end)) fprintf(stderr, TOO_MANY_ARGS, "font_end");; -- break; -+ case ATTR_FONTFACE: -+ if (safe_printf(device, 0, oc->personality->font_end)) fprintf(stderr, TOO_MANY_ARGS, "font_end");; -+ break; - -- case ATTR_FOREGROUND: -- if (safe_printf(0, op->foreground_end)) fprintf(stderr, TOO_MANY_ARGS, "foreground_end");; -- break; -- case ATTR_BACKGROUND: -- if (!simple_mode) -- if (safe_printf(0, op->background_end)) fprintf(stderr, TOO_MANY_ARGS, "background_end");; -- break; -+ case ATTR_FOREGROUND: -+ if (safe_printf(device, 0, oc->personality->foreground_end)) fprintf(stderr, TOO_MANY_ARGS, "foreground_end");; -+ break; -+ case ATTR_BACKGROUND: -+ if (!oc->conversion->options->simple_mode) -+ if (safe_printf(device, 0, oc->personality->background_end)) fprintf(stderr, TOO_MANY_ARGS, "background_end");; -+ break; - -- case ATTR_SUPER: -- if (safe_printf(0, op->superscript_end)) fprintf(stderr, TOO_MANY_ARGS, "superscript_end");; -- break; -- case ATTR_SUB: -- if (safe_printf(0, op->subscript_end)) fprintf(stderr, TOO_MANY_ARGS, "subscript_end");; -- break; -+ case ATTR_SUPER: -+ if (safe_printf(device, 0, oc->personality->superscript_end)) fprintf(stderr, TOO_MANY_ARGS, "superscript_end");; -+ break; -+ case ATTR_SUB: -+ if (safe_printf(device, 0, oc->personality->subscript_end)) fprintf(stderr, TOO_MANY_ARGS, "subscript_end");; -+ break; - -- case ATTR_STRIKE: -- if (safe_printf(0, op->strikethru_end)) fprintf(stderr, TOO_MANY_ARGS, "strikethru_end");; -- break; -+ case ATTR_STRIKE: -+ if (safe_printf(device, 0, oc->personality->strikethru_end)) fprintf(stderr, TOO_MANY_ARGS, "strikethru_end");; -+ break; - -- case ATTR_DBL_STRIKE: -- if (safe_printf(0, op->dbl_strikethru_end)) fprintf(stderr, TOO_MANY_ARGS, "dbl_strikethru_end");; -- break; -+ case ATTR_DBL_STRIKE: -+ if (safe_printf(device, 0, oc->personality->dbl_strikethru_end)) fprintf(stderr, TOO_MANY_ARGS, "dbl_strikethru_end");; -+ break; - -- case ATTR_OUTLINE: -- if (safe_printf(0, op->outline_end)) fprintf(stderr, TOO_MANY_ARGS, "outline_end");; -- break; -- case ATTR_SHADOW: -- if (safe_printf(0, op->shadow_end)) fprintf(stderr, TOO_MANY_ARGS, "shadow_end");; -- break; -- case ATTR_EMBOSS: -- if (safe_printf(0, op->emboss_end)) fprintf(stderr, TOO_MANY_ARGS, "emboss_end");; -- break; -- case ATTR_ENGRAVE: -- if (safe_printf(0, op->engrave_end)) fprintf(stderr, TOO_MANY_ARGS, "engrave_end");; -- break; -+ case ATTR_OUTLINE: -+ if (safe_printf(device, 0, oc->personality->outline_end)) fprintf(stderr, TOO_MANY_ARGS, "outline_end");; -+ break; -+ case ATTR_SHADOW: -+ if (safe_printf(device, 0, oc->personality->shadow_end)) fprintf(stderr, TOO_MANY_ARGS, "shadow_end");; -+ break; -+ case ATTR_EMBOSS: -+ if (safe_printf(device, 0, oc->personality->emboss_end)) fprintf(stderr, TOO_MANY_ARGS, "emboss_end");; -+ break; -+ case ATTR_ENGRAVE: -+ if (safe_printf(device, 0, oc->personality->engrave_end)) fprintf(stderr, TOO_MANY_ARGS, "engrave_end");; -+ break; - -- case ATTR_EXPAND: -- if (safe_printf(0, op->expand_end)) fprintf(stderr, TOO_MANY_ARGS, "expand_end");; -- break; -+ case ATTR_EXPAND: -+ if (safe_printf(device, 0, oc->personality->expand_end)) fprintf(stderr, TOO_MANY_ARGS, "expand_end");; -+ break; - -- case ATTR_CAPS: -- if (op->simulate_all_caps) -- simulate_allcaps = FALSE; -- break; -+ case ATTR_CAPS: -+ if (oc->personality->simulate_all_caps) -+ oc->conversion->simulate_allcaps = FALSE; -+ break; - -- case ATTR_SMALLCAPS: -- if (op->simulate_small_caps) -- simulate_smallcaps = FALSE; -- else { -- if (op->small_caps_end) -- if (safe_printf(0, op->small_caps_end)) fprintf(stderr, TOO_MANY_ARGS, "small_caps_end");; -- } -- break; -- } -+ case ATTR_SMALLCAPS: -+ if (oc->personality->simulate_small_caps) -+ oc->conversion->simulate_smallcaps = FALSE; -+ else { -+ if (oc->personality->small_caps_end) -+ if (safe_printf(device, 0, oc->personality->small_caps_end)) fprintf(stderr, TOO_MANY_ARGS, "small_caps_end");; -+ } -+ break; -+ } - } - - -@@ -307,32 +282,32 @@ attr_express_end (int attr, char *param) - *=======================================================================*/ - - void --attr_push(int attr, char* param) -+attr_push(int attr, char* param, const struct OutputContext *oc) - { -- AttrStack *stack = stack_of_stacks_top; -- if (!stack) { -- warning_handler("No stack to push attribute onto"); -- return; -- } -+ AttrStack *stack = oc->conversion->stack_of_stacks_top; -+ if (!stack) { -+ warning_handler("No stack to push attribute onto"); -+ return; -+ } - -- if (stack->tos >= MAX_ATTRS) { -- fprintf(stderr, "Too many attributes!\n"); -- return; -- } -+ if (stack->tos >= MAX_ATTRS) { -+ fprintf(stderr, "Too many attributes!\n"); -+ return; -+ } - -- /* Make sure it's understood we're in the section. */ -- /* KLUDGE */ -- starting_body(); -- starting_text(); -+ /* Make sure it's understood we're in the section. */ -+ /* KLUDGE */ -+ starting_body(oc); -+ starting_text(oc); - -- ++stack->tos; -- stack->attr_stack[stack->tos] = attr; -- if (param) -- stack->attr_stack_params[stack->tos] = my_strdup(param); -- else -- stack->attr_stack_params[stack->tos] = NULL; -+ ++stack->tos; -+ stack->attr_stack[stack->tos] = attr; -+ if (param) -+ stack->attr_stack_params[stack->tos] = unrtf_strdup(oc->conversion, param); -+ else -+ stack->attr_stack_params[stack->tos] = NULL; - -- attr_express_begin(attr, param); -+ attr_express_begin(attr, param, oc); - } - - -@@ -344,62 +319,25 @@ attr_push(int attr, char* param) - *=======================================================================*/ - - char * --attr_get_param(int attr) --{ -- int i; -- AttrStack *stack = stack_of_stacks_top; -- if (!stack) { -- warning_handler("No stack to get attribute from"); -- return; -- } -- -- i=stack->tos; -- while (i>=0) -- { -- if(stack->attr_stack [i] == attr) -- { -- if(stack->attr_stack_params [i] != NULL) -- return stack->attr_stack_params [i]; -- else -- return NULL; -- } -- i--; -- } -- return NULL; --} -- -- --/*======================================================================== -- * Name: attrstack_copy_all -- * Purpose: Routine to copy all attributes from one stack to another. -- * Args: Two stacks. -- * Returns: None. -- *=======================================================================*/ -- --void --attrstack_copy_all (AttrStack *src, AttrStack *dest) -+attr_get_param(const struct ConversionContext *cc, int attr) - { -- int i; -- int total; -- -- CHECK_PARAM_NOT_NULL(src); -- CHECK_PARAM_NOT_NULL(dest); -- -- total = src->tos + 1; -- -- for (i=0; iattr_stack [i]; -- char *param=src->attr_stack_params [i]; -- -- dest->attr_stack[i] = attr; -- if (param) -- dest->attr_stack_params[i] = my_strdup (param); -- else -- dest->attr_stack_params[i] = NULL; -- } -+ int i; -+ AttrStack *stack = cc->stack_of_stacks_top; -+ if (!stack) { -+ warning_handler("No stack to get attribute from"); -+ return NULL; -+ } - -- dest->tos = src->tos; -+ i=stack->tos; -+ while (i>=0) -+ { -+ if(stack->attr_stack[i] == attr) -+ { -+ return stack->attr_stack_params[i]; -+ } -+ i--; -+ } -+ return NULL; - } - - /*======================================================================== -@@ -414,21 +352,21 @@ attrstack_copy_all (AttrStack *src, Attr - *=======================================================================*/ - - void --attrstack_unexpress_all (AttrStack *stack) -+attrstack_unexpress_all (AttrStack *stack, const struct OutputContext *oc) - { -- int i; -+ int i; - -- CHECK_PARAM_NOT_NULL(stack); -+ CHECK_PARAM_NOT_NULL(stack); - -- i=stack->tos; -- while (i>=0) -- { -- int attr=stack->attr_stack [i]; -- char *param=stack->attr_stack_params [i]; -+ i=stack->tos; -+ while (i>=0) -+ { -+ int attr=stack->attr_stack[i]; -+ char *param=stack->attr_stack_params[i]; - -- attr_express_end (attr, param); -- i--; -- } -+ attr_express_end (attr, param, oc); -+ i--; -+ } - } - - -@@ -440,23 +378,20 @@ attrstack_unexpress_all (AttrStack *stac - * Returns: None. - *=======================================================================*/ - void --attrstack_push () -+attrstack_push (struct ConversionContext *cc) - { -- AttrStack *new_stack; -- AttrStack *prev_stack; -- -- new_stack = (AttrStack*) my_malloc (sizeof (AttrStack)); -- memset ((void*) new_stack, 0, sizeof (AttrStack)); -+ AttrStack *new_stack; - -- prev_stack = stack_of_stacks_top; -+ new_stack = (AttrStack*) unrtf_malloc (sizeof (AttrStack)); -+ memset ((void*) new_stack, 0, sizeof (AttrStack)); -+ new_stack->tos = -1; - -- if (!stack_of_stacks) { -- stack_of_stacks = new_stack; -- } else { -- stack_of_stacks_top->next = new_stack; -- } -- stack_of_stacks_top = new_stack; -- new_stack->tos = -1; -+ if (!cc->stack_of_stacks) { -+ cc->stack_of_stacks = new_stack; -+ } else { -+ cc->stack_of_stacks_top->next = new_stack; -+ } -+ cc->stack_of_stacks_top = new_stack; - } - - -@@ -470,29 +405,30 @@ attrstack_push () - *=======================================================================*/ - - int --attr_pop (int attr) -+attr_pop (int attr, const struct OutputContext *oc) - { -- AttrStack *stack = stack_of_stacks_top; -+ AttrStack *stack = oc->conversion->stack_of_stacks_top; - -- if (!stack) { -- warning_handler ("no stack to pop attribute from"); -- return FALSE; -- } -+ if (!stack) { -+ warning_handler ("no stack to pop attribute from"); -+ return FALSE; -+ } - -- if(stack->tos>=0 && stack->attr_stack[stack->tos]==attr) -- { -- char *param = stack->attr_stack_params [stack->tos]; -+ if(stack->tos>=0 && stack->attr_stack[stack->tos]==attr) -+ { -+ char *param = stack->attr_stack_params[stack->tos]; - -- attr_express_end (attr, param); -+ attr_express_end (attr, param, oc); - -- if (param) my_free(param); -+ if (param) unrtf_free(param); -+ stack->attr_stack_params[stack->tos] = NULL; - -- stack->tos--; -+ stack->tos--; - -- return TRUE; -- } -- else -- return FALSE; -+ return TRUE; -+ } -+ else -+ return FALSE; - } - - -@@ -506,20 +442,20 @@ attr_pop (int attr) - *=======================================================================*/ - - int --attr_read() { -- AttrStack *stack = stack_of_stacks_top; -- if (!stack) { -- warning_handler ("no stack to read attribute from"); -- return FALSE; -- } -+attr_read(const struct ConversionContext *cc) { -+ AttrStack *stack = cc->stack_of_stacks_top; -+ if (!stack) { -+ warning_handler ("no stack to read attribute from"); -+ return FALSE; -+ } - -- if(stack->tos>=0) -- { -- int attr = stack->attr_stack [stack->tos]; -- return attr; -- } -- else -- return ATTR_NONE; -+ if(stack->tos>=0) -+ { -+ int attr = stack->attr_stack[stack->tos]; -+ return attr; -+ } -+ else -+ return ATTR_NONE; - } - - -@@ -531,20 +467,21 @@ attr_read() { - *=======================================================================*/ - - void --attr_drop_all () -+attr_drop_all (const struct ConversionContext *cc) - { -- AttrStack *stack = stack_of_stacks_top; -- if (!stack) { -- warning_handler ("no stack to drop all attributes from"); -- return; -- } -+ AttrStack *stack = cc->stack_of_stacks_top; -+ if (!stack) { -+ warning_handler ("no stack to drop all attributes from"); -+ return; -+ } - -- while (stack->tos>=0) -- { -- char *param=stack->attr_stack_params [stack->tos]; -- if (param) my_free(param); -- stack->tos--; -- } -+ while (stack->tos>=0) -+ { -+ char *param=stack->attr_stack_params[stack->tos]; -+ if (param) unrtf_free(param); -+ stack->attr_stack_params[stack->tos] = NULL; -+ stack->tos--; -+ } - } - - -@@ -557,30 +494,34 @@ attr_drop_all () - *=======================================================================*/ - - void --attrstack_drop () -+attrstack_drop (const struct OutputContext *oc) - { -- AttrStack *stack = stack_of_stacks_top; -- AttrStack *prev_stack; -- if (!stack) { -- warning_handler ("no attr-stack to drop"); -- return; -- } -+ AttrStack *stack = oc->conversion->stack_of_stacks_top; -+ AttrStack *prev_stack; -+ if (!stack) { -+ warning_handler ("no attr-stack to drop"); -+ return; -+ } - -- attr_pop_all (); -- prev_stack = stack_of_stacks; -+ attr_pop_all (oc); - -- while(prev_stack && prev_stack->next && prev_stack->next != stack) -- prev_stack = prev_stack->next; -+ if (stack == oc->conversion->stack_of_stacks) { -+ oc->conversion->stack_of_stacks_top = NULL; -+ oc->conversion->stack_of_stacks = NULL; -+ } -+ else { -+ prev_stack = oc->conversion->stack_of_stacks; - -- if (prev_stack) { -- stack_of_stacks_top = prev_stack; -- prev_stack->next = NULL; -- } else { -- stack_of_stacks_top = NULL; -- stack_of_stacks = NULL; -- } -+ while (prev_stack->next && prev_stack->next != stack) -+ prev_stack = prev_stack->next; - -- my_free ((void*) stack); -+ if (prev_stack) { -+ oc->conversion->stack_of_stacks_top = prev_stack; -+ prev_stack->next = NULL; -+ } -+ } -+ -+ unrtf_free ((void*) stack); - } - - /*======================================================================== -@@ -592,21 +533,22 @@ attrstack_drop () - *=======================================================================*/ - - void --attr_pop_all() -+attr_pop_all(const struct OutputContext *oc) - { -- AttrStack *stack = stack_of_stacks_top; -- if (!stack) { -- warning_handler ("no stack to pop from"); -- return; -- } -+ AttrStack *stack = oc->conversion->stack_of_stacks_top; -+ if (!stack) { -+ warning_handler ("no stack to pop from"); -+ return; -+ } - -- while (stack->tos>=0) { -- int attr=stack->attr_stack [stack->tos]; -- char *param=stack->attr_stack_params [stack->tos]; -- attr_express_end (attr,param); -- if (param) my_free(param); -- stack->tos--; -- } -+ while (stack->tos>=0) { -+ int attr=stack->attr_stack[stack->tos]; -+ char *param=stack->attr_stack_params[stack->tos]; -+ attr_express_end (attr,param, oc); -+ if (param) unrtf_free(param); -+ stack->attr_stack_params[stack->tos] = NULL; -+ stack->tos--; -+ } - } - - -@@ -621,23 +563,23 @@ attr_pop_all() - *=======================================================================*/ - - void --attrstack_express_all() { -- AttrStack *stack = stack_of_stacks_top; -- int i; -+attrstack_express_all(const struct OutputContext *oc) { -+ AttrStack *stack = oc->conversion->stack_of_stacks_top; -+ int i; - -- if (!stack) { -- warning_handler ("no stack to pop from"); -- return; -- } -+ if (!stack) { -+ warning_handler ("no stack to pop from"); -+ return; -+ } - -- i=0; -- while (i<=stack->tos) -- { -- int attr=stack->attr_stack [i]; -- char *param=stack->attr_stack_params [i]; -- attr_express_begin (attr, param); -- i++; -- } -+ i=0; -+ while (i<=stack->tos) -+ { -+ int attr=stack->attr_stack[i]; -+ char *param=stack->attr_stack_params[i]; -+ attr_express_begin (attr, param, oc); -+ i++; -+ } - } - - -@@ -652,78 +594,112 @@ attrstack_express_all() { - *=======================================================================*/ - - void --attr_pop_dump() { -- AttrStack *stack = stack_of_stacks_top; -- int i; -+attr_pop_dump(const struct OutputContext *oc) { -+ AttrStack *stack = oc->conversion->stack_of_stacks_top; -+ int i; - -- if (!stack) return; -+ if (!stack) return; - -- i=stack->tos; -- while (i>=0) -- { -- int attr=stack->attr_stack [i]; -- attr_pop (attr); -- i--; -- } -+ i=stack->tos; -+ while (i>=0) -+ { -+ int attr=stack->attr_stack[i]; -+ attr_pop (attr, oc); -+ i--; -+ } - } - - /*======================================================================== - * Name: safe_printf - * Purpose: Prevents format string attack and writes empty string -- instead of NULL. -+ instead of NULL. - * Args: Number of parameters (without a string), string to write, -- additional parameters to print (have to be strings). -+ additional parameters to print (have to be strings). - * Returns: Returns 0 if number of not escaped '%' in string -- is not greater than nr, else returns -1 -+ is not greater than nr, else returns -1 - *=======================================================================*/ - -- - int --safe_printf(int nr, char *string, ...) -+safe_printf(const struct unRTFOutputDevice *od, int nr, char *string, ...) - { -+ char *s, *output; -+ int i = 0, ret_code = 0, written; -+ size_t output_len = 0, output_max = 0, size_max; -+ va_list arguments; - -- char *s; -- int i = 0, ret_code = 0; -- va_list arguments; -+ if (string != NULL) -+ { -+ output_max = 1024; -+ output = malloc(output_max * sizeof (char)); -+ *output = 0; -+ va_start(arguments, string); - -- if (string == NULL) -- printf(""); -- else -- { -- va_start(arguments, string); -+ for (; nr > 0; nr--) -+ { -+ while (string[i] != '\0' && (string[i] != '%' || (string[i] == '%' && (i != 0 && string[i-1] == '\\')))) -+ { -+ if (string[i] != '\\' || string[i+1] != '%') -+ { -+ if (output_len + 1 > output_max) -+ { -+ output_max += 1024; -+ output = realloc(output, output_max * sizeof (char)); -+ } -+ output[output_len] = string[i]; -+ output_len++; -+ } -+ i++; -+ } - -- for (; nr > 0; nr--) -- { -- while (string[i] != '\0' && (string[i] != '%' || (string[i] == '%' && (i != 0 && string[i-1] == '\\')))) -- { -- if (string[i] != '\\' || string[i+1] != '%') -- printf("%c", string[i]); -- i++; -- } -+ if (string[i] != '\0') -+ { -+ s = va_arg(arguments, char *); -+ size_max = output_max - output_len; -+ written = snprintf(output + output_len, size_max, "%s", s); -+ if (written > size_max) -+ { -+ output_max += 1024 + written; -+ output = realloc(output, (output_max + 1) * sizeof (char)); -+ sprintf(output + output_len, "%s", s); -+ } -+ output_len += written; -+ i++; -+ } -+ } -+ va_end(arguments); - -- if (string[i] != '\0') -- { -- s = va_arg(arguments, char *); -- printf("%s", s); -- i++; -- } -- } -- va_end(arguments); -+ while (string[i] != '\0') -+ { -+ if (string[i] != '\\' || (string[i] == '\\' && string[i+1] != '%')) -+ { -+ if (string[i] != '%' || (string[i] == '%' && (i != 0 && string[i-1] == '\\'))) -+ { -+ if (output_len + 1 > output_max) -+ { -+ output_max += 1024; -+ output = realloc(output, output_max * sizeof (char)); -+ } -+ output[output_len] = string[i]; -+ output_len++; -+ } -+ else -+ ret_code = -1; -+ } -+ i++; -+ } - -- while (string[i] != '\0') -- { -- if (string[i] != '\\' || (string[i] == '\\' && string[i+1] != '%')) -- { -- if (string[i] != '%' || (string[i] == '%' && (i != 0 && string[i-1] == '\\'))) -- printf("%c", string[i]); -- else -- ret_code = -1; -- } -- i++; -- } -- } -+ if (output_len + 1 > output_max) -+ { -+ output_max += 1; -+ output = realloc(output, output_max * sizeof (char)); -+ } -+ output[output_len] = 0; - -- return ret_code; -+ od->print(od->data, output, output_len); -+ free(output); -+ } -+ -+ return ret_code; - } - - /*======================================================================== -@@ -731,51 +707,51 @@ safe_printf(int nr, char *string, ...) - * Purpose: See Returns - * Args: String to return and int to put into first parameter. - * Returns: Returns first parameter where first not escaped -- character % is substituted with second parameter. -+ character % is substituted with second parameter. - *=======================================================================*/ - - char * - assemble_string(char *string, int nr) - { - -- char *s, tmp[12];/* Number of characters that can be in int type (including '\0') - AF */ -- int i = 0, j = 0; -+ char *s, tmp[12];/* Number of characters that can be in int type (including '\0') - AF */ -+ int i = 0, j = 0; - -- if (string == NULL) -- return NULL; -- else { -- s = my_malloc(strlen(string) + 1 + 12/* Number of characters that can be in int type (including '\0') - AF */); -- while(string[i] != '\0' && (string[i] != '%' || (string[i] == '%' && (i != 0 && string[i-1] == '\\')))) { -- if (string[i] != '\\' || string[i+1] != '%') { -- s[j] = string[i]; -- j++; -- } -- i++; -- } -+ if (string == NULL) -+ return NULL; -+ else { -+ s = unrtf_malloc(strlen(string) + 1 + 12/* Number of characters that can be in int type (including '\0') - AF */); -+ while(string[i] != '\0' && (string[i] != '%' || (string[i] == '%' && (i != 0 && string[i-1] == '\\')))) { -+ if (string[i] != '\\' || string[i+1] != '%') { -+ s[j] = string[i]; -+ j++; -+ } -+ i++; -+ } - -- if (string[i] != '\0') { -- sprintf(tmp, "%d", nr); -- strcpy(&s[j], tmp); -- j = j + strlen(tmp); -- } -+ if (string[i] != '\0') { -+ sprintf(tmp, "%d", nr); -+ strcpy(&s[j], tmp); -+ j = j + strlen(tmp); -+ } - -- while (string[i] != '\0') { -- if (string[i] != '\\' || (string[i] == '\\' && string[i+1] != '%')) { -- if (string[i] != '%' || (string[i] == '%' && (i != 0 && string[i-1] == '\\'))) { -- s[j] = string[i]; -- j++; -- } -- else { -- /* More than one char % occured */ -- } -- } -- i++; -- } -- } -+ while (string[i] != '\0') { -+ if (string[i] != '\\' || (string[i] == '\\' && string[i+1] != '%')) { -+ if (string[i] != '%' || (string[i] == '%' && (i != 0 && string[i-1] == '\\'))) { -+ s[j] = string[i]; -+ j++; -+ } -+ else { -+ /* More than one char % occured */ -+ } -+ } -+ i++; -+ } -+ } - -- s[j] = '\0'; -+ s[j] = '\0'; - -- return s; -+ return s; - } - - -@@ -789,39 +765,39 @@ assemble_string(char *string, int nr) - Collection * - add_to_collection(Collection *col, int nr, char *text) - { -- Collection *c = col; -+ Collection *c = col; - -- if (col == NULL) -- { -- col = (Collection *)my_malloc(sizeof(Collection)); -- col->nr = nr; -- col->text = text; -- col->next = NULL; -- } -- else -- { -- while (c->next != NULL) -- { -- if (c->nr == nr) -- { --/* Here is a memory leak but not heavy. Do we need to care about this? -- my_free(a->alias.text); --*/ -- c->text = text; -+ if (col == NULL) -+ { -+ col = (Collection *)unrtf_malloc(sizeof(Collection)); -+ col->nr = nr; -+ col->text = strdup(text); -+ col->next = NULL; -+ } -+ else -+ { -+ while (c->next != NULL) -+ { -+ if (c->nr == nr) -+ { -+ /* Here is a memory leak but not heavy. Do we need to care about this? -+ unrtf_free(a->alias.text); -+ */ -+ c->text = strdup(text); - -- return col; -- } -+ return col; -+ } - -- c = c->next; -- } -+ c = c->next; -+ } - -- c->next = (Collection *)my_malloc(sizeof(Collection)); -- c->next->nr = nr; -- c->next->text = text; -- c->next->next = NULL; -- } -+ c->next = (Collection *)unrtf_malloc(sizeof(Collection)); -+ c->next->nr = nr; -+ c->next->text = strdup(text); -+ c->next->next = NULL; -+ } - -- return col; -+ return col; - } - - /*======================================================================== -@@ -834,15 +810,15 @@ add_to_collection(Collection *col, int n - char * - get_from_collection(Collection *c, int nr) - { -- while (c != NULL) -- { -- if (c->nr == nr) -- return c->text; -+ while (c != NULL) -+ { -+ if (c->nr == nr) -+ return c->text; - -- c = c->next; -- } -+ c = c->next; -+ } - -- return NULL; -+ return NULL; - } - - /*======================================================================== -@@ -855,13 +831,15 @@ get_from_collection(Collection *c, int n - void - free_collection(Collection *c) - { -- Collection *c2; -+ Collection *c2; - -- while (c != NULL) -- { -- c2 = c->next; -- my_free((void *)c); -- c = c2; -- } -+ while (c != NULL) -+ { -+ c2 = c->next; -+ if (c->text) { -+ unrtf_free((void *)c->text); -+ } -+ unrtf_free((void *)c); -+ c = c2; -+ } - } -- -diff -durpN unrtf-0.21.2.old/src/attr.h unrtf-0.21.2/src/attr.h ---- unrtf-0.21.2.old/src/attr.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/attr.h 2013-01-17 02:41:09.681864239 +0100 -@@ -1,23 +1,23 @@ - /*============================================================================= -- GNU UnRTF, a command-line program to convert RTF documents to other formats. -- Copyright (C) 2000,2001,2004 by Zachary Smith -+ GNU UnRTF, a command-line program to convert RTF documents to other formats. -+ Copyright (C) 2000,2001,2004 by Zachary Smith - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -- (at your option) any later version. -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. - -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -- The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au --=============================================================================*/ -+ The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au -+ =============================================================================*/ - - - /*---------------------------------------------------------------------- -@@ -35,69 +35,77 @@ - * 09 Nov 08, arkadiusz.firus@gmail.com: adopt safe_printf & collection funcs - *--------------------------------------------------------------------*/ - -+#ifndef ATTR_H -+#define ATTR_H -+ - enum { -- ATTR_NONE=0, -- ATTR_BOLD, ATTR_ITALIC, -+ ATTR_NONE=0, -+ ATTR_BOLD, ATTR_ITALIC, - -- ATTR_UNDERLINE, ATTR_DOUBLE_UL, ATTR_WORD_UL, -+ ATTR_UNDERLINE, ATTR_DOUBLE_UL, ATTR_WORD_UL, - -- ATTR_THICK_UL, ATTR_WAVE_UL, -+ ATTR_THICK_UL, ATTR_WAVE_UL, - -- ATTR_DOT_UL, ATTR_DASH_UL, ATTR_DOT_DASH_UL, ATTR_2DOT_DASH_UL, -+ ATTR_DOT_UL, ATTR_DASH_UL, ATTR_DOT_DASH_UL, ATTR_2DOT_DASH_UL, - -- ATTR_FONTSIZE, ATTR_STD_FONTSIZE, -- ATTR_FONTFACE, -- ATTR_FOREGROUND, ATTR_BACKGROUND, -- ATTR_CAPS, -- ATTR_SMALLCAPS, -+ ATTR_FONTSIZE, ATTR_STD_FONTSIZE, -+ ATTR_FONTFACE, -+ ATTR_FOREGROUND, ATTR_BACKGROUND, -+ ATTR_CAPS, -+ ATTR_SMALLCAPS, - -- ATTR_SHADOW, -- ATTR_OUTLINE, -- ATTR_EMBOSS, -- ATTR_ENGRAVE, -+ ATTR_SHADOW, -+ ATTR_OUTLINE, -+ ATTR_EMBOSS, -+ ATTR_ENGRAVE, - -- ATTR_SUPER, ATTR_SUB, -- ATTR_STRIKE, -- ATTR_DBL_STRIKE, -+ ATTR_SUPER, ATTR_SUB, -+ ATTR_STRIKE, -+ ATTR_DBL_STRIKE, - -- ATTR_EXPAND, -- /* ATTR_CONDENSE */ -+ ATTR_EXPAND, -+ /* ATTR_CONDENSE */ - }; - - typedef struct _c - { -- int nr; -- char *text; -- struct _c *next; -+ int nr; -+ char *text; -+ struct _c *next; - } Collection; - - Collection *add_to_collection(Collection *col, int nr, char *text); - char *get_from_collection(Collection *c, int nr); - void free_collection(Collection *c); - -+struct ConversionContext; -+struct OutputContext; -+struct unRTFOutputDevice; -+ - extern void attr_push_core (int attr, char* param); - - extern void attr_pop_core (int attr); - --extern void attr_push(int attr, char* param); -+extern void attr_push(int attr, char* param, const struct OutputContext *oc); - --extern void attrstack_push(); --extern void attrstack_drop(); -+extern void attrstack_push(struct ConversionContext *cc); -+extern void attrstack_drop(const struct OutputContext *oc); - extern void attrstack_express_all(); - --extern int attr_pop(int attr); -+extern int attr_pop(int attr, const struct OutputContext *oc); - --extern int attr_read(); -+extern int attr_read(const struct ConversionContext *cc); - - extern void attr_drop_all (); - --extern void attr_pop_all(); -+extern void attr_pop_all(const struct OutputContext *oc); - - extern void attr_pop_dump(); - --char * attr_get_param(int attr); -+char * attr_get_param(const struct ConversionContext *cc, int attr); - --int safe_printf(int nr, char *string, ...); -+int safe_printf(const struct unRTFOutputDevice *device, int nr, char *string, ...); - char *assemble_string(char *string, int nr); - #define TOO_MANY_ARGS "Tag name \"%s\" do not take so many arguments" - -+#endif /* ATTR_H */ -diff -durpN unrtf-0.21.2.old/src/convert.c unrtf-0.21.2/src/convert.c ---- unrtf-0.21.2.old/src/convert.c 2011-06-07 14:00:23.000000000 +0200 -+++ unrtf-0.21.2/src/convert.c 2013-01-17 02:41:09.685864239 +0100 -@@ -1,24 +1,24 @@ - - /*=========================================================================== -- GNU UnRTF, a command-line program to convert RTF documents to other formats. -- Copyright (C) 2000,2001,2004 Zachary Thayer Smith -+ GNU UnRTF, a command-line program to convert RTF documents to other formats. -+ Copyright (C) 2000,2001,2004 Zachary Thayer Smith - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -- (at your option) any later version. -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. - -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -- The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au --===========================================================================*/ -+ The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au -+ ===========================================================================*/ - - - /*---------------------------------------------------------------------- -@@ -56,8 +56,8 @@ - * 31 Mar 05, daved@physiol.usyd.edu.au: strcat security bug fixed - * 06 Jan 06, marcossamaral@terra.com.br: patch from debian 0.19.3-1.1 - * 03 Mar 06, daved@physiol.usyd.edu.au: fixed creation date spelling -- and added support for accented characters in titles from -- Laurent Monin -+ and added support for accented characters in titles from -+ Laurent Monin - * 09 Mar 06, daved@physiol.usyd.edu.au: don't print null post_trans - * 18 Jun 06, daved@physiol.usyd.edu.au: fixed some incorrect comment_end - * 18 Jun 06, frolovs@internet2.ru: codepage support -@@ -68,7 +68,7 @@ - * 04 Jan 10, arkadiusz.firus@gmail.com: deal with (faulty) negative unicodes - * 04 Jan 10, daved@physiol.usyd.edu.au: suppress - * 21 Aug 10, daved@physiol.usyd.edu.au: add support for hex char doublet -- representation of special characters output by some rtf writers -+ representation of special characters output by some rtf writers - *--------------------------------------------------------------------*/ - - #ifdef HAVE_CONFIG_H -@@ -91,15 +91,21 @@ - #include - #endif - -+#ifdef HAVE_UNISTD_H -+#include -+#endif -+ - #include "defs.h" - #include "parse.h" - #include "util.h" - #include "malloc.h" --#include "main.h" - #include "error.h" - #include "word.h" - #include "hash.h" -+#include "output.h" - #include "convert.h" -+#include "user.h" -+#include "unrtf.h" - - #ifndef HAVE_ATTR_H - #include "attr.h" -@@ -107,506 +113,460 @@ - #endif - - static CodepageInfo codepages[14] = --{ --/*-- cp850 --*/ --{ -- 850, -- { -- /* 0x80 */ -- 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, -- 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, -- /* 0x90 */ -- 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, -- 0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192, -- /* 0xa0 */ -- 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, -- 0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, -- /* 0xb0 */ -- 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, -- 0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, -- /* 0xc0 */ -- 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, -- 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, -- /* 0xd0 */ -- 0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce, -- 0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, -- /* 0xe0 */ -- 0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe, -- 0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4, -- /* 0xf0 */ -- 0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, -- 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, -- } --}, --/*-- cp866 --*/ --{ -- 866, -- { -- /* 0x80 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0x90 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xa0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xb0 */ -- 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, -- 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, -- /* 0xc0 */ -- 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, -- 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, -- /* 0xd0 */ -- 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, -- 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, -- /* 0xe0 */ -- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, -- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, -- /* 0xf0 */ -- 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e, -- 0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0, -- } --}, --/*-- cp874 --*/ --{ -- 874, -- { -- /* 0x80 */ -- 0x20ac, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2026, 0xfffd, 0xfffd, -- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -- /* 0x90 */ -- 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -- /* 0xa0 */ -- 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, -- 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, -- /* 0xb0 */ -- 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, -- 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, -- /* 0xc0 */ -- 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, -- 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, -- /* 0xd0 */ -- 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, -- 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f, -- /* 0xe0 */ -- 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, -- 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, -- /* 0xf0 */ -- 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, -- 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -- } --}, --/*-- cp1133 --*/ --{ -- 1133, -- { -- /* 0x80 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0x90 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xa0 */ -- 0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa, 0x0e8a, -- 0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99, 0x0e9a, 0x0e9b, -- /* 0xb0 */ -- 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, 0x0ea1, 0x0ea2, 0x0ea3, 0x0ea5, -- 0x0ea7, 0x0eab, 0x0ead, 0x0eae, 0xfffd, 0xfffd, 0xfffd, 0x0eaf, -- /* 0xc0 */ -- 0x0eb0, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8, -- 0x0eb9, 0x0ebc, 0x0eb1, 0x0ebb, 0x0ebd, 0xfffd, 0xfffd, 0xfffd, -- /* 0xd0 */ -- 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0ec8, 0x0ec9, 0x0eca, -- 0x0ecb, 0x0ecc, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0x20ad, -- /* 0xe0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xf0 */ -- 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7, -- 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x00a2, 0x00ac, 0x00a6, 0xfffd, -- } --}, --/*-- cp1250 --*/ --{ -- 1250, - { -- /* 0x80 */ -- 0x20ac, 0xfffd, 0x201a, 0xfffd, 0x201e, 0x2026, 0x2020, 0x2021, -- 0xfffd, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179, -- /* 0x90 */ -- 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -- 0xfffd, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a, -- /* 0xa0 */ -- 0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7, -- 0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b, -- /* 0xb0 */ -- 0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7, -- 0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c, -- /* 0xc0 */ -- 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, -- 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, -- /* 0xd0 */ -- 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, -- 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, -- /* 0xe0 */ -- 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, -- 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, -- /* 0xf0 */ -- 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, -- 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, -- } --}, --/*-- cp1251 --*/ --{ -- 1251, -- { -- /* 0x80 */ -- 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021, -- 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f, -- /* 0x90 */ -- 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -- 0xfffd, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f, -- /* 0xa0 */ -- 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7, -- 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407, -- /* 0xb0 */ -- 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7, -- 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457, -- /* 0xc0 */ -- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, -- 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, -- /* 0xd0 */ -- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, -- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, -- /* 0xe0 */ -- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, -- 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, -- /* 0xf0 */ -- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, -- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, -- } --}, --/*-- cp1252 --*/ --{ -- 1252, -- { -- /* 0x80 */ -- 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -- 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xfffd, 0x017d, 0xfffd, -- /* 0x90 */ --/* daved - don't process 93 & 94 as we want entities */ -- 0xfffd, 0x2018, 0x2019, 0, 0, 0x2022, 0x2013, 0x2014, -- 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xfffd, 0x017e, 0x0178, -- /* 0xa0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xb0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xc0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xd0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xe0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xf0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- } --}, --/*-- cp1253 --*/ --{ -- 1253, -- { -- /* 0x80 */ -- 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -- 0xfffd, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -- /* 0x90 */ -- 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -- 0xfffd, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -- /* 0xa0 */ -- 0x00a0, 0x0385, 0x0386, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, -- 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x2015, -- /* 0xb0 */ -- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x00b5, 0x00b6, 0x00b7, -- 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, -- /* 0xc0 */ -- 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, -- 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, -- /* 0xd0 */ -- 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, -- 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, -- /* 0xe0 */ -- 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, -- 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, -- /* 0xf0 */ -- 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, -- 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd, -- } --}, --/*-- 1254 --*/ --{ -- 1254, -- { -- /* 0x80 */ -- 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -- 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xfffd, 0xfffd, 0xfffd, -- /* 0x90 */ -- 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -- 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xfffd, 0xfffd, 0x0178, -- /* 0xa0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xb0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xc0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xd0 */ -- 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, -- 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, -- /* 0xe0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xf0 */ -- 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, -- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, -- } --}, --/*-- cp1255 --*/ --{ -- 1255, -- { -- /* 0x80 */ -- 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -- 0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -- /* 0x90 */ -- 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -- 0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -- /* 0xa0 */ -- 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7, -- 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, -- /* 0xb0 */ -- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, -- 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, -- /* 0xc0 */ -- 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7, -- 0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf, -- /* 0xd0 */ -- 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3, -- 0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -- /* 0xe0 */ -- 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, -- 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, -- /* 0xf0 */ -- 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, -- 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd, -- } --}, --/*-- cp1256 --*/ --{ -- 1256, -- { -- /* 0x80 */ -- 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -- 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, -- /* 0x90 */ -- 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -- 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba, -- /* 0xa0 */ -- 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, -- 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, -- /* 0xb0 */ -- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, -- 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f, -- /* 0xc0 */ -- 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, -- 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, -- /* 0xd0 */ -- 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7, -- 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643, -- /* 0xe0 */ -- 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7, -- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef, -- /* 0xf0 */ -- 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7, -- 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2, -- } --}, --{ -- 1257, -- { -- /* 0x80 */ -- 0x20ac, 0xfffd, 0x201a, 0xfffd, 0x201e, 0x2026, 0x2020, 0x2021, -- 0xfffd, 0x2030, 0xfffd, 0x2039, 0xfffd, 0x00a8, 0x02c7, 0x00b8, -- /* 0x90 */ -- 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -- 0xfffd, 0x2122, 0xfffd, 0x203a, 0xfffd, 0x00af, 0x02db, 0xfffd, -- /* 0xa0 */ -- 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0xfffd, 0x00a6, 0x00a7, -- 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, -- /* 0xb0 */ -- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, -- 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, -- /* 0xc0 */ -- 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, -- 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, -- /* 0xd0 */ -- 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, -- 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, -- /* 0xe0 */ -- 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, -- 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, -- /* 0xf0 */ -- 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, -- 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x02d9, -- } --}, --{ -- 1258, -- { -- /* 0x80 */ -- 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -- 0x02c6, 0x2030, 0xfffd, 0x2039, 0x0152, 0xfffd, 0xfffd, 0xfffd, -- /* 0x90 */ -- 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -- 0x02dc, 0x2122, 0xfffd, 0x203a, 0x0153, 0xfffd, 0xfffd, 0x0178, -- /* 0xa0 */ -- 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, -- 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, -- /* 0xb0 */ -- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, -- 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, -- /* 0xc0 */ -- 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x00c5, 0x00c6, 0x00c7, -- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x0300, 0x00cd, 0x00ce, 0x00cf, -- /* 0xd0 */ -- 0x0110, 0x00d1, 0x0309, 0x00d3, 0x00d4, 0x01a0, 0x00d6, 0x00d7, -- 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x01af, 0x0303, 0x00df, -- /* 0xe0 */ -- 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x00e5, 0x00e6, 0x00e7, -- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0301, 0x00ed, 0x00ee, 0x00ef, -- /* 0xf0 */ -- 0x0111, 0x00f1, 0x0323, 0x00f3, 0x00f4, 0x01a1, 0x00f6, 0x00f7, -- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x01b0, 0x20ab, 0x00ff, -- } --}, --/*-- null --*/ --{ -- 0, -- { -- /* 0x80 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0x90 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xa0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xb0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xc0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xd0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xe0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- /* 0xf0 */ -- 0, 0, 0, 0, 0, 0, 0, 0, -- 0, 0, 0, 0, 0, 0, 0, 0, -- } --}, --}; -- -+ /*-- cp850 --*/ -+ { -+ 850, -+ { -+ /* 0x80 */ -+ 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, -+ 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, -+ /* 0x90 */ -+ 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, -+ 0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192, -+ /* 0xa0 */ -+ 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, -+ 0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, -+ /* 0xb0 */ -+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, -+ 0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, -+ /* 0xc0 */ -+ 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, -+ 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, -+ /* 0xd0 */ -+ 0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce, -+ 0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, -+ /* 0xe0 */ -+ 0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe, -+ 0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4, -+ /* 0xf0 */ -+ 0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, -+ 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, -+ } -+ }, -+ /*-- cp866 --*/ -+ { -+ 866, -+ { -+ /* 0x80 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0x90 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xa0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xb0 */ -+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, -+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, -+ /* 0xc0 */ -+ 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, -+ 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, -+ /* 0xd0 */ -+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, -+ 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, -+ /* 0xe0 */ -+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, -+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, -+ /* 0xf0 */ -+ 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e, -+ 0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0, -+ } -+ }, -+ /*-- cp874 --*/ -+ { -+ 874, -+ { -+ /* 0x80 */ -+ 0x20ac, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2026, 0xfffd, 0xfffd, -+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -+ /* 0x90 */ -+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -+ /* 0xa0 */ -+ 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, -+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, -+ /* 0xb0 */ -+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, -+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, -+ /* 0xc0 */ -+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, -+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, -+ /* 0xd0 */ -+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, -+ 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f, -+ /* 0xe0 */ -+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, -+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, -+ /* 0xf0 */ -+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, -+ 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -+ } -+ }, -+ /*-- cp1133 --*/ -+ { -+ 1133, -+ { -+ /* 0x80 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0x90 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xa0 */ -+ 0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa, 0x0e8a, -+ 0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99, 0x0e9a, 0x0e9b, -+ /* 0xb0 */ -+ 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, 0x0ea1, 0x0ea2, 0x0ea3, 0x0ea5, -+ 0x0ea7, 0x0eab, 0x0ead, 0x0eae, 0xfffd, 0xfffd, 0xfffd, 0x0eaf, -+ /* 0xc0 */ -+ 0x0eb0, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8, -+ 0x0eb9, 0x0ebc, 0x0eb1, 0x0ebb, 0x0ebd, 0xfffd, 0xfffd, 0xfffd, -+ /* 0xd0 */ -+ 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0ec8, 0x0ec9, 0x0eca, -+ 0x0ecb, 0x0ecc, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0x20ad, -+ /* 0xe0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xf0 */ -+ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7, -+ 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x00a2, 0x00ac, 0x00a6, 0xfffd, -+ } -+ }, -+ /*-- cp1250 --*/ -+ { -+ 1250, -+ { -+ /* 0x80 */ -+ 0x20ac, 0xfffd, 0x201a, 0xfffd, 0x201e, 0x2026, 0x2020, 0x2021, -+ 0xfffd, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179, -+ /* 0x90 */ -+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -+ 0xfffd, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a, -+ /* 0xa0 */ -+ 0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7, -+ 0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b, -+ /* 0xb0 */ -+ 0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7, -+ 0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c, -+ /* 0xc0 */ -+ 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, -+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, -+ /* 0xd0 */ -+ 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, -+ 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, -+ /* 0xe0 */ -+ 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, -+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, -+ /* 0xf0 */ -+ 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, -+ 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, -+ } -+ }, -+ /*-- cp1251 --*/ -+ { -+ 1251, -+ { -+ /* 0x80 */ -+ 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021, -+ 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f, -+ /* 0x90 */ -+ 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -+ 0xfffd, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f, -+ /* 0xa0 */ -+ 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7, -+ 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407, -+ /* 0xb0 */ -+ 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7, -+ 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457, -+ /* 0xc0 */ -+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, -+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, -+ /* 0xd0 */ -+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, -+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, -+ /* 0xe0 */ -+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, -+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, -+ /* 0xf0 */ -+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, -+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, -+ } -+ }, -+ /*-- cp1252 --*/ -+ { -+ 1252, -+ { -+ /* 0x80 */ -+ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xfffd, 0x017d, 0xfffd, -+ /* 0x90 */ -+ /* daved - don't process 93 & 94 as we want entities */ -+ 0xfffd, 0x2018, 0x2019, 0, 0, 0x2022, 0x2013, 0x2014, -+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xfffd, 0x017e, 0x0178, -+ /* 0xa0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xb0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xc0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xd0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xe0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xf0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ } -+ }, -+ /*-- cp1253 --*/ -+ { -+ 1253, -+ { -+ /* 0x80 */ -+ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -+ 0xfffd, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -+ /* 0x90 */ -+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -+ 0xfffd, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -+ /* 0xa0 */ -+ 0x00a0, 0x0385, 0x0386, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, -+ 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x2015, -+ /* 0xb0 */ -+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x00b5, 0x00b6, 0x00b7, -+ 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, -+ /* 0xc0 */ -+ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, -+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, -+ /* 0xd0 */ -+ 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, -+ 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, -+ /* 0xe0 */ -+ 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, -+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, -+ /* 0xf0 */ -+ 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, -+ 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd, -+ } -+ }, -+ /*-- 1254 --*/ -+ { -+ 1254, -+ { -+ /* 0x80 */ -+ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xfffd, 0xfffd, 0xfffd, -+ /* 0x90 */ -+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xfffd, 0xfffd, 0x0178, -+ /* 0xa0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xb0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xc0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xd0 */ -+ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, -+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, -+ /* 0xe0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xf0 */ -+ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, -+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, -+ } -+ }, -+ /*-- cp1255 --*/ -+ { -+ 1255, -+ { -+ /* 0x80 */ -+ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -+ 0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -+ /* 0x90 */ -+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -+ 0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -+ /* 0xa0 */ -+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7, -+ 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, -+ /* 0xb0 */ -+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, -+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, -+ /* 0xc0 */ -+ 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7, -+ 0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf, -+ /* 0xd0 */ -+ 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3, -+ 0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -+ /* 0xe0 */ -+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, -+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, -+ /* 0xf0 */ -+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, -+ 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd, -+ } -+ }, -+ /*-- cp1256 --*/ -+ { -+ 1256, -+ { -+ /* 0x80 */ -+ 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -+ 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, -+ /* 0x90 */ -+ 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -+ 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba, -+ /* 0xa0 */ -+ 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, -+ 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, -+ /* 0xb0 */ -+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, -+ 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f, -+ /* 0xc0 */ -+ 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, -+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, -+ /* 0xd0 */ -+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7, -+ 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643, -+ /* 0xe0 */ -+ 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7, -+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef, -+ /* 0xf0 */ -+ 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7, -+ 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2, -+ } -+ }, -+ { -+ 1257, -+ { -+ /* 0x80 */ -+ 0x20ac, 0xfffd, 0x201a, 0xfffd, 0x201e, 0x2026, 0x2020, 0x2021, -+ 0xfffd, 0x2030, 0xfffd, 0x2039, 0xfffd, 0x00a8, 0x02c7, 0x00b8, -+ /* 0x90 */ -+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -+ 0xfffd, 0x2122, 0xfffd, 0x203a, 0xfffd, 0x00af, 0x02db, 0xfffd, -+ /* 0xa0 */ -+ 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0xfffd, 0x00a6, 0x00a7, -+ 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, -+ /* 0xb0 */ -+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, -+ 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, -+ /* 0xc0 */ -+ 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, -+ 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, -+ /* 0xd0 */ -+ 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, -+ 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, -+ /* 0xe0 */ -+ 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, -+ 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, -+ /* 0xf0 */ -+ 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, -+ 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x02d9, -+ } -+ }, -+ { -+ 1258, -+ { -+ /* 0x80 */ -+ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, -+ 0x02c6, 0x2030, 0xfffd, 0x2039, 0x0152, 0xfffd, 0xfffd, 0xfffd, -+ /* 0x90 */ -+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, -+ 0x02dc, 0x2122, 0xfffd, 0x203a, 0x0153, 0xfffd, 0xfffd, 0x0178, -+ /* 0xa0 */ -+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, -+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, -+ /* 0xb0 */ -+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, -+ 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, -+ /* 0xc0 */ -+ 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x00c5, 0x00c6, 0x00c7, -+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x0300, 0x00cd, 0x00ce, 0x00cf, -+ /* 0xd0 */ -+ 0x0110, 0x00d1, 0x0309, 0x00d3, 0x00d4, 0x01a0, 0x00d6, 0x00d7, -+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x01af, 0x0303, 0x00df, -+ /* 0xe0 */ -+ 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x00e5, 0x00e6, 0x00e7, -+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0301, 0x00ed, 0x00ee, 0x00ef, -+ /* 0xf0 */ -+ 0x0111, 0x00f1, 0x0323, 0x00f3, 0x00f4, 0x01a1, 0x00f6, 0x00f7, -+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x01b0, 0x20ab, 0x00ff, -+ } -+ }, -+ /*-- null --*/ -+ { -+ 0, -+ { -+ /* 0x80 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0x90 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xa0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xb0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xc0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xd0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xe0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ /* 0xf0 */ -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ 0, 0, 0, 0, 0, 0, 0, 0, -+ } -+ }, -+ }; - --extern int nopict_mode; - - /* --#define BINARY_ATTRS -+ #define BINARY_ATTRS - */ - --my_iconv_t desc = MY_ICONV_T_CLEAR, desc2 = MY_ICONV_T_CLEAR; -- - /* Nested tables aren't supported. - */ --static int coming_pars_that_are_tabular = 0; --static int within_table = FALSE; --static int have_printed_row_begin=FALSE; --static int have_printed_cell_begin=FALSE; --static int have_printed_row_end=FALSE; --static int have_printed_cell_end=FALSE; -- -- --/* Previously in word_print_core function -- */ --static int total_chars_this_line=0; /* for simulating \tab */ -- - - /* Paragraph alignment (kludge) - */ - enum { -- ALIGN_LEFT=0, -- ALIGN_RIGHT, -- ALIGN_CENTER, -- ALIGN_JUSTIFY -+ ALIGN_LEFT=0, -+ ALIGN_RIGHT, -+ ALIGN_CENTER, -+ ALIGN_JUSTIFY - }; - -- -- --/* This value is set by attr_push and attr_pop -- */ --int simulate_smallcaps; --int simulate_allcaps; -- -- - /* Most pictures must be written to files. */ - enum { -- PICT_UNKNOWN=0, -- PICT_WM, -- PICT_MAC, -- PICT_PM, -- PICT_DI, -- PICT_WB, -- PICT_JPEG, -- PICT_PNG, -+ PICT_UNKNOWN=0, -+ PICT_WM, -+ PICT_MAC, -+ PICT_PM, -+ PICT_DI, -+ PICT_WB, -+ PICT_JPEG, -+ PICT_PNG, - }; --static int within_picture=FALSE; --static int picture_file_number=1; --static char picture_path[255]; --static int picture_width; --static int picture_height; --static int picture_bits_per_pixel=1; --static int picture_type=PICT_UNKNOWN; --static int picture_wmetafile_type; --static char *picture_wmetafile_type_str; -- -- --static int have_printed_body=FALSE; --static int within_header=TRUE; -- -- -- --static char *hyperlink_base = NULL; -- -- -- --void starting_body(); --void starting_text(); --void print_with_special_exprs (char *s); -- --static int banner_printed=FALSE; - -+void starting_body(const struct OutputContext *oc); -+void starting_text(const struct OutputContext *oc); -+void print_with_special_exprs (const struct OutputContext *oc, char *s); - - /*======================================================================== - * Name: print_banner -@@ -616,15 +576,17 @@ static int banner_printed=FALSE; - *=======================================================================*/ - - void --print_banner () { -- if (!banner_printed) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf(" Translation from RTF performed by "); -- printf("UnRTF, version "); -- printf("%s ", PACKAGE_VERSION); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- banner_printed=TRUE; -+print_banner (const struct OutputContext *oc) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (!oc->conversion->banner_printed) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf(" Translation from RTF performed by "); -+ printf("UnRTF, version "); -+ printf("%s ", PACKAGE_VERSION); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ oc->conversion->banner_printed=TRUE; - } - - -@@ -636,16 +598,18 @@ print_banner () { - *=======================================================================*/ - - void --starting_body () -+starting_body (const struct OutputContext *oc) - { -- if (!have_printed_body) { -- if (!inline_mode) { -- if (safe_printf(0, op->header_end)) fprintf(stderr, TOO_MANY_ARGS, "header_end"); -- if (safe_printf(0, op->body_begin)) fprintf(stderr, TOO_MANY_ARGS, "body_begin"); -- } -- within_header = FALSE; -- have_printed_body = TRUE; -- } -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (!oc->conversion->have_printed_body) { -+ if (!oc->conversion->options->inline_mode) { -+ if (safe_printf(device, 0, oc->personality->header_end)) fprintf(stderr, TOO_MANY_ARGS, "header_end"); -+ if (safe_printf(device, 0, oc->personality->body_begin)) fprintf(stderr, TOO_MANY_ARGS, "body_begin"); -+ } -+ oc->conversion->within_header = FALSE; -+ oc->conversion->have_printed_body = TRUE; -+ } - } - - -@@ -691,55 +655,44 @@ static char *month_strings[12]= { - *=======================================================================*/ - - void --word_dump_date (Word *w) -+word_dump_date (const struct ConversionContext *cc, Word *w) - { -- int year=0, month=0, day=0, hour=0, minute=0; -- CHECK_PARAM_NOT_NULL(w); -- while (w) { -- char *s = word_string (w); -- if (*s == '\\') { -- ++s; -- if (!strncmp (s, "yr", 2) && isdigit(s[2])) { -- year = atoi (&s[2]); -- } -- else if (!strncmp (s, "mo", 2) && isdigit(s[2])) { -- month= atoi (&s[2]); -- } -- else if (!strncmp (s, "dy", 2) && isdigit(s[2])) { -- day= atoi (&s[2]); -- } -- else if (!strncmp (s, "min", 3) && isdigit(s[3])) { -- minute= atoi (&s[3]); -- } -- else if (!strncmp (s, "hr", 2) && isdigit(s[2])) { -- hour= atoi (&s[2]); -- } -- } -- w=w->next; -- } -- if (year && month && day) { -- printf("%d %s %d ", day, month_strings[month-1], year); -- } -- if (hour && minute) { -- printf("%02d:%02d ", hour, minute); -- } -+ int year=0, month=0, day=0, hour=0, minute=0; -+ CHECK_PARAM_NOT_NULL(w); -+ while (w) { -+ char *s = word_string (cc, w); -+ if (*s == '\\') { -+ ++s; -+ if (!strncmp (s, "yr", 2) && isdigit(s[2])) { -+ year = atoi (&s[2]); -+ } -+ else if (!strncmp (s, "mo", 2) && isdigit(s[2])) { -+ month= atoi (&s[2]); -+ } -+ else if (!strncmp (s, "dy", 2) && isdigit(s[2])) { -+ day= atoi (&s[2]); -+ } -+ else if (!strncmp (s, "min", 3) && isdigit(s[3])) { -+ minute= atoi (&s[3]); -+ } -+ else if (!strncmp (s, "hr", 2) && isdigit(s[2])) { -+ hour= atoi (&s[2]); -+ } -+ } -+ w=w->next; -+ } -+ if (year && month && day) { -+ printf("%d %s %d ", day, month_strings[month-1], year); -+ } -+ if (hour && minute) { -+ printf("%02d:%02d ", hour, minute); -+ } - } - - - - /*-------------------------------------------------------------------*/ - --typedef struct { -- int num; -- char *name; --} FontEntry; -- --#define MAX_FONTS (8192) --static FontEntry font_table[MAX_FONTS]; --static int total_fonts=0; -- -- -- - /*======================================================================== - * Name: lookup_fontname - * Purpose: Fetches the name of a font from the already-read font table. -@@ -748,14 +701,14 @@ static int total_fonts=0; - *=======================================================================*/ - - char* --lookup_fontname (int num) { -- int i; -- if (total_fonts) -- for(i=0;itotal_fonts) -+ for(i=0;itotal_fonts;i++) { -+ if (cc->font_table[i].num==num) -+ return cc->font_table[i].name; -+ } -+ return NULL; - } - - -@@ -767,73 +720,87 @@ lookup_fontname (int num) { - *=======================================================================*/ - - void --process_font_table (Word *w) -+process_font_table (const struct OutputContext *oc, Word *w) - { -- Word *w2; -+ Word *w2; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- CHECK_PARAM_NOT_NULL(w); -+ CHECK_PARAM_NOT_NULL(w); - -- if (safe_printf(0, op->fonttable_begin)) fprintf(stderr, TOO_MANY_ARGS, "fonttable_begin"); -+ if (safe_printf(device, 0, oc->personality->fonttable_begin)) fprintf(stderr, TOO_MANY_ARGS, "fonttable_begin"); - -- while (w) { -- int num; -- char name[BUFSIZ]; -- char *tmp; -+ while (w) { -+ int num; -+ char name[BUFSIZ]; -+ char *tmp; - -- if ((w2 = w->child)) { -- tmp = word_string(w2); -- if (!strncmp("\\f", tmp, 2)) { -- num = atoi(&tmp[2]); -- name[0] = 0; -+ if ((w2 = w->child)) { -+ tmp = word_string (oc->conversion, w2); -+ if (!strncmp("\\f", tmp, 2)) { -+ num = atoi(&tmp[2]); -+ name[0] = 0; - -- w2 = w2->next; -- while (w2) { -- tmp = word_string (w2); -- if (tmp && tmp[0] != '\\') { -- if (strlen(tmp) + strlen(name) > BUFSIZ - 1) { -- printf("Invalid font table entry\n"); -- name[0] = 0; -- } -- else -- strncat(name,tmp,sizeof(name) - strlen(name) - 1); -- } -- w2 = w2->next; -- } -+ w2 = w2->next; -+ while (w2) { -+ tmp = word_string (oc->conversion, w2); -+ if (tmp && tmp[0] != '\\') { -+ if (strlen(tmp) + strlen(name) > BUFSIZ - 1) { -+ printf("Invalid font table entry\n"); -+ name[0] = 0; -+ } -+ else -+ strncat(name,tmp,sizeof(name) - strlen(name) - 1); -+ } -+ w2 = w2->next; -+ } - -- /* Chop the gall-derned semicolon. */ -- if ((tmp = strchr(name, ';'))) -- *tmp = 0; -+ /* Chop the gall-derned semicolon. */ -+ if ((tmp = strchr(name, ';'))) -+ *tmp = 0; - -- font_table[total_fonts].num=num; -- font_table[total_fonts].name=my_strdup(name); -- if (safe_printf(0, assemble_string(op->fonttable_fontnr, num))) fprintf(stderr, TOO_MANY_ARGS, "fonttable_fontnr"); -- if (safe_printf(1, op->fonttable_fontname, name)) fprintf(stderr, TOO_MANY_ARGS, "fonttable_fontname"); -- total_fonts++; -- } -- } -- w=w->next; -- } -+ oc->conversion->font_table[oc->conversion->total_fonts].num=num; -+ oc->conversion->font_table[oc->conversion->total_fonts].name=unrtf_strdup(oc->conversion, name); -+ if (safe_printf(device, 0, assemble_string(oc->personality->fonttable_fontnr, num))) fprintf(stderr, TOO_MANY_ARGS, "fonttable_fontnr"); -+ if (safe_printf(device, 1, oc->personality->fonttable_fontname, name)) fprintf(stderr, TOO_MANY_ARGS, "fonttable_fontname"); -+ oc->conversion->total_fonts++; -+ } -+ } -+ w=w->next; -+ } - -- if (safe_printf(0, op->fonttable_end)) fprintf(stderr, TOO_MANY_ARGS, "fonttable_end"); -+ if (safe_printf(device, 0, oc->personality->fonttable_end)) fprintf(stderr, TOO_MANY_ARGS, "fonttable_end"); - -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("font table contains %d fonts total",total_fonts); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("font table contains %d fonts total", oc->conversion->total_fonts); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); - -- if (debug_mode) { -- int i; -+ if (oc->conversion->options->debug_mode) { -+ int i; - -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("font table dump: \n"); -- for (i=0; ipersonality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("font table dump: \n"); -+ for (i=0; i< oc->conversion->total_fonts; i++) { -+ printf(" font %d = %s\n", oc->conversion->font_table[i].num, -+ oc->conversion->font_table[i].name); -+ } - -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } - } - -+static void -+fonttable_free(struct ConversionContext *cc) -+{ -+ int i; -+ -+ for (i = 0; i < cc->total_fonts; i++) { -+ if (cc->font_table[i].name) { -+ unrtf_free(cc->font_table[i].name); -+ cc->font_table[i].name = NULL; -+ } -+ } -+ cc->total_fonts = 0; -+} - - /*======================================================================== - * Name: process_index_entry -@@ -843,24 +810,25 @@ process_font_table (Word *w) - *=======================================================================*/ - - void --process_index_entry (Word *w) -+process_index_entry (const struct OutputContext *oc, Word *w) - { -- Word *w2; -+ Word *w2; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- CHECK_PARAM_NOT_NULL(w); -+ CHECK_PARAM_NOT_NULL(w); - -- while(w) { -- if ((w2=w->child)) { -- char *str = word_string (w2); -+ while(w) { -+ if ((w2=w->child)) { -+ char *str = word_string (oc->conversion, w2); - -- if (debug_mode && str) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("index entry word: %s ", str); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- } -- w=w->next; -- } -+ if (oc->conversion->options->debug_mode && str) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("index entry word: %s ", str); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ } -+ w=w->next; -+ } - } - - -@@ -872,27 +840,28 @@ process_index_entry (Word *w) - *=======================================================================*/ - - void --process_toc_entry (Word *w, int include_page_num) -+process_toc_entry (const struct OutputContext *oc, Word *w, int include_page_num) - { -- Word *w2; -+ Word *w2; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- CHECK_PARAM_NOT_NULL(w); -+ CHECK_PARAM_NOT_NULL(w); - -- while(w) { -- if ((w2=w->child)) { -- char *str = word_string (w2); -+ while(w) { -+ if ((w2=w->child)) { -+ char *str = word_string (oc->conversion, w2); - -- if (debug_mode && str) { -+ if (oc->conversion->options->debug_mode && str) { - -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("toc %s entry word: %s ", -- include_page_num ? "page#":"no page#", -- str); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- } -- w=w->next; -- } -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("toc %s entry word: %s ", -+ include_page_num ? "page#":"no page#", -+ str); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ } -+ w=w->next; -+ } - } - - -@@ -904,183 +873,173 @@ process_toc_entry (Word *w, int include_ - *=======================================================================*/ - - void --process_info_group (Word *w) -+process_info_group (const struct OutputContext *oc, Word *w) - { -- Word *child; -+ Word *child; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- /* amaral - 0.19.2 */ -- /* CHECK_PARAM_NOT_NULL(w); */ -- if (!w) printf("AUTHOR'S COMMENT: \\info command is null!\n"); -+ /* amaral - 0.19.2 */ -+ /* CHECK_PARAM_NOT_NULL(w); */ -+ if (!w) printf("AUTHOR'S COMMENT: \\info command is null!\n"); - -- while(w) { -- child = w->child; -- if (child) { -- Word *w2; -- char *s; -+ while(w) { -+ child = w->child; -+ if (child) { -+ Word *w2; -+ char *s; - -- s = word_string(child); -+ s = word_string (oc->conversion, child); - -- if (!inline_mode) { -- if (!strcmp("\\title", s)) { -+ if (!oc->conversion->options->inline_mode) { -+ if (!strcmp("\\title", s)) { - -- if (safe_printf(0, op->document_title_begin)) fprintf(stderr, TOO_MANY_ARGS, "document_title_begin"); -- w2=child->next; -- while (w2) { -- char *s2 = word_string(w2); -- if (s2[0] != '\\') -- { -- print_with_special_exprs (s2); -- } -- else -- { -- if (s2[1] == '\'') -- { -- int ch = h2toi (&s2[2]); -+ if (safe_printf(device, 0, oc->personality->document_title_begin)) fprintf(stderr, TOO_MANY_ARGS, "document_title_begin"); -+ w2=child->next; -+ while (w2) { -+ char *s2 = word_string (oc->conversion, w2); -+ if (s2[0] != '\\') -+ { -+ print_with_special_exprs (oc, s2); -+ } -+ else -+ { -+ if (s2[1] == '\'') -+ { -+ int ch = h2toi (&s2[2]); - -- char *s3; -- s3 = op_translate_char (op, desc, ch); -- if (!s3 || !*s3) -- { -- if (safe_printf(0, op->comment_begin)) -- fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("char 0x%02x",ch); -- if (safe_printf(0, op->comment_end)) -- fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- } -- else -- { -- if (op->word_begin) -- if (safe_printf(0, op->word_begin)) -- fprintf(stderr, TOO_MANY_ARGS, "word_begin"); -- printf("%s", s3); -- if (op->word_end) -- if (safe_printf(0, op->word_end)) -- fprintf(stderr, TOO_MANY_ARGS, "word_end"); -- } -- } -- } -+ char *s3; -+ s3 = op_translate_char (oc->conversion, oc->personality, ch); -+ if (!s3 || !*s3) -+ { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) -+ fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("char 0x%02x",ch); -+ if (safe_printf(device, 0, oc->personality->comment_end)) -+ fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ } -+ else -+ { -+ if (oc->personality->word_begin) -+ if (safe_printf(device, 0, oc->personality->word_begin)) -+ fprintf(stderr, TOO_MANY_ARGS, "word_begin"); -+ printf("%s", s3); -+ if (oc->personality->word_end) -+ if (safe_printf(device, 0, oc->personality->word_end)) -+ fprintf(stderr, TOO_MANY_ARGS, "word_end"); -+ } -+ } -+ } - -- w2 = w2->next; -- } -- if (safe_printf(0, op->document_title_end)) fprintf(stderr, TOO_MANY_ARGS, "document_title_end"); -- } -- else if (!strcmp("\\keywords", s)) { -- if (safe_printf(0, op->document_keywords_begin)) fprintf(stderr, TOO_MANY_ARGS, "document_keywords_begin"); -- w2=child->next; -- while (w2) { -- char *s2 = word_string(w2); -- if (s2[0] != '\\') -- printf("%s,", s2); -- w2 = w2->next; -- } -- if (safe_printf(0, op->document_keywords_end)) fprintf(stderr, TOO_MANY_ARGS, "document_keywords_end"); -- } -- else if (!strcmp("\\author", s)) { -- if (safe_printf(0, op->document_author_begin)) fprintf(stderr, TOO_MANY_ARGS, "document_author_begin"); -- w2=child->next; -- while (w2) { -- char *s2 = word_string(w2); -- if (s2[0] != '\\') -- printf("%s", s2); -- w2 = w2->next; -- } -- if (safe_printf(0, op->document_author_end)) fprintf(stderr, TOO_MANY_ARGS, "document_author_end"); -- } -- else if (!strcmp("\\comment", s)) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("comments: "); -- w2=child->next; -- while (w2) { -- char *s2 = word_string(w2); -- if (s2[0] != '\\') -- printf("%s", s2); -- w2 = w2->next; -- } -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- else if (!strncmp("\\nofpages", s, 9)) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("total pages: %s",&s[9]); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- else if (!strncmp("\\nofwords", s, 9)) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("total words: %s",&s[9]); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- else if (!strncmp("\\nofchars", s, 9) && isdigit(s[9])) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("total chars: %s",&s[9]); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- else if (!strcmp("\\creatim", s)) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("creation date: "); -- if (child->next) word_dump_date (child->next); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- else if (!strcmp("\\printim", s)) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("last printed: "); -- if (child->next) word_dump_date (child->next); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- else if (!strcmp("\\buptim", s)) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("last backup: "); -- if (child->next) word_dump_date (child->next); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- else if (!strcmp("\\revtim", s)) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("revision date: "); -- if (child->next) word_dump_date (child->next); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- } -+ w2 = w2->next; -+ } -+ if (safe_printf(device, 0, oc->personality->document_title_end)) fprintf(stderr, TOO_MANY_ARGS, "document_title_end"); -+ } -+ else if (!strcmp("\\keywords", s)) { -+ if (safe_printf(device, 0, oc->personality->document_keywords_begin)) fprintf(stderr, TOO_MANY_ARGS, "document_keywords_begin"); -+ w2=child->next; -+ while (w2) { -+ char *s2 = word_string (oc->conversion, w2); -+ if (s2[0] != '\\') -+ printf("%s,", s2); -+ w2 = w2->next; -+ } -+ if (safe_printf(device, 0, oc->personality->document_keywords_end)) fprintf(stderr, TOO_MANY_ARGS, "document_keywords_end"); -+ } -+ else if (!strcmp("\\author", s)) { -+ if (safe_printf(device, 0, oc->personality->document_author_begin)) fprintf(stderr, TOO_MANY_ARGS, "document_author_begin"); -+ w2=child->next; -+ while (w2) { -+ char *s2 = word_string (oc->conversion, w2); -+ if (s2[0] != '\\') -+ printf("%s", s2); -+ w2 = w2->next; -+ } -+ if (safe_printf(device, 0, oc->personality->document_author_end)) fprintf(stderr, TOO_MANY_ARGS, "document_author_end"); -+ } -+ else if (!strcmp("\\comment", s)) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("comments: "); -+ w2=child->next; -+ while (w2) { -+ char *s2 = word_string (oc->conversion, w2); -+ if (s2[0] != '\\') -+ printf("%s", s2); -+ w2 = w2->next; -+ } -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ else if (!strncmp("\\nofpages", s, 9)) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("total pages: %s",&s[9]); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ else if (!strncmp("\\nofwords", s, 9)) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("total words: %s",&s[9]); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ else if (!strncmp("\\nofchars", s, 9) && isdigit(s[9])) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("total chars: %s",&s[9]); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ else if (!strcmp("\\creatim", s)) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("creation date: "); -+ if (child->next) word_dump_date (oc->conversion, child->next); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ else if (!strcmp("\\printim", s)) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("last printed: "); -+ if (child->next) word_dump_date (oc->conversion, child->next); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ else if (!strcmp("\\buptim", s)) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("last backup: "); -+ if (child->next) word_dump_date (oc->conversion, child->next); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ else if (!strcmp("\\revtim", s)) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("revision date: "); -+ if (child->next) word_dump_date (oc->conversion, child->next); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ } - -- /* Irregardless of whether we're in inline mode, -- * we want to process the following. -- */ -- if (!strcmp("\\hlinkbase", s)) { -- char *linkstr = NULL; -+ /* Irregardless of whether we're in inline mode, -+ * we want to process the following. -+ */ -+ if (!strcmp("\\hlinkbase", s)) { -+ char *linkstr = NULL; - -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("hyperlink base: "); -- if (child->next) { -- Word *nextword = child->next; -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("hyperlink base: "); -+ if (child->next) { -+ Word *nextword = child->next; - -- if (nextword) -- linkstr=word_string (nextword); -- } -+ if (nextword) -+ linkstr=word_string (oc->conversion, nextword); -+ } - -- if (linkstr) -- printf("%s", linkstr); -- else -- printf("(none)"); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ if (linkstr) -+ printf("%s", linkstr); -+ else -+ printf("(none)"); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); - -- /* Store the pointer, it will remain good. */ -- hyperlink_base = linkstr; -- } -- } -- w = w->next; -- } -+ /* Store the pointer, it will remain good. */ -+ oc->conversion->hyperlink_base = linkstr; -+ } -+ } -+ w = w->next; -+ } - } - - /*-------------------------------------------------------------------*/ - --/* RTF color table colors are RGB */ -- --typedef struct { -- unsigned char r,g,b; --} Color; -- --#define MAX_COLORS (1024) --static Color color_table[MAX_COLORS]; --static int total_colors=0; -- -- - /*======================================================================== - * Name: process_color_table - * Purpose: Processes the color table of an RTF file. -@@ -1089,59 +1048,60 @@ static int total_colors=0; - *=======================================================================*/ - - void --process_color_table (Word *w) -+process_color_table (const struct OutputContext *oc, Word *w) - { -- int r,g,b; -+ int r,g,b; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- CHECK_PARAM_NOT_NULL(w); -+ CHECK_PARAM_NOT_NULL(w); - -- /* Sometimes, RTF color tables begin with a semicolon, -- * i.e. an empty color entry. This seems to indicate that color 0 -- * will not be used, so here I set it to black. -- */ -- r=g=b=0; -+ /* Sometimes, RTF color tables begin with a semicolon, -+ * i.e. an empty color entry. This seems to indicate that color 0 -+ * will not be used, so here I set it to black. -+ */ -+ r=g=b=0; - -- while(w) { -- char *s = word_string (w); -+ while(w) { -+ char *s = word_string (oc->conversion, w); - -- if (!strncmp("\\red",s,4)) { -- r = atoi(&s[4]); -- while(r>255) r>>=8; -- } -- else if (!strncmp("\\green",s,6)) { -- g = atoi(&s[6]); -- while(g>255) g>>=8; -- } -- else if (!strncmp("\\blue",s,5)) { -- b = atoi(&s[5]); -- while(b>255) b>>=8; -- } -- else -- /* If we find the semicolon which denotes the end of -- * a color entry then store the color, even if we don't -- * have all of it. -- */ -- if (!strcmp (";", s)) { -- color_table[total_colors].r = r; -- color_table[total_colors].g = g; -- color_table[total_colors++].b = b; -- if (debug_mode) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("storing color entry %d: %02x%02x%02x", -- total_colors-1, r,g,b); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- r=g=b=0; -- } -+ if (!strncmp("\\red",s,4)) { -+ r = atoi(&s[4]); -+ while(r>255) r>>=8; -+ } -+ else if (!strncmp("\\green",s,6)) { -+ g = atoi(&s[6]); -+ while(g>255) g>>=8; -+ } -+ else if (!strncmp("\\blue",s,5)) { -+ b = atoi(&s[5]); -+ while(b>255) b>>=8; -+ } -+ else -+ /* If we find the semicolon which denotes the end of -+ * a color entry then store the color, even if we don't -+ * have all of it. -+ */ -+ if (!strcmp (";", s)) { -+ oc->conversion->color_table[oc->conversion->total_colors].r = r; -+ oc->conversion->color_table[oc->conversion->total_colors].g = g; -+ oc->conversion->color_table[oc->conversion->total_colors++].b = b; -+ if (oc->conversion->options->debug_mode) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("storing color entry %d: %02x%02x%02x", -+ oc->conversion->total_colors-1, r,g,b); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ r=g=b=0; -+ } - -- w=w->next; -- } -+ w=w->next; -+ } - -- if (debug_mode) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("color table had %d entries -->\n", total_colors); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -+ if (oc->conversion->options->debug_mode) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("color table had %d entries -->\n", oc->conversion->total_colors); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } - } - - /*======================================================================== -@@ -1152,21 +1112,21 @@ process_color_table (Word *w) - *=======================================================================*/ - - static int --cmd_cf (Word *w, int align, char has_param, int num) { -- char str[40]; -+cmd_cf (const struct OutputContext *oc, Word *w, int align, char has_param, int num) { -+ char str[40]; - -- if (!has_param || num>=total_colors) { -- warning_handler ("font color change attempted is invalid"); -- } -- else -- { -- sprintf(str,"#%02x%02x%02x", -- color_table[num].r, -- color_table[num].g, -- color_table[num].b); -- attr_push(ATTR_FOREGROUND,str); -- } -- return FALSE; -+ if (!has_param || num>=oc->conversion->total_colors) { -+ warning_handler ("font color change attempted is invalid"); -+ } -+ else -+ { -+ sprintf(str,"#%02x%02x%02x", -+ oc->conversion->color_table[num].r, -+ oc->conversion->color_table[num].g, -+ oc->conversion->color_table[num].b); -+ attr_push(ATTR_FOREGROUND,str, oc); -+ } -+ return FALSE; - } - - -@@ -1179,21 +1139,21 @@ cmd_cf (Word *w, int align, char has_par - *=======================================================================*/ - - static int --cmd_cb (Word *w, int align, char has_param, int num) { -- char str[40]; -+cmd_cb (const struct OutputContext *oc, Word *w, int align, char has_param, int num) { -+ char str[40]; - -- if (!has_param || num>=total_colors) { -- warning_handler ("font color change attempted is invalid"); -- } -- else -- { -- sprintf(str,"#%02x%02x%02x", -- color_table[num].r, -- color_table[num].g, -- color_table[num].b); -- attr_push(ATTR_BACKGROUND,str); -- } -- return FALSE; -+ if (!has_param || num>=oc->conversion->total_colors) { -+ warning_handler ("font color change attempted is invalid"); -+ } -+ else -+ { -+ sprintf(str,"#%02x%02x%02x", -+ oc->conversion->color_table[num].r, -+ oc->conversion->color_table[num].g, -+ oc->conversion->color_table[num].b); -+ attr_push(ATTR_BACKGROUND,str, oc); -+ } -+ return FALSE; - } - - -@@ -1204,18 +1164,18 @@ cmd_cb (Word *w, int align, char has_par - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - static int --cmd_fs (Word *w, int align, char has_param, int points) { -- char str[20]; -+cmd_fs (const struct OutputContext *oc, Word *w, int align, char has_param, int points) { -+ char str[20]; - -- if (!has_param) return FALSE; -+ if (!has_param) return FALSE; - -- /* Note, fs20 means 10pt */ -- points /= 2; -+ /* Note, fs20 means 10pt */ -+ points /= 2; - -- sprintf(str,"%d",points); -- attr_push(ATTR_FONTSIZE,str); -+ sprintf(str,"%d",points); -+ attr_push(ATTR_FONTSIZE,str, oc); - -- return FALSE; -+ return FALSE; - } - - -@@ -1229,95 +1189,99 @@ cmd_fs (Word *w, int align, char has_par - *=======================================================================*/ - - static int --cmd_field (Word *w, int align, char has_param, int num) { -- Word *child; -+cmd_field (const struct OutputContext *oc, Word *w, int align, char has_param, int num) { -+ Word *child; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- CHECK_PARAM_NOT_NULL(w); -+ CHECK_PARAM_NOT_NULL(w); - -- while(w) { -- child = w->child; -- if (child) { -- Word *w2; -- char *s; -+ while(w) { -+ child = w->child; -+ if (child) { -+ Word *w2; -+ char *s; - -- s = word_string(child); -+ s = word_string (oc->conversion, child); - #if 1 /* daved experimenting with fldrslt */ -- if(!strcmp("\\fldrslt", s)) -- return FALSE; -+ if(!strcmp("\\fldrslt", s)) -+ return FALSE; - #endif - - -- if (!strcmp("\\*", s)) -- { -- w2=child->next; -- while (w2) -- { -- char *s2 = word_string(w2); -- if (s2 && !strcmp("\\fldinst", s2)) -- { -- Word *w3; -- char *s; -- char *s4; -- Word *w4; -- w3=w2->next; -- s = word_string(w3); -- if (s && !strcmp(s, "SYMBOL") ) -- { -- w4=w3->next; -- while(w4 && !strcmp(word_string(w4), " ")) -- w4 = w4->next; -- s4 = word_string(w4); -- if (s4) -- { -- int char_num; -- char *string; -- my_iconv_t d; -- char_num = atoi(s4); -+ if (!strcmp("\\*", s)) -+ { -+ w2=child->next; -+ while (w2) -+ { -+ char *s2 = word_string (oc->conversion, w2); -+ if (s2 && !strcmp("\\fldinst", s2)) -+ { -+ Word *w3; -+ char *s; -+ char *s4; -+ Word *w4; -+ w3=w2->next; -+ s = word_string (oc->conversion, w3); -+ if (s && !strcmp(s, "SYMBOL") ) -+ { -+ w4=w3->next; -+ while(w4 && !strcmp(word_string (oc->conversion, w4), " ")) -+ w4 = w4->next; -+ s4 = word_string (oc->conversion, w4); -+ if (s4) -+ { -+ int char_num; -+ char *string; -+ my_iconv_t d, olddesc; -+ char_num = atoi(s4); - -- if (my_iconv_is_valid((d = my_iconv_open("utf8", FONT_SYMBOL)))) -- { -- string = op_translate_char (op, d, char_num); -- if (string != NULL) -- printf("%s", string); -- my_iconv_close(d); -- } -- else -- fprintf(stderr, "unrtf: Error in translation SYMBOL character\n"); -- } -- } -- while (w3 && !w3->child) { -- w3=w3->next; -- } -- if (w3) w3=w3->child; -- while (w3) -- { -- char *s3=word_string(w3); -- if (s3 && !strcmp("HYPERLINK",s3)) { -- Word *w4; -- char *s4; -- w4=w3->next; -- while (w4 && !strcmp(" ", word_string(w4))) -- w4=w4->next; -- if (w4) { -- s4=word_string(w4); -- if (safe_printf(0, op->hyperlink_begin)) fprintf(stderr, TOO_MANY_ARGS, "hyperlink_begin"); -- printf("%s", s4); -- if (safe_printf(0, op->hyperlink_end)) fprintf(stderr, TOO_MANY_ARGS, "hyperlink_end"); -- return TRUE; -- } -+ if (my_iconv_is_valid((d = my_iconv_open(oc->conversion, "utf8", FONT_SYMBOL)))) -+ { -+ olddesc = oc->conversion->desc; -+ oc->conversion->desc = d; -+ string = op_translate_char (oc->conversion, oc->personality/* , d */, char_num); -+ if (string != NULL) -+ printf("%s", string); -+ my_iconv_close(d); -+ oc->conversion->desc = olddesc; -+ } -+ else -+ fprintf(stderr, "unrtf: Error in translation SYMBOL character\n"); -+ } -+ } -+ while (w3 && !w3->child) { -+ w3=w3->next; -+ } -+ if (w3) w3=w3->child; -+ while (w3) -+ { -+ char *s3=word_string (oc->conversion, w3); -+ if (s3 && !strcmp("HYPERLINK",s3)) { -+ Word *w4; -+ char *s4; -+ w4=w3->next; -+ while (w4 && !strcmp(" ", word_string (oc->conversion, w4))) -+ w4=w4->next; -+ if (w4) { -+ s4=word_string (oc->conversion, w4); -+ if (safe_printf(device, 0, oc->personality->hyperlink_begin)) fprintf(stderr, TOO_MANY_ARGS, "hyperlink_begin"); -+ printf("%s", s4); -+ if (safe_printf(device, 0, oc->personality->hyperlink_end)) fprintf(stderr, TOO_MANY_ARGS, "hyperlink_end"); -+ return TRUE; -+ } - -- } -- w3=w3->next; -- } -- } -- w2 = w2->next; -- } -+ } -+ w3=w3->next; -+ } -+ } -+ w2 = w2->next; -+ } - -- } -- } -- w=w->next; -- } -- return TRUE; -+ } -+ } -+ w=w->next; -+ } -+ return TRUE; - } - - /*======================================================================== -@@ -1327,59 +1291,60 @@ cmd_field (Word *w, int align, char has_ - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - static int --cmd_f (Word *w, int align, char has_param, int num) { -- char *name; -+cmd_f (const struct OutputContext *oc, Word *w, int align, char has_param, int num) { -+ char *name; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- /* no param exit early XX */ -- if (!has_param) -- return FALSE; -+ /* no param exit early XX */ -+ if (!has_param) -+ return FALSE; - -- name = lookup_fontname(num); -- if (!name) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("invalid font number %d",num); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } else { -- if (op->fonttable_begin != NULL) -- { -- name = my_malloc(12); -- sprintf(name, "%d", num); -- } -+ name = lookup_fontname(oc->conversion, num); -+ if (!name) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("invalid font number %d",num); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } else { -+ if (oc->personality->fonttable_begin != NULL) -+ { -+ name = unrtf_malloc(12); -+ sprintf(name, "%d", num); -+ } - #if 1 /* daved 0.21.1 */ -- /* we are going to output entities, so should not output font */ -- if(strstr(name,"Symbol") == NULL) -+ /* we are going to output entities, so should not output font */ -+ if(strstr(name,"Symbol") == NULL) - #endif -- attr_push(ATTR_FONTFACE,name); -- if (strstr(name,"Symbol") != NULL) -- { -- if (!my_iconv_is_valid(desc2)) -- desc2 = desc; -- else -- my_iconv_close(desc); -+ attr_push(ATTR_FONTFACE,name, oc); -+ if (strstr(name,"Symbol") != NULL) -+ { -+ if (!my_iconv_is_valid(oc->conversion->desc2)) -+ oc->conversion->desc2 = oc->conversion->desc; -+ else -+ my_iconv_close(oc->conversion->desc); - -- desc = my_iconv_open("UTF-8", FONT_SYMBOL); -- } -- else if (strstr(name,"Greek") != NULL) -- { -- if (!my_iconv_is_valid(desc2)) -- desc2 = desc; -- else -- my_iconv_close(desc); -+ oc->conversion->desc = my_iconv_open(oc->conversion, "UTF-8", FONT_SYMBOL); -+ } -+ else if (strstr(name,"Greek") != NULL) -+ { -+ if (!my_iconv_is_valid(oc->conversion->desc2)) -+ oc->conversion->desc2 = oc->conversion->desc; -+ else -+ my_iconv_close(oc->conversion->desc); - -- desc = my_iconv_open("UTF-8", FONT_GREEK); -- } -- else -- { -- if (my_iconv_is_valid(desc2)) -- { -- desc = my_iconv_close(desc); -- desc = desc2; -- my_iconv_t_make_invalid(&desc2); -- } -- } -- } -+ oc->conversion->desc = my_iconv_open(oc->conversion, "UTF-8", FONT_GREEK); -+ } -+ else -+ { -+ if (my_iconv_is_valid(oc->conversion->desc2)) -+ { -+ oc->conversion->desc = my_iconv_close(oc->conversion->desc); -+ oc->conversion->desc = oc->conversion->desc2; -+ my_iconv_t_make_invalid(&oc->conversion->desc2); -+ } -+ } -+ } - -- return FALSE; -+ return FALSE; - } - - -@@ -1391,22 +1356,22 @@ cmd_f (Word *w, int align, char has_para - *=======================================================================*/ - - static int --cmd_highlight (Word *w, int align, char has_param, int num) -+cmd_highlight (const struct OutputContext *oc, Word *w, int align, char has_param, int num) - { -- char str[40]; -+ char str[40]; - -- if (!has_param || num>=total_colors) { -- warning_handler ("font background color change attempted is invalid"); -- } -- else -- { -- sprintf(str,"#%02x%02x%02x", -- color_table[num].r, -- color_table[num].g, -- color_table[num].b); -- attr_push(ATTR_BACKGROUND,str); -- } -- return FALSE; -+ if (!has_param || num>=oc->conversion->total_colors) { -+ warning_handler ("font background color change attempted is invalid"); -+ } -+ else -+ { -+ sprintf(str,"#%02x%02x%02x", -+ oc->conversion->color_table[num].r, -+ oc->conversion->color_table[num].g, -+ oc->conversion->color_table[num].b); -+ attr_push(ATTR_BACKGROUND,str, oc); -+ } -+ return FALSE; - } - - -@@ -1419,22 +1384,24 @@ cmd_highlight (Word *w, int align, char - *=======================================================================*/ - - static int --cmd_tab (Word *w, int align, char has_param, int param) -+cmd_tab (const struct OutputContext *oc, Word *w, int align, char has_param, int param) - { -- /* Tab presents a genuine problem -- * since some output formats don't have -- * an equivalent. As a kludge fix, I shall -- * assume the font is fixed width and that -- * the tabstops are 8 characters apart. -- */ -- int need= 8-(total_chars_this_line%8); -- total_chars_this_line += need; -- while(need>0) { -- if (safe_printf(0, op->forced_space)) fprintf(stderr, TOO_MANY_ARGS, "forced_space"); -- need--; -- } -- printf("\n"); -- return FALSE; -+ /* Tab presents a genuine problem -+ * since some output formats don't have -+ * an equivalent. As a kludge fix, I shall -+ * assume the font is fixed width and that -+ * the tabstops are 8 characters apart. -+ */ -+ int need= 8-(oc->conversion->total_chars_this_line%8); -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ oc->conversion->total_chars_this_line += need; -+ while(need>0) { -+ if (safe_printf(device, 0, oc->personality->forced_space)) fprintf(stderr, TOO_MANY_ARGS, "forced_space"); -+ need--; -+ } -+ printf("\n"); -+ return FALSE; - } - - -@@ -1446,9 +1413,9 @@ cmd_tab (Word *w, int align, char has_pa - *=======================================================================*/ - - static int --cmd_plain (Word *w, int align, char has_param, int param) { -- attr_pop_all(); -- return FALSE; -+cmd_plain (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_pop_all(oc); -+ return FALSE; - } - - -@@ -1459,9 +1426,9 @@ cmd_plain (Word *w, int align, char has_ - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - static int --cmd_fnil (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_FONTFACE,FONTNIL_STR); -- return FALSE; -+cmd_fnil (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_FONTFACE,FONTNIL_STR, oc); -+ return FALSE; - } - - -@@ -1473,9 +1440,9 @@ cmd_fnil (Word *w, int align, char has_p - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - static int --cmd_froman (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_FONTFACE,FONTROMAN_STR); -- return FALSE; -+cmd_froman (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_FONTFACE,FONTROMAN_STR, oc); -+ return FALSE; - } - - -@@ -1487,9 +1454,9 @@ cmd_froman (Word *w, int align, char has - *=======================================================================*/ - - static int --cmd_fswiss (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_FONTFACE,FONTSWISS_STR); -- return FALSE; -+cmd_fswiss (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_FONTFACE,FONTSWISS_STR, oc); -+ return FALSE; - } - - -@@ -1501,9 +1468,9 @@ cmd_fswiss (Word *w, int align, char has - *=======================================================================*/ - - static int --cmd_fmodern (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_FONTFACE,FONTMODERN_STR); -- return FALSE; -+cmd_fmodern (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_FONTFACE,FONTMODERN_STR, oc); -+ return FALSE; - } - - -@@ -1515,9 +1482,9 @@ cmd_fmodern (Word *w, int align, char ha - *=======================================================================*/ - - static int --cmd_fscript (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_FONTFACE,FONTSCRIPT_STR); -- return FALSE; -+cmd_fscript (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_FONTFACE,FONTSCRIPT_STR, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -1528,9 +1495,9 @@ cmd_fscript (Word *w, int align, char ha - *=======================================================================*/ - - static int --cmd_fdecor (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_FONTFACE,FONTDECOR_STR); -- return FALSE; -+cmd_fdecor (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_FONTFACE,FONTDECOR_STR, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -1541,9 +1508,9 @@ cmd_fdecor (Word *w, int align, char has - *=======================================================================*/ - - static int --cmd_ftech (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_FONTFACE,FONTTECH_STR); -- return FALSE; -+cmd_ftech (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_FONTFACE,FONTTECH_STR, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -1554,16 +1521,16 @@ cmd_ftech (Word *w, int align, char has_ - *=======================================================================*/ - - static int --cmd_expand (Word *w, int align, char has_param, int param) { -- char str[10]; -- if (has_param) { -- sprintf(str, "%d", param/4); -- if (!param) -- attr_pop(ATTR_EXPAND); -- else -- attr_push(ATTR_EXPAND, str); -- } -- return FALSE; -+cmd_expand (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ char str[10]; -+ if (has_param) { -+ sprintf(str, "%d", param/4); -+ if (!param) -+ attr_pop(ATTR_EXPAND, oc); -+ else -+ attr_push(ATTR_EXPAND, str, oc); -+ } -+ return FALSE; - } - - -@@ -1575,16 +1542,16 @@ cmd_expand (Word *w, int align, char has - *=======================================================================*/ - - static int --cmd_emboss (Word *w, int align, char has_param, int param) { -- char str[10]; -- if (has_param && !param) -- attr_pop(ATTR_EMBOSS); -- else -- { -- sprintf(str, "%d", param); -- attr_push(ATTR_EMBOSS, str); -- } -- return FALSE; -+cmd_emboss (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ char str[10]; -+ if (has_param && !param) -+ attr_pop(ATTR_EMBOSS, oc); -+ else -+ { -+ sprintf(str, "%d", param); -+ attr_push(ATTR_EMBOSS, str, oc); -+ } -+ return FALSE; - } - - -@@ -1596,16 +1563,16 @@ cmd_emboss (Word *w, int align, char has - *=======================================================================*/ - - static int --cmd_engrave (Word *w, int align, char has_param, int param) { -- char str[10]; -- if (has_param && !param) -- attr_pop(ATTR_ENGRAVE); -- else -- { -- sprintf(str, "%d", param); -- attr_push(ATTR_ENGRAVE, str); -- } -- return FALSE; -+cmd_engrave (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ char str[10]; -+ if (has_param && !param) -+ attr_pop(ATTR_ENGRAVE, oc); -+ else -+ { -+ sprintf(str, "%d", param); -+ attr_push(ATTR_ENGRAVE, str, oc); -+ } -+ return FALSE; - } - - /*======================================================================== -@@ -1616,12 +1583,12 @@ cmd_engrave (Word *w, int align, char ha - *=======================================================================*/ - - static int --cmd_caps (Word *w, int align, char has_param, int param) { -- if (has_param && !param) -- attr_pop(ATTR_CAPS); -- else -- attr_push(ATTR_CAPS,NULL); -- return FALSE; -+cmd_caps (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && !param) -+ attr_pop(ATTR_CAPS, oc); -+ else -+ attr_push(ATTR_CAPS,NULL, oc); -+ return FALSE; - } - - -@@ -1632,12 +1599,12 @@ cmd_caps (Word *w, int align, char has_p - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - static int --cmd_scaps (Word *w, int align, char has_param, int param) { -- if (has_param && !param) -- attr_pop(ATTR_SMALLCAPS); -- else -- attr_push(ATTR_SMALLCAPS,NULL); -- return FALSE; -+cmd_scaps (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && !param) -+ attr_pop(ATTR_SMALLCAPS, oc); -+ else -+ attr_push(ATTR_SMALLCAPS,NULL, oc); -+ return FALSE; - } - - -@@ -1648,12 +1615,14 @@ cmd_scaps (Word *w, int align, char has_ - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - static int --cmd_bullet (Word *w, int align, char has_param, int param) { -- if (op->chars.bullet) { -- if (safe_printf(0, op->chars.bullet)) fprintf(stderr, TOO_MANY_ARGS, "chars.bullet"); -- ++total_chars_this_line; /* \tab */ -- } -- return FALSE; -+cmd_bullet (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->chars.bullet) { -+ if (safe_printf(device, 0, oc->personality->chars.bullet)) fprintf(stderr, TOO_MANY_ARGS, "chars.bullet"); -+ ++oc->conversion->total_chars_this_line; /* \tab */ -+ } -+ return FALSE; - } - - /*======================================================================== -@@ -1663,12 +1632,14 @@ cmd_bullet (Word *w, int align, char has - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - static int --cmd_ldblquote (Word *w, int align, char has_param, int param) { -- if (op->chars.left_dbl_quote) { -- if (safe_printf(0, op->chars.left_dbl_quote)) fprintf(stderr, TOO_MANY_ARGS, "chars.left_dbl_quote"); -- ++total_chars_this_line; /* \tab */ -- } -- return FALSE; -+cmd_ldblquote (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->chars.left_dbl_quote) { -+ if (safe_printf(device, 0, oc->personality->chars.left_dbl_quote)) fprintf(stderr, TOO_MANY_ARGS, "chars.left_dbl_quote"); -+ ++oc->conversion->total_chars_this_line; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1680,12 +1651,14 @@ cmd_ldblquote (Word *w, int align, char - *=======================================================================*/ - - static int --cmd_rdblquote (Word *w, int align, char has_param, int param) { -- if (op->chars.right_dbl_quote) { -- if (safe_printf(0, op->chars.right_dbl_quote)) fprintf(stderr, TOO_MANY_ARGS, "chars.right_dbl_quote"); -- ++total_chars_this_line; /* \tab */ -- } -- return FALSE; -+cmd_rdblquote (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->chars.right_dbl_quote) { -+ if (safe_printf(device, 0, oc->personality->chars.right_dbl_quote)) fprintf(stderr, TOO_MANY_ARGS, "chars.right_dbl_quote"); -+ ++oc->conversion->total_chars_this_line; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1696,12 +1669,14 @@ cmd_rdblquote (Word *w, int align, char - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - static int --cmd_lquote (Word *w, int align, char has_param, int param) { -- if (op->chars.left_quote) { -- if (safe_printf(0, op->chars.left_quote)) fprintf(stderr, TOO_MANY_ARGS, "chars.left_quote"); -- ++total_chars_this_line; /* \tab */ -- } -- return FALSE; -+cmd_lquote (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->chars.left_quote) { -+ if (safe_printf(device, 0, oc->personality->chars.left_quote)) fprintf(stderr, TOO_MANY_ARGS, "chars.left_quote"); -+ ++oc->conversion->total_chars_this_line; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1713,12 +1688,14 @@ cmd_lquote (Word *w, int align, char has - *=======================================================================*/ - - static int --cmd_nonbreaking_space (Word *w, int align, char has_param, int param) { -- if (op->chars.nonbreaking_space) { -- if (safe_printf(0, op->chars.nonbreaking_space)) fprintf(stderr, TOO_MANY_ARGS, "chars.nonbreaking_space"); -- ++total_chars_this_line; /* \tab */ -- } -- return FALSE; -+cmd_nonbreaking_space (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->chars.nonbreaking_space) { -+ if (safe_printf(device, 0, oc->personality->chars.nonbreaking_space)) fprintf(stderr, TOO_MANY_ARGS, "chars.nonbreaking_space"); -+ ++oc->conversion->total_chars_this_line; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1730,12 +1707,14 @@ cmd_nonbreaking_space (Word *w, int alig - *=======================================================================*/ - - static int --cmd_nonbreaking_hyphen (Word *w, int align, char has_param, int param) { -- if (op->chars.nonbreaking_hyphen) { -- if (safe_printf(0, op->chars.nonbreaking_hyphen)) fprintf(stderr, TOO_MANY_ARGS, "chars.nonbreaking_hyphen"); -- ++total_chars_this_line; /* \tab */ -- } -- return FALSE; -+cmd_nonbreaking_hyphen (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->chars.nonbreaking_hyphen) { -+ if (safe_printf(device, 0, oc->personality->chars.nonbreaking_hyphen)) fprintf(stderr, TOO_MANY_ARGS, "chars.nonbreaking_hyphen"); -+ ++oc->conversion->total_chars_this_line; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1747,12 +1726,14 @@ cmd_nonbreaking_hyphen (Word *w, int ali - *=======================================================================*/ - - static int --cmd_optional_hyphen (Word *w, int align, char has_param, int param) { -- if (op->chars.optional_hyphen) { -- if (safe_printf(0, op->chars.optional_hyphen)) fprintf(stderr, TOO_MANY_ARGS, "chars.optional_hyphen"); -- ++total_chars_this_line; /* \tab */ -- } -- return FALSE; -+cmd_optional_hyphen (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->chars.optional_hyphen) { -+ if (safe_printf(device, 0, oc->personality->chars.optional_hyphen)) fprintf(stderr, TOO_MANY_ARGS, "chars.optional_hyphen"); -+ ++oc->conversion->total_chars_this_line; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1763,12 +1744,14 @@ cmd_optional_hyphen (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - static int --cmd_emdash (Word *w, int align, char has_param, int param) { -- if (op->chars.emdash) { -- if (safe_printf(0, op->chars.emdash)) fprintf(stderr, TOO_MANY_ARGS, "chars.emdash"); -- ++total_chars_this_line; /* \tab */ -- } -- return FALSE; -+cmd_emdash (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->chars.emdash) { -+ if (safe_printf(device, 0, oc->personality->chars.emdash)) fprintf(stderr, TOO_MANY_ARGS, "chars.emdash"); -+ ++oc->conversion->total_chars_this_line; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1780,12 +1763,14 @@ cmd_emdash (Word *w, int align, char has - *=======================================================================*/ - - static int --cmd_endash (Word *w, int align, char has_param, int param) { -- if (op->chars.endash) { -- if (safe_printf(0, op->chars.endash)) fprintf(stderr, TOO_MANY_ARGS, "chars.endash"); -- ++total_chars_this_line; /* \tab */ -- } -- return FALSE; -+cmd_endash (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->chars.endash) { -+ if (safe_printf(device, 0, oc->personality->chars.endash)) fprintf(stderr, TOO_MANY_ARGS, "chars.endash"); -+ ++oc->conversion->total_chars_this_line; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1797,12 +1782,14 @@ cmd_endash (Word *w, int align, char has - *=======================================================================*/ - - static int --cmd_rquote (Word *w, int align, char has_param, int param) { -- if (op->chars.right_quote) { -- if (safe_printf(0, op->chars.right_quote)) fprintf(stderr, TOO_MANY_ARGS, "chars.right_quote"); -- ++total_chars_this_line; /* \tab */ -- } -- return FALSE; -+cmd_rquote (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->chars.right_quote) { -+ if (safe_printf(device, 0, oc->personality->chars.right_quote)) fprintf(stderr, TOO_MANY_ARGS, "chars.right_quote"); -+ ++oc->conversion->total_chars_this_line; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1813,12 +1800,14 @@ cmd_rquote (Word *w, int align, char has - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - static int --cmd_par (Word *w, int align, char has_param, int param) { -- if (op->line_break) { -- if (safe_printf(0, op->line_break)) fprintf(stderr, TOO_MANY_ARGS, "line_break"); -- total_chars_this_line = 0; /* \tab */ -- } -- return FALSE; -+cmd_par (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->line_break) { -+ if (safe_printf(device, 0, oc->personality->line_break)) fprintf(stderr, TOO_MANY_ARGS, "line_break"); -+ oc->conversion->total_chars_this_line = 0; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1830,12 +1819,14 @@ cmd_par (Word *w, int align, char has_pa - *=======================================================================*/ - - static int --cmd_line (Word *w, int align, char has_param, int param) { -- if (op->line_break) { -- if (safe_printf(0, op->line_break)) fprintf(stderr, TOO_MANY_ARGS, "line_break"); -- total_chars_this_line = 0; /* \tab */ -- } -- return FALSE; -+cmd_line (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->line_break) { -+ if (safe_printf(device, 0, oc->personality->line_break)) fprintf(stderr, TOO_MANY_ARGS, "line_break"); -+ oc->conversion->total_chars_this_line = 0; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1846,12 +1837,14 @@ cmd_line (Word *w, int align, char has_p - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_page (Word *w, int align, char has_param, int param) { -- if (op->page_break) { -- if (safe_printf(0, op->page_break)) fprintf(stderr, TOO_MANY_ARGS, "page_break"); -- total_chars_this_line = 0; /* \tab */ -- } -- return FALSE; -+static int cmd_page (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->personality->page_break) { -+ if (safe_printf(device, 0, oc->personality->page_break)) fprintf(stderr, TOO_MANY_ARGS, "page_break"); -+ oc->conversion->total_chars_this_line = 0; /* \tab */ -+ } -+ return FALSE; - } - - -@@ -1862,9 +1855,9 @@ static int cmd_page (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_intbl (Word *w, int align, char has_param, int param) { -- ++coming_pars_that_are_tabular; -- return FALSE; -+static int cmd_intbl (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ ++oc->conversion->coming_pars_that_are_tabular; -+ return FALSE; - } - - -@@ -1875,31 +1868,31 @@ static int cmd_intbl (Word *w, int align - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_ulnone (Word *w, int align, char has_param, int param) { -- int attr, more=TRUE; -- -+static int cmd_ulnone (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ int attr, more=TRUE; -+ - #ifdef BINARY_ATTRS -- attr_remove_underlining()) fprintf(stderr, TOO_MANY_ARGS, ); -+ attr_remove_underlining() fprintf(stderr, TOO_MANY_ARGS, ); - #else -- do { -- attr = attr_read(); -- if (attr==ATTR_UNDERLINE || -- attr==ATTR_DOT_UL || -- attr==ATTR_DASH_UL || -- attr==ATTR_DOT_DASH_UL || -- attr==ATTR_2DOT_DASH_UL || -- attr==ATTR_WORD_UL || -- attr==ATTR_WAVE_UL || -- attr==ATTR_THICK_UL || -- attr==ATTR_DOUBLE_UL) -- { -- if (!attr_pop(ATTR_UNDERLINE)) -- ; -- } else -- more=FALSE; -- } while(more); -+ do { -+ attr = attr_read(oc->conversion); -+ if (attr==ATTR_UNDERLINE || -+ attr==ATTR_DOT_UL || -+ attr==ATTR_DASH_UL || -+ attr==ATTR_DOT_DASH_UL || -+ attr==ATTR_2DOT_DASH_UL || -+ attr==ATTR_WORD_UL || -+ attr==ATTR_WAVE_UL || -+ attr==ATTR_THICK_UL || -+ attr==ATTR_DOUBLE_UL) -+ { -+ if (!attr_pop(ATTR_UNDERLINE, oc)) -+ ; -+ } else -+ more=FALSE; -+ } while(more); - #endif -- return FALSE; -+ return FALSE; - } - - /*======================================================================== -@@ -1909,13 +1902,13 @@ static int cmd_ulnone (Word *w, int alig - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_ul (Word *w, int align, char has_param, int param) { -- if (has_param && param == 0) { -- cmd_ulnone(w, align, has_param, param); -- } else { -- attr_push(ATTR_UNDERLINE, NULL); -- } -- return FALSE; -+static int cmd_ul (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param == 0) { -+ cmd_ulnone(oc, w, align, has_param, param); -+ } else { -+ attr_push(ATTR_UNDERLINE, NULL, oc); -+ } -+ return FALSE; - } - - /*======================================================================== -@@ -1925,9 +1918,9 @@ static int cmd_ul (Word *w, int align, c - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_uld (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_DOUBLE_UL, NULL); -- return FALSE; -+static int cmd_uld (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_DOUBLE_UL, NULL, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -1937,9 +1930,9 @@ static int cmd_uld (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_uldb (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_DOT_UL, NULL); -- return FALSE; -+static int cmd_uldb (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_DOT_UL, NULL, oc); -+ return FALSE; - } - - -@@ -1950,9 +1943,9 @@ static int cmd_uldb (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_uldash (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_DASH_UL, NULL); -- return FALSE; -+static int cmd_uldash (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_DASH_UL, NULL, oc); -+ return FALSE; - } - - -@@ -1963,9 +1956,9 @@ static int cmd_uldash (Word *w, int alig - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_uldashd (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_DOT_DASH_UL,NULL); -- return FALSE; -+static int cmd_uldashd (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_DOT_DASH_UL,NULL, oc); -+ return FALSE; - } - - -@@ -1976,9 +1969,9 @@ static int cmd_uldashd (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_uldashdd (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_2DOT_DASH_UL,NULL); -- return FALSE; -+static int cmd_uldashdd (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_2DOT_DASH_UL,NULL, oc); -+ return FALSE; - } - - -@@ -1989,9 +1982,9 @@ static int cmd_uldashdd (Word *w, int al - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_ulw (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_WORD_UL,NULL); -- return FALSE; -+static int cmd_ulw (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_WORD_UL,NULL, oc); -+ return FALSE; - } - - -@@ -2002,9 +1995,9 @@ static int cmd_ulw (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_ulth (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_THICK_UL,NULL); -- return FALSE; -+static int cmd_ulth (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_THICK_UL,NULL, oc); -+ return FALSE; - } - - -@@ -2015,9 +2008,9 @@ static int cmd_ulth (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_ulthd (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_THICK_UL, NULL); -- return FALSE; -+static int cmd_ulthd (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_THICK_UL, NULL, oc); -+ return FALSE; - } - - -@@ -2028,9 +2021,9 @@ static int cmd_ulthd (Word *w, int align - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_ulthdash (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_THICK_UL, NULL); -- return FALSE; -+static int cmd_ulthdash (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_THICK_UL, NULL, oc); -+ return FALSE; - } - - -@@ -2041,9 +2034,9 @@ static int cmd_ulthdash (Word *w, int al - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_ulwave (Word *w, int align, char has_param, int param) { -- attr_push(ATTR_WAVE_UL,NULL); -- return FALSE; -+static int cmd_ulwave (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_push(ATTR_WAVE_UL,NULL, oc); -+ return FALSE; - } - - -@@ -2054,12 +2047,12 @@ static int cmd_ulwave (Word *w, int alig - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_strike (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) -- attr_pop(ATTR_STRIKE); -- else -- attr_push(ATTR_STRIKE,NULL); -- return FALSE; -+static int cmd_strike (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) -+ attr_pop(ATTR_STRIKE, oc); -+ else -+ attr_push(ATTR_STRIKE,NULL, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -2069,12 +2062,12 @@ static int cmd_strike (Word *w, int alig - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_strikedl (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) -- attr_pop(ATTR_DBL_STRIKE); -- else -- attr_push(ATTR_DBL_STRIKE,NULL); -- return FALSE; -+static int cmd_strikedl (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) -+ attr_pop(ATTR_DBL_STRIKE, oc); -+ else -+ attr_push(ATTR_DBL_STRIKE,NULL, oc); -+ return FALSE; - } - - -@@ -2085,12 +2078,12 @@ static int cmd_strikedl (Word *w, int al - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_striked (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) -- attr_pop(ATTR_DBL_STRIKE); -- else -- attr_push(ATTR_DBL_STRIKE,NULL); -- return FALSE; -+static int cmd_striked (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) -+ attr_pop(ATTR_DBL_STRIKE, oc); -+ else -+ attr_push(ATTR_DBL_STRIKE,NULL, oc); -+ return FALSE; - } - - -@@ -2101,8 +2094,8 @@ static int cmd_striked (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_rtf (Word *w, int align, char has_param, int param) { -- return FALSE; -+static int cmd_rtf (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return FALSE; - } - - -@@ -2113,12 +2106,12 @@ static int cmd_rtf (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_up (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) -- attr_pop(ATTR_SUPER); -- else -- attr_push(ATTR_SUPER,NULL); -- return FALSE; -+static int cmd_up (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) -+ attr_pop(ATTR_SUPER, oc); -+ else -+ attr_push(ATTR_SUPER,NULL, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -2128,61 +2121,63 @@ static int cmd_up (Word *w, int align, c - * Returns: Flag, always false - *=======================================================================*/ - --static int cmd_u (Word *w, int align, char has_param, int param) { --/* TODO: Unicode characters won't be correctly preprocessed if sizeof(int) < 4 -- * and document have unicode character which value is greater than 65536 -- */ -+static int cmd_u (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ /* TODO: Unicode characters won't be correctly preprocessed if sizeof(int) < 4 -+ * and document have unicode character which value is greater than 65536 -+ */ - -- short done=0; -- long unicode_number = (long) param; /* On 16bit architectures int is too small to store unicode characters. - AF */ -- char tmp[12]; /* Number of characters that can be in int type (including '\0'). If int size is greater than 4 bytes change this value. - AF */ -- char *alias; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ short done=0; -+ long unicode_number = (long) param; /* On 16bit architectures int is too small to store unicode characters. - AF */ -+ char tmp[12]; /* Number of characters that can be in int type (including '\0'). If int size is greater than 4 bytes change this value. - AF */ -+ char *alias; - #if DEBUG -- char *str; -- if (has_param == TRUE) -- { -- fprintf(stderr,"param is %d (x%x) (0%o)\n", param, -- param, param); -- } -- if (w->hash_index) -- { -- str=hash_get_string (w->hash_index); -- fprintf(stderr,"string is %s\n", str); -- } -+ char *str; -+ -+ if (has_param == TRUE) -+ { -+ fprintf(stderr,"param is %d (x%x) (0%o)\n", param, -+ param, param); -+ } -+ if (w->hash_index) -+ { -+ str=hash_get_string (oc->conversion, w->hash_index); -+ fprintf(stderr,"string is %s\n", str); -+ } - #endif -- /* 0.20.3 - daved added missing function call for unprocessed chars */ -- if ((alias = get_alias(op, param)) != NULL) -- { -- printf("%s", alias); -- done++; -- } -- else -- if(!done && op->unisymbol_print) -- { -- if (unicode_number < 0) -- { -+ /* 0.20.3 - daved added missing function call for unprocessed chars */ -+ if ((alias = get_alias(oc->personality, param)) != NULL) -+ { -+ printf("%s", alias); -+ done++; -+ } -+ else -+ if(!done && oc->personality->unisymbol_print) -+ { -+ if (unicode_number < 0) -+ { - #if DEBUG -- fprintf(stderr, "Invalid unicode character number accured: %ld\n", unicode_number); -+ fprintf(stderr, "Invalid unicode character number accured: %ld\n", unicode_number); - #endif -- unicode_number += 65536; -+ unicode_number += 65536; - #if DEBUG -- fprintf(stderr, "Assumes it should be: %ld\n", unicode_number); -+ fprintf(stderr, "Assumes it should be: %ld\n", unicode_number); - #endif -- } -- sprintf(tmp, "%ld", unicode_number); -- -- if (safe_printf(1, op->unisymbol_print, tmp)) fprintf(stderr, TOO_MANY_ARGS, "unisymbol_print"); -- done++; -- } -- -- /* -- ** if we know how to represent the unicode character in the -- ** output language, we need to skip the next word, otherwise -- ** we will output that alternative. -- */ -- if (done) -- return(SKIP_ONE_WORD); -- return(FALSE); -+ } -+ sprintf(tmp, "%ld", unicode_number); -+ -+ if (safe_printf(device, 1, oc->personality->unisymbol_print, tmp)) fprintf(stderr, TOO_MANY_ARGS, "unisymbol_print"); -+ done++; -+ } -+ -+ /* -+ ** if we know how to represent the unicode character in the -+ ** output language, we need to skip the next word, otherwise -+ ** we will output that alternative. -+ */ -+ if (done) -+ return(SKIP_ONE_WORD); -+ return(FALSE); - } - - /*======================================================================== -@@ -2192,12 +2187,12 @@ static int cmd_u (Word *w, int align, ch - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_dn (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) -- attr_pop(ATTR_SUB); -- else -- attr_push(ATTR_SUB,NULL); -- return FALSE; -+static int cmd_dn (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) -+ attr_pop(ATTR_SUB, oc); -+ else -+ attr_push(ATTR_SUB,NULL, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -2207,10 +2202,10 @@ static int cmd_dn (Word *w, int align, c - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_nosupersub (Word *w, int align, char has_param, int param) { -- attr_pop(ATTR_SUPER); -- attr_pop(ATTR_SUB); -- return FALSE; -+static int cmd_nosupersub (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ attr_pop(ATTR_SUPER, oc); -+ attr_pop(ATTR_SUB, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -2220,12 +2215,12 @@ static int cmd_nosupersub (Word *w, int - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_super (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) -- attr_pop(ATTR_SUPER); -- else -- attr_push(ATTR_SUPER,NULL); -- return FALSE; -+static int cmd_super (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) -+ attr_pop(ATTR_SUPER, oc); -+ else -+ attr_push(ATTR_SUPER,NULL, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -2235,12 +2230,12 @@ static int cmd_super (Word *w, int align - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_sub (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) -- attr_pop(ATTR_SUB); -- else -- attr_push(ATTR_SUB,NULL); -- return FALSE; -+static int cmd_sub (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) -+ attr_pop(ATTR_SUB, oc); -+ else -+ attr_push(ATTR_SUB,NULL, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -2250,12 +2245,12 @@ static int cmd_sub (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_shad (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) -- attr_pop(ATTR_SHADOW); -- else -- attr_push(ATTR_SHADOW,NULL); -- return FALSE; -+static int cmd_shad (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) -+ attr_pop(ATTR_SHADOW, oc); -+ else -+ attr_push(ATTR_SHADOW,NULL, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -2266,13 +2261,13 @@ static int cmd_shad (Word *w, int align, - *=======================================================================*/ - - static int --cmd_b (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) { -- attr_pop(ATTR_BOLD); -- } -- else -- attr_push(ATTR_BOLD,NULL); -- return FALSE; -+cmd_b (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) { -+ attr_pop(ATTR_BOLD, oc); -+ } -+ else -+ attr_push(ATTR_BOLD,NULL, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -2282,12 +2277,12 @@ cmd_b (Word *w, int align, char has_para - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_i (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) -- attr_pop(ATTR_ITALIC); -- else -- attr_push(ATTR_ITALIC,NULL); -- return FALSE; -+static int cmd_i (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) -+ attr_pop(ATTR_ITALIC, oc); -+ else -+ attr_push(ATTR_ITALIC,NULL, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -2296,8 +2291,8 @@ static int cmd_i (Word *w, int align, ch - * Args: Word, paragraph align info, and numeric param if any. - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ --static int cmd_s (Word *w, int align, char has_param, int param) { -- return FALSE; -+static int cmd_s (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return FALSE; - } - - /*======================================================================== -@@ -2307,12 +2302,14 @@ static int cmd_s (Word *w, int align, ch - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_sect (Word *w, int align, char has_param, int param) { -- /* XX kludge */ -- if (op->paragraph_begin) { -- if (safe_printf(0, op->paragraph_begin)) fprintf(stderr, TOO_MANY_ARGS, "paragraph_begin"); -- } -- return FALSE; -+static int cmd_sect (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ /* XX kludge */ -+ if (oc->personality->paragraph_begin) { -+ if (safe_printf(device, 0, oc->personality->paragraph_begin)) fprintf(stderr, TOO_MANY_ARGS, "paragraph_begin"); -+ } -+ return FALSE; - } - - /*======================================================================== -@@ -2322,14 +2319,16 @@ static int cmd_sect (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_shp (Word *w, int align, char has_param, int param) { -- if (op->comment_begin) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("Drawn Shape (ignored--not implemented yet)"); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -+static int cmd_shp (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- return FALSE; -+ if (oc->personality->comment_begin) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("Drawn Shape (ignored--not implemented yet)"); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ -+ return FALSE; - } - - /*======================================================================== -@@ -2339,12 +2338,12 @@ static int cmd_shp (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_outl (Word *w, int align, char has_param, int param) { -- if (has_param && param==0) -- attr_pop(ATTR_OUTLINE); -- else -- attr_push(ATTR_OUTLINE,NULL); -- return FALSE; -+static int cmd_outl (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (has_param && param==0) -+ attr_pop(ATTR_OUTLINE, oc); -+ else -+ attr_push(ATTR_OUTLINE,NULL, oc); -+ return FALSE; - } - - /*======================================================================== -@@ -2354,12 +2353,12 @@ static int cmd_outl (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_ansi (Word *w, int align, char has_param, int param) { -- if (my_iconv_is_valid(desc)) -- desc = my_iconv_close(desc); -+static int cmd_ansi (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (my_iconv_is_valid(oc->conversion->desc)) -+ oc->conversion->desc = my_iconv_close(oc->conversion->desc); - -- desc = my_iconv_open("UTF-8", "cp1252"); -- return FALSE; -+ oc->conversion->desc = my_iconv_open(oc->conversion, "UTF-8", "cp1252"); -+ return FALSE; - } - - /*======================================================================== -@@ -2369,18 +2368,18 @@ static int cmd_ansi (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_ansicpg (Word *w, int align, char has_param, int param) -+static int cmd_ansicpg (const struct OutputContext *oc, Word *w, int align, char has_param, int param) - { -- char tmp[8]; -+ char tmp[8]; - -- snprintf(tmp, 8, "cp%d", param); -+ snprintf(tmp, 8, "cp%d", param); - -- if (my_iconv_is_valid(desc)) -- desc = my_iconv_close(desc); -+ if (my_iconv_is_valid(oc->conversion->desc)) -+ oc->conversion->desc = my_iconv_close(oc->conversion->desc); - -- desc = my_iconv_open("UTF-8", tmp); -+ oc->conversion->desc = my_iconv_open(oc->conversion, "UTF-8", tmp); - -- return FALSE; -+ return FALSE; - } - - /*======================================================================== -@@ -2390,13 +2389,13 @@ static int cmd_ansicpg (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_pc (Word *w, int align, char has_param, int param) { -- if (my_iconv_is_valid(desc)) -- desc = my_iconv_close(desc); -+static int cmd_pc (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (my_iconv_is_valid(oc->conversion->desc)) -+ oc->conversion->desc = my_iconv_close(oc->conversion->desc); - -- desc = my_iconv_open("UTF-8", "cp437"); -+ oc->conversion->desc = my_iconv_open(oc->conversion, "UTF-8", "cp437"); - -- return FALSE; -+ return FALSE; - } - - /*======================================================================== -@@ -2406,14 +2405,14 @@ static int cmd_pc (Word *w, int align, c - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_pca (Word *w, int align, char has_param, int param) { -+static int cmd_pca (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { - -- if (my_iconv_is_valid(desc)) -- my_iconv_close(desc); -+ if (my_iconv_is_valid(oc->conversion->desc)) -+ my_iconv_close(oc->conversion->desc); - -- desc = my_iconv_open("UTF-8", "cp850"); -+ oc->conversion->desc = my_iconv_open(oc->conversion, "UTF-8", "cp850"); - -- return FALSE; -+ return FALSE; - } - - /*======================================================================== -@@ -2423,13 +2422,13 @@ static int cmd_pca (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_mac (Word *w, int align, char has_param, int param) { -+static int cmd_mac (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { - -- if (my_iconv_is_valid(desc)) -- my_iconv_close(desc); -+ if (my_iconv_is_valid(oc->conversion->desc)) -+ my_iconv_close(oc->conversion->desc); - -- desc = my_iconv_open("UTF-8", "mac"); -- return FALSE; -+ oc->conversion->desc = my_iconv_open(oc->conversion, "UTF-8", "mac"); -+ return FALSE; - } - - /*======================================================================== -@@ -2439,11 +2438,11 @@ static int cmd_mac (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_colortbl (Word *w, int align, char has_param, int param) { -- if (w->next) { -- process_color_table(w->next); -- } -- return TRUE; -+static int cmd_colortbl (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (w->next) { -+ process_color_table (oc, w->next); -+ } -+ return TRUE; - } - - /*======================================================================== -@@ -2453,11 +2452,11 @@ static int cmd_colortbl (Word *w, int al - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_fonttbl (Word *w, int align, char has_param, int param) { -- if (w->next) { -- process_font_table(w->next); -- } -- return TRUE; -+static int cmd_fonttbl (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (w->next) { -+ process_font_table (oc, w->next); -+ } -+ return TRUE; - } - - /*======================================================================== -@@ -2467,8 +2466,8 @@ static int cmd_fonttbl (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_header (Word *w, int align, char has_param, int param) { -- return TRUE; -+static int cmd_header (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return TRUE; - } - - /*======================================================================== -@@ -2478,8 +2477,8 @@ static int cmd_header (Word *w, int alig - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_headerl (Word *w, int align, char has_param, int param) { -- return TRUE; -+static int cmd_headerl (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return TRUE; - } - - /*======================================================================== -@@ -2489,8 +2488,8 @@ static int cmd_headerl (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_headerr (Word *w, int align, char has_param, int param) { -- return TRUE; -+static int cmd_headerr (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return TRUE; - } - - /*======================================================================== -@@ -2500,8 +2499,8 @@ static int cmd_headerr (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_headerf (Word *w, int align, char has_param, int param) { -- return TRUE; -+static int cmd_headerf (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return TRUE; - } - - /*======================================================================== -@@ -2511,8 +2510,8 @@ static int cmd_headerf (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_footer (Word *w, int align, char has_param, int param) { -- return TRUE; -+static int cmd_footer (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return TRUE; - } - - /*======================================================================== -@@ -2522,8 +2521,8 @@ static int cmd_footer (Word *w, int alig - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_footerl (Word *w, int align, char has_param, int param) { -- return TRUE; -+static int cmd_footerl (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return TRUE; - } - - /*======================================================================== -@@ -2533,8 +2532,8 @@ static int cmd_footerl (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_footerr (Word *w, int align, char has_param, int param) { -- return TRUE; -+static int cmd_footerr (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return TRUE; - } - - /*======================================================================== -@@ -2544,8 +2543,8 @@ static int cmd_footerr (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_footerf (Word *w, int align, char has_param, int param) { -- return TRUE; -+static int cmd_footerf (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return TRUE; - } - - /*======================================================================== -@@ -2555,8 +2554,8 @@ static int cmd_footerf (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_ignore (Word *w, int align, char has_param, int param) { -- return TRUE; -+static int cmd_ignore (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return TRUE; - } - - /*======================================================================== -@@ -2566,9 +2565,9 @@ static int cmd_ignore (Word *w, int alig - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_info (Word *w, int align, char has_param, int param) { -- process_info_group (w->next); -- return TRUE; -+static int cmd_info (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ process_info_group (oc, w->next); -+ return TRUE; - } - - /*======================================================================== -@@ -2578,11 +2577,11 @@ static int cmd_info (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_pict (Word *w, int align, char has_param, int param) { -- within_picture=TRUE; -- picture_width = picture_height = 0; -- picture_type = PICT_WB; -- return FALSE; -+static int cmd_pict (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ oc->conversion->within_picture=TRUE; -+ oc->conversion->picture_width = oc->conversion->picture_height = 0; -+ oc->conversion->picture_type = PICT_WB; -+ return FALSE; - } - - /*======================================================================== -@@ -2592,8 +2591,8 @@ static int cmd_pict (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_bin (Word *w, int align, char has_param, int param) { -- return FALSE; -+static int cmd_bin (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ return FALSE; - } - - -@@ -2604,9 +2603,9 @@ static int cmd_bin (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_macpict (Word *w, int align, char has_param, int param) { -- picture_type = PICT_MAC; -- return FALSE; -+static int cmd_macpict (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ oc->conversion->picture_type = PICT_MAC; -+ return FALSE; - } - - /*======================================================================== -@@ -2616,9 +2615,9 @@ static int cmd_macpict (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_jpegblip (Word *w, int align, char has_param, int param) { -- picture_type = PICT_JPEG; -- return FALSE; -+static int cmd_jpegblip (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ oc->conversion->picture_type = PICT_JPEG; -+ return FALSE; - } - - /*======================================================================== -@@ -2628,9 +2627,9 @@ static int cmd_jpegblip (Word *w, int al - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_pngblip (Word *w, int align, char has_param, int param) { -- picture_type = PICT_PNG; -- return FALSE; -+static int cmd_pngblip (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ oc->conversion->picture_type = PICT_PNG; -+ return FALSE; - } - - /*======================================================================== -@@ -2640,9 +2639,9 @@ static int cmd_pngblip (Word *w, int ali - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_pnmetafile (Word *w, int align, char has_param, int param) { -- picture_type = PICT_PM; -- return FALSE; -+static int cmd_pnmetafile (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ oc->conversion->picture_type = PICT_PM; -+ return FALSE; - } - - /*======================================================================== -@@ -2652,23 +2651,23 @@ static int cmd_pnmetafile (Word *w, int - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_wmetafile (Word *w, int align, char has_param, int param) { -- picture_type = PICT_WM; -- if (within_picture && has_param) { -- picture_wmetafile_type=param; -- switch(param) { -- case 1: picture_wmetafile_type_str="MM_TEXT"; break; -- case 2: picture_wmetafile_type_str="MM_LOMETRIC"; break; -- case 3: picture_wmetafile_type_str="MM_HIMETRIC"; break; -- case 4: picture_wmetafile_type_str="MM_LOENGLISH"; break; -- case 5: picture_wmetafile_type_str="MM_HIENGLISH"; break; -- case 6: picture_wmetafile_type_str="MM_TWIPS"; break; -- case 7: picture_wmetafile_type_str="MM_ISOTROPIC"; break; -- case 8: picture_wmetafile_type_str="MM_ANISOTROPIC"; break; -- default: picture_wmetafile_type_str="default:MM_TEXT"; break; -- } -- } -- return FALSE; -+static int cmd_wmetafile (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ oc->conversion->picture_type = PICT_WM; -+ if (oc->conversion->within_picture && has_param) { -+ oc->conversion->picture_wmetafile_type=param; -+ switch(param) { -+ case 1: oc->conversion->picture_wmetafile_type_str="MM_TEXT"; break; -+ case 2: oc->conversion->picture_wmetafile_type_str="MM_LOMETRIC"; break; -+ case 3: oc->conversion->picture_wmetafile_type_str="MM_HIMETRIC"; break; -+ case 4: oc->conversion->picture_wmetafile_type_str="MM_LOENGLISH"; break; -+ case 5: oc->conversion->picture_wmetafile_type_str="MM_HIENGLISH"; break; -+ case 6: oc->conversion->picture_wmetafile_type_str="MM_TWIPS"; break; -+ case 7: oc->conversion->picture_wmetafile_type_str="MM_ISOTROPIC"; break; -+ case 8: oc->conversion->picture_wmetafile_type_str="MM_ANISOTROPIC"; break; -+ default: oc->conversion->picture_wmetafile_type_str="default:MM_TEXT"; break; -+ } -+ } -+ return FALSE; - } - - /*======================================================================== -@@ -2678,10 +2677,10 @@ static int cmd_wmetafile (Word *w, int a - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_wbmbitspixel (Word *w, int align, char has_param, int param) { -- if (within_picture && has_param) -- picture_bits_per_pixel = param; -- return FALSE; -+static int cmd_wbmbitspixel (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (oc->conversion->within_picture && has_param) -+ oc->conversion->picture_bits_per_pixel = param; -+ return FALSE; - } - - /*======================================================================== -@@ -2691,10 +2690,10 @@ static int cmd_wbmbitspixel (Word *w, in - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_picw (Word *w, int align, char has_param, int param) { -- if (within_picture && has_param) -- picture_width = param; -- return FALSE; -+static int cmd_picw (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (oc->conversion->within_picture && has_param) -+ oc->conversion->picture_width = param; -+ return FALSE; - } - - /*======================================================================== -@@ -2704,10 +2703,10 @@ static int cmd_picw (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_pich (Word *w, int align, char has_param, int param) { -- if (within_picture && has_param) -- picture_height = param; -- return FALSE; -+static int cmd_pich (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ if (oc->conversion->within_picture && has_param) -+ oc->conversion->picture_height = param; -+ return FALSE; - } - - -@@ -2718,9 +2717,9 @@ static int cmd_pich (Word *w, int align, - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_xe (Word *w, int align, char has_param, int param) { -- process_index_entry (w); -- return TRUE; -+static int cmd_xe (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ process_index_entry (oc, w); -+ return TRUE; - } - - /*======================================================================== -@@ -2730,9 +2729,9 @@ static int cmd_xe (Word *w, int align, c - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_tc (Word *w, int align, char has_param, int param) { -- process_toc_entry (w, TRUE); -- return TRUE; -+static int cmd_tc (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ process_toc_entry (oc, w, TRUE); -+ return TRUE; - } - - /*======================================================================== -@@ -2742,282 +2741,282 @@ static int cmd_tc (Word *w, int align, c - * Returns: Flag, true only if rest of Words on line should be ignored. - *=======================================================================*/ - --static int cmd_tcn (Word *w, int align, char has_param, int param) { -- process_toc_entry (w, FALSE); -- return TRUE; -+static int cmd_tcn (const struct OutputContext *oc, Word *w, int align, char has_param, int param) { -+ process_toc_entry (oc, w, FALSE); -+ return TRUE; - } - - - typedef struct { -- char *name; -- int (*func)(Word*, int, char, int); -- char *debug_print; --} HashItem; -+ char *name; -+ int (*func)(const struct OutputContext *, Word*, int, char, int); -+ char *debug_print; -+} CmdHashItem; - - - /* All of the possible commands that RTF might recognize. */ --static HashItem hashArray_other [] = { -- { "*", cmd_ignore, NULL }, -- { "-", cmd_optional_hyphen, "optional hyphen" }, -- { "_", cmd_nonbreaking_hyphen, "nonbreaking hyphen" }, -- { "~", cmd_nonbreaking_space, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_other [] = { -+ { "*", cmd_ignore, NULL }, -+ { "-", cmd_optional_hyphen, "optional hyphen" }, -+ { "_", cmd_nonbreaking_hyphen, "nonbreaking hyphen" }, -+ { "~", cmd_nonbreaking_space, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_a [] = { -- { "ansi", &cmd_ansi , NULL }, -- { "ansicpg", &cmd_ansicpg , NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_a [] = { -+ { "ansi", &cmd_ansi , NULL }, -+ { "ansicpg", &cmd_ansicpg , NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_b [] = { -- { "b", &cmd_b, NULL }, -- { "bullet", &cmd_bullet, NULL }, -- { "bin", &cmd_bin, "picture is binary" }, -+static CmdHashItem hashArray_b [] = { -+ { "b", &cmd_b, NULL }, -+ { "bullet", &cmd_bullet, NULL }, -+ { "bin", &cmd_bin, "picture is binary" }, - #if 0 -- { "bgbdiag", NULL, NULL }, -- { "bgcross", NULL, NULL }, -- { "bgdcross", NULL, NULL }, -- { "bgfdiag", NULL, NULL }, -- { "bghoriz", NULL, NULL }, -- { "bgkbdiag", NULL, NULL }, -- { "bgkcross", NULL, NULL }, -- { "bgkdcross", NULL, NULL }, -- { "bgkfdiag", NULL, NULL }, -- { "bgkhoriz", NULL, NULL }, -- { "bgkvert", NULL, NULL }, -- { "bgvert", NULL, NULL }, -- { "brdrcf", NULL, NULL }, -- { "brdrdb", NULL, NULL }, -- { "brdrdot", NULL, NULL }, -- { "brdrhair", NULL, NULL }, -- { "brdrs", NULL, NULL }, -- { "brdrsh", NULL, NULL }, -- { "brdrth", NULL, NULL }, -- { "brdrw", NULL, NULL }, -+ { "bgbdiag", NULL, NULL }, -+ { "bgcross", NULL, NULL }, -+ { "bgdcross", NULL, NULL }, -+ { "bgfdiag", NULL, NULL }, -+ { "bghoriz", NULL, NULL }, -+ { "bgkbdiag", NULL, NULL }, -+ { "bgkcross", NULL, NULL }, -+ { "bgkdcross", NULL, NULL }, -+ { "bgkfdiag", NULL, NULL }, -+ { "bgkhoriz", NULL, NULL }, -+ { "bgkvert", NULL, NULL }, -+ { "bgvert", NULL, NULL }, -+ { "brdrcf", NULL, NULL }, -+ { "brdrdb", NULL, NULL }, -+ { "brdrdot", NULL, NULL }, -+ { "brdrhair", NULL, NULL }, -+ { "brdrs", NULL, NULL }, -+ { "brdrsh", NULL, NULL }, -+ { "brdrth", NULL, NULL }, -+ { "brdrw", NULL, NULL }, - #endif -- { NULL, NULL, NULL} -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_c [] = { -- { "caps", &cmd_caps, NULL }, -- { "cb", cmd_cb, NULL }, -- { "cf", cmd_cf, NULL }, -- { "colortbl", &cmd_colortbl, "color table" }, -- { "cols", NULL, "columns (not implemented)" }, -- { "column", NULL, "column break (not implemented)" }, -- { "cbpat", NULL, "Paragraph Shading" }, -- { "cellx", NULL, "Table Definitions" }, -- { "cfpat", NULL, NULL }, -- { "cgrid", NULL, NULL }, -- { "charrsid", NULL, "Revision Mark (ignore)" }, -- { "clbgbcross", NULL, NULL }, -- { "clbgbdiag", NULL, NULL }, -- { "clbgbkbdiag", NULL, NULL }, -- { "clbgbkcross", NULL, NULL }, -- { "clbgbkdcross", NULL, NULL }, -- { "clbgbkfdiag", NULL, NULL }, -- { "clbgbkhor", NULL, NULL }, -- { "clbgbkvert", NULL, NULL }, -- { "clbgdcross", NULL, NULL }, -- { "clbgfdiag", NULL, NULL }, -- { "clbghoriz", NULL, NULL }, -- { "clbgvert", NULL, NULL }, -- { "clbrdrb", NULL, NULL }, -- { "clbrdrl", NULL, NULL }, -- { "clbrdrr", NULL, NULL }, -- { "clbrdrt", NULL, NULL }, -- { "clcbpat", NULL, NULL }, -- { "clcfpat", NULL, NULL }, -- { "clmgf", NULL, NULL }, -- { "clmrg", NULL, NULL }, -- { "clshdng", NULL, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_c [] = { -+ { "caps", &cmd_caps, NULL }, -+ { "cb", cmd_cb, NULL }, -+ { "cf", cmd_cf, NULL }, -+ { "colortbl", &cmd_colortbl, "color table" }, -+ { "cols", NULL, "columns (not implemented)" }, -+ { "column", NULL, "column break (not implemented)" }, -+ { "cbpat", NULL, "Paragraph Shading" }, -+ { "cellx", NULL, "Table Definitions" }, -+ { "cfpat", NULL, NULL }, -+ { "cgrid", NULL, NULL }, -+ { "charrsid", NULL, "Revision Mark (ignore)" }, -+ { "clbgbcross", NULL, NULL }, -+ { "clbgbdiag", NULL, NULL }, -+ { "clbgbkbdiag", NULL, NULL }, -+ { "clbgbkcross", NULL, NULL }, -+ { "clbgbkdcross", NULL, NULL }, -+ { "clbgbkfdiag", NULL, NULL }, -+ { "clbgbkhor", NULL, NULL }, -+ { "clbgbkvert", NULL, NULL }, -+ { "clbgdcross", NULL, NULL }, -+ { "clbgfdiag", NULL, NULL }, -+ { "clbghoriz", NULL, NULL }, -+ { "clbgvert", NULL, NULL }, -+ { "clbrdrb", NULL, NULL }, -+ { "clbrdrl", NULL, NULL }, -+ { "clbrdrr", NULL, NULL }, -+ { "clbrdrt", NULL, NULL }, -+ { "clcbpat", NULL, NULL }, -+ { "clcfpat", NULL, NULL }, -+ { "clmgf", NULL, NULL }, -+ { "clmrg", NULL, NULL }, -+ { "clshdng", NULL, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_d [] = { -- { "deff", NULL, "Default Font" }, -- { "dn", &cmd_dn, NULL }, -+static CmdHashItem hashArray_d [] = { -+ { "deff", NULL, "Default Font" }, -+ { "dn", &cmd_dn, NULL }, - #if 0 -- { "dibitmap", NULL, NULL }, -+ { "dibitmap", NULL, NULL }, - #endif -- { NULL, NULL, NULL} -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_e [] = { -- { "emdash", cmd_emdash, NULL }, -- { "endash", cmd_endash, NULL }, -- { "embo", &cmd_emboss, NULL }, -- { "expand", &cmd_expand, NULL }, -- { "expnd", &cmd_expand, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_e [] = { -+ { "emdash", cmd_emdash, NULL }, -+ { "endash", cmd_endash, NULL }, -+ { "embo", &cmd_emboss, NULL }, -+ { "expand", &cmd_expand, NULL }, -+ { "expnd", &cmd_expand, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_f [] = { -- { "f", cmd_f, NULL }, -- { "fdecor", cmd_fdecor, NULL }, -- { "fmodern", cmd_fmodern, NULL }, -- { "fnil", cmd_fnil, NULL }, -- { "fonttbl", cmd_fonttbl, "font table" }, -- { "froman", cmd_froman, NULL }, -- { "fs", cmd_fs, NULL }, -- { "fscript", cmd_fscript, NULL }, -- { "fswiss", cmd_fswiss, NULL }, -- { "ftech", cmd_ftech, NULL }, -- { "field", cmd_field, NULL }, -- { "footer", cmd_footer, NULL }, -- { "footerf", cmd_footerf, NULL }, -- { "footerl", cmd_footerl, NULL }, -- { "footerr", cmd_footerr, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_f [] = { -+ { "f", cmd_f, NULL }, -+ { "fdecor", cmd_fdecor, NULL }, -+ { "fmodern", cmd_fmodern, NULL }, -+ { "fnil", cmd_fnil, NULL }, -+ { "fonttbl", cmd_fonttbl, "font table" }, -+ { "froman", cmd_froman, NULL }, -+ { "fs", cmd_fs, NULL }, -+ { "fscript", cmd_fscript, NULL }, -+ { "fswiss", cmd_fswiss, NULL }, -+ { "ftech", cmd_ftech, NULL }, -+ { "field", cmd_field, NULL }, -+ { "footer", cmd_footer, NULL }, -+ { "footerf", cmd_footerf, NULL }, -+ { "footerl", cmd_footerl, NULL }, -+ { "footerr", cmd_footerr, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_h [] = { -- { "highlight", &cmd_highlight, NULL }, -- { "header", cmd_header, NULL }, -- { "headerf", cmd_headerf, NULL }, -- { "headerl", cmd_headerl, NULL }, -- { "headerr", cmd_headerr, NULL }, -- { "hl", cmd_ignore, "hyperlink within object" }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_h [] = { -+ { "highlight", &cmd_highlight, NULL }, -+ { "header", cmd_header, NULL }, -+ { "headerf", cmd_headerf, NULL }, -+ { "headerl", cmd_headerl, NULL }, -+ { "headerr", cmd_headerr, NULL }, -+ { "hl", cmd_ignore, "hyperlink within object" }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_i [] = { -- { "i", &cmd_i, NULL }, -- { "info", &cmd_info, NULL }, -- { "insrsid", NULL, "Revision Mark (ignore)" }, -- { "intbl", &cmd_intbl, NULL }, -- { "impr", &cmd_engrave, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_i [] = { -+ { "i", &cmd_i, NULL }, -+ { "info", &cmd_info, NULL }, -+ { "insrsid", NULL, "Revision Mark (ignore)" }, -+ { "intbl", &cmd_intbl, NULL }, -+ { "impr", &cmd_engrave, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_j [] = { -- { "jpegblip", &cmd_jpegblip, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_j [] = { -+ { "jpegblip", &cmd_jpegblip, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_l [] = { -- { "ldblquote", &cmd_ldblquote, NULL }, -- { "line", &cmd_line, NULL }, -- { "lquote", &cmd_lquote, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_l [] = { -+ { "ldblquote", &cmd_ldblquote, NULL }, -+ { "line", &cmd_line, NULL }, -+ { "lquote", &cmd_lquote, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_m [] = { -- { "mac", &cmd_mac , NULL }, -- { "macpict", &cmd_macpict, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_m [] = { -+ { "mac", &cmd_mac , NULL }, -+ { "macpict", &cmd_macpict, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_n [] = { -- { "nosupersub", &cmd_nosupersub, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_n [] = { -+ { "nosupersub", &cmd_nosupersub, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_o [] = { -- { "outl", &cmd_outl, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_o [] = { -+ { "outl", &cmd_outl, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_p [] = { -- { "page", &cmd_page, NULL }, -- { "par", &cmd_par, NULL }, -- { "pc", &cmd_pc , NULL }, -- { "pca", &cmd_pca , NULL }, -- { "pich", &cmd_pich, NULL }, -- { "pict", &cmd_pict, "picture" }, -- { "picw", &cmd_picw, NULL }, -- { "plain", &cmd_plain, NULL }, -- { "pngblip", &cmd_pngblip, NULL }, -- { "pnmetafile", &cmd_pnmetafile, NULL }, -+static CmdHashItem hashArray_p [] = { -+ { "page", &cmd_page, NULL }, -+ { "par", &cmd_par, NULL }, -+ { "pc", &cmd_pc , NULL }, -+ { "pca", &cmd_pca , NULL }, -+ { "pich", &cmd_pich, NULL }, -+ { "pict", &cmd_pict, "picture" }, -+ { "picw", &cmd_picw, NULL }, -+ { "plain", &cmd_plain, NULL }, -+ { "pngblip", &cmd_pngblip, NULL }, -+ { "pnmetafile", &cmd_pnmetafile, NULL }, - #if 0 -- { "piccropb", NULL, NULL }, -- { "piccropl", NULL, NULL }, -- { "piccropr", NULL, NULL }, -- { "piccropt", NULL, NULL }, -- { "pichgoal", NULL, NULL }, -- { "pichgoal", NULL, NULL }, -- { "picscaled", NULL, NULL }, -- { "picscalex", NULL, NULL }, -- { "picwgoal", NULL, NULL }, -+ { "piccropb", NULL, NULL }, -+ { "piccropl", NULL, NULL }, -+ { "piccropr", NULL, NULL }, -+ { "piccropt", NULL, NULL }, -+ { "pichgoal", NULL, NULL }, -+ { "pichgoal", NULL, NULL }, -+ { "picscaled", NULL, NULL }, -+ { "picscalex", NULL, NULL }, -+ { "picwgoal", NULL, NULL }, - #endif -- { NULL, NULL, NULL} -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_r [] = { -- { "rdblquote", &cmd_rdblquote, NULL }, -- { "rquote", &cmd_rquote, NULL }, -- { "rtf", &cmd_rtf, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_r [] = { -+ { "rdblquote", &cmd_rdblquote, NULL }, -+ { "rquote", &cmd_rquote, NULL }, -+ { "rtf", &cmd_rtf, NULL }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_s [] = { -- { "s", cmd_s, "style" }, -- { "sect", &cmd_sect, "section break"}, -- { "scaps", &cmd_scaps, NULL }, -- { "super", &cmd_super, NULL }, -- { "sub", &cmd_sub, NULL }, -- { "shad", &cmd_shad, NULL }, -- { "strike", &cmd_strike, NULL }, -- { "striked", &cmd_striked, NULL }, -- { "strikedl", &cmd_strikedl, NULL }, -- { "stylesheet", &cmd_ignore, "style sheet" }, -- { "shp", cmd_shp, "drawn shape" }, -+static CmdHashItem hashArray_s [] = { -+ { "s", cmd_s, "style" }, -+ { "sect", &cmd_sect, "section break"}, -+ { "scaps", &cmd_scaps, NULL }, -+ { "super", &cmd_super, NULL }, -+ { "sub", &cmd_sub, NULL }, -+ { "shad", &cmd_shad, NULL }, -+ { "strike", &cmd_strike, NULL }, -+ { "striked", &cmd_striked, NULL }, -+ { "strikedl", &cmd_strikedl, NULL }, -+ { "stylesheet", &cmd_ignore, "style sheet" }, -+ { "shp", cmd_shp, "drawn shape" }, - #if 0 -- { "shading", NULL, NULL }, -+ { "shading", NULL, NULL }, - #endif -- { NULL, NULL, NULL} -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_t [] = { -- { "tab", &cmd_tab, NULL }, -- { "tc", cmd_tc, "TOC entry" }, -- { "tcn", cmd_tcn, "TOC entry" }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_t [] = { -+ { "tab", &cmd_tab, NULL }, -+ { "tc", cmd_tc, "TOC entry" }, -+ { "tcn", cmd_tcn, "TOC entry" }, -+ { NULL, NULL, NULL} - }; --static HashItem hashArray_u [] = { -- { "u", &cmd_u, NULL }, -- { "ul", &cmd_ul, NULL }, -- { "up", &cmd_up, NULL }, -- { "uld", &cmd_uld, NULL }, -- { "uldash", &cmd_uldash, NULL }, -- { "uldashd", &cmd_uldashd, NULL }, -- { "uldashdd", &cmd_uldashdd, NULL }, -- { "uldb", &cmd_uldb, NULL }, -- { "ulnone", &cmd_ulnone, NULL }, -- { "ulth", &cmd_ulth, NULL }, -- { "ulthd", &cmd_ulthd, NULL }, -- { "ulthdash", &cmd_ulthdash, NULL }, -- { "ulw", &cmd_ulw, NULL }, -- { "ulwave", &cmd_ulwave, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_u [] = { -+ { "u", &cmd_u, NULL }, -+ { "ul", &cmd_ul, NULL }, -+ { "up", &cmd_up, NULL }, -+ { "uld", &cmd_uld, NULL }, -+ { "uldash", &cmd_uldash, NULL }, -+ { "uldashd", &cmd_uldashd, NULL }, -+ { "uldashdd", &cmd_uldashdd, NULL }, -+ { "uldb", &cmd_uldb, NULL }, -+ { "ulnone", &cmd_ulnone, NULL }, -+ { "ulth", &cmd_ulth, NULL }, -+ { "ulthd", &cmd_ulthd, NULL }, -+ { "ulthdash", &cmd_ulthdash, NULL }, -+ { "ulw", &cmd_ulw, NULL }, -+ { "ulwave", &cmd_ulwave, NULL }, -+ { NULL, NULL, NULL} - }; - --static HashItem hashArray_v [] = { -- { "v", NULL, "Hidden Text" }, -- { NULL, NULL, NULL } -+static CmdHashItem hashArray_v [] = { -+ { "v", NULL, "Hidden Text" }, -+ { NULL, NULL, NULL } - }; - --static HashItem hashArray_w [] = { -- { "wbmbitspixel", &cmd_wbmbitspixel, NULL }, -- { "wmetafile", &cmd_wmetafile, NULL }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_w [] = { -+ { "wbmbitspixel", &cmd_wbmbitspixel, NULL }, -+ { "wmetafile", &cmd_wmetafile, NULL }, -+ { NULL, NULL, NULL} - }; - --static HashItem hashArray_x [] = { -- { "xe", cmd_xe, "index entry" }, -- { NULL, NULL, NULL} -+static CmdHashItem hashArray_x [] = { -+ { "xe", cmd_xe, "index entry" }, -+ { NULL, NULL, NULL} - }; - --static HashItem *hash [26] = { -- hashArray_a, -- hashArray_b, -- hashArray_c, -- hashArray_d, -- hashArray_e, -- hashArray_f, -- NULL, -- hashArray_h, -- hashArray_i, -- hashArray_j, -- NULL, -- hashArray_l, -- hashArray_m, -- hashArray_n, -- hashArray_o, -- hashArray_p, -- NULL, -- hashArray_r, -- hashArray_s, -- hashArray_t, -- hashArray_u, -- hashArray_v, -- hashArray_w, -- hashArray_x, -- NULL, NULL -+static CmdHashItem *hash [26] = { -+ hashArray_a, -+ hashArray_b, -+ hashArray_c, -+ hashArray_d, -+ hashArray_e, -+ hashArray_f, -+ NULL, -+ hashArray_h, -+ hashArray_i, -+ hashArray_j, -+ NULL, -+ hashArray_l, -+ hashArray_m, -+ hashArray_n, -+ hashArray_o, -+ hashArray_p, -+ NULL, -+ hashArray_r, -+ hashArray_s, -+ hashArray_t, -+ hashArray_u, -+ hashArray_v, -+ hashArray_w, -+ hashArray_x, -+ NULL, NULL - }; - - -@@ -3038,53 +3037,56 @@ static HashItem *hash [26] = { - *=======================================================================*/ - - void --print_with_special_exprs (char *s) { -- int ch; -- int state; -+print_with_special_exprs (const struct OutputContext *oc, char *s) { -+ int ch; -+ int state; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - --enum { SMALL=0, BIG=1 }; -+ enum { SMALL=0, BIG=1 }; - -- CHECK_PARAM_NOT_NULL(s); -+ CHECK_PARAM_NOT_NULL(s); - -- state=SMALL; /* Pacify gcc, st001906 - 0.19.6 */ -- if (simulate_smallcaps) { -- if (*s >= 'a' && *s <= 'z') { -- state=SMALL; -- if (safe_printf(0, op->smaller_begin)) fprintf(stderr, TOO_MANY_ARGS, "smaller_begin"); -- } -- else -- state=BIG; -- } -+ state=SMALL; /* Pacify gcc, st001906 - 0.19.6 */ -+ if (oc->conversion->simulate_smallcaps) { -+ if (*s >= 'a' && *s <= 'z') { -+ state=SMALL; -+ if (safe_printf(device, 0, oc->personality->smaller_begin)) fprintf(stderr, TOO_MANY_ARGS, "smaller_begin"); -+ } -+ else -+ state=BIG; -+ } - -- while ((ch=*s)) { -- char *post_trans = NULL; -+ while ((ch=*s)) { -+ char *post_trans = NULL; - -- if (simulate_allcaps || simulate_smallcaps) -- ch = toupper (ch); -+ if (oc->conversion->simulate_allcaps || oc->conversion->simulate_smallcaps) -+ ch = toupper (ch); - -- if (ch >= 0x20 && ch < 0x80) { -- post_trans = op_translate_char (op, desc, ch); -- if(post_trans) -- printf("%s",post_trans); -- } -+ if (ch >= 0x20 && ch < 0x80) { -+ post_trans = op_translate_char (oc->conversion, oc->personality, ch); -+ if(post_trans) { -+ safe_printf(device, 0, post_trans); -+ free(post_trans); -+ } -+ } - -- s++; -+ s++; - -- if (simulate_smallcaps) { -- ch = *s; -- if (ch >= 'a' && ch <= 'z') { -- if (state==BIG) -- if (safe_printf(0, op->smaller_begin)) fprintf(stderr, TOO_MANY_ARGS, "smaller_begin"); -- state=SMALL; -- } -- else -- { -- if (state==SMALL) -- if (safe_printf(0, op->smaller_end)) fprintf(stderr, TOO_MANY_ARGS, "smaller_end"); -- state=BIG; -- } -- } -- } -+ if (oc->conversion->simulate_smallcaps) { -+ ch = *s; -+ if (ch >= 'a' && ch <= 'z') { -+ if (state==BIG) -+ if (safe_printf(device, 0, oc->personality->smaller_begin)) fprintf(stderr, TOO_MANY_ARGS, "smaller_begin"); -+ state=SMALL; -+ } -+ else -+ { -+ if (state==SMALL) -+ if (safe_printf(device, 0, oc->personality->smaller_end)) fprintf(stderr, TOO_MANY_ARGS, "smaller_end"); -+ state=BIG; -+ } -+ } -+ } - } - - -@@ -3097,16 +3099,18 @@ enum { SMALL=0, BIG=1 }; - *=======================================================================*/ - - static void --begin_table() -+begin_table(const struct OutputContext *oc) - { -- within_table=TRUE; -- have_printed_row_begin = FALSE; -- have_printed_cell_begin = FALSE; -- have_printed_row_end = FALSE; -- have_printed_cell_end = FALSE; -- attrstack_push(); -- starting_body(); -- if (safe_printf(0, op->table_begin)) fprintf(stderr, TOO_MANY_ARGS, "table_begin"); -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ oc->conversion->within_table=TRUE; -+ oc->conversion->have_printed_row_begin = FALSE; -+ oc->conversion->have_printed_cell_begin = FALSE; -+ oc->conversion->have_printed_row_end = FALSE; -+ oc->conversion->have_printed_cell_end = FALSE; -+ attrstack_push(oc->conversion); -+ starting_body(oc); -+ if (safe_printf(device, 0, oc->personality->table_begin)) fprintf(stderr, TOO_MANY_ARGS, "table_begin"); - } - - -@@ -3119,23 +3123,25 @@ begin_table() - *=======================================================================*/ - - void --end_table () -+end_table (const struct OutputContext *oc) - { -- if (within_table) { -- if (!have_printed_cell_end) { -- attr_pop_dump(); -- if (safe_printf(0, op->table_cell_end)) fprintf(stderr, TOO_MANY_ARGS, "table_cell_end"); -- } -- if (!have_printed_row_end) { -- if (safe_printf(0, op->table_row_end)) fprintf(stderr, TOO_MANY_ARGS, "table_row_end"); -- } -- if (safe_printf(0, op->table_end)) fprintf(stderr, TOO_MANY_ARGS, "table_end"); -- within_table=FALSE; -- have_printed_row_begin = FALSE; -- have_printed_cell_begin = FALSE; -- have_printed_row_end = FALSE; -- have_printed_cell_end = FALSE; -- } -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->conversion->within_table) { -+ if (!oc->conversion->have_printed_cell_end) { -+ attr_pop_dump(); -+ if (safe_printf(device, 0, oc->personality->table_cell_end)) fprintf(stderr, TOO_MANY_ARGS, "table_cell_end"); -+ } -+ if (!oc->conversion->have_printed_row_end) { -+ if (safe_printf(device, 0, oc->personality->table_row_end)) fprintf(stderr, TOO_MANY_ARGS, "table_row_end"); -+ } -+ if (safe_printf(device, 0, oc->personality->table_end)) fprintf(stderr, TOO_MANY_ARGS, "table_end"); -+ oc->conversion->within_table=FALSE; -+ oc->conversion->have_printed_row_begin = FALSE; -+ oc->conversion->have_printed_cell_begin = FALSE; -+ oc->conversion->have_printed_row_end = FALSE; -+ oc->conversion->have_printed_cell_end = FALSE; -+ } - } - - -@@ -3148,21 +3154,23 @@ end_table () - *=======================================================================*/ - - void --starting_text() { -- if (within_table) { -- if (!have_printed_row_begin) { -- if (safe_printf(0, op->table_row_begin)) fprintf(stderr, TOO_MANY_ARGS, "table_row_begin"); -- have_printed_row_begin=TRUE; -- have_printed_row_end=FALSE; -- have_printed_cell_begin=FALSE; -- } -- if (!have_printed_cell_begin) { -- if (safe_printf(0, op->table_cell_begin)) fprintf(stderr, TOO_MANY_ARGS, "table_cell_begin"); -- attrstack_express_all(); -- have_printed_cell_begin=TRUE; -- have_printed_cell_end=FALSE; -- } -- } -+starting_text(const struct OutputContext *oc) { -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ if (oc->conversion->within_table) { -+ if (!oc->conversion->have_printed_row_begin) { -+ if (safe_printf(device, 0, oc->personality->table_row_begin)) fprintf(stderr, TOO_MANY_ARGS, "table_row_begin"); -+ oc->conversion->have_printed_row_begin=TRUE; -+ oc->conversion->have_printed_row_end=FALSE; -+ oc->conversion->have_printed_cell_begin=FALSE; -+ } -+ if (!oc->conversion->have_printed_cell_begin) { -+ if (safe_printf(device, 0, oc->personality->table_cell_begin)) fprintf(stderr, TOO_MANY_ARGS, "table_cell_begin"); -+ attrstack_express_all(); -+ oc->conversion->have_printed_cell_begin=TRUE; -+ oc->conversion->have_printed_cell_end=FALSE; -+ } -+ } - } - - -@@ -3176,25 +3184,27 @@ starting_text() { - *=======================================================================*/ - - static void --starting_paragraph_align (int align) -+starting_paragraph_align (const struct OutputContext *oc, int align) - { -- if (within_header && align != ALIGN_LEFT) -- starting_body(); -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- switch (align) -- { -- case ALIGN_CENTER: -- if (safe_printf(0, op->center_begin)) fprintf(stderr, TOO_MANY_ARGS, "center_begin"); -- break; -- case ALIGN_LEFT: -- break; -- case ALIGN_RIGHT: -- if (safe_printf(0, op->align_right_begin)) fprintf(stderr, TOO_MANY_ARGS, "align_right_begin"); -- break; -- case ALIGN_JUSTIFY: -- if (safe_printf(0, op->justify_begin)) fprintf(stderr, TOO_MANY_ARGS, "justify_begin"); /* But this is correct */ -- break; -- } -+ if (oc->conversion->within_header && align != ALIGN_LEFT) -+ starting_body(oc); -+ -+ switch (align) -+ { -+ case ALIGN_CENTER: -+ if (safe_printf(device, 0, oc->personality->center_begin)) fprintf(stderr, TOO_MANY_ARGS, "center_begin"); -+ break; -+ case ALIGN_LEFT: -+ break; -+ case ALIGN_RIGHT: -+ if (safe_printf(device, 0, oc->personality->align_right_begin)) fprintf(stderr, TOO_MANY_ARGS, "align_right_begin"); -+ break; -+ case ALIGN_JUSTIFY: -+ if (safe_printf(device, 0, oc->personality->justify_begin)) fprintf(stderr, TOO_MANY_ARGS, "justify_begin"); /* But this is correct */ -+ break; -+ } - } - - -@@ -3207,21 +3217,23 @@ starting_paragraph_align (int align) - *=======================================================================*/ - - static void --ending_paragraph_align (int align) -+ending_paragraph_align (const struct OutputContext *oc, int align) - { -- switch (align) { -- case ALIGN_CENTER: -- if (safe_printf(0, op->center_end)) fprintf(stderr, TOO_MANY_ARGS, "center_end"); -- break; -- case ALIGN_LEFT: -- break; -- case ALIGN_RIGHT: -- if (safe_printf(0, op->align_right_end)) fprintf(stderr, TOO_MANY_ARGS, "align_right_end"); -- break; -- case ALIGN_JUSTIFY: -- if (safe_printf(0, op->justify_end)) fprintf(stderr, TOO_MANY_ARGS, "justify_end"); -- break; -- } -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; -+ -+ switch (align) { -+ case ALIGN_CENTER: -+ if (safe_printf(device, 0, oc->personality->center_end)) fprintf(stderr, TOO_MANY_ARGS, "center_end"); -+ break; -+ case ALIGN_LEFT: -+ break; -+ case ALIGN_RIGHT: -+ if (safe_printf(device, 0, oc->personality->align_right_end)) fprintf(stderr, TOO_MANY_ARGS, "align_right_end"); -+ break; -+ case ALIGN_JUSTIFY: -+ if (safe_printf(device, 0, oc->personality->justify_end)) fprintf(stderr, TOO_MANY_ARGS, "justify_end"); -+ break; -+ } - } - - -@@ -3234,411 +3246,411 @@ ending_paragraph_align (int align) - *=======================================================================*/ - - static void --word_print_core (Word *w) -+word_print_core (const struct OutputContext *oc, Word *w) - { -- char *s; -- FILE *pictfile=NULL; -- int is_cell_group=FALSE; -- int paragraph_begined=FALSE; -- int paragraph_align=ALIGN_LEFT; -+ char *s; -+ FILE *pictfile=NULL; -+ int is_cell_group=FALSE; -+ int paragraph_begined=FALSE; -+ int paragraph_align=ALIGN_LEFT; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- CHECK_PARAM_NOT_NULL(w); -+ CHECK_PARAM_NOT_NULL(w); - -- if (!coming_pars_that_are_tabular && within_table) { -- end_table(); -- } -- else if (coming_pars_that_are_tabular && !within_table) { -- begin_table(); -- } -+ if (!oc->conversion->coming_pars_that_are_tabular && oc->conversion->within_table) { -+ end_table(oc); -+ } -+ else if (oc->conversion->coming_pars_that_are_tabular && !oc->conversion->within_table) { -+ begin_table(oc); -+ } - -- /* Mark our place in the stack */ -- attrstack_push(); -+ /* Mark our place in the stack */ -+ attrstack_push(oc->conversion); - -- while (w) { -+ while (w) { - -- s = word_string (w); -+ s = word_string (oc->conversion, w); - -- if (s) { -+ if (s) { - -- /*--Ignore whitespace in header--------------------*/ -- if (*s==' ' && within_header) { -- /* no op */ -- } -- else -- /*--Handle word -----------------------------------*/ -- if (s[0] != '\\') -- { -- starting_body(); -- starting_text(); -+ /*--Ignore whitespace in header--------------------*/ -+ if (*s==' ' && oc->conversion->within_header) { -+ /* no op */ -+ } -+ else -+ /*--Handle word -----------------------------------*/ -+ if (s[0] != '\\') -+ { -+ starting_body(oc); -+ starting_text(oc); - -- if (!paragraph_begined) { -- starting_paragraph_align (paragraph_align); -- paragraph_begined=TRUE; -- } -+ if (!paragraph_begined) { -+ starting_paragraph_align (oc, paragraph_align); -+ paragraph_begined=TRUE; -+ } - -- /*----------------------------------------*/ -- if (within_picture) { -- starting_body(); -- if (!pictfile && !nopict_mode) { -- char *ext=NULL; -- switch (picture_type) { -- case PICT_WB: ext="bmp"; break; -- case PICT_WM: ext="wmf"; break; -- case PICT_MAC: ext="pict"; break; -- case PICT_JPEG: ext="jpg"; break; -- case PICT_PNG: ext="png"; break; -- case PICT_DI: ext="dib"; break; /* Device independent bitmap=??? */ -- case PICT_PM: ext="pmm"; break; /* OS/2 metafile=??? */ -- } -- sprintf(picture_path, "pict%03d.%s", -- picture_file_number++,ext); -- pictfile=fopen(picture_path,"w"); -- } -+ /*----------------------------------------*/ -+ if (oc->conversion->within_picture) { -+ starting_body(oc); -+ if (!pictfile && !oc->conversion->options->nopict_mode) { -+ char *ext=NULL; -+ switch (oc->conversion->picture_type) { -+ case PICT_WB: ext="bmp"; break; -+ case PICT_WM: ext="wmf"; break; -+ case PICT_MAC: ext="pict"; break; -+ case PICT_JPEG: ext="jpg"; break; -+ case PICT_PNG: ext="png"; break; -+ case PICT_DI: ext="dib"; break; /* Device independent bitmap=??? */ -+ case PICT_PM: ext="pmm"; break; /* OS/2 metafile=??? */ -+ } -+ sprintf(oc->conversion->picture_path, "pict%03d.%s", -+ oc->conversion->picture_file_number++,ext); -+ pictfile=fopen(oc->conversion->picture_path,"w"); -+ } - -- if (s[0]!=' ') { -- char *s2; -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("picture data found, "); -- if (picture_wmetafile_type_str) { -- printf("WMF type is %s, ", -- picture_wmetafile_type_str); -- } -- printf("picture dimensions are %d by %d, depth %d", -- picture_width, picture_height, picture_bits_per_pixel); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- if (picture_width && picture_height && picture_bits_per_pixel) { -- s2=s; -- while (*s2) { -- unsigned int tmp,value; -- tmp=tolower(*s2++); -- if (tmp>'9') tmp-=('a'-10); -- else tmp-='0'; -- value=16*tmp; -- tmp=tolower(*s2++); -- if (tmp>'9') tmp-=('a'-10); -- else tmp-='0'; -- value+=tmp; -- if (pictfile) { -- fprintf(pictfile,"%c", value); -- } -- } -- } -- } -- } -- /*----------------------------------------*/ -- else { -- total_chars_this_line += strlen(s); -+ if (s[0]!=' ') { -+ char *s2; -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("picture data found, "); -+ if (oc->conversion->picture_wmetafile_type_str) { -+ printf("WMF type is %s, ", -+ oc->conversion->picture_wmetafile_type_str); -+ } -+ printf("picture dimensions are %d by %d, depth %d", -+ oc->conversion->picture_width, oc->conversion->picture_height, oc->conversion->picture_bits_per_pixel); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ if (oc->conversion->picture_width && oc->conversion->picture_height && oc->conversion->picture_bits_per_pixel) { -+ s2=s; -+ while (*s2) { -+ unsigned int tmp,value; -+ tmp=tolower(*s2++); -+ if (tmp>'9') tmp-=('a'-10); -+ else tmp-='0'; -+ value=16*tmp; -+ tmp=tolower(*s2++); -+ if (tmp>'9') tmp-=('a'-10); -+ else tmp-='0'; -+ value+=tmp; -+ if (pictfile) { -+ fprintf(pictfile,"%c", value); -+ } -+ } -+ } -+ } -+ } -+ /*----------------------------------------*/ -+ else { -+ oc->conversion->total_chars_this_line += strlen(s); - -- if (op->word_begin) -- if (safe_printf(0, op->word_begin)) fprintf(stderr, TOO_MANY_ARGS, "word_begin"); -+ if (oc->personality->word_begin) -+ if (safe_printf(device, 0, oc->personality->word_begin)) fprintf(stderr, TOO_MANY_ARGS, "word_begin"); - -- print_with_special_exprs (s); -+ print_with_special_exprs (oc, s); - -- if (op->word_end) -- if (safe_printf(0, op->word_end)) fprintf(stderr, TOO_MANY_ARGS, "word_end"); -- } -+ if (oc->personality->word_end) -+ if (safe_printf(device, 0, oc->personality->word_end)) fprintf(stderr, TOO_MANY_ARGS, "word_end"); -+ } - - -- } -- /* output an escaped backslash */ -- /* do we need special handling for latex? */ -- else if (*(s+1) == '\\') -- { -- s++; -- putchar('\\'); -- } -- else if (*(s+1) == '{') -- { -- s++; -- putchar('{'); -- } -- else if (*(s+1) == '}') -- { -- s++; -- putchar('}'); -- } -- /*---Handle RTF keywords---------------------------*/ -- else { -+ } -+ /* output an escaped backslash */ -+ /* do we need special handling for latex? */ -+ else if (*(s+1) == '\\') -+ { -+ s++; -+ putchar('\\'); -+ } -+ else if (*(s+1) == '{') -+ { -+ s++; -+ putchar('{'); -+ } -+ else if (*(s+1) == '}') -+ { -+ s++; -+ putchar('}'); -+ } -+ /*---Handle RTF keywords---------------------------*/ -+ else { - -- int done=FALSE; -- s++; --/*----Paragraph alignment----------------------------------------------------*/ -- if (!strcmp ("ql", s)) -- paragraph_align = ALIGN_LEFT; -- else if (!strcmp ("qr", s)) -- paragraph_align = ALIGN_RIGHT; -- else if (!strcmp ("qj", s)) -- paragraph_align = ALIGN_JUSTIFY; -- else if (!strcmp ("qc", s)) -- paragraph_align = ALIGN_CENTER; -- else if (!strcmp ("pard", s)) -- { -- /* Clear out all font attributes. -- */ -- attr_pop_all(); -+ int done=FALSE; -+ s++; -+ /*----Paragraph alignment----------------------------------------------------*/ -+ if (!strcmp ("ql", s)) -+ paragraph_align = ALIGN_LEFT; -+ else if (!strcmp ("qr", s)) -+ paragraph_align = ALIGN_RIGHT; -+ else if (!strcmp ("qj", s)) -+ paragraph_align = ALIGN_JUSTIFY; -+ else if (!strcmp ("qc", s)) -+ paragraph_align = ALIGN_CENTER; -+ else if (!strcmp ("pard", s)) -+ { -+ /* Clear out all font attributes. -+ */ -+ attr_pop_all(oc); - -- if (coming_pars_that_are_tabular) { -- --coming_pars_that_are_tabular; -- } -+ if (oc->conversion->coming_pars_that_are_tabular) { -+ --oc->conversion->coming_pars_that_are_tabular; -+ } - -- /* Clear out all paragraph attributes. -- */ -- ending_paragraph_align(paragraph_align); -- paragraph_align = ALIGN_LEFT; -- paragraph_begined = FALSE; -- } --/*----Table keywords---------------------------------------------------------*/ -- else -- if (!strcmp (s, "cell")) { -+ /* Clear out all paragraph attributes. -+ */ -+ ending_paragraph_align (oc, paragraph_align); -+ paragraph_align = ALIGN_LEFT; -+ paragraph_begined = FALSE; -+ } -+ /*----Table keywords---------------------------------------------------------*/ -+ else -+ if (!strcmp (s, "cell")) { - -- is_cell_group=TRUE; -- if (!have_printed_cell_begin) { -- /* Need this with empty cells */ -- if (safe_printf(0, op->table_cell_begin)) fprintf(stderr, TOO_MANY_ARGS, "table_cell_begin"); -- attrstack_express_all(); -- } -- attr_pop_dump(); -- if (safe_printf(0, op->table_cell_end)) fprintf(stderr, TOO_MANY_ARGS, "table_cell_end"); -- have_printed_cell_begin = FALSE; -- have_printed_cell_end=TRUE; -- } -- else if (!strcmp (s, "row")) { -+ is_cell_group=TRUE; -+ if (!oc->conversion->have_printed_cell_begin) { -+ /* Need this with empty cells */ -+ if (safe_printf(device, 0, oc->personality->table_cell_begin)) fprintf(stderr, TOO_MANY_ARGS, "table_cell_begin"); -+ attrstack_express_all(); -+ } -+ attr_pop_dump(); -+ if (safe_printf(device, 0, oc->personality->table_cell_end)) fprintf(stderr, TOO_MANY_ARGS, "table_cell_end"); -+ oc->conversion->have_printed_cell_begin = FALSE; -+ oc->conversion->have_printed_cell_end=TRUE; -+ } -+ else if (!strcmp (s, "row")) { - -- if (within_table) { -- if (safe_printf(0, op->table_row_end)) fprintf(stderr, TOO_MANY_ARGS, "table_row_end"); -- have_printed_row_begin = FALSE; -- have_printed_row_end=TRUE; -- } else { -- if (debug_mode) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("end of table row"); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- } -- } -+ if (oc->conversion->within_table) { -+ if (safe_printf(device, 0, oc->personality->table_row_end)) fprintf(stderr, TOO_MANY_ARGS, "table_row_end"); -+ oc->conversion->have_printed_row_begin = FALSE; -+ oc->conversion->have_printed_row_end=TRUE; -+ } else { -+ if (oc->conversion->options->debug_mode) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("end of table row"); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ } -+ } - --/*----Special chars---------------------------------------------------------*/ -- else if (*s == '\'') { -- /* \'XX is a hex char code expression */ -+ /*----Special chars---------------------------------------------------------*/ -+ else if (*s == '\'') { -+ /* \'XX is a hex char code expression */ - -- int ch = h2toi (&s[1]); -- char *s2; -+ int ch = h2toi (&s[1]); -+ char *s2; - - #if 1 /* daved - 0.21.2 */ -- if(ch > h2toi("7f") && ch < h2toi("a1")) -- { -- /* 2 byte char - read 2nd */ -- int ch2; -- char *snext; -- int *doublet; -- w = w->next; -- snext = word_string (w); -- if(*snext == '\\' && *(snext+1) == '\'') -- { -- /* all looks good */ -- ch2 = h2toi(&snext[2]); -+ if(ch > h2toi("7f") && ch < h2toi("a1")) -+ { -+ /* 2 byte char - read 2nd */ -+ int ch2; -+ char *snext; -+ int *doublet; -+ w = w->next; -+ snext = word_string (oc->conversion, w); -+ if(*snext == '\\' && *(snext+1) == '\'') -+ { -+ /* all looks good */ -+ ch2 = h2toi(&snext[2]); - #if 0 -- fprintf(stderr,"ch, ch2 = %o %o\n", ch, ch2); -+ fprintf(stderr,"ch, ch2 = %o %o\n", ch, ch2); - #endif -- doublet = (int *)my_malloc(12); -- *doublet = (int)ch; -- *(doublet+1) = (int)ch2; -- *(doublet+2) = 0; -+ doublet = (int *)unrtf_malloc(12); -+ *doublet = (int)ch; -+ *(doublet+1) = (int)ch2; -+ *(doublet+2) = 0; - #if 0 -- fprintf(stderr, "doublet = %o %o\n", *doublet, *(doublet+1)); -+ fprintf(stderr, "doublet = %o %o\n", *doublet, *(doublet+1)); - #endif -- desc2 = desc; -- desc = my_iconv_open("UTF-8", "SHIFT_JIS"); -+ oc->conversion->desc2 = oc->conversion->desc; -+ oc->conversion->desc = my_iconv_open(oc->conversion, "UTF-8", "SHIFT_JIS"); - #if 1 -- s2 = op_translate_doublet (op, desc, ch, ch2); -+ s2 = op_translate_doublet (oc->conversion, oc->personality, ch, ch2); - #else -- s2 = op_translate_str (op, desc, doublet); -+ s2 = op_translate_str (oc->conversion, oc->personality, doublet); - #endif -- free(doublet); -- desc = my_iconv_close(desc); -- desc = desc2; -- my_iconv_t_make_invalid(&desc2); -- } -- } -- else -+ free(doublet); -+ oc->conversion->desc = my_iconv_close(oc->conversion->desc); -+ oc->conversion->desc = oc->conversion->desc2; -+ my_iconv_t_make_invalid(&oc->conversion->desc2); -+ } -+ } -+ else - #endif --//standard -- s2 = op_translate_char (op, desc, ch); -- if (!s2 || !*s2) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("char 0x%02x",ch); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } else { -- if (op->word_begin) -- if (safe_printf(0, op->word_begin)) fprintf(stderr, TOO_MANY_ARGS, "word_begin"); -- -- printf("%s", s2); -+ //standard -+ s2 = op_translate_char (oc->conversion, oc->personality, ch); -+ if (!s2 || !*s2) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("char 0x%02x",ch); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } else { -+ if (oc->personality->word_begin) -+ if (safe_printf(device, 0, oc->personality->word_begin)) fprintf(stderr, TOO_MANY_ARGS, "word_begin"); - -- if (op->word_end) -- if (safe_printf(0, op->word_end)) fprintf(stderr, TOO_MANY_ARGS, "word_end"); -- } -- } -- else --/*----Search the RTF command hash-------------------------------------------*/ -- { -- int ch; -- int index=0; -- int have_param = FALSE, param = 0; -- HashItem *hip; -- char *p; -- int match = FALSE; /* Pacify gcc, st001906 - 0.19.6 */ -+ printf("%s", s2); - -- /* Look for a parameter */ -- p = s; -- while (*p && (!isdigit(*p) && *p != '-')) p++; -- if (*p && (isdigit(*p) || *p == '-')) { -- have_param = TRUE; -- param = atoi(p); -- } -+ if (oc->personality->word_end) -+ if (safe_printf(device, 0, oc->personality->word_end)) fprintf(stderr, TOO_MANY_ARGS, "word_end"); -+ } -+ } -+ else -+ /*----Search the RTF command hash-------------------------------------------*/ -+ { -+ int ch; -+ int index=0; -+ int have_param = FALSE, param = 0; -+ CmdHashItem *hip; -+ char *p; -+ int match = FALSE; /* Pacify gcc, st001906 - 0.19.6 */ - -- /* Generate a hash index */ -- ch = tolower(*s); -- if (ch >= 'a' && ch <= 'z') -- hip = hash[ch - 'a']; -- else -- hip = hashArray_other; -+ /* Look for a parameter */ -+ p = s; -+ while (*p && (!isdigit(*p) && *p != '-')) p++; -+ if (*p && (isdigit(*p) || *p == '-')) { -+ have_param = TRUE; -+ param = atoi(p); -+ } - -- if (!hip) { -- if (debug_mode) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("Unfamiliar RTF command: %s (HashIndex not found)", s); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- } -- else { -- while (!done) { -- match = FALSE; -+ /* Generate a hash index */ -+ ch = tolower(*s); -+ if (ch >= 'a' && ch <= 'z') -+ hip = hash[ch - 'a']; -+ else -+ hip = hashArray_other; - -- if (have_param) { -- int len=p-s; -- if (!hip[index].name[len] && !strncmp(s, hip[index].name, len)) -- match = TRUE; -- } -- else -- match = !strcmp(s, hip[index].name); -+ if (!hip) { -+ if (oc->conversion->options->debug_mode) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("Unfamiliar RTF command: %s (HashIndex not found)", s); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ } -+ else { -+ while (!done) { -+ match = FALSE; - -- if (match) { -+ if (have_param) { -+ int len=p-s; -+ if (!hip[index].name[len] && !strncmp(s, hip[index].name, len)) -+ match = TRUE; -+ } -+ else -+ match = !strcmp(s, hip[index].name); - -- char *debug; -- int terminate_group; -+ if (match) { - -- if (hip[index].func) { --//unicode -- terminate_group = hip[index].func (w,paragraph_align, have_param, param); -- /* daved - 0.19.4 - unicode support may need to skip only one word */ -- if (terminate_group == SKIP_ONE_WORD) -- w=w->next; -- else -- if (terminate_group) -- while(w) w=w->next; -- } -+ char *debug; -+ int terminate_group; - -- debug=hip[index].debug_print; -+ if (hip[index].func) { -+ //unicode -+ terminate_group = hip[index].func (oc, w, paragraph_align, have_param, param); -+ /* daved - 0.19.4 - unicode support may need to skip only one word */ -+ if (terminate_group == SKIP_ONE_WORD) -+ w=w->next; -+ else -+ if (terminate_group) -+ while(w) w=w->next; -+ } - -- if (debug && debug_mode) { -- if (safe_printf(0, op->comment_begin)) -- fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("%s", debug); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -+ debug=hip[index].debug_print; - -- done=TRUE; -- } -- else { -- index++; -- if (!hip[index].name) -- done = TRUE; -- } -- } -- } -- if (!match) { -- if (debug_mode) { -- if (safe_printf(0, op->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -- printf("Unfamiliar RTF command: %s", s); -- if (safe_printf(0, op->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -- } -- } -- } -- } --/*-------------------------------------------------------------------------*/ -- } else { -+ if (debug && oc->conversion->options->debug_mode) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) -+ fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("%s", debug); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } - -- Word *child; -+ done=TRUE; -+ } -+ else { -+ index++; -+ if (!hip[index].name) -+ done = TRUE; -+ } -+ } -+ } -+ if (!match) { -+ if (oc->conversion->options->debug_mode) { -+ if (safe_printf(device, 0, oc->personality->comment_begin)) fprintf(stderr, TOO_MANY_ARGS, "comment_begin"); -+ printf("Unfamiliar RTF command: %s", s); -+ if (safe_printf(device, 0, oc->personality->comment_end)) fprintf(stderr, TOO_MANY_ARGS, "comment_end"); -+ } -+ } -+ } -+ } -+ /*-------------------------------------------------------------------------*/ -+ } else { - -- child = w->child; -+ Word *child; - -- if (!paragraph_begined) { -- starting_paragraph_align (paragraph_align); -- paragraph_begined=TRUE; -- } -+ child = w->child; - -- if (child) -- word_print_core (child); -- } -+ if (!paragraph_begined) { -+ starting_paragraph_align (oc, paragraph_align); -+ paragraph_begined=TRUE; -+ } - -- if (w) -- w = w->next; -- } -+ if (child) -+ word_print_core (oc, child); -+ } - -- if (within_picture) { -- if(pictfile) { -- fclose(pictfile); -- if (safe_printf(0, op->imagelink_begin)) fprintf(stderr, TOO_MANY_ARGS, "imagelink_begin"); -- printf("%s", picture_path); -- if (safe_printf(0, op->imagelink_end)) fprintf(stderr, TOO_MANY_ARGS, "imagelink_end"); -- } -- within_picture=FALSE; -- } -+ if (w) -+ w = w->next; -+ } - -- /* Undo font attributes UNLESS we're doing table cells -- * since they would appear between and . -- */ -+ if (oc->conversion->within_picture) { -+ if(pictfile) { -+ fclose(pictfile); -+ if (safe_printf(device, 0, oc->personality->imagelink_begin)) fprintf(stderr, TOO_MANY_ARGS, "imagelink_begin"); -+ printf("%s", oc->conversion->picture_path); -+ if (safe_printf(device, 0, oc->personality->imagelink_end)) fprintf(stderr, TOO_MANY_ARGS, "imagelink_end"); -+ } -+ oc->conversion->within_picture=FALSE; -+ } - -- if (!is_cell_group) -- attr_pop_all(); -- else -- attr_drop_all(); -+ /* Undo font attributes UNLESS we're doing table cells -+ * since they would appear between and . -+ */ - -- /* Undo paragraph alignment -- */ -- if (paragraph_begined) -- ending_paragraph_align (paragraph_align); -+ if (!is_cell_group) -+ attr_pop_all(oc); -+ else -+ attr_drop_all(); - -- attrstack_drop(); -+ /* Undo paragraph alignment -+ */ -+ if (paragraph_begined) -+ ending_paragraph_align (oc, paragraph_align); - -- if((s = attr_get_param(ATTR_FONTFACE)) != NULL && -- strstr(s,"Symbol") != NULL) -- { -- if (!my_iconv_is_valid(desc2)) -- desc2 = desc; -- else -- desc = my_iconv_close(desc); -+ attrstack_drop(oc); - -- desc = my_iconv_open("UTF-8", FONT_SYMBOL); -- } -- else if((s = attr_get_param(ATTR_FONTFACE)) != NULL && -- strstr(s,"Greek") != NULL) -- { -- if (!my_iconv_is_valid(desc2)) -- desc2 = desc; -- else -- desc = my_iconv_close(desc); -+ if((s = attr_get_param(oc->conversion, ATTR_FONTFACE)) != NULL && -+ strstr(s,"Symbol") != NULL) -+ { -+ if (!my_iconv_is_valid(oc->conversion->desc2)) -+ oc->conversion->desc2 = oc->conversion->desc; -+ else -+ oc->conversion->desc = my_iconv_close(oc->conversion->desc); - -- desc = my_iconv_open("UTF-8", FONT_GREEK); -- } -- else -- if (my_iconv_is_valid(desc2)) /* AF - 0.21.0-rc2 */ -- { -- my_iconv_close(desc); -- desc = desc2; -- my_iconv_t_make_invalid(&desc2); -- } -+ oc->conversion->desc = my_iconv_open(oc->conversion, "UTF-8", FONT_SYMBOL); -+ } -+ else if((s = attr_get_param(oc->conversion, ATTR_FONTFACE)) != NULL && -+ strstr(s,"Greek") != NULL) -+ { -+ if (!my_iconv_is_valid(oc->conversion->desc2)) -+ oc->conversion->desc2 = oc->conversion->desc; -+ else -+ oc->conversion->desc = my_iconv_close(oc->conversion->desc); - -+ oc->conversion->desc = my_iconv_open(oc->conversion, "UTF-8", FONT_GREEK); -+ } -+ else -+ if (my_iconv_is_valid(oc->conversion->desc2)) /* AF - 0.21.0-rc2 */ -+ { -+ my_iconv_close(oc->conversion->desc); -+ oc->conversion->desc = oc->conversion->desc2; -+ my_iconv_t_make_invalid(&oc->conversion->desc2); -+ } - } - - -@@ -3652,37 +3664,227 @@ word_print_core (Word *w) - *=======================================================================*/ - - void --word_print (Word *w) -+word_print (const struct OutputContext *oc, Word *w) - { -- CHECK_PARAM_NOT_NULL (w); -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- if (!inline_mode) { -+ CHECK_PARAM_NOT_NULL (w); -+ -+ if (!oc->conversion->options->inline_mode) { - #if 1 /* AK3 - AF */ -- if (safe_printf(0, op->document_begin)) fprintf(stderr, TOO_MANY_ARGS, "document_begin"); -- if (safe_printf(0, op->header_begin)) fprintf(stderr, TOO_MANY_ARGS, "header_begin"); -- if (safe_printf(0, op->utf8_encoding)) fprintf(stderr, TOO_MANY_ARGS, "utf8_encoding"); -+ if (safe_printf(device, 0, oc->personality->document_begin)) fprintf(stderr, TOO_MANY_ARGS, "document_begin"); -+ if (safe_printf(device, 0, oc->personality->header_begin)) fprintf(stderr, TOO_MANY_ARGS, "header_begin"); -+ if (safe_printf(device, 0, oc->personality->utf8_encoding)) fprintf(stderr, TOO_MANY_ARGS, "utf8_encoding"); - #else -- printf(op->document_begin); -- printf(op->header_begin); -+ printf(oc->personality->document_begin); -+ printf(oc->personality->header_begin); - #endif -- } -+ } - -- print_banner (); -+ print_banner (oc); - -- within_header=TRUE; -- have_printed_body=FALSE; -- within_table=FALSE; -- simulate_allcaps=FALSE; -- word_print_core (w); -- end_table(); -+ oc->conversion->within_header=TRUE; -+ oc->conversion->have_printed_body=FALSE; -+ oc->conversion->within_table=FALSE; -+ oc->conversion->simulate_allcaps=FALSE; -+ word_print_core (oc, w); -+ end_table (oc); - -- if (!inline_mode) { -+ if (!oc->conversion->options->inline_mode) { - #if 1 /* AK3 - AF */ -- if (safe_printf(0, op->body_end)) fprintf(stderr, TOO_MANY_ARGS, "body_end"); -- if (safe_printf(0, op->document_end)) fprintf(stderr, TOO_MANY_ARGS, "document_end"); -+ if (safe_printf(device, 0, oc->personality->body_end)) fprintf(stderr, TOO_MANY_ARGS, "body_end"); -+ if (safe_printf(device, 0, oc->personality->document_end)) fprintf(stderr, TOO_MANY_ARGS, "document_end"); - #else -- printf(op->body_end); -- printf(op->document_end); -+ printf(oc->personality->body_end); -+ printf(oc->personality->document_end); - #endif -- } -+ } -+} -+ -+/* public functions */ -+void unrtf_set_output_device (unRTFOptions *options, unrtf_output_device_func output_func, void *output_data) -+{ -+ options->device.print = output_func; -+ options->device.data = output_data; -+} -+ -+/*======================================================================== -+ * Name: main -+ * Purpose: Main control function. -+ * Args: Args. -+ * Returns: Exit code. -+ *=======================================================================*/ -+ -+static int stdout_print(void *null, const char *data, size_t data_len) -+{ -+ return printf ("%s", data); -+} -+ -+static char *format_path(const unRTFOptions *options) -+{ -+ size_t fullname_len; -+ char *fullname; -+ -+ if (!options->output_format || !options->config_directory) -+ return 0; -+ -+ fullname_len = strlen (options->output_format) + strlen (options->config_directory) + 6; -+ fullname = malloc(fullname_len + 1); -+ sprintf (fullname, "%s/%s.conf", options->config_directory, options->output_format); -+ -+ return fullname; -+} -+ -+/* TODO: make use of mmap */ -+int unrtf_convert_from_string (unRTFOptions *options, const char *input_str, size_t input_len) -+{ -+ Word *word; -+ char *path, *env_path_p; -+ ConversionContext cc; -+ OutputContext oc; -+ -+ if (!options) -+ return 0; -+ -+ if (!input_str || !input_len) -+ return 0; -+ -+ if (!options->output_format) -+ options->output_format = DEFAULT_OUTPUT; -+ if (!options->config_directory) -+ { -+ if ((env_path_p = getenv("UNRTF_SEARCH_PATH")) != NULL) -+ { -+ if (options->verbose_mode) -+ fprintf (stderr, "got environment path: %s\n", env_path_p); -+ options->config_directory = env_path_p; -+ } -+ else -+ options->config_directory = DEFAULT_UNRTF_SEARCH_PATH; -+ } -+ -+ path = format_path(options); -+ if (!path) -+ return 0; -+ -+ if (access(path, R_OK) != 0) -+ { -+ free (path); -+ return 0; -+ } -+ -+ if (!options->device.print) -+ unrtf_set_output_device (options, stdout_print, NULL); -+ -+ memset (&cc, 0, sizeof (struct ConversionContext)); -+ -+ hash_init (&cc); -+ -+ cc.read_buf = input_str; -+ cc.read_buf_end = input_len; -+ -+ cc.current_max_length = 1; -+ cc.ungot_char = -1; -+ cc.ungot_char2 = -1; -+ cc.ungot_char3 = -1; -+ -+ cc.picture_file_number=1; -+ cc.picture_bits_per_pixel=1; -+ cc.picture_type = PICT_UNKNOWN; -+ -+ cc.desc.desc = (iconv_t) -1; -+ cc.desc2.desc = (iconv_t) -1; -+ -+ cc.options = options; -+ -+ oc.personality = user_init(&cc, path); -+ oc.conversion = &cc; -+ -+ /* All the work starts here. word_read() should keep reading words until -+ * the end of the file. */ -+ word = word_read(&cc); -+ -+ if (options->dump_mode) { -+ word_dump(&cc, word); -+ printf("\n"); -+ } else { -+ /* Should we also optimize word before dump? - AF */ -+ /* word = optimize_word(oc.conversion, word); */ -+ word_print(&oc, word); -+ } -+ -+ /* marcossamaral - 0.19.9 */ -+ if (options->verbose_mode || options->debug_mode) { -+ unsigned long total=0; -+ total = hash_stats(&cc); -+ fprintf(stderr, "Done.\n"); -+ fprintf(stderr, "%lu words were hashed.\n", total); -+ } -+ -+ if (options->debug_mode) { -+ fprintf(stderr, "Total memory allocated %ld bytes.\n", -+ total_malloced()); -+ } -+ -+ hash_free(&cc); -+ if (cc.input_str) -+ unrtf_free(cc.input_str); -+ word_free(word); -+ fonttable_free(oc.conversion); -+ if (my_iconv_is_valid(oc.conversion->desc)) -+ my_iconv_close(oc.conversion->desc); -+ op_free (oc.personality); -+ free (path); -+ -+ return 1; /* success */ -+} -+ -+int unrtf_convert_from_filename (unRTFOptions *options, const char *filename) -+{ -+ FILE *f; -+ size_t read_len, total_len, max_len; -+ char *content; -+ char buffer[4096]; -+ int is_stdin = 0, rc; -+ -+ if (!filename || strcmp(filename, "-") == 0) -+ { -+ is_stdin = 1; -+ f = stdin; -+ filename = ""; -+ } -+ else -+ { -+ f = fopen (filename, "r"); -+ if (!f) -+ return 0; -+ } -+ -+ if (options->verbose_mode || options->debug_mode) fprintf(stderr, "Processing %s...\n", filename); -+ -+ max_len = 4096; -+ total_len = 0; -+ content = malloc (max_len + 1); -+ do -+ { -+ read_len = fread (buffer, sizeof (char), 4096, f); -+ memcpy (content + total_len, buffer, read_len); -+ total_len += read_len; -+ if (total_len + 4096 > max_len) -+ { -+ max_len = total_len + 4096; -+ content = realloc (content, max_len + 1); -+ } -+ } -+ while (read_len == 4096); -+ -+ if (!is_stdin) -+ fclose (f); -+ -+ content[total_len] = 0; -+ rc = unrtf_convert_from_string (options, content, total_len); -+ -+ free (content); -+ -+ return rc; - } -diff -durpN unrtf-0.21.2.old/src/convert.h unrtf-0.21.2/src/convert.h ---- unrtf-0.21.2.old/src/convert.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/convert.h 2013-01-17 02:41:09.685864239 +0100 -@@ -36,18 +36,135 @@ - - #ifndef _CONVERT - -+#include "my_iconv.h" -+ - enum { -- CHARSET_ANSI=1, -- CHARSET_MAC, -- CHARSET_CP437, -- CHARSET_CP850, -+ CHARSET_ANSI=1, -+ CHARSET_MAC, -+ CHARSET_CP437, -+ CHARSET_CP850, - }; - - #ifndef _WORD - #include "word.h" - #endif - --extern void word_print (Word*); -+typedef struct { -+ int num; -+ char *name; -+} FontEntry; -+ -+#define MAX_FONTS (8192) -+ -+/* RTF color table colors are RGB */ -+ -+typedef struct { -+ unsigned char r,g,b; -+} Color; -+ -+#define MAX_COLORS (1024) -+ -+/* For each RTF text block (the text within braces) we must keep -+ * an AttrStack which is a stack of attributes and their optional -+ * parameter. Since RTF text blocks are nested, these make up a -+ * stack of stacks. And, since RTF text blocks inherit attributes -+ * from parent blocks, all new AttrStacks do the same from -+ * their parent AttrStack. -+ */ -+#define MAX_ATTRS (10000) -+ -+typedef struct _stack { -+ unsigned char attr_stack[MAX_ATTRS]; -+ char *attr_stack_params[MAX_ATTRS]; -+ int tos; -+ struct _stack *next; -+} AttrStack; -+ -+typedef struct _hi { -+ struct _hi *next; -+ char *str; -+ unsigned long value; -+} HashItem; -+ -+typedef struct ConversionContext { -+ const struct unRTFOptions *options; -+ -+ HashItem *hash[256]; -+ unsigned long hash_length[256]; -+ unsigned long hash_value; -+ -+ int lineno; /* Used for error reporting and final line count. */ -+ -+ int banner_printed; -+ -+ int within_picture; -+ int picture_file_number; -+ char picture_path[256]; -+ int picture_width; -+ int picture_height; -+ int picture_bits_per_pixel; -+ int picture_type; -+ int picture_wmetafile_type; -+ char *picture_wmetafile_type_str; -+ -+ int have_printed_body; -+ int within_header; -+ -+ char *hyperlink_base; -+ -+ FontEntry font_table[MAX_FONTS]; -+ int total_fonts; -+ -+ Color color_table[MAX_COLORS]; -+ int total_colors; -+ -+ my_iconv_t desc; -+ my_iconv_t desc2; -+ -+ /* Previously in word_print_core function -+ */ -+ int total_chars_this_line; /* for simulating \tab */ -+ -+ /* This value is set by attr_push and attr_pop -+ */ -+ int simulate_smallcaps; -+ int simulate_allcaps; -+ -+ int coming_pars_that_are_tabular; -+ int within_table; -+ int have_printed_row_begin; -+ int have_printed_cell_begin; -+ int have_printed_row_end; -+ int have_printed_cell_end; -+ -+ /* attr.c */ -+ AttrStack *stack_of_stacks; -+ AttrStack *stack_of_stacks_top; -+ -+ /* word.c */ -+ int indent_level; -+ -+ /* parse.c */ -+ char *input_str; -+ unsigned long current_max_length; -+ int ungot_char; -+ int ungot_char2; -+ int ungot_char3; -+ int last_returned_ch; -+ int buffer_size; -+ -+ const char *read_buf; -+ int read_buf_end; -+ int read_buf_index; -+ -+} ConversionContext; -+ -+struct OutputContext; -+ -+extern void word_print (const struct OutputContext *, Word*); -+extern void starting_body(const struct OutputContext *); -+extern void starting_text(const struct OutputContext *); -+ - #define FONT_GREEK "cp1253" - #define FONT_SYMBOL "SYMBOL" - -diff -durpN unrtf-0.21.2.old/src/defs.h unrtf-0.21.2/src/defs.h ---- unrtf-0.21.2.old/src/defs.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/defs.h 2013-01-17 02:41:09.685864239 +0100 -@@ -64,9 +64,6 @@ - #define SKIP_ONE_WORD 2 - #endif - --#define USAGE "unrtf [--version] [--verbose] [--help] [--nopict|-n] [--noremap] [--html] [--text] [--vt] [--latex] [--rtf] [-P config_search_path] [-t )] " -- -- - /* Default names for RTF's default fonts */ - #define FONTNIL_STR "Times,TimesRoman,TimesNewRoman" - #define FONTROMAN_STR "Times,Palatino" -@@ -76,3 +73,6 @@ - #define FONTDECOR_STR "ZapfChancery" - #define FONTTECH_STR "Symbol" - -+/* This one should be deduce from the configure script */ -+#define DEFAULT_UNRTF_SEARCH_PATH "/usr/local/lib/unrtf/" -+#define DEFAULT_OUTPUT "html" -diff -durpN unrtf-0.21.2.old/src/.deps/attr.Po unrtf-0.21.2/src/.deps/attr.Po ---- unrtf-0.21.2.old/src/.deps/attr.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/attr.Po 2013-01-17 02:47:40.017847101 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/convert.Po unrtf-0.21.2/src/.deps/convert.Po ---- unrtf-0.21.2.old/src/.deps/convert.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/convert.Po 2013-01-17 02:47:40.021847101 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/error.Po unrtf-0.21.2/src/.deps/error.Po ---- unrtf-0.21.2.old/src/.deps/error.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/error.Po 2013-01-17 02:47:40.025847101 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/hash.Po unrtf-0.21.2/src/.deps/hash.Po ---- unrtf-0.21.2.old/src/.deps/hash.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/hash.Po 2013-01-17 02:47:40.029847100 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/main.Po unrtf-0.21.2/src/.deps/main.Po ---- unrtf-0.21.2.old/src/.deps/main.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/main.Po 2013-01-17 02:47:40.033847100 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/malloc.Po unrtf-0.21.2/src/.deps/malloc.Po ---- unrtf-0.21.2.old/src/.deps/malloc.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/malloc.Po 2013-01-17 02:47:40.033847100 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/my_iconv.Po unrtf-0.21.2/src/.deps/my_iconv.Po ---- unrtf-0.21.2.old/src/.deps/my_iconv.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/my_iconv.Po 2013-01-17 02:47:40.037847100 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/output.Po unrtf-0.21.2/src/.deps/output.Po ---- unrtf-0.21.2.old/src/.deps/output.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/output.Po 2013-01-17 02:47:40.041847100 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/parse.Po unrtf-0.21.2/src/.deps/parse.Po ---- unrtf-0.21.2.old/src/.deps/parse.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/parse.Po 2013-01-17 02:47:40.045847100 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/path.Po unrtf-0.21.2/src/.deps/path.Po ---- unrtf-0.21.2.old/src/.deps/path.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/path.Po 2013-01-17 02:47:40.049847100 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/unicode.Po unrtf-0.21.2/src/.deps/unicode.Po ---- unrtf-0.21.2.old/src/.deps/unicode.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/unicode.Po 2013-01-17 02:47:40.053847099 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/user.Po unrtf-0.21.2/src/.deps/user.Po ---- unrtf-0.21.2.old/src/.deps/user.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/user.Po 2013-01-17 02:47:40.057847099 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/util.Po unrtf-0.21.2/src/.deps/util.Po ---- unrtf-0.21.2.old/src/.deps/util.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/util.Po 2013-01-17 02:47:40.061847099 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/.deps/word.Po unrtf-0.21.2/src/.deps/word.Po ---- unrtf-0.21.2.old/src/.deps/word.Po 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/.deps/word.Po 2013-01-17 02:47:40.061847099 +0100 -@@ -0,0 +1 @@ -+# dummy -diff -durpN unrtf-0.21.2.old/src/error.c unrtf-0.21.2/src/error.c ---- unrtf-0.21.2.old/src/error.c 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/error.c 2013-01-17 02:41:09.685864239 +0100 -@@ -51,27 +51,11 @@ - #include - #endif - -+#include "convert.h" - #include "defs.h" - #include "main.h" - - -- --/*======================================================================== -- * Name: usage -- * Purpose: Prints usage information and exits with an error. -- * Args: None. -- * Returns: None. -- *=======================================================================*/ -- --void --usage () --{ -- fprintf(stderr, "Usage: %s\n", USAGE); -- exit(-3); --} -- -- -- - /*======================================================================== - * Name: error_handler - * Purpose: Prints error message and other useful info, then exits. -@@ -80,10 +64,10 @@ usage () - *=======================================================================*/ - - void --error_handler (char* message) -+error_handler (const struct ConversionContext *cc, char* message) - { - #if 1 -- fprintf(stderr, "Error (line %d): %s\n", lineno, message); -+ fprintf(stderr, "Error (line %d): %s\n", cc->lineno, message); - #else - fprintf(stderr, "Error: %s\n", message); - #endif -diff -durpN unrtf-0.21.2.old/src/error.h unrtf-0.21.2/src/error.h ---- unrtf-0.21.2.old/src/error.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/error.h 2013-01-17 02:41:09.685864239 +0100 -@@ -37,9 +37,10 @@ - - #define CHECK_MALLOC_SUCCESS(XX) { if ((XX)==NULL) { fprintf (stderr, "internal error: cannot allocate memory in %s at %d\n", __FILE__, __LINE__); exit (1); }} - -+struct ConversionContext; - - extern void usage(void); --extern void error_handler (char*); -+extern void error_handler (const struct ConversionContext *, char*); - extern void warning_handler (char*); - - -diff -durpN unrtf-0.21.2.old/src/GNUmakefile unrtf-0.21.2/src/GNUmakefile ---- unrtf-0.21.2.old/src/GNUmakefile 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/GNUmakefile 2013-01-17 02:43:38.797857692 +0100 -@@ -0,0 +1,34 @@ -+# -*-makefile-*- -+ -+# GNUstep makefile -+ -+include $(GNUSTEP_MAKEFILES)/common.make -+ -+UNRTF = unrtf -+ -+SUBPROJECT_NAME = $(UNRTF) -+ -+$(UNRTF)_C_FILES = \ -+ attr.c \ -+ convert.c \ -+ error.c \ -+ hash.c \ -+ malloc.c \ -+ my_iconv.c \ -+ output.c \ -+ parse.c \ -+ unicode.c \ -+ user.c \ -+ util.c \ -+ word.c -+ -+$(UNRTF)_CFLAGS = -DHAVE_CONFIG_H=1 -I. -I../ -+ -+# Option include to set any additional variables -+-include GNUmakefile.preamble -+ -+# Include in the rules for making libraries -+include $(GNUSTEP_MAKEFILES)/subproject.make -+ -+# Option include to define any additional rules -+-include GNUmakefile.postamble -diff -durpN unrtf-0.21.2.old/src/hash.c unrtf-0.21.2/src/hash.c ---- unrtf-0.21.2.old/src/hash.c 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/hash.c 2013-01-17 02:43:16.581858668 +0100 -@@ -53,24 +53,20 @@ - #include - #endif - -+#ifdef HAVE_STDLIB_H -+#include -+#endif -+ -+#ifdef HAVE_STDINT_H -+#include -+#endif -+ -+#include "convert.h" - #include "error.h" - #include "main.h" - #include "malloc.h" - -- --typedef struct _hi { -- struct _hi *next; -- char *str; -- unsigned long value; --} HashItem; -- -- --/* Index by first char of string */ --static HashItem *hash[256]; --static unsigned long hash_length[256]; --static unsigned long hash_value=0; -- -- -+#include "hash.h" - - /*======================================================================== - * Name: hash_init -@@ -80,13 +76,13 @@ static unsigned long hash_value=0; - *=======================================================================*/ - - void --hash_init () -+hash_init (struct ConversionContext *cc) - { -- int i; -- for (i=0; i<256; i++) { -- hash[i]=NULL; -- hash_length[i]=0; -- } -+ int i; -+ for (i=0; i<256; i++) { -+ cc->hash[i]=NULL; -+ cc->hash_length[i]=0; -+ } - } - - -@@ -101,14 +97,14 @@ hash_init () - *=======================================================================*/ - - unsigned long --hash_stats () -+hash_stats (struct ConversionContext *cc) - { -- int i; -- unsigned long total=0; -- for (i=0; i<256; i++) { -- total += hash_length[i]; -- } -- return(total); -+ int i; -+ unsigned long total=0; -+ for (i=0; i<256; i++) { -+ total += cc->hash_length[i]; -+ } -+ return(total); - } - - -@@ -121,32 +117,32 @@ hash_stats () - *=======================================================================*/ - - static HashItem * --hashitem_new (char *str) -+hashitem_new (struct ConversionContext *cc, char *str) - { -- HashItem *hi; -- unsigned long i; -- -- hi=(HashItem*) my_malloc(sizeof(HashItem)); -- if (!hi) -- error_handler("Out of memory"); -- memset ((void*)hi, 0, sizeof (HashItem)); -- -- hi->str = my_strdup(str); -+ HashItem *hi; -+ unsigned long i; - -- i = *str; -- if (i=='\\') i=str[1]; -- i <<= 24; -- hi->value = i | (hash_value++ & 0xffffff); -- hi->next = NULL; -+ hi=(HashItem*) unrtf_malloc(sizeof(HashItem)); -+ if (!hi) -+ error_handler(cc, "Out of memory"); -+ memset ((void*)hi, 0, sizeof (HashItem)); -+ -+ hi->str = unrtf_strdup(cc, str); -+ -+ i = *str; -+ if (i=='\\') i=str[1]; -+ i <<= 24; -+ hi->value = i | (cc->hash_value++ & 0xffffff); -+ hi->next = NULL; - - #if 0 -- if (debug_mode) { -- printf ("\n", -- hi->value, hi->str); -- } -+ if (debug_mode) { -+ printf ("\n", -+ hi->value, hi->str); -+ } - #endif - -- return hi; -+ return hi; - } - - -@@ -158,7 +154,7 @@ hashitem_new (char *str) - *=======================================================================*/ - - unsigned long --hash_get_index (char *str) -+hash_get_index (struct ConversionContext *cc, char *str) - { - #if 1 /* daved - 0.19.1 */ - unsigned short index; -@@ -177,17 +173,17 @@ hash_get_index (char *str) - if (ch=='\\' && *(str+1)) - ch = *(str+1); - index = ch; -- hi = hash[index]; -+ hi = cc->hash[index]; - while (hi) { - if (!strcmp(hi->str,str)) - return hi->value; - hi=hi->next; - } - /* not in hash */ -- hi = hashitem_new (str); -- hi->next = hash[index]; -- hash [index] = hi; -- ++hash_length [index]; -+ hi = hashitem_new (cc, str); -+ hi->next = cc->hash[index]; -+ cc->hash [index] = hi; -+ ++cc->hash_length [index]; - return hi->value; - } - -@@ -201,13 +197,13 @@ hash_get_index (char *str) - *=======================================================================*/ - - char* --hash_get_string (unsigned long value) -+hash_get_string (const struct ConversionContext *cc, unsigned long value) - { -- int index; -+ uint8_t index; - HashItem *hi; - -- index = value >> 24; -- hi = hash[index]; -+ index = (uint8_t)(value >> 24); -+ hi = cc->hash[index]; - while (hi) { - if (hi->value == value) - return hi->str; -@@ -216,3 +212,27 @@ hash_get_string (unsigned long value) - warning_handler("Word not in hash"); - return NULL; - } -+ -+static void -+hashitem_free (HashItem *item) -+{ -+ HashItem *next = item->next; -+ -+ unrtf_free (item->str); -+ free (item); -+ if (next) -+ hashitem_free(next); -+} -+ -+void -+hash_free (struct ConversionContext *cc) -+{ -+ int i; -+ for (i=0; i<256; i++) { -+ if (cc->hash[i]) { -+ hashitem_free(cc->hash[i]); -+ } -+ cc->hash[i]=NULL; -+ cc->hash_length[i]=0; -+ } -+} -diff -durpN unrtf-0.21.2.old/src/hash.h unrtf-0.21.2/src/hash.h ---- unrtf-0.21.2.old/src/hash.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/hash.h 2013-01-17 02:41:09.685864239 +0100 -@@ -32,11 +32,15 @@ - * 16 Dec 07, daved@physiol.usyd.edu.au: updated to GPL v3 - *--------------------------------------------------------------------*/ - -+#ifndef HASH_H -+#define HASH_H 1 - -+struct ConversionContext; - --extern void hash_init (void); --extern unsigned long hash_stats (void); --extern unsigned long hash_get_index (char *); --extern char* hash_get_string (unsigned long ); -- -+extern void hash_init (struct ConversionContext *); -+extern unsigned long hash_stats (struct ConversionContext *); -+extern unsigned long hash_get_index (struct ConversionContext *, char *); -+extern char* hash_get_string (const struct ConversionContext *, unsigned long); -+extern void hash_free (struct ConversionContext *); - -+#endif /* HASH_H */ -diff -durpN unrtf-0.21.2.old/src/main.c unrtf-0.21.2/src/main.c ---- unrtf-0.21.2.old/src/main.c 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/main.c 2013-01-17 02:41:09.685864239 +0100 -@@ -1,23 +1,23 @@ - /*============================================================================= -- GNU UnRTF, a command-line program to convert RTF documents to other formats. -- Copyright (C) 2000, 2001, 2004 by Zachary Smith -+ GNU UnRTF, a command-line program to convert RTF documents to other formats. -+ Copyright (C) 2000, 2001, 2004 by Zachary Smith - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -- (at your option) any later version. -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. - -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -- The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au --=============================================================================*/ -+ The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au -+ =============================================================================*/ - - - /*---------------------------------------------------------------------- -@@ -45,7 +45,7 @@ - * 17 Dec 07, daved@physiol.usyd.edu.au: support for --noremap from - * David Santinoli - * 09 Nov 08, arkadiusz.firus@gmail.com: support for -t -- and read stdin if no input file provided -+ and read stdin if no input file provided - * 13 Dec 08, daved@physiol.usyd.edu.au: search path code - * 17 Jan 10, daved@physiol.usyd.edu.au: change search path to directory - * containing output conf and font charmap files -@@ -70,263 +70,136 @@ - #include - - #include "defs.h" --#include "error.h" --#include "word.h" --#include "convert.h" --#include "parse.h" --#include "hash.h" --#include "malloc.h" --#include "path.h" -+#include "unrtf.h" - --#include "output.h" --#include "user.h" - #include "main.h" --#include "util.h" -- --int nopict_mode; /* TRUE => Do not write \pict's to files */ --int dump_mode; /* TRUE => Output a dump of the RTF word tree */ --int debug_mode; /* TRUE => Output debug comments within HTML */ --int lineno; /* Used for error reporting and final line count. */ --int simple_mode; /* TRUE => Output HTML without SPAN/DIV tags -- This would -- probably be more useful if we could pull out tags -- as well. */ --int inline_mode; /* TRUE => Output HTML without HTML/BODY/HEAD -- This is -- buggy. I've seen it output pages of tags. */ --/* marcossamaral - 0.19.9 */ --int verbose_mode; /* TRUE => Output additional informations about unrtf */ --int no_remap_mode; /* don't remap codepoints */ -- -- --OutputPersonality *op = NULL; - - /*======================================================================== -- * Name: get_config -- * Purpose: Updates output acording to information found in file path. -- * Args: Path to configuration file, OutputPersonality, mode. -- If mode == 0 configuration file is defined by user. -- If mode == 1 configuration file is in CONFIG_DIR. -- * Returns: Updated OutputPersonality. -+ * Name: usage -+ * Purpose: Prints usage information and exits with an error. -+ * Args: None. -+ * Returns: None. - *=======================================================================*/ - --OutputPersonality * --get_config(char *path, OutputPersonality *op, int mode) -+void -+usage () - { -- char *absolute_path; -- char *user_path; -- char u_success=0; -- struct path_dir *path_dir_p; -- -- switch(mode) -- { -- case 0: -- if(n_path_dirs == 0) -- { -- fprintf(stderr,"no directories to search for %s\n", path); -- exit(1); -- } -- for(path_dir_p = &topdir; path_dir_p->dir_name; path_dir_p = path_dir_p->next) -- { -- char *p; -- p = path_dir_p->dir_name; -- if(*(p+strlen(p)-1) != '/') -- p = concatenate(p, "/"); -- p=concatenate(p, path); -- user_path=concatenate(p, ".conf"); -- if(access(user_path, F_OK|R_OK)) -- continue; -- op = user_init(op, user_path); -- u_success++; -- break; -- } -- if(!u_success) -- { -- fprintf(stderr, "failed to find %s.conf in search path dirs\n", path); -- exit(1); -- } -- break; -- case 1: -- path = concatenate(CONFIG_DIR, path); -- absolute_path = concatenate(path, ".conf"); -- op = user_init(op, absolute_path); -- my_free(absolute_path); -- break; -- default: -- error_handler("Error in function get_config (file main.c)."); -- } -- -- return op; -+ fprintf(stderr, "Usage: %s\n", USAGE); -+ exit(-3); - } - --/*======================================================================== -- * Name: main -- * Purpose: Main control function. -- * Args: Args. -- * Returns: Exit code. -- *=======================================================================*/ -- - int - main (int argc, char **argv) - { -- FILE *f; -- Word * word; -- char *path = NULL; -- char *env_path_p = '\0'; -- -- int i; -- nopict_mode = debug_mode = dump_mode = inline_mode = no_remap_mode = FALSE; -- /* initialize search path to compiled-in value */ -- search_path = DEFAULT_UNRTF_SEARCH_PATH; -+ unRTFOptions unrtf_options; -+ int show_version = 0, i, free_path = 0; -+ char *path = NULL, *old_path; -+ size_t path_len; - -- if((env_path_p = getenv("UNRTF_SEARCH_PATH")) != NULL) -- { -- if(verbose_mode) -- fprintf(stderr, "got environment path: %s\n", env_path_p); -- search_path=env_path_p; -- } -+ memset (&unrtf_options, 0, sizeof (unRTFOptions)); - -- /* Handle arguments */ -+ /* Handle arguments */ - -- for (i = 1; i < argc; i++) { -- if (!strcmp("--dump", argv[i])) dump_mode = TRUE; -- else if (!strcmp("-d", argv[i])) dump_mode = TRUE; -- else if (!strcmp("--debug", argv[i])) debug_mode = TRUE; -- else if (!strcmp("--verbose", argv[i])) verbose_mode = TRUE; -- else if (!strcmp("--simple", argv[i])) simple_mode = TRUE; -- else if (!strcmp("--noremap", argv[i])) no_remap_mode = TRUE; -- else if (!strcmp("-t", argv[i])) -- { -- if ((i + 1) < argc && *argv[i + 1] != '-') -- { -- i++; -- if(!path_checked && check_dirs() == 0) -- { -- fprintf(stderr,"no config dirs for %s\n", argv[i]); -- exit(1); -- } -- op = get_config(argv[i], op, 0); -- } -- } -- else if (!strcmp("-P", argv[i])) -- { -- if(i+1 > argc) -- { -- fprintf(stderr,"-P needs a path argument\n"); -- exit(1); -- } -- search_path=argv[++i]; -- } -- else if (!strcmp("--inline", argv[i])) inline_mode = TRUE; -- else if (!strcmp("--help", argv[i])) { -- usage(); -- } -- else if (!strcmp("--version", argv[i])) { -- fprintf(stderr, "%s\n", PACKAGE_VERSION); -- fprintf(stderr, "search path is: %s\n", search_path); -- exit(0); -- } -- else if (!strcmp("--nopict", argv[i])) nopict_mode = TRUE; -- else if (!strcmp("-n", argv[i])) nopict_mode = TRUE; -- else if (!strncmp("--", argv[i], 2)) -+ for (i = 1; i < argc; i++) { -+ if (!strcmp("--dump", argv[i])) unrtf_options.dump_mode = TRUE; -+ else if (!strcmp("-d", argv[i])) unrtf_options.dump_mode = TRUE; -+ else if (!strcmp("--debug", argv[i])) unrtf_options.debug_mode = TRUE; -+ else if (!strcmp("--verbose", argv[i])) unrtf_options.verbose_mode = TRUE; -+ else if (!strcmp("--simple", argv[i])) unrtf_options.simple_mode = TRUE; -+ else if (!strcmp("--noremap", argv[i])) unrtf_options.no_remap_mode = TRUE; -+ else if (!strcmp("-t", argv[i])) -+ { -+ if ((i + 1) < argc && *argv[i + 1] != '-') -+ { -+ i++; -+ unrtf_options.output_format = argv[i]; -+ } -+ else -+ { -+ fprintf(stderr, "-t needs a path argument\n"); -+ exit(1); -+ } -+ } -+ else if (!strcmp("-P", argv[i])) -+ { -+ if ((i + 1) < argc && *argv[i + 1] != '-') -+ { -+ i++; -+ unrtf_options.config_directory = argv[i]; -+ } -+ else -+ { -+ fprintf(stderr,"-P needs a path argument\n"); -+ exit(1); -+ } -+ } -+ else if (!strcmp("--inline", argv[i])) unrtf_options.inline_mode = TRUE; -+ else if (!strcmp("--help", argv[i])) { -+ usage(); -+ } -+ else if (!strcmp("--version", argv[i])) { -+ show_version = 1; -+ } -+ else if (!strcmp("--nopict", argv[i])) unrtf_options.nopict_mode = TRUE; -+ else if (!strcmp("-n", argv[i])) unrtf_options.nopict_mode = TRUE; -+ else if (!strncmp("--", argv[i], 2)) - #if 0 /* daved 0.21.1 */ -- op = get_config(&argv[i][2], op, 1) -+ op = get_config(&cc, &argv[i][2], op, 1) - #else -- { -- if(!path_checked && check_dirs() == 0) -- { -- fprintf(stderr,"no config dirs for %s\n", argv[i]); -- exit(1); -- } -- op = get_config(&argv[i][2], op, 0); -- } -+ { -+ unrtf_options.output_format = argv[i] + 2; -+ } - #endif -- else { -- if (*argv[i] == '-') usage(); -- -- if (path) -- usage(); -- else -- path = argv[i]; -- } -- } -- -- -- -- if (op == NULL) -- op = get_config(DEFAULT_OUTPUT, op, 1); -- if(!path_checked && check_dirs() == 0) -- { -- fprintf(stderr,"no config directories\n"); -- exit(1); -- } -- -- -- hash_init(); -- -- /* Program information */ -- if (verbose_mode || debug_mode) { -- fprintf(stderr, "This is UnRTF "); -- fprintf(stderr, "version %s\n", PACKAGE_VERSION); -- fprintf(stderr, "By Dave Davey, Marcos Serrou do Amaral and Arkadiusz Firus\n"); -- fprintf(stderr, "Original Author: Zachary Smith\n"); -- show_dirs(); -- } -- -- if (debug_mode) fprintf(stderr, "Debug mode.\n"); -- if (dump_mode) fprintf(stderr, "Dump mode.\n"); -- -- /* Open file for reading. Append ".rtf" to file name if not supplied. */ -- if (path == NULL) -- f = stdin; -- else -- { -- f = fopen(path, "r"); -- if (!f) { -- char path2[200]; -- strcpy(path2, path); -- strcat(path2, ".rtf"); -- f = fopen(path2, "r"); -- if (!f) -- error_handler("Cannot open input file"); -- } -- } -- -- if (verbose_mode || debug_mode) fprintf(stderr, "Processing %s...\n", path); -- -- /* Keep track of lines processed. This is arbitrary to the user as -- * RTF ignores newlines. May be helpful in error tracking. */ -- lineno = 0; -+ else { -+ if (*argv[i] == '-') usage(); - -- /* All the work starts here. word_read() should keep reading words until -- * the end of the file. */ -- word = word_read(f); -+ if (path) -+ usage(); -+ else -+ path = argv[i]; -+ } -+ } - -- if (dump_mode) { -- word_dump(word); -- printf("\n"); -- } else { --/* Should we also optimize word before dump? - AF */ -- word = optimize_word(word); -- word_print(word); -- } -+ if (show_version) { -+ fprintf(stderr, "%s\n", PACKAGE_VERSION); -+ fprintf(stderr, "search path is: %s\n", -+ (unrtf_options.config_directory -+ ? unrtf_options.config_directory : DEFAULT_UNRTF_SEARCH_PATH)); -+ exit(0); -+ } - -- fclose(f); -+ /* Program information */ -+ if (unrtf_options.verbose_mode || unrtf_options.debug_mode) { -+ fprintf(stderr, "This is UnRTF "); -+ fprintf(stderr, "version %s\n", PACKAGE_VERSION); -+ fprintf(stderr, "By Dave Davey, Marcos Serrou do Amaral and Arkadiusz Firus\n"); -+ fprintf(stderr, "Original Author: Zachary Smith\n"); -+ fprintf(stderr, "Configuration directory: %s\n", -+ (unrtf_options.config_directory -+ ? unrtf_options.config_directory -+ : DEFAULT_UNRTF_SEARCH_PATH)); -+ } - -- /* marcossamaral - 0.19.9 */ -- if(verbose_mode || debug_mode) { -- unsigned long total=0; -- total = hash_stats(); -- fprintf(stderr, "Done.\n"); -- fprintf(stderr, "%lu words were hashed.\n", total); -- } -+ if (unrtf_options.debug_mode) fprintf(stderr, "Debug mode.\n"); -+ if (unrtf_options.dump_mode) fprintf(stderr, "Dump mode.\n"); - -- if (debug_mode) { -- fprintf(stderr, "Total memory allocated %ld bytes.\n", -- total_malloced()); -- } -+ /* Check file access for reading. Append ".rtf" to file name if not supplied. */ -+ if (path && access(path, R_OK) != 0) { -+ path_len = strlen(path); -+ old_path = path; -+ path = malloc (path_len + 5); -+ sprintf (path, "%s.rtf", old_path); -+ if (access(path, R_OK) != 0) { -+ free (path); -+ fprintf (stderr, "Cannot access input file.\n"); -+ exit (10); -+ } -+ free_path = 1; -+ } - -- /* May as well */ -- word_free(word); -+ unrtf_convert_from_filename (&unrtf_options, path); -+ if (free_path) -+ free (path); - -- return 0; -+ return 0; - } -- -diff -durpN unrtf-0.21.2.old/src/main.h unrtf-0.21.2/src/main.h ---- unrtf-0.21.2.old/src/main.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/main.h 2013-01-17 02:41:09.685864239 +0100 -@@ -35,21 +35,8 @@ - * 17 Jan 10, daved@physiol.usyd.edu.au: change CONFIG_DIR to drop outputs/ - *--------------------------------------------------------------------*/ - -- --extern int lineno; --extern int debug_mode; --extern int simple_mode; --extern int inline_mode; --extern int no_remap_mode; -- -- - #ifndef _OUTPUT - #include "output.h" - #endif - --#define CONFIG_DIR "/usr/local/lib/unrtf/" --#define DEFAULT_OUTPUT "html" -- --extern OutputPersonality *op; -- -- -+#define USAGE "unrtf [--version] [--verbose] [--help] [--nopict|-n] [--noremap] [--html] [--text] [--vt] [--latex] [--rtf] [-P config_search_path] [-t )] " -diff -durpN unrtf-0.21.2.old/src/Makefile unrtf-0.21.2/src/Makefile ---- unrtf-0.21.2.old/src/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/Makefile 2013-01-17 02:52:06.525835400 +0100 -@@ -0,0 +1,494 @@ -+# Makefile.in generated by automake 1.11.1 from Makefile.am. -+# src/Makefile. Generated from Makefile.in by configure. -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -+# Inc. -+# This Makefile.in is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+ -+ -+# This is the Makefile.am that deals with the program proper. -+# It all works automagically. -+ -+ -+pkgdatadir = $(datadir)/unrtf -+pkgincludedir = $(includedir)/unrtf -+pkglibdir = $(libdir)/unrtf -+pkglibexecdir = $(libexecdir)/unrtf -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = x86_64-unknown-linux-gnu -+host_triplet = x86_64-unknown-linux-gnu -+bin_PROGRAMS = unrtf$(EXEEXT) -+subdir = src -+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+CONFIG_CLEAN_VPATH_FILES = -+am__installdirs = "$(DESTDIR)$(bindir)" -+PROGRAMS = $(bin_PROGRAMS) -+am_unrtf_OBJECTS = attr.$(OBJEXT) convert.$(OBJEXT) error.$(OBJEXT) \ -+ hash.$(OBJEXT) my_iconv.$(OBJEXT) main.$(OBJEXT) \ -+ malloc.$(OBJEXT) output.$(OBJEXT) parse.$(OBJEXT) \ -+ path.$(OBJEXT) unicode.$(OBJEXT) user.$(OBJEXT) util.$(OBJEXT) \ -+ word.$(OBJEXT) -+unrtf_OBJECTS = $(am_unrtf_OBJECTS) -+unrtf_LDADD = $(LDADD) -+DEFAULT_INCLUDES = -I. -I$(top_builddir) -+depcomp = $(SHELL) $(top_srcdir)/config/depcomp -+am__depfiles_maybe = depfiles -+am__mv = mv -f -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+SOURCES = $(unrtf_SOURCES) -+DIST_SOURCES = $(unrtf_SOURCES) -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = ${SHELL} /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2/config/missing --run aclocal-1.11 -+AMTAR = ${SHELL} /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2/config/missing --run tar -+AUTOCONF = ${SHELL} /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2/config/missing --run autoconf -+AUTOHEADER = ${SHELL} /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2/config/missing --run autoheader -+AUTOMAKE = ${SHELL} /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2/config/missing --run automake-1.11 -+AWK = mawk -+CC = gcc -+CCDEPMODE = depmode=gcc3 -+CFLAGS = -g -O2 -+CPP = gcc -E -+CPPFLAGS = -+CYGPATH_W = echo -+DEFS = -DHAVE_CONFIG_H -+DEPDIR = .deps -+ECHO_C = -+ECHO_N = -n -+ECHO_T = -+EGREP = /bin/grep -E -+EXEEXT = -+GREP = /bin/grep -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = ${INSTALL} -m 644 -+INSTALL_PROGRAM = ${INSTALL} -+INSTALL_SCRIPT = ${INSTALL} -+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -+LDFLAGS = -+LIBOBJS = -+LIBS = -+LTLIBOBJS = -+MAINT = # -+MAKEINFO = ${SHELL} /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2/config/missing --run makeinfo -+MKDIR_P = /bin/mkdir -p -+OBJEXT = o -+PACKAGE = unrtf -+PACKAGE_BUGREPORT = bug-unrtf@gnu.org -+PACKAGE_NAME = unrtf -+PACKAGE_STRING = unrtf 0.21.2 -+PACKAGE_TARNAME = unrtf -+PACKAGE_VERSION = 0.21.2 -+PATH_SEPARATOR = : -+SET_MAKE = -+SHELL = /bin/bash -+STRIP = -+VERSION = 0.21.2 -+abs_builddir = /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2/src -+abs_srcdir = /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2/src -+abs_top_builddir = /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2 -+abs_top_srcdir = /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2 -+ac_ct_CC = gcc -+am__include = include -+am__leading_dot = . -+am__quote = -+am__tar = ${AMTAR} chof - "$$tardir" -+am__untar = ${AMTAR} xf - -+bindir = ${exec_prefix}/bin -+build = x86_64-unknown-linux-gnu -+build_alias = -+build_cpu = x86_64 -+build_os = linux-gnu -+build_vendor = unknown -+builddir = . -+datadir = ${datarootdir} -+datarootdir = ${prefix}/share -+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -+dvidir = ${docdir} -+exec_prefix = ${prefix} -+host = x86_64-unknown-linux-gnu -+host_alias = -+host_cpu = x86_64 -+host_os = linux-gnu -+host_vendor = unknown -+htmldir = ${docdir} -+includedir = ${prefix}/include -+infodir = ${datarootdir}/info -+install_sh = ${SHELL} /home/jkerihuel/Projects/sogo/OpenChange/unrtf-0.21.2/config/install-sh -+libdir = ${exec_prefix}/lib -+libexecdir = ${exec_prefix}/libexec -+localedir = ${datarootdir}/locale -+localstatedir = ${prefix}/var -+mandir = ${datarootdir}/man -+mkdir_p = /bin/mkdir -p -+oldincludedir = /usr/include -+pdfdir = ${docdir} -+prefix = /usr/local -+program_transform_name = s,x,x, -+psdir = ${docdir} -+sbindir = ${exec_prefix}/sbin -+sharedstatedir = ${prefix}/com -+srcdir = . -+sysconfdir = ${prefix}/etc -+target_alias = -+top_build_prefix = ../ -+top_builddir = .. -+top_srcdir = .. -+unrtf_SOURCES = attr.c attr.h \ -+ convert.c convert.h \ -+ defs.h \ -+ error.c error.h \ -+ hash.c hash.h \ -+ my_iconv.c my_iconv.h \ -+ main.c main.h \ -+ malloc.c malloc.h \ -+ output.c output.h \ -+ parse.c parse.h \ -+ path.c path.h \ -+ unicode.c unicode.h \ -+ user.c user.h \ -+ util.c util.h \ -+ word.c word.h -+ -+all: all-am -+ -+.SUFFIXES: -+.SUFFIXES: .c .o .obj -+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ -+ && { if test -f $@; then exit 0; else break; fi; }; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ -+ $(am__cd) $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu src/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: # $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): # $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(am__aclocal_m4_deps): -+install-binPROGRAMS: $(bin_PROGRAMS) -+ @$(NORMAL_INSTALL) -+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" -+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ -+ for p in $$list; do echo "$$p $$p"; done | \ -+ sed 's/$(EXEEXT)$$//' | \ -+ while read p p1; do if test -f $$p; \ -+ then echo "$$p"; echo "$$p"; else :; fi; \ -+ done | \ -+ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ -+ sed 'N;N;N;s,\n, ,g' | \ -+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ -+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ -+ if ($$2 == $$4) files[d] = files[d] " " $$1; \ -+ else { print "f", $$3 "/" $$4, $$1; } } \ -+ END { for (d in files) print "f", d, files[d] }' | \ -+ while read type dir files; do \ -+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ -+ test -z "$$files" || { \ -+ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ -+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ -+ } \ -+ ; done -+ -+uninstall-binPROGRAMS: -+ @$(NORMAL_UNINSTALL) -+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ -+ files=`for p in $$list; do echo "$$p"; done | \ -+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -+ -e 's/$$/$(EXEEXT)/' `; \ -+ test -n "$$list" || exit 0; \ -+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ -+ cd "$(DESTDIR)$(bindir)" && rm -f $$files -+ -+clean-binPROGRAMS: -+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) -+unrtf$(EXEEXT): $(unrtf_OBJECTS) $(unrtf_DEPENDENCIES) -+ @rm -f unrtf$(EXEEXT) -+ $(LINK) $(unrtf_OBJECTS) $(unrtf_LDADD) $(LIBS) -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+include ./$(DEPDIR)/attr.Po -+include ./$(DEPDIR)/convert.Po -+include ./$(DEPDIR)/error.Po -+include ./$(DEPDIR)/hash.Po -+include ./$(DEPDIR)/main.Po -+include ./$(DEPDIR)/malloc.Po -+include ./$(DEPDIR)/my_iconv.Po -+include ./$(DEPDIR)/output.Po -+include ./$(DEPDIR)/parse.Po -+include ./$(DEPDIR)/path.Po -+include ./$(DEPDIR)/unicode.Po -+include ./$(DEPDIR)/user.Po -+include ./$(DEPDIR)/util.Po -+include ./$(DEPDIR)/word.Po -+ -+.c.o: -+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(COMPILE) -c $< -+ -+.c.obj: -+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -+ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ set x; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ shift; \ -+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ if test $$# -gt 0; then \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ "$$@" $$unique; \ -+ else \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$unique; \ -+ fi; \ -+ fi -+ctags: CTAGS -+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ test -z "$(CTAGS_ARGS)$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && $(am__cd) $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) "$$here" -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ list='$(DISTFILES)'; \ -+ dist_files=`for file in $$list; do echo $$file; done | \ -+ sed -e "s|^$$srcdirstrip/||;t" \ -+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -+ case $$dist_files in \ -+ */*) $(MKDIR_P) `echo "$$dist_files" | \ -+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -+ sort -u` ;; \ -+ esac; \ -+ for file in $$dist_files; do \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ if test -d $$d/$$file; then \ -+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test -d "$(distdir)/$$file"; then \ -+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -+ fi; \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -+ fi; \ -+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -+ else \ -+ test -f "$(distdir)/$$file" \ -+ || cp -p $$d/$$file "$(distdir)/$$file" \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-am -+all-am: Makefile $(PROGRAMS) -+installdirs: -+ for dir in "$(DESTDIR)$(bindir)"; do \ -+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ -+ done -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-am -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am -+ -+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am -+ -+distclean: distclean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -+html-am: -+ -+info: info-am -+ -+info-am: -+ -+install-data-am: -+ -+install-dvi: install-dvi-am -+ -+install-dvi-am: -+ -+install-exec-am: install-binPROGRAMS -+ -+install-html: install-html-am -+ -+install-html-am: -+ -+install-info: install-info-am -+ -+install-info-am: -+ -+install-man: -+ -+install-pdf: install-pdf-am -+ -+install-pdf-am: -+ -+install-ps: install-ps-am -+ -+install-ps-am: -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: uninstall-binPROGRAMS -+ -+.MAKE: install-am install-strip -+ -+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ -+ clean-generic ctags distclean distclean-compile \ -+ distclean-generic distclean-tags distdir dvi dvi-am html \ -+ html-am info info-am install install-am install-binPROGRAMS \ -+ install-data install-data-am install-dvi install-dvi-am \ -+ install-exec install-exec-am install-html install-html-am \ -+ install-info install-info-am install-man install-pdf \ -+ install-pdf-am install-ps install-ps-am install-strip \ -+ installcheck installcheck-am installdirs maintainer-clean \ -+ maintainer-clean-generic mostlyclean mostlyclean-compile \ -+ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ -+ uninstall-am uninstall-binPROGRAMS -+ -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: -diff -durpN unrtf-0.21.2.old/src/Makefile.am unrtf-0.21.2/src/Makefile.am ---- unrtf-0.21.2.old/src/Makefile.am 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/Makefile.am 2013-01-17 02:41:09.685864239 +0100 -@@ -13,7 +13,6 @@ unrtf_SOURCES = attr.c attr.h \ - malloc.c malloc.h \ - output.c output.h \ - parse.c parse.h \ -- path.c path.h \ - unicode.c unicode.h \ - user.c user.h \ - util.c util.h \ -diff -durpN unrtf-0.21.2.old/src/malloc.c unrtf-0.21.2/src/malloc.c ---- unrtf-0.21.2.old/src/malloc.c 2010-07-09 07:13:05.000000000 +0200 -+++ unrtf-0.21.2/src/malloc.c 2013-01-17 02:41:09.685864239 +0100 -@@ -28,6 +28,8 @@ - * much memory is being used. - *---------------------------------------------------------------------- - * Changes: -+ * 21 Aug 12, wsourdeau@inverse.ca: renamed "my_*" to "unrtf_*", to -+ * avoid symbol classes with other libraries - * 14 Aug 01, tuorfa@yahoo.com: added Turbo C support. - * 16 Aug 01, Lars Unger : added Amiga/GCC support. - * 22 Sep 01, tuorfa@yahoo.com: added function-level comment blocks -@@ -35,7 +37,7 @@ - * 08 Oct 03, daved@physiol.usyd.edu.au: added stdlib.h for linux - * 29 Mar 05, daved@physiol.usyd.edu.au: changes requested by ZT Smith - * 16 Dec 07, daved@physiol.usyd.edu.au: updated to GPL v3 -- * 09 Nov 08, arkadiusz.firus@gmail.com: added my_realloc -+ * 09 Nov 08, arkadiusz.firus@gmail.com: added unrtf_realloc - *--------------------------------------------------------------------*/ - - #ifdef HAVE_CONFIG_H -@@ -60,14 +62,14 @@ - static unsigned long count=0; - - /*======================================================================== -- * Name: my_malloc -+ * Name: unrtf_malloc - * Purpose: Internal version of malloc necessary for record keeping. - * Args: Amount. - * Returns: Pointer. - *=======================================================================*/ - - char * --my_malloc (unsigned long size) { -+unrtf_malloc (unsigned long size) { - char *ptr; - - ptr = malloc (size); -@@ -78,14 +80,14 @@ my_malloc (unsigned long size) { - } - - /*======================================================================== -- * Name: my_free -+ * Name: unrtf_free - * Purpose: Internal version of free necessary for record keeping. - * Args: Pointer. - * Returns: None. - *=======================================================================*/ - - void --my_free (char* ptr) { -+unrtf_free (char* ptr) { - CHECK_PARAM_NOT_NULL(ptr); - - free (ptr); -@@ -93,20 +95,20 @@ my_free (char* ptr) { - - #if 1 /* AK3 - AF */ - /*======================================================================== -- * Name: my_realloc -+ * Name: unrtf_realloc - * Purpose: Internal version of realloc necessary for record keeping. - * Args: Pointer. - * Returns: None. - *=======================================================================*/ - char * --my_realloc(char *ptr, unsigned long old_size, unsigned long new_size) -+unrtf_realloc(char *ptr, unsigned long old_size, unsigned long new_size) - { -- char *new_ptr = my_malloc(new_size); -+ char *new_ptr = unrtf_malloc(new_size); - - if (new_ptr != NULL) - memcpy(new_ptr, ptr, old_size); - -- my_free(ptr); -+ unrtf_free(ptr); - - return new_ptr; - } -@@ -128,26 +130,26 @@ total_malloced (void) { - - - /*======================================================================== -- * Name: my_strdup -+ * Name: unrtf_strdup - * Purpose: Internal version of strdup necessary for record keeping. - * Args: String. - * Returns: String. - *=======================================================================*/ - - char * --my_strdup (char *src) { -- unsigned long len; -- char *ptr; -+unrtf_strdup (struct ConversionContext *cc, char *src) { -+ unsigned long len; -+ char *ptr; - -- CHECK_PARAM_NOT_NULL(src); -+ CHECK_PARAM_NOT_NULL(src); - -- len = strlen(src); -- ptr = my_malloc (len+1); -- if (!ptr) -- error_handler ("out of memory in strdup()"); -+ len = strlen(src); -+ ptr = unrtf_malloc (len+1); -+ if (!ptr) -+ error_handler (cc, "out of memory in strdup()"); - -- strcpy (ptr, src); -- return ptr; -+ sprintf (ptr, "%s", src); -+ return ptr; - } - /* added by daved */ - #include -@@ -163,5 +165,5 @@ rpl_malloc (size_t n) - { - if (n == 0) - n = 1; --return malloc (n); -+ return malloc (n); - } -diff -durpN unrtf-0.21.2.old/src/malloc.c.orig unrtf-0.21.2/src/malloc.c.orig ---- unrtf-0.21.2.old/src/malloc.c.orig 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/malloc.c.orig 1970-01-01 01:00:00.000000000 +0100 -@@ -1,152 +0,0 @@ --/*============================================================================= -- GNU UnRTF, a command-line program to convert RTF documents to other formats. -- Copyright (C) 2000,2001,2004 by Zachary Smith -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -- -- The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au --=============================================================================*/ -- -- --/*---------------------------------------------------------------------- -- * Module name: malloc -- * Author name: Zachary Smith -- * Create date: 01 Aug 01 -- * Purpose: Memory management. Allows us to keep track of how -- * much memory is being used. -- *---------------------------------------------------------------------- -- * Changes: -- * 14 Aug 01, tuorfa@yahoo.com: added Turbo C support. -- * 16 Aug 01, Lars Unger : added Amiga/GCC support. -- * 22 Sep 01, tuorfa@yahoo.com: added function-level comment blocks -- * 28 Sep 01, tuorfa@yahoo.com: removed Turbo C support. -- * 08 Oct 03, daved@physiol.usyd.edu.au: added stdlib.h for linux -- * 29 Mar 05, daved@physiol.usyd.edu.au: changes requested by ZT Smith -- * 16 Dec 07, daved@physiol.usyd.edu.au: updated to GPL v3 -- * 09 Nov 08, arkadiusz.firus@gmail.com: added my_realloc -- *--------------------------------------------------------------------*/ -- --#ifdef HAVE_CONFIG_H --#include --#endif -- --#ifdef HAVE_STDIO_H --#include --#endif -- --#ifdef HAVE_STDLIB_H --#include --#endif -- --#ifdef HAVE_STRING_H --#include --#endif -- --#include "error.h" --#include "malloc.h" -- --static unsigned long count=0; -- --/*======================================================================== -- * Name: my_malloc -- * Purpose: Internal version of malloc necessary for record keeping. -- * Args: Amount. -- * Returns: Pointer. -- *=======================================================================*/ -- --char * --my_malloc (unsigned long size) { -- char *ptr; -- -- ptr = malloc (size); -- if (ptr) -- count += size; -- -- return ptr; --} -- --/*======================================================================== -- * Name: my_free -- * Purpose: Internal version of free necessary for record keeping. -- * Args: Pointer. -- * Returns: None. -- *=======================================================================*/ -- --void --my_free (char* ptr) { -- CHECK_PARAM_NOT_NULL(ptr); -- -- free (ptr); --} -- --#if 1 /* AK3 - AF */ --/*======================================================================== -- * Name: my_realloc -- * Purpose: Internal version of realloc necessary for record keeping. -- * Args: Pointer. -- * Returns: None. -- *=======================================================================*/ --char * --my_realloc(char *ptr, unsigned long old_size, unsigned long new_size) --{ -- char *new_ptr = my_malloc(new_size); -- -- if (new_ptr != NULL) -- memcpy(new_ptr, ptr, old_size); -- -- my_free(ptr); -- -- return new_ptr; --} --#endif -- --/*======================================================================== -- * Name: total_malloced -- * Purpose: Returns total amount of memory thus far allocated. Called at -- * the end of main() when in debug mode. -- * Args: None. -- * Returns: Amount. -- *=======================================================================*/ -- --unsigned long --total_malloced (void) { -- return count; --} -- -- -- --/*======================================================================== -- * Name: my_strdup -- * Purpose: Internal version of strdup necessary for record keeping. -- * Args: String. -- * Returns: String. -- *=======================================================================*/ -- --char * --my_strdup (char *src) { -- unsigned long len; -- char *ptr; -- -- CHECK_PARAM_NOT_NULL(src); -- -- len = strlen(src); -- ptr = my_malloc (len+1); -- if (!ptr) -- error_handler ("out of memory in strdup()"); -- -- strcpy (ptr, src); -- return ptr; --} -- -diff -durpN unrtf-0.21.2.old/src/malloc.h unrtf-0.21.2/src/malloc.h ---- unrtf-0.21.2.old/src/malloc.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/malloc.h 2013-01-17 02:41:09.685864239 +0100 -@@ -32,9 +32,10 @@ - * 09 Nov 08, arkadiusz.firus@gmail.com: added my_realloc - *--------------------------------------------------------------------*/ - --extern char * my_malloc (unsigned long); --extern void my_free (char*); --extern char * my_realloc(char*, unsigned long, unsigned long); --extern unsigned long total_malloced (void); --extern char * my_strdup (char*); -+struct ConversionContext; - -+extern char * unrtf_malloc (unsigned long); -+extern void unrtf_free (char*); -+extern char * unrtf_realloc(char*, unsigned long, unsigned long); -+extern unsigned long total_malloced (void); -+extern char * unrtf_strdup (struct ConversionContext *, char*); -diff -durpN unrtf-0.21.2.old/src/my_iconv.c unrtf-0.21.2/src/my_iconv.c ---- unrtf-0.21.2.old/src/my_iconv.c 2010-08-16 06:12:43.000000000 +0200 -+++ unrtf-0.21.2/src/my_iconv.c 2013-01-17 02:41:09.685864239 +0100 -@@ -12,154 +12,133 @@ - #include - #include - --#include "malloc.h" --#include "my_iconv.h" --#include "util.h" - #if 1 /* daved 0.21.1 */ - #include "unicode.h" --#include "path.h" - #include - #include - #endif - --extern int verbose_mode; -+#include "convert.h" -+#include "malloc.h" -+#include "my_iconv.h" -+#include "util.h" -+#include "unrtf.h" -+ -+#define MY_ICONV_T_CLEAR {(iconv_t) -1, NULL} - - my_iconv_t --my_iconv_open(const char *tocode, const char *fromcode) -+my_iconv_open(const struct ConversionContext *cc, const char *tocode, const char *fromcode) - { -- char *path; -- FILE *f; -- my_iconv_t cd = MY_ICONV_T_CLEAR; -- int c, i; -+ char *path; -+ FILE *f; -+ my_iconv_t cd = MY_ICONV_T_CLEAR; -+ int c, i; - -- if ((cd.desc = iconv_open(tocode, fromcode)) == (iconv_t) -1) -- { --#if 1 /* daved 0.21.1 */ -- struct path_dir *path_dir_p; -- char u_success=0; -- for(path_dir_p = &topdir; path_dir_p->dir_name; path_dir_p = path_dir_p->next) -- { -- char *p; -- p = path_dir_p->dir_name; -- if(*(p+strlen(p)-1) != '/') -- p = concatenate(p, "/"); -- p = concatenate(p, fromcode); -- path=concatenate(p, ".charmap"); -- if(access(path, F_OK|R_OK)) -- continue; -- u_success++; -- break; -- } -- if(!u_success) -- { --#else -- path = concatenate(CHARMAP_DIR, fromcode); --#endif --#if 1 /* daved 0.21.1 */ -- } -- if((f = fopen(path, "r")) == NULL && verbose_mode) -- fprintf(stderr, "failed to open charmap file %s\n", path); --#else -- f = fopen(path, "r"); --#endif -+ if ((cd.desc = iconv_open(tocode, fromcode)) == (iconv_t) -1) -+ { -+ path = unrtf_malloc((strlen(cc->options->config_directory) + strlen(fromcode) + 10) * sizeof(char)); -+ sprintf (path, "%s/%s.charmap", cc->options->config_directory, fromcode); - -- if (f != NULL) -- { -- cd.char_table = (char **)my_malloc(char_table_size * sizeof(char *)); -- c = fgetc(f); -+ if((f = fopen(path, "r")) == NULL && cc->options->verbose_mode) -+ fprintf(stderr, "failed to open charmap file %s\n", path); - -- for (i = 0; i < char_table_size && c != EOF; i++) -- { -- if (c == '<') -- cd.char_table[i] = get_unicode_char(f); -- leave_line(f); -- c = fgetc(f); -- } -+ if (f != NULL) -+ { -+ cd.char_table = (char **)unrtf_malloc(char_table_size * sizeof(char *)); -+ c = fgetc(f); - -- fclose(f); -- } -+ for (i = 0; i < char_table_size && c != EOF; i++) -+ { -+ if (c == '<') -+ cd.char_table[i] = get_unicode_char(f); -+ leave_line(f); -+ c = fgetc(f); -+ } - -- my_free(path); -- } -+ fclose(f); -+ } - -- return cd; -+ unrtf_free(path); -+ } -+ -+ return cd; - } - - size_t - my_iconv(my_iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) - { -- int c, i; -- size_t result = 0; -+ int c, i; -+ size_t result = 0; - -- if (cd.desc == (iconv_t) -1) { -- if (cd.char_table != NULL) -- { -- while (*inbytesleft > 0 && *outbytesleft > 0) -- { -- c = (int) **inbuf; -- if (c < 0) -- c = 256 + c; -+ if (cd.desc == (iconv_t) -1) { -+ if (cd.char_table != NULL) -+ { -+ while (*inbytesleft > 0 && *outbytesleft > 0) -+ { -+ c = (int) **inbuf; -+ if (c < 0) -+ c = 256 + c; - -- if (cd.char_table[c] != NULL) -- { -- for (i = 0; cd.char_table[c][i] != '\0' && *outbytesleft > 0; i++) -- { -- **outbuf = cd.char_table[c][i]; -- (*outbytesleft)--; -- (*outbuf)++; -- } -- } -+ if (cd.char_table[c] != NULL) -+ { -+ for (i = 0; cd.char_table[c][i] != '\0' && *outbytesleft > 0; i++) -+ { -+ **outbuf = cd.char_table[c][i]; -+ (*outbytesleft)--; -+ (*outbuf)++; -+ } -+ } - -- (*inbuf)++; -- (*inbytesleft)--; -- result++; -- } -- } -- } -- else -- result = iconv(cd.desc, inbuf, inbytesleft, outbuf, outbytesleft); -+ (*inbuf)++; -+ (*inbytesleft)--; -+ result++; -+ } -+ } -+ } -+ else -+ result = iconv(cd.desc, inbuf, inbytesleft, outbuf, outbytesleft); - -- return result; -+ return result; - } - - my_iconv_t - my_iconv_close(my_iconv_t cd) - { -- int i; -+ int i; - -- if (cd.char_table != NULL) -- { -- for (i = 0; i < char_table_size; i++) -- { -- my_free(cd.char_table[i]); -- } -+ if (cd.char_table != NULL) -+ { -+ for (i = 0; i < char_table_size; i++) -+ { -+ unrtf_free(cd.char_table[i]); -+ } - -- my_free((void *)cd.char_table); -- cd.char_table = NULL; -- } -+ unrtf_free((void *)cd.char_table); -+ cd.char_table = NULL; -+ } - -- if (cd.desc != (iconv_t) -1) -- { -- iconv_close(cd.desc); -- cd.desc = (iconv_t) -1; -- } -+ if (cd.desc != (iconv_t) -1) -+ { -+ iconv_close(cd.desc); -+ cd.desc = (iconv_t) -1; -+ } - -- return cd; -+ return cd; - } - - int - my_iconv_is_valid (my_iconv_t cd) - { -- if (cd.desc != (iconv_t) -1 || cd.char_table != NULL) -- return 1; -+ if (cd.desc != (iconv_t) -1 || cd.char_table != NULL) -+ return 1; - -- return 0; -+ return 0; - } - - void - my_iconv_t_make_invalid(my_iconv_t *cd) - { -- cd->desc = (iconv_t) -1; -- cd->char_table = NULL; -+ cd->desc = (iconv_t) -1; -+ cd->char_table = NULL; - } - -diff -durpN unrtf-0.21.2.old/src/my_iconv.h unrtf-0.21.2/src/my_iconv.h ---- unrtf-0.21.2.old/src/my_iconv.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/my_iconv.h 2013-01-17 02:41:09.685864239 +0100 -@@ -5,6 +5,9 @@ - * Purpose: my_conv definitions - *--------------------------------------------------------------------*/ - -+#ifndef _MY_ICONV -+#define _MY_ICONV 1 -+ - #ifndef HAVE_ICONV_H - #include - #define HAVE_ICONV_H -@@ -19,9 +22,9 @@ typedef struct - char **char_table; - } my_iconv_t; - --#define MY_ICONV_T_CLEAR {(iconv_t) -1, NULL} -+struct ConversionContext; - --my_iconv_t my_iconv_open(const char *tocode, const char *fromcode); -+my_iconv_t my_iconv_open(const struct ConversionContext *cc, const char *tocode, const char *fromcode); - - size_t my_iconv(my_iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); - -@@ -31,3 +34,4 @@ int my_iconv_is_valid(my_iconv_t cd); - - void my_iconv_t_make_invalid(my_iconv_t *cd); - -+#endif /* _MY_ICONV */ -diff -durpN unrtf-0.21.2.old/src/output.c unrtf-0.21.2/src/output.c ---- unrtf-0.21.2.old/src/output.c 2011-06-07 14:04:38.000000000 +0200 -+++ unrtf-0.21.2/src/output.c 2013-01-17 02:41:09.685864239 +0100 -@@ -1,23 +1,23 @@ - /*============================================================================= -- GNU UnRTF, a command-line program to convert RTF documents to other formats. -- Copyright (C) 2000,2001,2004 by Zachary Smith -+ GNU UnRTF, a command-line program to convert RTF documents to other formats. -+ Copyright (C) 2000,2001,2004 by Zachary Smith - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -- (at your option) any later version. -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. - -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -- The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au --=============================================================================*/ -+ The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au -+ =============================================================================*/ - - - /*---------------------------------------------------------------------- -@@ -38,7 +38,7 @@ - * David Santinoli - * 09 Nov 08, arkadiusz.firus@gmail.com: use iconv - * 21 Aug 10, daved@physiol.usyd.edu.au: add code to deal with character -- doublets (see convert.c) -+ doublets (see convert.c) - *--------------------------------------------------------------------*/ - - -@@ -64,7 +64,8 @@ - #include "output.h" - #include "main.h" - #include "convert.h" -- -+#include "unrtf.h" -+#include "user.h" - - #ifndef HAVE_ATTR_H - #include "attr.h" -@@ -79,16 +80,16 @@ - *=======================================================================*/ - - OutputPersonality* --op_create () -+op_create (const struct ConversionContext *cc) - { -- OutputPersonality* new_op; -+ OutputPersonality* new_op; - -- new_op = (OutputPersonality*) my_malloc (sizeof(OutputPersonality)); -- if (!new_op) -- error_handler ("cannot allocate output personality"); -+ new_op = (OutputPersonality*) unrtf_malloc (sizeof(OutputPersonality)); -+ if (!new_op) -+ error_handler (cc, "cannot allocate output personality"); - -- memset ((void*) new_op, 0, sizeof (OutputPersonality)); -- return new_op; -+ memset ((void*) new_op, 0, sizeof (OutputPersonality)); -+ return new_op; - } - - /*======================================================================== -@@ -102,13 +103,15 @@ op_create () - void - op_free (OutputPersonality *op) - { -- CHECK_PARAM_NOT_NULL(op); -- -- my_free ((void*) op); --} -+ CHECK_PARAM_NOT_NULL(op); - -+ free_user_definitions(op); - -+ if (op->aliases) -+ free_collection(op->aliases); - -+ unrtf_free ((void*) op); -+} - - /*======================================================================== - * Name: op_translate_char -@@ -119,102 +122,113 @@ op_free (OutputPersonality *op) - *=======================================================================*/ - - char * --op_translate_char (OutputPersonality *op, my_iconv_t cd, int ch) -+op_translate_char (const struct ConversionContext *cc, const OutputPersonality *op, int ch) - { -- short start; -- char *result=NULL; -- static char output_buffer[2]={ 0, 0 }; -- char *inbuf, *outbuf; -- size_t inbytes = (ch / 256) + 1, outbytes = inbytes * 4, i; -+ char *result=NULL; -+ static char output_buffer[2]={ 0, 0 }; -+ char *inbuf, *outbuf, *originbuf, *origoutbuf, *alias; -+ size_t inbytes = (ch / 256) + 1, outbytes = inbytes * 4, i; -+ my_iconv_t cd; - -- CHECK_PARAM_NOT_NULL(op); -+ CHECK_PARAM_NOT_NULL(op); - -- if (no_remap_mode == TRUE && ch < 256) -- { -- output_buffer[0]=ch; -- result=output_buffer; -- } -- else -- if (result == NULL) -- { -- inbuf = my_malloc(inbytes + 1); -- outbuf = my_malloc(outbytes + 1); -+ if (cc->options->no_remap_mode == TRUE && ch < 256) -+ { -+ output_buffer[0]=ch; -+ result=strdup(output_buffer); -+ } -+ else -+ if (result == NULL) -+ { -+ originbuf = inbuf = unrtf_malloc(inbytes + 1); -+ origoutbuf = outbuf = unrtf_malloc(outbytes + 1); - -- for (i = inbytes - 1; ch > 255; i--) -- { -- inbuf[i] = ch % 256; -- ch /= 256; -- } -+ for (i = inbytes - 1; ch > 255; i--) -+ { -+ inbuf[i] = ch % 256; -+ ch /= 256; -+ } - -- inbuf[0] = ch; -- inbuf[inbytes] = '\0'; -- i = outbytes; -- if (!my_iconv_is_valid(cd)) -- { -- cd = my_iconv_open("UTF-8", "cp1252"); -+ inbuf[0] = ch; -+ inbuf[inbytes] = '\0'; -+ i = outbytes; -+ if (!my_iconv_is_valid(cc->desc)) -+ { -+ cd = my_iconv_open(cc, "UTF-8", "cp1252"); - -- if (my_iconv(cd, &inbuf, &inbytes, &outbuf, &outbytes) == -1) -- { -+ if (my_iconv(cd, &inbuf, &inbytes, &outbuf, &outbytes) == -1) -+ { - #if 1 /* daved */ -- fprintf(stderr, "unrtf: Error in executing iconv1\n"); -+ fprintf(stderr, "unrtf: Error in executing iconv1\n"); - #else -- fprintf(stderr, "unrtf: Error in executing iconv1\n"); -+ fprintf(stderr, "unrtf: Error in executing iconv1\n"); - #endif -- return NULL; -- } -+ free (originbuf); -+ free (origoutbuf); -+ return NULL; -+ } - -- my_iconv_close(cd); -- } -- else -+ my_iconv_close(cd); -+ } -+ else - -- if (my_iconv(cd, &inbuf, &inbytes, &outbuf, &outbytes) == -1) -- { -- fprintf(stderr, "unrtf: Error in executing iconv\n"); -- return NULL; -- } -- *outbuf = '\0'; -- outbuf -= i - outbytes; --/* Conversion from string to utf8 code number */ -- inbytes = 0; -+ if (my_iconv(cc->desc, &inbuf, &inbytes, &outbuf, &outbytes) == -1) -+ { -+ fprintf(stderr, "unrtf: Error in executing iconv\n"); -+ free (originbuf); -+ free (origoutbuf); -+ return NULL; -+ } -+ *outbuf = '\0'; -+ outbuf -= i - outbytes; -+ /* Conversion from string to utf8 code number */ -+ inbytes = 0; - -- for (i = 0; outbuf[i] != '\0'; i++) -- inbytes++; -+ for (i = 0; outbuf[i] != '\0'; i++) -+ inbytes++; - -- ch = 0; -+ ch = 0; - -- for (i = 0; i < inbytes; i++) -- { -- if (i == 0) -- switch (inbytes) -- { -- case 1: -- ch = outbuf[0]; -- break; -- case 2: -- ch = (unsigned char) outbuf[0] - 192; -- break; -- case 3: -- ch = (unsigned char) outbuf[0] - 224; -- break; -- case 4: -- ch = (unsigned char) outbuf[0] - 240; -- break; -- } -- else -- ch = (ch * 64) + ((unsigned char) outbuf[i] - 128); -- } --/* End of conversion*/ -+ for (i = 0; i < inbytes; i++) -+ { -+ if (i == 0) -+ switch (inbytes) -+ { -+ case 1: -+ ch = outbuf[0]; -+ break; -+ case 2: -+ ch = (unsigned char) outbuf[0] - 192; -+ break; -+ case 3: -+ ch = (unsigned char) outbuf[0] - 224; -+ break; -+ case 4: -+ ch = (unsigned char) outbuf[0] - 240; -+ break; -+ } -+ else -+ ch = (ch * 64) + ((unsigned char) outbuf[i] - 128); -+ } -+ /* End of conversion*/ - -- result = get_alias(op, ch); -+ alias = get_alias(op, ch); - -- if (result == NULL) -- if (ch > 127 && op->unisymbol_print) -- result = assemble_string(op->unisymbol_print, ch); -- else -- result = outbuf; -- } -+ if (alias == NULL) -+ { -+ if (ch > 127 && op->unisymbol_print) -+ result = assemble_string(op->unisymbol_print, ch); -+ else -+ result = strdup(outbuf); -+ } -+ else -+ result = strdup(alias); - -- return result; -+ free (originbuf); -+ free (origoutbuf); -+ } -+ -+ return result; - } - - #if 0 /* daved - 0.21.2 */ -@@ -227,123 +241,122 @@ op_translate_char (OutputPersonality *op - *=======================================================================*/ - - char * --op_translate_str (OutputPersonality *op, my_iconv_t cd, int * doublet) -+op_translate_str (const struct ConversionContext *cc, OutputPersonality *op, my_iconv_t cd, int * doublet) - { -- short start; -- char *result=NULL; -- static char output_buffer[3]={ 0, 0, 0 }; -- unsigned char *inbuf; -- char *outbuf; -- int ch; -+ char *result=NULL; -+ static char output_buffer[3]={ 0, 0, 0 }; -+ unsigned char *inbuf; -+ char *outbuf; -+ int ch; - -- fprintf(stderr, "doublet = %o %o\n", *doublet, *(doublet+1)); -+ fprintf(stderr, "doublet = %o %o\n", *doublet, *(doublet+1)); - #if 0 -- size_t inbytes = (ch / 256) + 1, outbytes = inbytes * 4, i; -+ size_t inbytes = (ch / 256) + 1, outbytes = inbytes * 4, i; - #else -- size_t inbytes = 3, outbytes = inbytes * 4, i; -+ size_t inbytes = 3, outbytes = inbytes * 4, i; - #endif - -- CHECK_PARAM_NOT_NULL(op); -+ CHECK_PARAM_NOT_NULL(op); - - #if 0 -- if (no_remap_mode == TRUE && ch < 256) -- { -- output_buffer[0]=ch; -- result=output_buffer; -- } -- else -- if (result == NULL) -- { -+ if (cc->options->no_remap_mode == TRUE && ch < 256) -+ { -+ output_buffer[0]=ch; -+ result=output_buffer; -+ } -+ else -+ if (result == NULL) -+ { - #endif -- inbuf = (char *) my_malloc(inbytes + 1); -- *inbuf = *doublet; -- *(inbuf+1) = (unsigned char *) *(doublet+1); -- *(inbuf+2) = 0; -- fprintf(stderr, "inbuf = %o %o\n", *inbuf, *(inbuf+1)); -- outbuf = my_malloc(outbytes + 1); -+ inbuf = (char *) unrtf_malloc(inbytes + 1); -+ *inbuf = *doublet; -+ *(inbuf+1) = (unsigned char *) *(doublet+1); -+ *(inbuf+2) = 0; -+ fprintf(stderr, "inbuf = %o %o\n", *inbuf, *(inbuf+1)); -+ outbuf = unrtf_malloc(outbytes + 1); - - #if 0 - -- for (i = inbytes - 1; ch > 255; i--) -- { -- inbuf[i] = ch % 256; -- ch /= 256; -- } -+ for (i = inbytes - 1; ch > 255; i--) -+ { -+ inbuf[i] = ch % 256; -+ ch /= 256; -+ } - -- inbuf[0] = ch; -- inbuf[inbytes] = '\0'; -+ inbuf[0] = ch; -+ inbuf[inbytes] = '\0'; - #endif -- i = outbytes; -- if (!my_iconv_is_valid(cd)) -- { -- cd = my_iconv_open("UTF-8", "cp1252"); -+ i = outbytes; -+ if (!my_iconv_is_valid(cd)) -+ { -+ cd = my_iconv_open("UTF-8", "cp1252"); - -- if (my_iconv(cd, &inbuf, &inbytes, &outbuf, &outbytes) == -1) -- { -- fprintf(stderr, "unrtf: Error in executing iconv1\n"); -- return NULL; -- } -+ if (my_iconv(cd, &inbuf, &inbytes, &outbuf, &outbytes) == -1) -+ { -+ fprintf(stderr, "unrtf: Error in executing iconv1\n"); -+ return NULL; -+ } - -- my_iconv_close(cd); -- } -- else -- { -+ my_iconv_close(cd); -+ } -+ else -+ { - -- if (my_iconv(cd, &inbuf, &inbytes, &outbuf, &outbytes) == -1) -- { -+ if (my_iconv(cd, &inbuf, &inbytes, &outbuf, &outbytes) == -1) -+ { - #if 1 /* daved */ -- fprintf(stderr, "unrtf: Error in executing iconv - inbytes=%d inbuf[0]=%o inbuf[1]=%o\n", inbytes, inbuf[0], inbuf[1]); -+ fprintf(stderr, "unrtf: Error in executing iconv - inbytes=%d inbuf[0]=%o inbuf[1]=%o\n", inbytes, inbuf[0], inbuf[1]); - #else -- fprintf(stderr, "unrtf: Error in executing iconv\n"); -+ fprintf(stderr, "unrtf: Error in executing iconv\n"); - #endif -- return NULL; -- } -- } -- *outbuf = '\0'; -- outbuf -= i - outbytes; --/* Conversion from string to utf8 code number */ -- inbytes = 0; -+ return NULL; -+ } -+ } -+ *outbuf = '\0'; -+ outbuf -= i - outbytes; -+ /* Conversion from string to utf8 code number */ -+ inbytes = 0; - -- for (i = 0; outbuf[i] != '\0'; i++) -- inbytes++; -+ for (i = 0; outbuf[i] != '\0'; i++) -+ inbytes++; - -- ch = 0; -+ ch = 0; - -- for (i = 0; i < inbytes; i++) -- { -- if (i == 0) -- switch (inbytes) -- { -- case 1: -- ch = outbuf[0]; -- break; -- case 2: -- ch = (unsigned char) outbuf[0] - 192; -- break; -- case 3: -- ch = (unsigned char) outbuf[0] - 224; -- break; -- case 4: -- ch = (unsigned char) outbuf[0] - 240; -- break; -- } -- else -- ch = (ch * 64) + ((unsigned char) outbuf[i] - 128); -- } --/* End of conversion*/ -+ for (i = 0; i < inbytes; i++) -+ { -+ if (i == 0) -+ switch (inbytes) -+ { -+ case 1: -+ ch = outbuf[0]; -+ break; -+ case 2: -+ ch = (unsigned char) outbuf[0] - 192; -+ break; -+ case 3: -+ ch = (unsigned char) outbuf[0] - 224; -+ break; -+ case 4: -+ ch = (unsigned char) outbuf[0] - 240; -+ break; -+ } -+ else -+ ch = (ch * 64) + ((unsigned char) outbuf[i] - 128); -+ } -+ /* End of conversion*/ - -- result = get_alias(op, ch); -+ result = get_alias(op, ch); - -- if (result == NULL) -- if (ch > 127 && op->unisymbol_print) -- result = assemble_string(op->unisymbol_print, ch); -- else -- result = outbuf; -+ if (result == NULL) -+ if (ch > 127 && op->unisymbol_print) -+ result = assemble_string(op->unisymbol_print, ch); -+ else -+ result = outbuf; - #if 0 /* daved 0.21.2 */ -- } -+ } - #endif - -- return result; -+ return result; - } - #endif - -@@ -357,113 +370,115 @@ op_translate_str (OutputPersonality *op, - *=======================================================================*/ - - char * --op_translate_doublet (OutputPersonality *op, my_iconv_t cd, int ch1, int ch2) -+op_translate_doublet (const struct ConversionContext *cc, const OutputPersonality *op, int ch1, int ch2) - { -- short start; -- char *result=NULL; -- static char output_buffer[3]={ 0, 0, 0 }; -- unsigned char *inbuf; -- char *outbuf; -- int ch; -+ char *result=NULL; -+ static char output_buffer[3]={ 0, 0, 0 }; -+ char *inbuf; -+ char *outbuf; -+ int ch; -+ my_iconv_t cd; - - #if 0 -- size_t inbytes = (ch / 256) + 1, outbytes = inbytes * 4, i; -+ size_t inbytes = (ch / 256) + 1, outbytes = inbytes * 4, i; - #else -- size_t inbytes = 3, outbytes = inbytes * 4, i; -+ size_t inbytes = 3, outbytes = inbytes * 4, i; - #if 0 -- fprintf(stderr, "doublet = %o %o\n", ch1, ch2); -+ fprintf(stderr, "doublet = %o %o\n", ch1, ch2); - #endif - #endif - -- CHECK_PARAM_NOT_NULL(op); -+ CHECK_PARAM_NOT_NULL(op); - -- if (no_remap_mode == TRUE && ch < 256) -- { -- output_buffer[0]=ch1; -- output_buffer[1]=ch2; -- result=output_buffer; -- } -- else -- if (result == NULL) -- { -- inbuf = (char *) my_malloc(inbytes + 1); -- *inbuf = ch1; -- *(inbuf+1) = ch2; -- *(inbuf+2) = 0; -+ if (cc->options->no_remap_mode == TRUE && ch < 256) -+ { -+ output_buffer[0]=ch1; -+ output_buffer[1]=ch2; -+ result=output_buffer; -+ } -+ else -+ if (result == NULL) -+ { -+ inbuf = (char *) unrtf_malloc(inbytes + 1); -+ *inbuf = ch1; -+ *(inbuf+1) = ch2; -+ *(inbuf+2) = 0; - #if 0 -- fprintf(stderr, "inbuf = %o %o\n", *inbuf, *(inbuf+1)); -+ fprintf(stderr, "inbuf = %o %o\n", *inbuf, *(inbuf+1)); - #endif -- outbuf = my_malloc(outbytes + 1); -+ outbuf = unrtf_malloc(outbytes + 1); - -- i = outbytes; -- if (!my_iconv_is_valid(cd)) -- { -- cd = my_iconv_open("UTF-8", "cp1252"); -+ i = outbytes; -+ if (!my_iconv_is_valid(cc->desc)) -+ { -+ cd = my_iconv_open(cc, "UTF-8", "cp1252"); - -- if (my_iconv(cd, (char **)&inbuf, (size_t *)&inbytes, (char **)&outbuf, &outbytes) == -1) -- { -- fprintf(stderr, "unrtf: Error in executing iconv1\n"); -- return NULL; -- } -+ if (my_iconv(cd, (char **)&inbuf, (size_t *)&inbytes, (char **)&outbuf, &outbytes) == -1) -+ { -+ fprintf(stderr, "unrtf: Error in executing iconv1\n"); -+ return NULL; -+ } - -- my_iconv_close(cd); -- } -- else -- { -+ my_iconv_close(cd); -+ } -+ else -+ { - -- if (my_iconv(cd, (char **)&inbuf, (size_t *)&inbytes, (char **)&outbuf, &outbytes) == -1) -- { -+ if (my_iconv(cc->desc, (char **)&inbuf, (size_t *)&inbytes, (char **)&outbuf, &outbytes) == -1) -+ { - #if 1 /* daved */ -- fprintf(stderr, "unrtf: Error in executing iconv - inbytes=%d inbuf[0]=%o inbuf[1]=%o\n", inbytes, inbuf[0], inbuf[1]); -+ fprintf(stderr, "unrtf: Error in executing iconv - inbytes=%d inbuf[0]=%o inbuf[1]=%o\n", inbytes, inbuf[0], inbuf[1]); - #else -- fprintf(stderr, "unrtf: Error in executing iconv\n"); -+ fprintf(stderr, "unrtf: Error in executing iconv\n"); - #endif -- return NULL; -- } -- } -- *outbuf = '\0'; -- outbuf -= i - outbytes; --/* Conversion from string to utf8 code number */ -- inbytes = 0; -+ return NULL; -+ } -+ } -+ *outbuf = '\0'; -+ outbuf -= i - outbytes; -+ /* Conversion from string to utf8 code number */ -+ inbytes = 0; - -- for (i = 0; outbuf[i] != '\0'; i++) -- inbytes++; -+ for (i = 0; outbuf[i] != '\0'; i++) -+ inbytes++; - -- ch = 0; -+ ch = 0; - -- for (i = 0; i < inbytes; i++) -- { -- if (i == 0) -- switch (inbytes) -- { -- case 1: -- ch = outbuf[0]; -- break; -- case 2: -- ch = (unsigned char) outbuf[0] - 192; -- break; -- case 3: -- ch = (unsigned char) outbuf[0] - 224; -- break; -- case 4: -- ch = (unsigned char) outbuf[0] - 240; -- break; -- } -- else -- ch = (ch * 64) + ((unsigned char) outbuf[i] - 128); -- } --/* End of conversion*/ -+ for (i = 0; i < inbytes; i++) -+ { -+ if (i == 0) -+ switch (inbytes) -+ { -+ case 1: -+ ch = outbuf[0]; -+ break; -+ case 2: -+ ch = (unsigned char) outbuf[0] - 192; -+ break; -+ case 3: -+ ch = (unsigned char) outbuf[0] - 224; -+ break; -+ case 4: -+ ch = (unsigned char) outbuf[0] - 240; -+ break; -+ } -+ else -+ ch = (ch * 64) + ((unsigned char) outbuf[i] - 128); -+ } -+ /* End of conversion*/ - -- result = get_alias(op, ch); -+ result = get_alias(op, ch); - -- if (result == NULL) -- if (ch > 127 && op->unisymbol_print) -- result = assemble_string(op->unisymbol_print, ch); -- else -- result = outbuf; -- } -+ if (result == NULL) -+ { -+ if (ch > 127 && op->unisymbol_print) -+ result = assemble_string(op->unisymbol_print, ch); -+ else -+ result = outbuf; -+ } -+ } - -- return result; -+ return result; - } - #endif - /*======================================================================== -@@ -475,123 +490,113 @@ op_translate_doublet (OutputPersonality - *=======================================================================*/ - - void --op_begin_std_fontsize (OutputPersonality *op, int size) -+op_begin_std_fontsize (const OutputContext *oc, int size) - { -- int found_std_expr = FALSE; -+ int found_std_expr = FALSE; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- CHECK_PARAM_NOT_NULL(op); -+ CHECK_PARAM_NOT_NULL(oc); - -- /* Look for an exact match with a standard point size. -- */ -- switch (size) { -- case 8: -- if (op->fontsize8_begin) { -- if (safe_printf(0, op->fontsize8_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_begin"); -- found_std_expr = TRUE; -- } -- break; -- case 10: -- if (op->fontsize10_begin) { -- if (safe_printf(0, op->fontsize10_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_begin"); -- found_std_expr = TRUE; -- } -- break; -- case 12: -- if (op->fontsize12_begin) { -- if (safe_printf(0, op->fontsize12_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_begin"); -- found_std_expr = TRUE; -- } -- break; -- case 14: -- if (op->fontsize14_begin) { -- if (safe_printf(0, op->fontsize14_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_begin"); -- found_std_expr = TRUE; -- } -- break; -- case 18: -- if (op->fontsize18_begin) { -- if (safe_printf(0, op->fontsize18_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_begin"); -- found_std_expr = TRUE; -- } -- break; -- case 24: -- if (op->fontsize24_begin) { -- if (safe_printf(0, op->fontsize24_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize24_begin"); -- found_std_expr = TRUE; -- } -- break; -- case 36: -- if (op->fontsize36_begin) { -- if (safe_printf(0, op->fontsize36_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize36_begin"); -- found_std_expr = TRUE; -- } -- break; -- case 48: -- if (op->fontsize48_begin) { -- if (safe_printf(0, op->fontsize48_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize48_begin"); -- found_std_expr = TRUE; -- } -- break; -- } -+ /* Look for an exact match with a standard point size. -+ */ -+ switch (size) { -+ case 8: -+ if (oc->personality->fontsize8_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize8_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_begin"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 10: -+ if (oc->personality->fontsize10_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize10_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_begin"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 12: -+ if (oc->personality->fontsize12_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize12_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_begin"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 14: -+ if (oc->personality->fontsize14_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize14_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_begin"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 18: -+ if (oc->personality->fontsize18_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize18_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_begin"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 24: -+ if (oc->personality->fontsize24_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize24_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize24_begin"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 36: -+ if (oc->personality->fontsize36_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize36_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize36_begin"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 48: -+ if (oc->personality->fontsize48_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize48_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize48_begin"); -+ found_std_expr = TRUE; -+ } -+ break; -+ } - -- /* If no exact match, try to write out a change to the -- * exact point size. -- */ -- if (!found_std_expr) { -- if (op->fontsize_begin) { -- char expr[16]; -- sprintf (expr, "%d", size); -- if (safe_printf (1, op->fontsize_begin, expr)) fprintf(stderr, TOO_MANY_ARGS, "fontsize_begin"); -- } else { -- /* If we cannot write out a change for the exact -- * point size, we must approximate to a standard -- * size. -- */ -- if (size<9 && op->fontsize8_begin) { -- if (safe_printf(0, op->fontsize8_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_begin"); -- } else -- if (size<11 && op->fontsize10_begin) { -- if (safe_printf(0, op->fontsize10_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_begin"); -- } else -- if (size<13 && op->fontsize12_begin) { -- if (safe_printf(0, op->fontsize12_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_begin"); -- } else -- if (size<16 && op->fontsize14_begin) { -- if (safe_printf(0, op->fontsize14_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_begin"); -- } else -- if (size<21 && op->fontsize18_begin) { -- if (safe_printf(0, op->fontsize18_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_begin"); -- } else -- if (size<30 && op->fontsize24_begin) { -- if (safe_printf(0, op->fontsize24_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize24_begin"); -- } else -- if (size<42 && op->fontsize36_begin) { -- if (safe_printf(0, op->fontsize36_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize36_begin"); -- } else -- if (size>40 && op->fontsize48_begin) { -- if (safe_printf(0, op->fontsize48_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize48_begin"); -- } else -- /* If we can't even produce a good approximation, -- * just try to get a font size near 12 point. -- */ -- if (op->fontsize12_begin) -- if (safe_printf(0, op->fontsize12_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_begin"); -- else -- if (op->fontsize14_begin) -- if (safe_printf(0, op->fontsize14_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_begin"); -- else -- if (op->fontsize10_begin) -- if (safe_printf(0, op->fontsize10_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_begin"); -- else -- if (op->fontsize18_begin) -- if (safe_printf(0, op->fontsize18_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_begin"); -- else -- if (op->fontsize8_begin) -- if (safe_printf(0, op->fontsize8_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_begin"); -- else -- error_handler ("output personality lacks sufficient font size change capability"); -- } -- } -+ /* If no exact match, try to write out a change to the -+ * exact point size. -+ */ -+ if (!found_std_expr) { -+ if (oc->personality->fontsize_begin) { -+ char expr[16]; -+ sprintf (expr, "%d", size); -+ if (safe_printf(device, 1, oc->personality->fontsize_begin, expr)) fprintf(stderr, TOO_MANY_ARGS, "fontsize_begin"); -+ } else { -+ /* If we cannot write out a change for the exact -+ * point size, we must approximate to a standard -+ * size. -+ */ -+ if (size<9 && oc->personality->fontsize8_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize8_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_begin"); -+ } else if (size<11 && oc->personality->fontsize10_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize10_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_begin"); -+ } else if (size<13 && oc->personality->fontsize12_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize12_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_begin"); -+ } else if (size<16 && oc->personality->fontsize14_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize14_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_begin"); -+ } else if (size<21 && oc->personality->fontsize18_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize18_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_begin"); -+ } else if (size<30 && oc->personality->fontsize24_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize24_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize24_begin"); -+ } else if (size<42 && oc->personality->fontsize36_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize36_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize36_begin"); -+ } else if (size>40 && oc->personality->fontsize48_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize48_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize48_begin"); -+ } else if (oc->personality->fontsize12_begin) { -+ /* If we can't even produce a good approximation, -+ * just try to get a font size near 12 point. -+ */ -+ if (safe_printf(device, 0, oc->personality->fontsize12_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_begin"); -+ } else if (oc->personality->fontsize14_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize14_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_begin"); -+ } else if (oc->personality->fontsize10_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize10_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_begin"); -+ } else if (oc->personality->fontsize18_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize18_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_begin"); -+ } else if (oc->personality->fontsize8_begin) { -+ if (safe_printf(device, 0, oc->personality->fontsize8_begin)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_begin"); -+ } else { -+ error_handler (oc->conversion, "output personality lacks sufficient font size change capability"); -+ } -+ } -+ } - } - - -@@ -604,123 +609,113 @@ op_begin_std_fontsize (OutputPersonality - *=======================================================================*/ - - void --op_end_std_fontsize (OutputPersonality *op, int size) -+op_end_std_fontsize (const OutputContext *oc, int size) - { -- int found_std_expr = FALSE; -+ int found_std_expr = FALSE; -+ const struct unRTFOutputDevice *device = &oc->conversion->options->device; - -- CHECK_PARAM_NOT_NULL(op); -+ CHECK_PARAM_NOT_NULL(oc); - -- /* Look for an exact match with a standard point size. -- */ -- switch (size) { -- case 8: -- if (op->fontsize8_end) { -- if (safe_printf(0, op->fontsize8_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_end"); -- found_std_expr = TRUE; -- } -- break; -- case 10: -- if (op->fontsize10_end) { -- if (safe_printf(0, op->fontsize10_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_end"); -- found_std_expr = TRUE; -- } -- break; -- case 12: -- if (op->fontsize12_end) { -- if (safe_printf(0, op->fontsize12_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_end"); -- found_std_expr = TRUE; -- } -- break; -- case 14: -- if (op->fontsize14_end) { -- if (safe_printf(0, op->fontsize14_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_end"); -- found_std_expr = TRUE; -- } -- break; -- case 18: -- if (op->fontsize18_end) { -- if (safe_printf(0, op->fontsize18_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_end"); -- found_std_expr = TRUE; -- } -- break; -- case 24: -- if (op->fontsize24_end) { -- if (safe_printf(0, op->fontsize24_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize24_end"); -- found_std_expr = TRUE; -- } -- break; -- case 36: -- if (op->fontsize36_end) { -- if (safe_printf(0, op->fontsize36_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize36_end"); -- found_std_expr = TRUE; -- } -- break; -- case 48: -- if (op->fontsize48_end) { -- if (safe_printf(0, op->fontsize48_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize48_end"); -- found_std_expr = TRUE; -- } -- break; -- } -+ /* Look for an exact match with a standard point size. -+ */ -+ switch (size) { -+ case 8: -+ if (oc->personality->fontsize8_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize8_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_end"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 10: -+ if (oc->personality->fontsize10_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize10_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_end"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 12: -+ if (oc->personality->fontsize12_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize12_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_end"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 14: -+ if (oc->personality->fontsize14_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize14_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_end"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 18: -+ if (oc->personality->fontsize18_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize18_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_end"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 24: -+ if (oc->personality->fontsize24_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize24_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize24_end"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 36: -+ if (oc->personality->fontsize36_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize36_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize36_end"); -+ found_std_expr = TRUE; -+ } -+ break; -+ case 48: -+ if (oc->personality->fontsize48_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize48_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize48_end"); -+ found_std_expr = TRUE; -+ } -+ break; -+ } - -- /* If no exact match, try to write out a change to the -- * exact point size. -- */ -- if (!found_std_expr) { -- if (op->fontsize_end) { -- char expr[16]; -- sprintf (expr, "%d", size); -- if (safe_printf(1, op->fontsize_end, expr)) fprintf(stderr, TOO_MANY_ARGS, "fontsize_end"); -- } else { -- /* If we cannot write out a change for the exact -- * point size, we must approximate to a standard -- * size. -- */ -- if (size<9 && op->fontsize8_end) { -- if (safe_printf(0, op->fontsize8_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_end"); -- } else -- if (size<11 && op->fontsize10_end) { -- if (safe_printf(0, op->fontsize10_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_end"); -- } else -- if (size<13 && op->fontsize12_end) { -- if (safe_printf(0, op->fontsize12_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_end"); -- } else -- if (size<16 && op->fontsize14_end) { -- if (safe_printf(0, op->fontsize14_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_end"); -- } else -- if (size<21 && op->fontsize18_end) { -- if (safe_printf(0, op->fontsize18_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_end"); -- } else -- if (size<30 && op->fontsize24_end) { -- if (safe_printf(0, op->fontsize24_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize24_end"); -- } else -- if (size<42 && op->fontsize36_end) { -- if (safe_printf(0, op->fontsize36_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize36_end"); -- } else -- if (size>40 && op->fontsize48_end) { -- if (safe_printf(0, op->fontsize48_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize48_end"); -- } else -- /* If we can't even produce a good approximation, -- * just try to get a font size near 12 point. -- */ -- if (op->fontsize12_end) -- if (safe_printf(0, op->fontsize12_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_end"); -- else -- if (op->fontsize14_end) -- if (safe_printf(0, op->fontsize14_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_end"); -- else -- if (op->fontsize10_end) -- if (safe_printf(0, op->fontsize10_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_end"); -- else -- if (op->fontsize18_end) -- if (safe_printf(0, op->fontsize18_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_end"); -- else -- if (op->fontsize8_end) -- if (safe_printf(0, op->fontsize8_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_end"); -- else -- error_handler ("output personality lacks sufficient font size change capability"); -- } -- } -+ /* If no exact match, try to write out a change to the -+ * exact point size. -+ */ -+ if (!found_std_expr) { -+ if (oc->personality->fontsize_end) { -+ char expr[16]; -+ sprintf (expr, "%d", size); -+ if (safe_printf(device, 1, oc->personality->fontsize_end, expr)) fprintf(stderr, TOO_MANY_ARGS, "fontsize_end"); -+ } else { -+ /* If we cannot write out a change for the exact -+ * point size, we must approximate to a standard -+ * size. -+ */ -+ if (size<9 && oc->personality->fontsize8_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize8_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_end"); -+ } else if (size<11 && oc->personality->fontsize10_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize10_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_end"); -+ } else if (size<13 && oc->personality->fontsize12_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize12_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_end"); -+ } else if (size<16 && oc->personality->fontsize14_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize14_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_end"); -+ } else if (size<21 && oc->personality->fontsize18_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize18_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_end"); -+ } else if (size<30 && oc->personality->fontsize24_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize24_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize24_end"); -+ } else if (size<42 && oc->personality->fontsize36_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize36_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize36_end"); -+ } else if (size>40 && oc->personality->fontsize48_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize48_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize48_end"); -+ } else if (oc->personality->fontsize12_end) { -+ /* If we can't even produce a good approximation, -+ * just try to get a font size near 12 point. -+ */ -+ if (safe_printf(device, 0, oc->personality->fontsize12_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize12_end"); -+ } else if (oc->personality->fontsize14_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize14_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize14_end"); -+ } else if (oc->personality->fontsize10_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize10_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize10_end"); -+ } else if (oc->personality->fontsize18_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize18_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize18_end"); -+ } else if (oc->personality->fontsize8_end) { -+ if (safe_printf(device, 0, oc->personality->fontsize8_end)) fprintf(stderr, TOO_MANY_ARGS, "fontsize8_end"); -+ } else { -+ error_handler (oc->conversion, "output personality lacks sufficient font size change capability"); -+ } -+ } -+ } - } - - #if 1 /* AK3 - AF */ -@@ -734,7 +729,7 @@ op_end_std_fontsize (OutputPersonality * - void - add_alias(OutputPersonality *op, int nr, char *text) - { -- op->aliases = (Aliases *)add_to_collection((Collection *)op->aliases, nr, text); -+ op->aliases = (Aliases *)add_to_collection((Collection *)op->aliases, nr, text); - } - - /*======================================================================== -@@ -745,9 +740,8 @@ add_alias(OutputPersonality *op, int nr, - *=======================================================================*/ - - char * --get_alias(OutputPersonality *op, int nr) -+get_alias(const OutputPersonality *op, int nr) - { -- return get_from_collection((Collection *)op->aliases, nr); -+ return get_from_collection((Collection *)op->aliases, nr); - } - #endif -- -diff -durpN unrtf-0.21.2.old/src/output.h unrtf-0.21.2/src/output.h ---- unrtf-0.21.2.old/src/output.h 2010-08-12 03:09:02.000000000 +0200 -+++ unrtf-0.21.2/src/output.h 2013-01-17 02:41:09.685864239 +0100 -@@ -44,227 +44,228 @@ - typedef Collection Aliases; - - typedef struct { -- int cp; -- unsigned short chars[128]; -+ int cp; -+ unsigned short chars[128]; - } CodepageInfo; - -+typedef struct OutputPersonality { -+ char *comment_begin; -+ char *comment_end; - --typedef struct { -- char *comment_begin; -- char *comment_end; -- -- char *document_begin; -- char *document_end; -+ char *document_begin; -+ char *document_end; - -- char *header_begin; -- char *header_end; -+ char *header_begin; -+ char *header_end; - -- char *document_title_begin; -- char *document_title_end; -+ char *document_title_begin; -+ char *document_title_end; - -- char *document_keywords_begin; -- char *document_keywords_end; -+ char *document_keywords_begin; -+ char *document_keywords_end; - -- char *document_author_begin; -- char *document_author_end; -+ char *document_author_begin; -+ char *document_author_end; - -- char *document_changedate_begin; -- char *document_changedate_end; -+ char *document_changedate_begin; -+ char *document_changedate_end; - -- char *body_begin; -- char *body_end; -+ char *body_begin; -+ char *body_end; - -- char *word_begin; -- char *word_end; -+ char *word_begin; -+ char *word_end; - -- char *paragraph_begin; -- char *paragraph_end; -+ char *paragraph_begin; -+ char *paragraph_end; - -- char *center_begin; -- char *center_end; -+ char *center_begin; -+ char *center_end; - -- char *align_left_begin; -- char *align_left_end; -+ char *align_left_begin; -+ char *align_left_end; - -- char *align_right_begin; -- char *align_right_end; -+ char *align_right_begin; -+ char *align_right_end; - -- char *justify_begin; -- char *justify_end; -+ char *justify_begin; -+ char *justify_end; - -- char *forced_space; -- char *line_break; -- char *page_break; -+ char *forced_space; -+ char *line_break; -+ char *page_break; - -- char *hyperlink_begin; -- char *hyperlink_end; -+ char *hyperlink_begin; -+ char *hyperlink_end; - -- char *imagelink_begin; -- char *imagelink_end; -+ char *imagelink_begin; -+ char *imagelink_end; - -- char *table_begin; -- char *table_end; -+ char *table_begin; -+ char *table_end; - -- char *table_row_begin; -- char *table_row_end; -+ char *table_row_begin; -+ char *table_row_end; - -- char *table_cell_begin; -- char *table_cell_end; -+ char *table_cell_begin; -+ char *table_cell_end; - -- /* Character attributes */ -- char *font_begin; -- char *font_end; -+ /* Character attributes */ -+ char *font_begin; -+ char *font_end; - -- char *fontsize_begin; -- char *fontsize_end; -+ char *fontsize_begin; -+ char *fontsize_end; - -- /* standard font sizes are optional */ -- char *fontsize8_begin; -- char *fontsize8_end; -+ /* standard font sizes are optional */ -+ char *fontsize8_begin; -+ char *fontsize8_end; - -- char *fontsize10_begin; -- char *fontsize10_end; -+ char *fontsize10_begin; -+ char *fontsize10_end; - -- char *fontsize12_begin; -- char *fontsize12_end; -+ char *fontsize12_begin; -+ char *fontsize12_end; - -- char *fontsize14_begin; -- char *fontsize14_end; -+ char *fontsize14_begin; -+ char *fontsize14_end; - -- char *fontsize18_begin; -- char *fontsize18_end; -+ char *fontsize18_begin; -+ char *fontsize18_end; - -- char *fontsize24_begin; -- char *fontsize24_end; -+ char *fontsize24_begin; -+ char *fontsize24_end; - -- char *fontsize36_begin; -- char *fontsize36_end; -+ char *fontsize36_begin; -+ char *fontsize36_end; - -- char *fontsize48_begin; -- char *fontsize48_end; -+ char *fontsize48_begin; -+ char *fontsize48_end; - -- char *smaller_begin; -- char *smaller_end; -+ char *smaller_begin; -+ char *smaller_end; - -- char *bigger_begin; -- char *bigger_end; -+ char *bigger_begin; -+ char *bigger_end; - -- char *foreground_begin; -- char *foreground_end; -+ char *foreground_begin; -+ char *foreground_end; - -- char *background_begin; -- char *background_end; -+ char *background_begin; -+ char *background_end; - -- char *bold_begin; -- char *bold_end; -+ char *bold_begin; -+ char *bold_end; - -- char *italic_begin; -- char *italic_end; -+ char *italic_begin; -+ char *italic_end; - -- char *underline_begin; -- char *underline_end; -+ char *underline_begin; -+ char *underline_end; - -- char *dbl_underline_begin; -- char *dbl_underline_end; -+ char *dbl_underline_begin; -+ char *dbl_underline_end; - -- char *superscript_begin; -- char *superscript_end; -+ char *superscript_begin; -+ char *superscript_end; - -- char *subscript_begin; -- char *subscript_end; -+ char *subscript_begin; -+ char *subscript_end; - -- char *strikethru_begin; -- char *strikethru_end; -+ char *strikethru_begin; -+ char *strikethru_end; - -- char *dbl_strikethru_begin; -- char *dbl_strikethru_end; -+ char *dbl_strikethru_begin; -+ char *dbl_strikethru_end; - -- char *emboss_begin; -- char *emboss_end; -+ char *emboss_begin; -+ char *emboss_end; - -- char *engrave_begin; -- char *engrave_end; -+ char *engrave_begin; -+ char *engrave_end; - -- char *shadow_begin; -- char *shadow_end; -+ char *shadow_begin; -+ char *shadow_end; - -- char *outline_begin; -- char *outline_end; -+ char *outline_begin; -+ char *outline_end; - -- char *small_caps_begin; -- char *small_caps_end; -+ char *small_caps_begin; -+ char *small_caps_end; - -- char *pointlist_begin; -- char *pointlist_end; -+ char *pointlist_begin; -+ char *pointlist_end; - -- char *pointlist_item_begin; -- char *pointlist_item_end; -+ char *pointlist_item_begin; -+ char *pointlist_item_end; - -- char *numericlist_begin; -- char *numericlist_end; -+ char *numericlist_begin; -+ char *numericlist_end; - -- char *numericlist_item_begin; -- char *numericlist_item_end; -+ char *numericlist_item_begin; -+ char *numericlist_item_end; - -- char *expand_begin; -- char *expand_end; -+ char *expand_begin; -+ char *expand_end; - -- char *toc_entry_begin; -- char *toc_entry_end; -+ char *toc_entry_begin; -+ char *toc_entry_end; - -- char *index_entry_begin; -- char *index_entry_end; -+ char *index_entry_begin; -+ char *index_entry_end; - -- char *fonttable_begin; -- char *fonttable_end; -- char *fonttable_fontnr; -- char *fonttable_fontname; -+ char *fonttable_begin; -+ char *fonttable_end; -+ char *fonttable_fontnr; -+ char *fonttable_fontname; - -- /* XX These should really be replaced by references -- * to one of the charsets. -- */ -- struct { -- char *bullet; -- char *left_quote; -- char *right_quote; -- char *left_dbl_quote; -- char *right_dbl_quote; -- char *nonbreaking_space; -- char *emdash; -- char *endash; -- char *lessthan; -- char *greaterthan; -- char *amp; -- char *copyright; -- char *trademark; -- char *nonbreaking_hyphen; -- char *optional_hyphen; -- } chars; -+ /* XX These should really be replaced by references -+ * to one of the charsets. -+ */ -+ struct { -+ char *bullet; -+ char *left_quote; -+ char *right_quote; -+ char *left_dbl_quote; -+ char *right_dbl_quote; -+ char *nonbreaking_space; -+ char *emdash; -+ char *endash; -+ char *lessthan; -+ char *greaterthan; -+ char *amp; -+ char *copyright; -+ char *trademark; -+ char *nonbreaking_hyphen; -+ char *optional_hyphen; -+ } chars; - -- int simulate_small_caps : 1; -- int simulate_all_caps : 1; -- int simulate_word_underline : 1; -- char *unisymbol_print; -- char *utf8_encoding; -- Aliases *aliases; --} --OutputPersonality; -+ int simulate_small_caps : 1; -+ int simulate_all_caps : 1; -+ int simulate_word_underline : 1; -+ char *unisymbol_print; -+ char *utf8_encoding; -+ Aliases *aliases; -+} OutputPersonality; - -+typedef struct OutputContext { -+ struct ConversionContext *conversion; -+ struct OutputPersonality *personality; -+} OutputContext; - --extern OutputPersonality* op_create(void); -+extern OutputPersonality* op_create(const struct ConversionContext *); - extern void op_free (OutputPersonality*); --extern char* op_translate_char (OutputPersonality *op, my_iconv_t cd, int ch); -+extern char* op_translate_char (const struct ConversionContext *cc, const OutputPersonality *op, int ch); - #if 1 /* daved - 0.21.2 */ --extern char* op_translate_str (OutputPersonality *op, my_iconv_t cd, int * doublet); --extern char* op_translate_doublet (OutputPersonality *op, my_iconv_t cd, int ch1, int ch2); -+extern char* op_translate_str (const struct ConversionContext *cc, const OutputPersonality *op, int * doublet); -+extern char* op_translate_doublet (const struct ConversionContext *cc, const OutputPersonality *op, int ch1, int ch2); - #endif - --extern void op_begin_std_fontsize (OutputPersonality*, int); --extern void op_end_std_fontsize (OutputPersonality*, int); -+extern void op_begin_std_fontsize (const struct OutputContext *, int); -+extern void op_end_std_fontsize (const struct OutputContext *, int); - --void add_alias(OutputPersonality *op, int nr, char *text); --char *get_alias(OutputPersonality *op, int nr); -+void add_alias(struct OutputPersonality *op, int nr, char *text); -+char *get_alias(const struct OutputPersonality *op, int nr); - - #define _OUTPUT - #endif -- -diff -durpN unrtf-0.21.2.old/src/parse.c unrtf-0.21.2/src/parse.c ---- unrtf-0.21.2.old/src/parse.c 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/parse.c 2013-01-17 02:41:09.685864239 +0100 -@@ -1,23 +1,23 @@ - /*============================================================================= -- GNU UnRTF, a command-line program to convert RTF documents to other formats. -- Copyright (C) 2000,2001 Zachary Thayer Smith -+ GNU UnRTF, a command-line program to convert RTF documents to other formats. -+ Copyright (C) 2000,2001 Zachary Thayer Smith - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -- (at your option) any later version. -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. - -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -- The author is reachable by electronic mail at tuorfa@yahoo.com. --=============================================================================*/ -+ The author is reachable by electronic mail at tuorfa@yahoo.com. -+ =============================================================================*/ - - - /*---------------------------------------------------------------------- -@@ -59,6 +59,7 @@ - #include - #endif - -+#include "convert.h" - #include "defs.h" - #include "parse.h" - #include "malloc.h" -@@ -67,14 +68,6 @@ - #include "word.h" - #include "hash.h" - -- -- --/* local to getchar stuff */ --static int ungot_char = -1; --static int ungot_char2 = -1; --static int ungot_char3 = -1; -- -- - /*======================================================================== - * Name: my_unget_char - * Purpose: My own unget routine, handling up to 3 ungot characters. -@@ -82,30 +75,16 @@ static int ungot_char3 = -1; - * Returns: None. - *=======================================================================*/ - --static void my_unget_char (int ch) -+static void my_unget_char (struct ConversionContext *cc, int ch) - { -- if (ungot_char>=0 && ungot_char2>=0 && ungot_char3>=0) -- error_handler("More than 3 ungot chars"); -+ if (cc->ungot_char>=0 && cc->ungot_char2>=0 && cc->ungot_char3>=0) -+ error_handler(cc, "More than 3 ungot chars"); - -- ungot_char3 = ungot_char2; -- ungot_char2 = ungot_char; -- ungot_char = ch; -+ cc->ungot_char3 = cc->ungot_char2; -+ cc->ungot_char2 = cc->ungot_char; -+ cc->ungot_char = ch; - } - -- --static int last_returned_ch=0; -- -- --#define READ_BUF_LEN 2048 --static int buffer_size = 0; --static char *read_buf = NULL; --static int read_buf_end = 0; --static int read_buf_index = 0; -- -- -- -- -- - /*======================================================================== - * Name: my_getchar - * Purpose: Gets a character: either an ungot one, or a buffered one. -@@ -113,76 +92,54 @@ static int read_buf_index = 0; - * Returns: Character, or EOF. - *=======================================================================*/ - --static int my_getchar (FILE* f) -+static int my_getchar (struct ConversionContext *cc) - { -- int ch; -- -- CHECK_PARAM_NOT_NULL(f); -+ int ch; - -- if (ungot_char>=0) { -- ch = ungot_char; -- ungot_char = ungot_char2; -- ungot_char2 = ungot_char3; -- ungot_char3 = -1; -- last_returned_ch = ch; -- if(ch > 255) -- { -- fprintf(stderr, "returning bad ch = '%c' (0%o)\n", -- ch, ch); -- } -- return ch; -- } -- do { -- if (read_buf_index >= read_buf_end) { -- if (!read_buf) { -- buffer_size = READ_BUF_LEN; -- read_buf = my_malloc (buffer_size); -- if (!read_buf) { -- buffer_size /= 4; -- read_buf = my_malloc (buffer_size); -- if (!read_buf) -- error_handler("Cannot allocate read buffer"); -- } -- } -- read_buf_end = fread (read_buf, 1, buffer_size, f); -- read_buf_index = 0; -- if (!read_buf_end) -- return EOF; -- } -- ch = read_buf [read_buf_index++]; -+ if (cc->ungot_char>=0) { -+ ch = cc->ungot_char; -+ cc->ungot_char = cc->ungot_char2; -+ cc->ungot_char2 = cc->ungot_char3; -+ cc->ungot_char3 = -1; -+ cc->last_returned_ch = ch; -+ if(ch > 255) -+ { -+ fprintf(stderr, "returning bad ch = '%c' (0%o)\n", -+ ch, ch); -+ } -+ return ch; -+ } -+ do { -+ if (cc->read_buf_index >= cc->read_buf_end) { -+ return EOF; -+ } -+ ch = cc->read_buf [cc->read_buf_index++]; - -- if (ch=='\n') { -- lineno++; -- /* Convert \(newline) into \par here */ -- if (last_returned_ch=='\\') { -- my_unget_char (' '); -- my_unget_char ('r'); -- my_unget_char ('a'); -- ch = 'p'; -- break; -- } -- } -- } -- while (ch=='\r' /* || ch=='\n' */ ); -+ if (ch=='\n') { -+ cc->lineno++; -+ /* Convert \(newline) into \par here */ -+ if (cc->last_returned_ch=='\\') { -+ my_unget_char (cc, ' '); -+ my_unget_char (cc, 'r'); -+ my_unget_char (cc, 'a'); -+ ch = 'p'; -+ break; -+ } -+ } -+ } -+ while (ch=='\r' /* || ch=='\n' */ ); - -- if (ch=='\t') ch = ' '; -+ if (ch=='\t') ch = ' '; - -- last_returned_ch = ch; -- if(ch > 255) -- { -- fprintf(stderr,"returning bad ch '%c' (0%o)\n", ch, ch); -- exit(1); -- } -- return ch; -+ cc->last_returned_ch = ch; -+ if(ch > 255) -+ { -+ fprintf(stderr,"returning bad ch '%c' (0%o)\n", ch, ch); -+ exit(1); -+ } -+ return ch; - } - -- --/* local to read_word */ --static char *input_str = NULL; --static unsigned long current_max_length = 1; -- -- -- - /*======================================================================== - * Name: expand_word_buffer - * Purpose: Expands the buffer used to store an incoming word. -@@ -192,22 +149,22 @@ static unsigned long current_max_length - *=======================================================================*/ - - static int --expand_word_buffer () -+expand_word_buffer (struct ConversionContext *cc) - { -- char *new_ptr; -- unsigned long old_length; -- if (!input_str) -- error_handler("No input buffer allocated"); -- old_length = current_max_length; -- current_max_length *= 2; -- new_ptr = my_malloc (current_max_length); -- if (!new_ptr) -- error_handler("Out of memory while resizing buffer"); -+ char *new_ptr; -+ unsigned long old_length; -+ if (!cc->input_str) -+ error_handler(cc, "No input buffer allocated"); -+ old_length = cc->current_max_length; -+ cc->current_max_length *= 2; -+ new_ptr = unrtf_malloc (cc->current_max_length); -+ if (!new_ptr) -+ error_handler(cc, "Out of memory while resizing buffer"); - -- memcpy (new_ptr, input_str, old_length); -- my_free(input_str); -- input_str = new_ptr; -- return TRUE; -+ memcpy (new_ptr, cc->input_str, old_length); -+ unrtf_free(cc->input_str); -+ cc->input_str = new_ptr; -+ return TRUE; - } - - -@@ -222,183 +179,184 @@ expand_word_buffer () - *=======================================================================*/ - - static int --read_word (FILE *f) -+read_word (struct ConversionContext *cc) - { -- int ch, ch2; -- unsigned long ix=0; -- int have_whitespace=FALSE; -- int is_control_word=FALSE; -- int has_numeric_param=FALSE; /* if is_control_word==TRUE */ -- int need_unget=FALSE; -- -- CHECK_PARAM_NOT_NULL(f); -+ int ch, ch2; -+ unsigned long ix=0; -+ int have_whitespace=FALSE; -+ int is_control_word=FALSE; -+ int has_numeric_param=FALSE; /* if is_control_word==TRUE */ -+ int need_unget=FALSE; - -- current_max_length = 10; /* XX */ -+ cc->current_max_length = 10; /* XX */ - -- /* Get some storage for a word. -- */ -- input_str = my_malloc (current_max_length); -- if (!input_str) -- error_handler("Cannot allocate word storage"); -+ /* Get some storage for a word. -+ */ -+ if (cc->input_str) { -+ unrtf_free(cc->input_str); -+ } -+ cc->input_str = unrtf_malloc (cc->current_max_length); -+ if (!cc->input_str) -+ error_handler(cc, "Cannot allocate word storage"); - -- do { -- ch = my_getchar(f); -- } -- while (ch=='\n'); -+ do { -+ ch = my_getchar(cc); -+ } -+ while (ch=='\n'); - -- if (ch==' ') -- { -- /* Compress multiple space chars down to one. -- */ -- while (ch == ' ') { -- ch = my_getchar(f); -- have_whitespace=TRUE; -- } -- if (have_whitespace) { -- my_unget_char (ch); -- input_str[0]=' '; -- input_str[1]=0; -- return 1; -- } -- } -+ if (ch==' ') -+ { -+ /* Compress multiple space chars down to one. -+ */ -+ while (ch == ' ') { -+ ch = my_getchar(cc); -+ have_whitespace=TRUE; -+ } -+ if (have_whitespace) { -+ my_unget_char (cc, ch); -+ cc->input_str[0]=' '; -+ cc->input_str[1]=0; -+ return 1; -+ } -+ } - -- switch(ch) -- { -- case EOF: -- return 0; -+ switch(ch) -+ { -+ case EOF: -+ return 0; - -- case '\\': -- ch2 = my_getchar(f); -+ case '\\': -+ ch2 = my_getchar(cc); - -- /* Look for two-character command words. -- */ -- switch (ch2) -- { -- case '\n': -- strcpy (input_str, "\\par"); -- return 4; -- case '~': -- case '{': -- case '}': -- case '\\': -- case '_': -- case '-': -- input_str[0] = '\\'; -- input_str[1] = ch2; -- input_str[2] = 0; -- return 2; -- case '\'': -- /* Preserve \'## expressions (hex char exprs) for later. -- */ -- input_str[0]='\\'; -- input_str[1]='\''; -- ix=2; -- if(ix==current_max_length) { -- if (!expand_word_buffer ()) -- error_handler("Word too long"); -- } -- ch = my_getchar(f); -- input_str[ix++]=ch; -- if(ix==current_max_length) { -- if (!expand_word_buffer ()) -- error_handler("Word too long"); -- } -- ch = my_getchar(f); -- input_str[ix++]=ch; -- if(ix==current_max_length) { -- if (!expand_word_buffer ()) -- error_handler("Word too long"); -- } -- input_str[ix]=0; -- return ix; -- } -+ /* Look for two-character command words. -+ */ -+ switch (ch2) -+ { -+ case '\n': -+ strcpy (cc->input_str, "\\par"); -+ return 4; -+ case '~': -+ case '{': -+ case '}': -+ case '\\': -+ case '_': -+ case '-': -+ cc->input_str[0] = '\\'; -+ cc->input_str[1] = ch2; -+ cc->input_str[2] = 0; -+ return 2; -+ case '\'': -+ /* Preserve \'## expressions (hex char exprs) for later. -+ */ -+ cc->input_str[0]='\\'; -+ cc->input_str[1]='\''; -+ ix=2; -+ if(ix==cc->current_max_length) { -+ if (!expand_word_buffer (cc)) -+ error_handler(cc, "Word too long"); -+ } -+ ch = my_getchar(cc); -+ cc->input_str[ix++]=ch; -+ if(ix==cc->current_max_length) { -+ if (!expand_word_buffer (cc)) -+ error_handler(cc, "Word too long"); -+ } -+ ch = my_getchar(cc); -+ cc->input_str[ix++]=ch; -+ if(ix==cc->current_max_length) { -+ if (!expand_word_buffer (cc)) -+ error_handler(cc, "Word too long"); -+ } -+ cc->input_str[ix]=0; -+ return ix; -+ } - -- is_control_word=TRUE; -- ix=1; -- input_str[0]=ch; -- ch=ch2; -- break; -+ is_control_word=TRUE; -+ ix=1; -+ cc->input_str[0]=ch; -+ ch=ch2; -+ break; - -- case '\t': -- /* In RTF, a tab char is the same as \tab. -- */ -- strcpy (input_str, "\\tab"); -- return 4; -+ case '\t': -+ /* In RTF, a tab char is the same as \tab. -+ */ -+ strcpy (cc->input_str, "\\tab"); -+ return 4; - -- case '{': -- case '}': -- case ';': -- input_str[0]=ch; -- input_str[1]=0; -- return 1; -+ case '{': -+ case '}': -+ case ';': -+ cc->input_str[0]=ch; -+ cc->input_str[1]=0; -+ return 1; - -- } -+ } - -- while (ch!=EOF) -- { -- /* Several chars always ends a word, and we need to save them. -- */ -- if (ch=='\t' || ch=='{' || ch=='}' || ch=='\\') { -- need_unget=TRUE; -- break; -- } -+ while (ch!=EOF) -+ { -+ /* Several chars always ends a word, and we need to save them. -+ */ -+ if (ch=='\t' || ch=='{' || ch=='}' || ch=='\\') { -+ need_unget=TRUE; -+ break; -+ } - -- /* A newline always ends a command word; we don't save it. -- * A newline is ignored if this is not a command word. -- */ -- if (ch=='\n') { -- if (is_control_word) -- break; -- ch = my_getchar(f); -- continue; -- } -+ /* A newline always ends a command word; we don't save it. -+ * A newline is ignored if this is not a command word. -+ */ -+ if (ch=='\n') { -+ if (is_control_word) -+ break; -+ ch = my_getchar(cc); -+ continue; -+ } - -- /* A semicolon always ends a command word; we do save it. -- * A semicolon never ends a regular word. -- */ -- if (ch==';') { -- if (is_control_word) { -- need_unget=TRUE; -- break; -- } -- } -+ /* A semicolon always ends a command word; we do save it. -+ * A semicolon never ends a regular word. -+ */ -+ if (ch==';') { -+ if (is_control_word) { -+ need_unget=TRUE; -+ break; -+ } -+ } - -- /* In this parser, a space character terminates -- * any word, and if it does not follow a command, -- * then it is a word in itself. -- */ -- if (ch==' ') { -- if (!is_control_word) -- need_unget=TRUE; -- break; -- } -+ /* In this parser, a space character terminates -+ * any word, and if it does not follow a command, -+ * then it is a word in itself. -+ */ -+ if (ch==' ') { -+ if (!is_control_word) -+ need_unget=TRUE; -+ break; -+ } - -- /* Identify a control word's numeric parameter. -- */ -- if (is_control_word) { -- if (!has_numeric_param && (isdigit(ch) || ch=='-')) -- has_numeric_param = TRUE; -- else -- if (has_numeric_param && !isdigit(ch)) { -- if (ch!=' ') -- need_unget=TRUE; -- break; -- } -- } -+ /* Identify a control word's numeric parameter. -+ */ -+ if (is_control_word) { -+ if (!has_numeric_param && (isdigit(ch) || ch=='-')) -+ has_numeric_param = TRUE; -+ else -+ if (has_numeric_param && !isdigit(ch)) { -+ if (ch!=' ') -+ need_unget=TRUE; -+ break; -+ } -+ } - -- input_str[ix++] = ch; -- if (ix==current_max_length) { -- if (!expand_word_buffer ()) -- error_handler("Word too long"); -- } -- ch = my_getchar (f); -- } -+ cc->input_str[ix++] = ch; -+ if (ix==cc->current_max_length) { -+ if (!expand_word_buffer (cc)) -+ error_handler(cc, "Word too long"); -+ } -+ ch = my_getchar (cc); -+ } - -- if (need_unget) -- my_unget_char(ch); -+ if (need_unget) -+ my_unget_char(cc, ch); - -- input_str[ix]=0; -- return ix; -+ cc->input_str[ix]=0; -+ return ix; - } - - -@@ -412,44 +370,42 @@ read_word (FILE *f) - *=======================================================================*/ - - Word * --word_read (FILE* f) { -- Word * prev_word = NULL; -- Word * first_word = NULL; -- Word * new_word = NULL; /* temp */ -- -- CHECK_PARAM_NOT_NULL(f); -- -- do { -- if (!read_word(f)) -- return first_word; -+word_read (struct ConversionContext *cc) { -+ Word * prev_word = NULL; -+ Word * first_word = NULL; -+ Word * new_word = NULL; /* temp */ - -- if (input_str[0] == '{') { -- /* Process subwords */ -+ do { -+ if (!read_word(cc)) -+ return first_word; - -- /* Create a dummy word to point to a sublist */ -- new_word = word_new(NULL); -- if (!new_word) -- error_handler("Cannot allocate word"); -+ if (cc->input_str[0] == '{') { -+ /* Process subwords */ - -- /* Get the sublist */ -- new_word->child = word_read(f); -+ /* Create a dummy word to point to a sublist */ -+ new_word = word_new(cc, NULL); -+ if (!new_word) -+ error_handler(cc, "Cannot allocate word"); - -- } else if (input_str[0] == '}') { -- return first_word; -- } else { -- new_word = word_new(input_str); -- } -+ /* Get the sublist */ -+ new_word->child = word_read(cc); -+ -+ } else if (cc->input_str[0] == '}') { -+ return first_word; -+ } else { -+ new_word = word_new(cc, cc->input_str); -+ } - -- if (prev_word) -- prev_word->next = new_word; -+ if (prev_word) -+ prev_word->next = new_word; - -- if (!first_word) -- first_word = new_word; -+ if (!first_word) -+ first_word = new_word; - -- prev_word = new_word; -+ prev_word = new_word; - -- /* Free up the memory allocated by read_word. */ -- my_free(input_str); -- input_str = NULL; -- } while (1); -+ /* Free up the memory allocated by read_word. */ -+ unrtf_free(cc->input_str); -+ cc->input_str = NULL; -+ } while (1); - } -diff -durpN unrtf-0.21.2.old/src/parse.h unrtf-0.21.2/src/parse.h ---- unrtf-0.21.2.old/src/parse.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/parse.h 2013-01-17 02:41:09.685864239 +0100 -@@ -38,8 +38,6 @@ - #include "word.h" - #endif - -+struct ConversionContext; - --extern Word *word_read(FILE*); -- -- -- -+extern Word *word_read(struct ConversionContext *cc); -diff -durpN unrtf-0.21.2.old/src/path.c unrtf-0.21.2/src/path.c ---- unrtf-0.21.2.old/src/path.c 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/path.c 1970-01-01 01:00:00.000000000 +0100 -@@ -1,55 +0,0 @@ --#include --#include --#include --#include -- --#include "path.h" -- --struct path_dir *path_dir_p = &topdir; -- --int check_dirs() --{ -- char *p; -- char *colon; -- char *dir_name; -- int a; -- -- for(p = search_path; *p != '\0';) -- { -- dir_name = p; -- if((colon = strchr(p, ':')) != NULL) -- { -- p = colon; -- *p++ = '\0'; -- } -- else -- p += strlen(p); -- a = access(dir_name, R_OK|X_OK); -- if(a) -- continue; -- path_dir_p->dir_name = dir_name; -- if((path_dir_p->next = (struct path_dir *)malloc(sizeof (struct path_dir))) == NULL) -- { -- fprintf(stderr,"cannot malloc\n"); -- exit(1); -- } -- path_dir_p = path_dir_p->next; -- path_dir_p->dir_name = 0; -- n_path_dirs++; -- } -- path_checked = 1; -- return(n_path_dirs); --} -- --void show_dirs() --{ -- if(n_path_dirs == 0) -- { -- fprintf(stderr,"no directories to show\n"); -- exit(1); -- } -- fprintf(stderr,"show_dirs: %d directories\n", n_path_dirs); -- for(path_dir_p = &topdir; path_dir_p->dir_name; path_dir_p = path_dir_p->next) -- fprintf(stderr,"directory = %s\n", path_dir_p->dir_name); --} -- -diff -durpN unrtf-0.21.2.old/src/path.h unrtf-0.21.2/src/path.h ---- unrtf-0.21.2.old/src/path.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/path.h 1970-01-01 01:00:00.000000000 +0100 -@@ -1,16 +0,0 @@ --#define DEFAULT_UNRTF_SEARCH_PATH "/usr/local/lib/unrtf/" -- --char *search_path; --int n_path_dirs; --int path_checked; -- --struct path_dir --{ -- char *dir_name; -- struct path_dir *next; --}; -- --struct path_dir topdir; -- --int check_dirs(); --void show_dirs(); -diff -durpN unrtf-0.21.2.old/src/unicode.c unrtf-0.21.2/src/unicode.c ---- unrtf-0.21.2.old/src/unicode.c 2011-06-07 14:06:43.000000000 +0200 -+++ unrtf-0.21.2/src/unicode.c 2013-01-17 02:41:09.685864239 +0100 -@@ -55,20 +55,20 @@ unicode_to_string(int uc) - - if (uc < 0x7f) - { -- string = my_malloc(2 * sizeof(char)); -+ string = unrtf_malloc(2 * sizeof(char)); - string[0] = (unsigned char) uc; - string[1] = '\0'; - } - else if (uc < 0x7ff) - { -- string = my_malloc(3 * sizeof(char)); -+ string = unrtf_malloc(3 * sizeof(char)); - string[0] = (unsigned char) 192 + (uc / 64); - string[1] = (unsigned char) 128 + (uc % 64); - string[2] = '\0'; - } - else if (uc < 0xffff) - { -- string = my_malloc(4 * sizeof(char)); -+ string = unrtf_malloc(4 * sizeof(char)); - string[0] = (unsigned char) 224 + (uc / (64 * 64)); - string[1] = (unsigned char) 128 + ((uc / 64) % 64); - string[2] = (unsigned char) 128 + (uc % 64); -@@ -76,7 +76,7 @@ unicode_to_string(int uc) - } - else if (uc < 0x1FFFFF) - { -- string = my_malloc(5 * sizeof(char)); -+ string = unrtf_malloc(5 * sizeof(char)); - string[0] = (unsigned char) 240 + (uc / (64 * 64 * 64)); - string[1] = (unsigned char) 128 + ((uc / (64 * 64)) % 64); - string[2] = (unsigned char) 128 + ((uc / 64) % 64); -@@ -85,7 +85,7 @@ unicode_to_string(int uc) - } - else if (uc < 0x3FFFFFF) - { -- string = my_malloc(6 * sizeof(char)); -+ string = unrtf_malloc(6 * sizeof(char)); - string[0] = (unsigned char) 248 + (uc / (64 * 64 * 64 * 64)); - string[1] = (unsigned char) 128 + ((uc / (64 * 64 * 64)) % 64); - string[2] = (unsigned char) 128 + ((uc / (64 * 64)) % 64); -@@ -95,7 +95,7 @@ unicode_to_string(int uc) - } - else if (uc < 0x7FFFFFFF) - { -- string = my_malloc(7 * sizeof(char)); -+ string = unrtf_malloc(7 * sizeof(char)); - string[0] = (unsigned char) 252 + (uc / (64 * 64 * 64 * 64 * 64)); - string[1] = (unsigned char) 128 + ((uc / (64 * 64 * 64 * 64)) % 64); - string[2] = (unsigned char) 128 + ((uc / (64 * 64 * 64)) % 64); -@@ -122,7 +122,7 @@ char * - get_unicode_char(FILE *file) - { - int allocated = 5, len = 0, uc; -- char c, *unicode_number = my_malloc(allocated * sizeof(char)); -+ char c, *unicode_number = unrtf_malloc(allocated * sizeof(char)); - - c = fgetc(file); - -@@ -139,7 +139,7 @@ get_unicode_char(FILE *file) - if (len == allocated) - { - allocated *= 2; -- unicode_number = my_realloc(unicode_number, allocated / 2, allocated); -+ unicode_number = unrtf_realloc(unicode_number, allocated / 2, allocated); - } - } - -diff -durpN unrtf-0.21.2.old/src/unrtf.h unrtf-0.21.2/src/unrtf.h ---- unrtf-0.21.2.old/src/unrtf.h 1970-01-01 01:00:00.000000000 +0100 -+++ unrtf-0.21.2/src/unrtf.h 2013-01-17 02:41:09.689864239 +0100 -@@ -0,0 +1,55 @@ -+/*=========================================================================== -+ GNU UnRTF, a command-line program to convert RTF documents to other formats. -+ Copyright (C) 2000,2001,2004 by Zachary Smith -+ Copyright (C) 2011 by Inverse -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au -+===========================================================================*/ -+ -+#ifndef UNRTF_H -+#define UNRTF_H -+ -+typedef int (*unrtf_output_device_func)(void *, const char *, size_t); -+ -+struct unRTFOutputDevice { -+ unrtf_output_device_func print; -+ void *data; -+}; -+ -+typedef struct unRTFOptions { -+ struct unRTFOutputDevice device; /* stdout if NULL */ -+ const char *config_directory; -+ const char *output_format; /* DEFAULT_OUTPUT if NULL */ -+ -+ int nopict_mode; /* TRUE => Do not write \pict's to files */ -+ int dump_mode; /* TRUE => Output a dump of the RTF word tree */ -+ int debug_mode; /* TRUE => Output debug comments within HTML */ -+ int simple_mode; /* TRUE => Output HTML without SPAN/DIV tags -- This would -+ probably be more useful if we could pull out tags -+ as well. */ -+ int inline_mode; /* TRUE => Output HTML without HTML/BODY/HEAD -- This is -+ buggy. I've seen it output pages of tags. */ -+ /* marcossamaral - 0.19.9 */ -+ int verbose_mode; /* TRUE => Output additional informations about unrtf */ -+ int no_remap_mode; /* don't remap codepoints */ -+} unRTFOptions; -+ -+void unrtf_set_output_device (unRTFOptions *, unrtf_output_device_func, void *); -+int unrtf_convert_from_filename (unRTFOptions *, const char *); -+int unrtf_convert_from_string (unRTFOptions *, const char *, size_t); -+ -+#endif /* UNRTF_H */ -diff -durpN unrtf-0.21.2.old/src/user.c unrtf-0.21.2/src/user.c ---- unrtf-0.21.2.old/src/user.c 2011-06-07 14:08:17.000000000 +0200 -+++ unrtf-0.21.2/src/user.c 2013-01-17 02:41:09.689864239 +0100 -@@ -7,7 +7,7 @@ - *---------------------------------------------------------------------- - * Changes: - * 21 Aug 10, daved@physiol.usyd.edu.au: test feof() rather than EOF for -- AIX support -+ AIX support - *--------------------------------------------------------------------*/ - - #ifndef HAVE_STDIO_H -@@ -38,9 +38,9 @@ - - typedef struct my_F - { -- FILE *file; -- int line_nr; -- char *name; -+ FILE *file; -+ int line_nr; -+ char *name; - } my_FILE; - - -@@ -54,15 +54,15 @@ typedef struct my_F - my_FILE * - my_fopen(char *file_name, char *mode) - { -- my_FILE *f = (my_FILE *) malloc(sizeof(my_FILE)); -+ my_FILE *f = (my_FILE *) malloc(sizeof(my_FILE)); - -- if ((f->file = fopen(file_name, "r")) == NULL || (f->name = my_malloc((strlen(file_name) + 1) * sizeof(char))) == NULL) -- return NULL; -+ if ((f->file = fopen(file_name, "r")) == NULL || (f->name = unrtf_malloc((strlen(file_name) + 1) * sizeof(char))) == NULL) -+ return NULL; - -- f->line_nr = 1; -- strcpy(f->name, file_name); -+ f->line_nr = 1; -+ strcpy(f->name, file_name); - -- return f; -+ return f; - } - - /*======================================================================== -@@ -75,8 +75,8 @@ my_fopen(char *file_name, char *mode) - void - my_fclose(my_FILE *f) - { -- fclose(f->file); -- my_free(f->name); -+ fclose(f->file); -+ unrtf_free(f->name); - } - - /*======================================================================== -@@ -86,103 +86,103 @@ my_fclose(my_FILE *f) - * Returns: Definition or NULL on error. - *=======================================================================*/ - --#define ADD_CHAR(char)\ -- if (def_buffer_length == chars_nr)\ -- {\ -- if ((def = my_realloc(def, def_buffer_length, def_buffer_length * 2)) == NULL)\ -- {\ -- perror("Cannot allocate memory.");\ -- return NULL;\ -- }\ -- def_buffer_length *= 2;\ -- }\ -- def[chars_nr] = char;\ -- chars_nr++; -+#define ADD_CHAR(char) \ -+ if (def_buffer_length == chars_nr) \ -+ { \ -+ if ((def = unrtf_realloc(def, def_buffer_length, def_buffer_length * 2)) == NULL) \ -+ { \ -+ perror("Cannot allocate memory."); \ -+ return NULL; \ -+ } \ -+ def_buffer_length *= 2; \ -+ } \ -+ def[chars_nr] = char; \ -+ chars_nr++; - - char * - give_definition(my_FILE *file) - { -- char c, c2 = 0, c3 = 0, c4 = 0, *def, *unicode_char; -- int i; -- unsigned long def_buffer_length = STANDARD_BUFFER_LENGTH, chars_nr = 0; -+ char c, c2 = 0, c3 = 0, c4 = 0, *def, *unicode_char; -+ int i; -+ unsigned long def_buffer_length = STANDARD_BUFFER_LENGTH, chars_nr = 0; - -- if ((def = my_malloc(def_buffer_length)) == NULL) -- return NULL; -+ if ((def = unrtf_malloc(def_buffer_length)) == NULL) -+ return NULL; - -- c = fgetc(file->file); -+ c = fgetc(file->file); - -- while (c == '\t' || c == '#') -- { -- if (c == '#') -- leave_line(file->file); -- else -- { -- c = fgetc(file->file); -+ while (c == '\t' || c == '#') -+ { -+ if (c == '#') -+ leave_line(file->file); -+ else -+ { -+ c = fgetc(file->file); - - #if 1 /* daved 0.21.2 */ -- while (c != '\n' && !feof(file->file)) -+ while (c != '\n' && !feof(file->file)) - #else -- while (c != '\n' && c != EOF) -+ while (c != '\n' && c != EOF) - #endif -- { -- if (c == 'U' && c2 == '<' && (c3 != '\\' || (c3 == '\\' && c4 == '\\'))) -- { -- unicode_char = get_unicode_char(file->file); -+ { -+ if (c == 'U' && c2 == '<' && (c3 != '\\' || (c3 == '\\' && c4 == '\\'))) -+ { -+ unicode_char = get_unicode_char(file->file); - -- for (i = 0; unicode_char[i] != '\0'; i++) -- ADD_CHAR(unicode_char[i]) -- c = fgetc(file->file); -- c2 = 0; -- c3 = 0; -- c4 = 0; -- } -- else -- { -- if (c2 == '<') -- { -- ADD_CHAR('<'); -- } -+ for (i = 0; unicode_char[i] != '\0'; i++) -+ ADD_CHAR(unicode_char[i]) -+ c = fgetc(file->file); -+ c2 = 0; -+ c3 = 0; -+ c4 = 0; -+ } -+ else -+ { -+ if (c2 == '<') -+ { -+ ADD_CHAR('<'); -+ } - -- /* daved - support \n in definitions */ -- if (c == 'n' && c2 == '\\') -- { -- ADD_CHAR('\n'); -- } -- else -- if (c != '<' && c != '\\' || (c == '\\' && c2 == '\\')) -- { -- ADD_CHAR(c) -- } -+ /* daved - support \n in definitions */ -+ if (c == 'n' && c2 == '\\') -+ { -+ ADD_CHAR('\n'); -+ } -+ else -+ if (c != '<' && c != '\\' || (c == '\\' && c2 == '\\')) -+ { -+ ADD_CHAR(c); -+ } - -- c4 = c3; -- c3 = c2; -- c2 = c; -- c = fgetc(file->file); -- } -- } -+ c4 = c3; -+ c3 = c2; -+ c2 = c; -+ c = fgetc(file->file); -+ } -+ } - -- file->line_nr++; -- ADD_CHAR('\n'); -- } -+ file->line_nr++; -+ ADD_CHAR('\n'); -+ } - -- c = fgetc(file->file); -- } -+ c = fgetc(file->file); -+ } - - #if 1 /* daved 0.21.2 */ -- if (!feof(file->file)) -+ if (!feof(file->file)) - #else -- if (c != EOF) -+ if (c != EOF) - #endif -- { -- ungetc(c, file->file); -- } -+ { -+ ungetc(c, file->file); -+ } - -- if (chars_nr > 0) -- def[chars_nr - 1] = '\0'; -- else -- def[0] = '\0'; -+ if (chars_nr > 0) -+ def[chars_nr - 1] = '\0'; -+ else -+ def[0] = '\0'; - -- return def; -+ return def; - } - - /*======================================================================== -@@ -190,49 +190,71 @@ give_definition(my_FILE *file) - * Purpose: Tries to match known tag names with first argument - * Args: Tag name, Output Personality, file to read from - * Returns: -1 on error, -- 0 on success, -- 1 when tag name "name" is unknown -+ 0 on success, -+ 1 when tag name "name" is unknown - *=======================================================================*/ - - int - match_name (char *name, OutputPersonality *op, my_FILE *file) - { -- struct definition -- { -- char *name; -- char **variable; -- } defs[] = DEFS_ARRAY(op); -- -- char *endptr; -- int i; -+ struct definition -+ { -+ char *name; -+ char **variable; -+ } defs[] = DEFS_ARRAY(op); -+ char *def, *endptr; -+ int i; - - #if 1 /* daved 0.21.0-rc2 */ -- for (i = 0; defs[i].name && strcmp(defs[i].name, name); i++); -+ for (i = 0; defs[i].name && strcmp(defs[i].name, name); i++); - -- if (!defs[i].name) -+ if (!defs[i].name) - #else -- for (i = 0; defs[i].name[0] != '\0' && strcmp(defs[i].name, name); i++); -+ for (i = 0; defs[i].name[0] != '\0' && strcmp(defs[i].name, name); i++); - -- if (defs[i].name[0] == '\0') -+ if (defs[i].name[0] == '\0') - #endif -- { -- i = strtol(name, &endptr, 10); -+ { -+ i = strtol(name, &endptr, 10); - -- if (*endptr == '\0') -- add_alias(op, i, give_definition(file)); -- else if (name[0] == '<' && name[1] == 'U') -- add_alias(op, get_unicode(&name[2]), give_definition(file)); -- else -- { -- fprintf(stderr, "unrtf: unknown name \"%s\" in line %d of \"%s\"\n", name, file->line_nr, file->name); -- return 1; -- } -- } -- else -- if ((*defs[i].variable = give_definition(file)) == NULL) -- return -1; -+ def = give_definition(file); -+ if (*endptr == '\0') -+ add_alias(op, i, def); -+ else if (name[0] == '<' && name[1] == 'U') -+ add_alias(op, get_unicode(&name[2]), def); -+ else -+ { -+ unrtf_free (def); -+ fprintf(stderr, "unrtf: unknown name \"%s\" in line %d of \"%s\"\n", name, file->line_nr, file->name); -+ return 1; -+ } -+ unrtf_free (def); -+ } -+ else -+ if ((*defs[i].variable = give_definition(file)) == NULL) -+ return -1; - -- return 0; -+ return 0; -+} -+ -+void -+free_user_definitions (OutputPersonality *op) -+{ -+ struct definition -+ { -+ char *name; -+ char **variable; -+ } defs[] = DEFS_ARRAY(op); -+ char *variable; -+ int i; -+ -+ for (i = 0; defs[i].name; i++) -+ { -+ variable = *defs[i].variable; -+ if (variable) -+ free(variable); -+ *defs[i].variable = NULL; -+ } - } - - /*======================================================================== -@@ -243,52 +265,55 @@ match_name (char *name, OutputPersonalit - *=======================================================================*/ - - OutputPersonality * --user_init (OutputPersonality *op, char *definitions_file_path) -+user_init (const struct ConversionContext *cc, char *definitions_file_path) - { -- my_FILE *f; -- char name_buffer[BUFFER_SIZE]; -+ my_FILE *f; -+ char name_buffer[BUFFER_SIZE]; -+ OutputPersonality *op; - -- if (op == NULL) -- op = op_create(); -+ op = op_create(cc); - -- if ((f = my_fopen(definitions_file_path, "r")) == NULL) -- { -- perror(definitions_file_path); -- return op; -- } -+ if ((f = my_fopen(definitions_file_path, "r")) == NULL) -+ { -+ perror(definitions_file_path); -+ op_free (op); -+ op = NULL; -+ return op; -+ } - - #if 1 /* daved 0.21.2 */ -- while -- ( -- fgets(name_buffer, BUFFER_SIZE - 1, f->file) != NULL -- && -- !feof(f->file) -- ) -+ while -+ ( -+ fgets(name_buffer, BUFFER_SIZE - 1, f->file) != NULL -+ && -+ !feof(f->file) -+ ) - #else -- while (fgets(name_buffer, BUFFER_SIZE - 1, f->file) != NULL) -+ while (fgets(name_buffer, BUFFER_SIZE - 1, f->file) != NULL) - #endif -- { -- if (name_buffer[strlen(name_buffer) - 1] != '\n') -- leave_line(f->file); -+ { -+ if (name_buffer[strlen(name_buffer) - 1] != '\n') -+ leave_line(f->file); - -- f->line_nr++; -+ f->line_nr++; - -- if (name_buffer[0] != '#' && name_buffer[0] != '\n') -- { -- name_buffer[strlen(name_buffer) - 1] = '\0'; -+ if (name_buffer[0] != '#' && name_buffer[0] != '\n') -+ { -+ name_buffer[strlen(name_buffer) - 1] = '\0'; - -- if (match_name(name_buffer, op, f) == -1) -- { -- my_fclose(f); -- free(f); -- return NULL; -- } -- } -- } -+ if (match_name(name_buffer, op, f) == -1) -+ { -+ my_fclose(f); -+ free(f); -+ op_free (op); -+ return NULL; -+ } -+ } -+ } - -- my_fclose(f); -- free(f); -+ my_fclose(f); -+ free(f); - -- return op; -+ return op; - } - -diff -durpN unrtf-0.21.2.old/src/user.h unrtf-0.21.2/src/user.h ---- unrtf-0.21.2.old/src/user.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/user.h 2013-01-17 02:41:09.689864239 +0100 -@@ -151,9 +151,10 @@ - - #ifndef _USER - -+struct ConversionContext; - --extern OutputPersonality* user_init(OutputPersonality *, char *tags_file_path); -- -+extern OutputPersonality* user_init(const struct ConversionContext *cc, char *tags_file_path); -+extern void free_user_definitions (OutputPersonality *op); - - #define _USER - #endif -diff -durpN unrtf-0.21.2.old/src/util.c unrtf-0.21.2/src/util.c ---- unrtf-0.21.2.old/src/util.c 2010-08-09 14:05:30.000000000 +0200 -+++ unrtf-0.21.2/src/util.c 2013-01-17 02:41:09.689864239 +0100 -@@ -110,7 +110,7 @@ concatenate (const char *s1, const char - { - char *result; - -- result = my_malloc((strlen(s1) + strlen(s2) + 1) * sizeof(char)); -+ result = unrtf_malloc((strlen(s1) + strlen(s2) + 1) * sizeof(char)); - strcpy(result, s1); - strcat(result, s2); - -diff -durpN unrtf-0.21.2.old/src/word.c unrtf-0.21.2/src/word.c ---- unrtf-0.21.2.old/src/word.c 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/word.c 2013-01-17 02:41:09.689864239 +0100 -@@ -1,23 +1,23 @@ - /*============================================================================= -- GNU UnRTF, a command-line program to convert RTF documents to other formats. -- Copyright (C) 2000,2001,2004 by Zachary Smith -+ GNU UnRTF, a command-line program to convert RTF documents to other formats. -+ Copyright (C) 2000,2001,2004 by Zachary Smith - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -- (at your option) any later version. -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. - -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. - -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -- The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au --=============================================================================*/ -+ The maintainer is reachable by electronic mail at daved@physiol.usyd.edu.au -+ =============================================================================*/ - - - /*---------------------------------------------------------------------- -@@ -69,6 +69,7 @@ - #endif - - #include "defs.h" -+#include "convert.h" - #include "parse.h" - #include "malloc.h" - #include "main.h" -@@ -77,10 +78,6 @@ - #include "hash.h" - - --/* For word_dump */ --static int indent_level=0; -- -- - /*======================================================================== - * Name: word_string - * Purpose: Obtains the string of a Word object. This involves accessing -@@ -90,12 +87,14 @@ static int indent_level=0; - *=======================================================================*/ - - char * --word_string (Word *w) { -- char *str; -- CHECK_PARAM_NOT_NULL(w); -- if (w->hash_index) str = hash_get_string (w->hash_index); -- else str = NULL; -- return str; -+word_string (const struct ConversionContext *cc, Word *w) { -+ char *str; -+ CHECK_PARAM_NOT_NULL(w); -+ -+ if (w->hash_index) str = hash_get_string (cc, w->hash_index); -+ else str = NULL; -+ -+ return str; - } - - -@@ -108,24 +107,22 @@ word_string (Word *w) { - *=======================================================================*/ - - Word * --word_new (char *str) { -- Word * w; -+word_new (struct ConversionContext *cc, char *str) { -+ Word * w; - -- w = (Word *) my_malloc(sizeof(Word)); -- if (!w) -- error_handler ("out of memory"); -- memset ((void*) w, 0, sizeof(Word)); -- if (!w) error_handler ("cannot allocate a Word"); -+ w = (Word *) unrtf_malloc(sizeof(Word)); -+ if (!w) -+ error_handler (cc, "out of memory"); -+ memset ((void*) w, 0, sizeof(Word)); -+ if (!w) error_handler (cc, "cannot allocate a Word"); - -- if (str) w->hash_index = hash_get_index (str); -- else w->hash_index = 0; -+ if (str) w->hash_index = hash_get_index (cc, str); -+ else w->hash_index = 0; - -- return w; -+ return w; - } - - -- -- - /*======================================================================== - * Name: word_free - * Purpose: Deallocates a Word object. This is only called at the end of -@@ -135,20 +132,20 @@ word_new (char *str) { - *=======================================================================*/ - - void word_free (Word *w) { -- Word *prev; -- Word *w2; -+ Word *prev; -+ Word *w2; - -- CHECK_PARAM_NOT_NULL(w); -+ CHECK_PARAM_NOT_NULL(w); - -- while (w) { -- w2 = w->child; -- if (w2) -- word_free(w2); -+ while (w) { -+ w2 = w->child; -+ if (w2) -+ word_free(w2); - -- prev = w; -- w = w->next; -- my_free((char*) prev); -- } -+ prev = w; -+ w = w->next; -+ unrtf_free((char*) prev); -+ } - } - - -@@ -165,14 +162,14 @@ void word_free (Word *w) { - static void - print_indentation (int level) - { -- int i; -+ int i; - -- if (level) { -- for (i=0;iindent_level += 2; -+ print_indentation (cc->indent_level); - -- while (w) { -- s = word_string (w); -- if (s) { -- printf ("\"%s\" ", s); -- } else { -- if (w->child) { -- word_dump (w->child); -- printf ("\n"); -- print_indentation (indent_level); -- } -- else -- warning_handler ("Word object has no string and no children"); -- } -- w = w->next; -- } -+ while (w) { -+ s = word_string (cc, w); -+ if (s) { -+ printf ("\"%s\" ", s); -+ } else { -+ if (w->child) { -+ word_dump (cc, w->child); -+ printf ("\n"); -+ print_indentation (cc->indent_level); -+ } -+ else -+ warning_handler ("Word object has no string and no children"); -+ } -+ w = w->next; -+ } - -- indent_level -= 2; -+ cc->indent_level -= 2; - } - - #if 1 /* AK6 - AF */ -@@ -223,56 +220,56 @@ word_dump (Word *w) - * Returns: Optimized word. - *=======================================================================*/ - Word * --optimize_word(Word *w) -+optimize_word(const struct ConversionContext *cc, Word *w) - { -- char *s, *s1; -- int i = 0, len; -- Collection *c = NULL; -- Tag tags_to_opt[] = OPT_ARRAY; -- Word *root = w, *w2; -+ char *s, *s1; -+ int i = 0, len; -+ Collection *c = NULL; -+ Tag tags_to_opt[] = OPT_ARRAY; -+ Word *root = w, *w2; - -- for (; w != NULL; w = w->next) -- { -+ for (; w != NULL; w = w->next) -+ { - -- if (s = word_string(w)) -- { -- for (i = 0; tags_to_opt[i].name[0] != '\0'; i++) -- { -- if (tags_to_opt[i].has_param) -- { -- len = strlen(tags_to_opt[i].name); -- if (!strncmp(tags_to_opt[i].name, s, len) && (isdigit(s[len]) || s[len] == '-')) -- break; -- } -- else -- if (!strcmp(tags_to_opt[i].name, s)) -- break; -- } -+ if (s = word_string(cc, w)) -+ { -+ for (i = 0; tags_to_opt[i].name[0] != '\0'; i++) -+ { -+ if (tags_to_opt[i].has_param) -+ { -+ len = strlen(tags_to_opt[i].name); -+ if (!strncmp(tags_to_opt[i].name, s, len) && (isdigit(s[len]) || s[len] == '-')) -+ break; -+ } -+ else -+ if (!strcmp(tags_to_opt[i].name, s)) -+ break; -+ } - -- if (tags_to_opt[i].name[0] != '\0') -- { -- s1 = get_from_collection(c, i); -+ if (tags_to_opt[i].name[0] != '\0') -+ { -+ s1 = get_from_collection(c, i); - -- if (s != NULL && s1 != NULL && !strcmp(s1, s)) -- { -- w2->next = w->next; -- my_free((char *)w); -- w = w2; -- } -- else -- c = add_to_collection(c, i, s); -- } -- } -+ if (s != NULL && s1 != NULL && !strcmp(s1, s)) -+ { -+ w2->next = w->next; -+ unrtf_free((char *)w); -+ w = w2; -+ } -+ else -+ c = add_to_collection(c, i, s); -+ } -+ } - -- if (w->child != NULL) -- w->child = optimize_word(w->child); -+ if (w->child != NULL) -+ w->child = optimize_word(cc, w->child); - -- w2 = w; -- } -+ w2 = w; -+ } - --// free_collection(c); -+ free_collection(c); - -- return root; -+ return root; - } - #endif - -diff -durpN unrtf-0.21.2.old/src/word.h unrtf-0.21.2/src/word.h ---- unrtf-0.21.2.old/src/word.h 2010-07-04 04:30:58.000000000 +0200 -+++ unrtf-0.21.2/src/word.h 2013-01-17 02:41:09.689864239 +0100 -@@ -41,14 +41,15 @@ typedef struct _w { - struct _w * child; - } Word; - --extern Word* word_new (char*); -+struct ConversionContext; -+ -+extern Word* word_new (struct ConversionContext *, char*); - extern void word_free (Word*); --extern Word* word_read (FILE*); --extern char* word_string (Word*); --extern void word_dump (Word*); -+extern char* word_string (const struct ConversionContext *, Word*); -+extern void word_dump (struct ConversionContext *, Word*); - extern void word_print_html (Word*); - --extern Word* optimize_word(Word*); -+extern Word* optimize_word(const struct ConversionContext *, Word*); - - typedef struct _t { - char *name; diff --git a/OpenChange/unrtf-0.21.2.tar.gz b/OpenChange/unrtf-0.21.2.tar.gz deleted file mode 100644 index 421ba59f0e4e6c34375f0e7eeaf4a5bb68a5a3df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 617656 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�-)n{t$a_zwb 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

Oz+*4A_soePyPbpDRx${GvazsMq&JT6U6?yp! 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

305=bS8l#byh_54$jKHVn3_ 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 z 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

%ypQbY|zUJE^kkRpW` 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�)aaLc#FE0^DN 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 header file. */ -#define HAVE_CTYPE_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if your system has a GNU libc compatible `malloc' function, and - to 0 otherwise. */ -#define HAVE_MALLOC 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `memset' function. */ -#define HAVE_MEMSET 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDIO_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the `strchr' function. */ -#define HAVE_STRCHR 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the `strstr' function. */ -#define HAVE_STRSTR 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Name of package */ -#define PACKAGE "unrtf" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "bug-unrtf@gnu.org" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "unrtf" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "unrtf 0.21.2" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "unrtf" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "0.21.2" - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Version number of package */ -#define VERSION "0.21.2" - -/* Define to rpl_malloc if the replacement function should be used. */ -/* #undef malloc */