From 451c82c8154b4e2bd4fb4cee5bded7109a1e1942 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Fri, 1 Feb 2013 18:35:10 -0500 Subject: [PATCH 01/77] Don't use user/password cache from the login page The idea is to always use memcached for credentials to avoid hitting the authentication backend on every click but to check with the auth backend for every login requests. This should fix #2169 While there, fix whitespace (killtab) --- SoObjects/SOGo/SOGoUserManager.h | 16 +++++++++---- SoObjects/SOGo/SOGoUserManager.m | 33 ++++++++++++++++++++------- SoObjects/SOGo/SOGoWebAuthenticator.h | 16 +++++++++---- SoObjects/SOGo/SOGoWebAuthenticator.m | 28 +++++++++++++++++++---- 4 files changed, 72 insertions(+), 21 deletions(-) diff --git a/SoObjects/SOGo/SOGoUserManager.h b/SoObjects/SOGo/SOGoUserManager.h index 23ef643df..6564e10b2 100644 --- a/SoObjects/SOGo/SOGoUserManager.h +++ b/SoObjects/SOGo/SOGoUserManager.h @@ -82,11 +82,19 @@ - (NSString *) getLoginForDN: (NSString *) theDN; - (BOOL) checkLogin: (NSString *) _login - password: (NSString *) _pwd + password: (NSString *) _pwd domain: (NSString **) _domain - perr: (SOGoPasswordPolicyError *) _perr - expire: (int *) _expire - grace: (int *) _grace; + perr: (SOGoPasswordPolicyError *) _perr + expire: (int *) _expire + grace: (int *) _grace; + +- (BOOL) checkLogin: (NSString *) _login + password: (NSString *) _pwd + domain: (NSString **) _domain + perr: (SOGoPasswordPolicyError *) _perr + expire: (int *) _expire + grace: (int *) _grace + useCache: (BOOL) _useCache; - (BOOL) changePasswordForLogin: (NSString *) login inDomain: (NSString *) domain diff --git a/SoObjects/SOGo/SOGoUserManager.m b/SoObjects/SOGo/SOGoUserManager.m index 28fec2a21..d6a0f9a5b 100644 --- a/SoObjects/SOGo/SOGoUserManager.m +++ b/SoObjects/SOGo/SOGoUserManager.m @@ -448,11 +448,28 @@ static Class NSNullK; } - (BOOL) checkLogin: (NSString *) _login - password: (NSString *) _pwd + password: (NSString *) _pwd domain: (NSString **) _domain - perr: (SOGoPasswordPolicyError *) _perr - expire: (int *) _expire - grace: (int *) _grace + perr: (SOGoPasswordPolicyError *) _perr + expire: (int *) _expire + grace: (int *) _grace +{ + return [self checkLogin: _login + password: _pwd + domain: _domain + perr: _perr + expire: _expire + grace: _grace + useCache: YES]; +} + +- (BOOL) checkLogin: (NSString *) _login + password: (NSString *) _pwd + domain: (NSString **) _domain + perr: (SOGoPasswordPolicyError *) _perr + expire: (int *) _expire + grace: (int *) _grace + useCache: (BOOL) useCache { NSString *dictPassword, *username, *jsonUser; NSMutableDictionary *currentUser; @@ -468,7 +485,7 @@ static Class NSNullK; jsonUser = [[SOGoCache sharedCache] userAttributesForLogin: username]; currentUser = [jsonUser objectFromJSONString]; dictPassword = [currentUser objectForKey: @"password"]; - if (currentUser && dictPassword) + if (useCache && currentUser && dictPassword) { checkOK = ([dictPassword isEqualToString: [_pwd asSHA1String]]); //NSLog(@"Password cache hit for user %@", _login); @@ -482,9 +499,9 @@ static Class NSNullK; { checkOK = YES; if (!currentUser) - { - currentUser = [NSMutableDictionary dictionary]; - } + { + currentUser = [NSMutableDictionary dictionary]; + } // It's important to cache the password here as we might have cached the // user's entry in -contactInfosForUserWithUIDorEmail: and if we don't diff --git a/SoObjects/SOGo/SOGoWebAuthenticator.h b/SoObjects/SOGo/SOGoWebAuthenticator.h index 5a3533c70..a2d9eeb5b 100644 --- a/SoObjects/SOGo/SOGoWebAuthenticator.h +++ b/SoObjects/SOGo/SOGoWebAuthenticator.h @@ -42,11 +42,19 @@ + (id) sharedSOGoWebAuthenticator; - (BOOL) checkLogin: (NSString *) _login - password: (NSString *) _pwd + password: (NSString *) _pwd domain: (NSString **) _domain - perr: (SOGoPasswordPolicyError *) _perr - expire: (int *) _expire - grace: (int *) _grace; + perr: (SOGoPasswordPolicyError *) _perr + expire: (int *) _expire + grace: (int *) _grace; + +- (BOOL) checkLogin: (NSString *) _login + password: (NSString *) _pwd + domain: (NSString **) _domain + perr: (SOGoPasswordPolicyError *) _perr + expire: (int *) _expire + grace: (int *) _grace + useCache: (BOOL) useCache; - (WOCookie *) cookieWithUsername: (NSString *) username andPassword: (NSString *) password diff --git a/SoObjects/SOGo/SOGoWebAuthenticator.m b/SoObjects/SOGo/SOGoWebAuthenticator.m index cfe2482f0..008c9517e 100644 --- a/SoObjects/SOGo/SOGoWebAuthenticator.m +++ b/SoObjects/SOGo/SOGoWebAuthenticator.m @@ -104,11 +104,28 @@ } - (BOOL) checkLogin: (NSString *) _login - password: (NSString *) _pwd + password: (NSString *) _pwd domain: (NSString **) _domain - perr: (SOGoPasswordPolicyError *) _perr - expire: (int *) _expire - grace: (int *) _grace + perr: (SOGoPasswordPolicyError *) _perr + expire: (int *) _expire + grace: (int *) _grace +{ + return [self checkLogin: _login + password: _pwd + domain: _domain + perr: _perr + expire: _expire + grace: _grace + useCache: YES]; +} + +- (BOOL) checkLogin: (NSString *) _login + password: (NSString *) _pwd + domain: (NSString **) _domain + perr: (SOGoPasswordPolicyError *) _perr + expire: (int *) _expire + grace: (int *) _grace + useCache: (BOOL) _useCache { SOGoCASSession *session; SOGoSystemDefaults *sd; @@ -144,7 +161,8 @@ domain: _domain perr: _perr expire: _expire - grace: _grace]; + grace: _grace + useCache: _useCache]; //[self logWithFormat: @"Checked login with ppolicy enabled: %d %d %d", *_perr, *_expire, *_grace]; From 7b5da8a2c9a30d36969fa6aa09b8e168f3e6e243 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Fri, 1 Feb 2013 19:58:25 -0500 Subject: [PATCH 02/77] don't use cache for login page --- UI/MainUI/SOGoRootPage.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UI/MainUI/SOGoRootPage.m b/UI/MainUI/SOGoRootPage.m index 50d1fba43..f28ea533f 100644 --- a/UI/MainUI/SOGoRootPage.m +++ b/UI/MainUI/SOGoRootPage.m @@ -202,7 +202,7 @@ domain = [request formValueForKey: @"domain"]; if ((b = [auth checkLogin: username password: password domain: &domain - perr: &err expire: &expire grace: &grace]) + perr: &err expire: &expire grace: &grace useCache: NO]) && (err == PolicyNoError) // no password policy && ((expire < 0 && grace < 0) // no password policy or everything is alright From 469e5c647e74a53fc03d22c35b6da22fcbf1922d Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Tue, 5 Feb 2013 11:52:26 -0500 Subject: [PATCH 03/77] Updated NEWS --- NEWS | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/NEWS b/NEWS index 4e8d5eb2f..a30a8b00e 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,12 @@ +2.0.5 (2013-02-dd) +------------------ + +Enhancements + - + +Bug fixes + - Don't use the cache for password lookups from login page (#2169) + 2.0.4b (2013-02-04) ------------------ From 70fc05091f2f3cdbac1c66291a940a8223e46876 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Tue, 5 Feb 2013 14:27:16 -0500 Subject: [PATCH 04/77] Remove x-webobjects-remote-host from apache conf SOPE now handles this on its own by setting x-webobjects-remote-host to the content of the x-forward or x-forwarded-for headers if it wasn't defined --- Apache/SOGo.conf | 6 ------ NEWS | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/Apache/SOGo.conf b/Apache/SOGo.conf index 1762ebac3..853b5ae0e 100644 --- a/Apache/SOGo.conf +++ b/Apache/SOGo.conf @@ -59,7 +59,6 @@ ProxyPass /SOGo http://127.0.0.1:20000/SOGo retry=0 # RequestHeader set "x-webobjects-remote-user" "%{REMOTE_USER}e" RequestHeader set "x-webobjects-server-protocol" "HTTP/1.0" - RequestHeader set "x-webobjects-remote-host" %{REMOTE_HOST}e env=REMOTE_HOST AddDefaultCharset UTF-8 @@ -67,8 +66,3 @@ ProxyPass /SOGo http://127.0.0.1:20000/SOGo retry=0 Allow from all -## We use mod_rewrite to pass remote address to the SOGo proxy. -# The remote address will appear in SOGo's log files and in the X-Forward -# header of emails. -RewriteEngine On -RewriteRule ^/SOGo/(.*)$ /SOGo/$1 [env=REMOTE_HOST:%{REMOTE_ADDR},PT] diff --git a/NEWS b/NEWS index a30a8b00e..44bc2598d 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,7 @@ ------------------ Enhancements - - + - Added logging of the X-Forwarded-For HTTP header (#2229) Bug fixes - Don't use the cache for password lookups from login page (#2169) From 0532d331a3497d97b91d59fdf3670dc4a21e8b0a Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Tue, 5 Feb 2013 15:09:20 -0500 Subject: [PATCH 05/77] whitespace (tabkill) --- SoObjects/SOGo/SOGoSieveManager.m | 46 +++++++++++++++---------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/SoObjects/SOGo/SOGoSieveManager.m b/SoObjects/SOGo/SOGoSieveManager.m index d75f9dba4..c3bf3d86d 100644 --- a/SoObjects/SOGo/SOGoSieveManager.m +++ b/SoObjects/SOGo/SOGoSieveManager.m @@ -474,8 +474,8 @@ static NSString *sieveScriptName = @"sogo"; sieveAction = [NSString stringWithFormat: @"%@ %@", method, [argument asSieveQuotedString]]; else if ([method isEqualToString: @"reject"]) - sieveAction = [NSString stringWithFormat: @"%@ %@", - method, [argument asSieveQuotedString]]; + sieveAction = [NSString stringWithFormat: @"%@ %@", + method, [argument asSieveQuotedString]]; else scriptError = [NSString stringWithFormat: @"Action has unknown method '%@'", @@ -605,9 +605,9 @@ static NSString *sieveScriptName = @"sogo"; // // - (BOOL) updateFiltersForLogin: (NSString *) theLogin - authname: (NSString *) theAuthName - password: (NSString *) thePassword - account: (SOGoMailAccount *) theAccount + authname: (NSString *) theAuthName + password: (NSString *) thePassword + account: (SOGoMailAccount *) theAccount { NSMutableArray *req; NSMutableString *script, *header; @@ -777,30 +777,30 @@ static NSString *sieveScriptName = @"sogo"; b = YES; if (days == 0) - days = 7; + days = 7; [req addObjectUniquely: @"vacation"]; // Skip mailing lists if (ignore) - [script appendString: @"if allof ( not exists [\"list-help\", \"list-unsubscribe\", \"list-subscribe\", \"list-owner\", \"list-post\", \"list-archive\", \"list-id\", \"Mailing-List\"], not header :comparator \"i;ascii-casemap\" :is \"Precedence\" [\"list\", \"bulk\", \"junk\"], not header :comparator \"i;ascii-casemap\" :matches \"To\" \"Multiple recipients of*\" ) {"]; + [script appendString: @"if allof ( not exists [\"list-help\", \"list-unsubscribe\", \"list-subscribe\", \"list-owner\", \"list-post\", \"list-archive\", \"list-id\", \"Mailing-List\"], not header :comparator \"i;ascii-casemap\" :is \"Precedence\" [\"list\", \"bulk\", \"junk\"], not header :comparator \"i;ascii-casemap\" :matches \"To\" \"Multiple recipients of*\" ) {"]; [script appendFormat: @"vacation :days %d :addresses [", days]; for (i = 0; i < [addresses count]; i++) - { - [script appendFormat: @"\"%@\"", [addresses objectAtIndex: i]]; + { + [script appendFormat: @"\"%@\"", [addresses objectAtIndex: i]]; - if (i == [addresses count]-1) - [script appendString: @"] "]; - else - [script appendString: @", "]; - } + if (i == [addresses count]-1) + [script appendString: @"] "]; + else + [script appendString: @", "]; + } [script appendFormat: @"text:\r\n%@\r\n.\r\n;\r\n", text]; if (ignore) - [script appendString: @"}\r\n"]; + [script appendString: @"}\r\n"]; } @@ -819,14 +819,14 @@ static NSString *sieveScriptName = @"sogo"; addresses = [NSArray arrayWithObject: addresses]; for (i = 0; i < [addresses count]; i++) - { + { v = [addresses objectAtIndex: i]; if (v && [v length] > 0) [script appendFormat: @"redirect \"%@\";\r\n", v]; } if ([[values objectForKey: @"keepCopy"] boolValue]) - [script appendString: @"keep;\r\n"]; + [script appendString: @"keep;\r\n"]; } if ([req count]) @@ -854,16 +854,16 @@ static NSString *sieveScriptName = @"sogo"; result = [client putScript: sieveScriptName script: script]; if (![[result valueForKey:@"result"] boolValue]) { - NSLog(@"Could not upload Sieve script: %@", result); - [client closeConnection]; - return NO; + NSLog(@"Could not upload Sieve script: %@", result); + [client closeConnection]; + return NO; } result = [client setActiveScript: sieveScriptName]; if (![[result valueForKey:@"result"] boolValue]) { - NSLog(@"Could not enable Sieve script: %@", result); - [client closeConnection]; - return NO; + NSLog(@"Could not enable Sieve script: %@", result); + [client closeConnection]; + return NO; } } From 43044bf88fdbfe630572ad89a32ef9b2f155ea6d Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Tue, 5 Feb 2013 15:09:55 -0500 Subject: [PATCH 06/77] Plug sieve connection leak Fixes #2228 Fix from 'bofhus' --- SoObjects/SOGo/SOGoSieveManager.m | 1 + 1 file changed, 1 insertion(+) diff --git a/SoObjects/SOGo/SOGoSieveManager.m b/SoObjects/SOGo/SOGoSieveManager.m index c3bf3d86d..19aa11132 100644 --- a/SoObjects/SOGo/SOGoSieveManager.m +++ b/SoObjects/SOGo/SOGoSieveManager.m @@ -867,6 +867,7 @@ static NSString *sieveScriptName = @"sogo"; } } + [client closeConnection]; return YES; } From 49a22994148d25d0f22464f5de69d45112475c95 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 5 Feb 2013 16:11:37 -0500 Subject: [PATCH 07/77] Avoid going out of bounds for special URL chars ending mail contents. --- SoObjects/SOGo/NSString+Utilities.m | 33 ++++++++++++++++++----------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/SoObjects/SOGo/NSString+Utilities.m b/SoObjects/SOGo/NSString+Utilities.m index 768cae86f..506344284 100644 --- a/SoObjects/SOGo/NSString+Utilities.m +++ b/SoObjects/SOGo/NSString+Utilities.m @@ -195,18 +195,27 @@ static int cssEscapingCount; startLocation--; matchRange.location = startLocation + 1; - currentUrlRange = [selfCopy _rangeOfURLInRange: matchRange]; - if (![ranges hasRangeIntersection: currentUrlRange]) - if (currentUrlRange.length > matchLength) - [newRanges addNonNSObject: ¤tUrlRange - withSize: sizeof (NSRange) - copy: YES]; - - rest.location = NSMaxRange (currentUrlRange); - length = [selfCopy length]; - rest.length = length - rest.location; - matchRange = [selfCopy rangeOfString: match - options: 0 range: rest]; + // We avoid going out of bounds if the mail content actually finishes + // with the @ (or something else) character + if (matchRange.location < [selfCopy length]) + { + currentUrlRange = [selfCopy _rangeOfURLInRange: matchRange]; + if (![ranges hasRangeIntersection: currentUrlRange]) + if (currentUrlRange.length > matchLength) + [newRanges addNonNSObject: ¤tUrlRange + withSize: sizeof (NSRange) + copy: YES]; + + rest.location = NSMaxRange (currentUrlRange); + length = [selfCopy length]; + rest.length = length - rest.location; + matchRange = [selfCopy rangeOfString: match + options: 0 range: rest]; + } + else + { + matchRange.location = NSNotFound; + } } // Make the substitutions, keep track of the new offset From feb02c54b918154919c224e257b79765c0770649 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 5 Feb 2013 16:13:18 -0500 Subject: [PATCH 08/77] Add missing localizable string --- UI/Scheduler/English.lproj/Localizable.strings | 1 + UI/WebServerResources/SchedulerUI.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/UI/Scheduler/English.lproj/Localizable.strings b/UI/Scheduler/English.lproj/Localizable.strings index 6fe90daf0..7f6188e55 100644 --- a/UI/Scheduler/English.lproj/Localizable.strings +++ b/UI/Scheduler/English.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Confidential task)"; "Web Calendar" = "Web Calendar"; "Reload on login" = "Reload on login"; "Invalid number." = "Invalid number."; +"Please identify yourself to %{0}" = "Please identify yourself to %{0}"; diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 97eb6da88..30bb7355f 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -1441,7 +1441,7 @@ function reauthenticateWebCalendar(folderID, refreshCBData) { triggerAjaxRequest(url, authenticateWebCalendarCallback, refreshCBData, parameters, { "Content-type": "application/x-www-form-urlencoded" }); } - showAuthenticationDialog(_("Please identify yourself to \"%{0}\"...") + showAuthenticationDialog(_("Please identify yourself to %{0}") .formatted(hostname), authenticate); } From f8387b90ffd3f016f4a4de88577b1280a84aefc8 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 6 Feb 2013 09:23:47 -0500 Subject: [PATCH 09/77] Log x-webobjects-remote-host in login process Most of the time, the remote-host will contain data from the x-forwarded-for header. Which could have more than one ip in it if the request went through multiple proxies. eg. x-forwarded-for: real.client.ip, load.balancer.ip --- UI/MainUI/SOGoRootPage.m | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/UI/MainUI/SOGoRootPage.m b/UI/MainUI/SOGoRootPage.m index f28ea533f..fb349ef61 100644 --- a/UI/MainUI/SOGoRootPage.m +++ b/UI/MainUI/SOGoRootPage.m @@ -182,7 +182,7 @@ SOGoUserDefaults *ud; SOGoSystemDefaults *sd; SOGoUser *loggedInUser; - NSString *username, *password, *language, *domain; + NSString *username, *password, *language, *domain, *remoteHost; NSArray *supportedLanguages; SOGoPasswordPolicyError err; @@ -200,6 +200,9 @@ language = [request formValueForKey: @"language"]; rememberLogin = [[request formValueForKey: @"rememberLogin"] boolValue]; domain = [request formValueForKey: @"domain"]; + /* this will always be set to something more or less useful by + * [WOHttpTransaction applyAdaptorHeadersWithHttpRequest] */ + remoteHost = [request headerForKey:@"x-webobjects-remote-host"]; if ((b = [auth checkLogin: username password: password domain: &domain perr: &err expire: &expire grace: &grace useCache: NO]) @@ -211,7 +214,7 @@ { NSDictionary *json; - [self logWithFormat: @"successful login for user '%@' - expire = %d grace = %d", username, expire, grace]; + [self logWithFormat: @"successful login from '%@' for user '%@' - expire = %d grace = %d", remoteHost, username, expire, grace]; json = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt: expire], @"expire", [NSNumber numberWithInt: grace], @"grace", nil]; @@ -248,7 +251,8 @@ } else { - [self logWithFormat: @"Login for user '%@' might not have worked - password policy: %d grace: %d expire: %d bound: %d", username, err, grace, expire, b]; + [self logWithFormat:@"Login from '%@' for user '%@' might not have worked - password policy: %d grace: %d expire: %d bound: %d", + remoteHost, username, err, grace, expire, b]; response = [self _responseWithLDAPPolicyError: err]; } From 90c61abdb654e00ad172ab88cc75059c3d45bd6d Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 6 Feb 2013 15:16:09 -0500 Subject: [PATCH 10/77] Update Polish translation --- .../Mailer/SOGoMailPolishReply.wo/SOGoMailPolishReply.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/Mailer/SOGoMailPolishReply.wo/SOGoMailPolishReply.html b/SoObjects/Mailer/SOGoMailPolishReply.wo/SOGoMailPolishReply.html index e2e085a4a..fb574905e 100644 --- a/SoObjects/Mailer/SOGoMailPolishReply.wo/SOGoMailPolishReply.html +++ b/SoObjects/Mailer/SOGoMailPolishReply.wo/SOGoMailPolishReply.html @@ -8,7 +8,7 @@ Data: <#date/><#newLine/> Od: <#from/><#newLine/> <#hasReplyTo>Odpowiedź do: <#replyTo/><#hasOrganization>Organizacja: <#organization/>Do: <#to/><#newLine/> <#hasCc>DW: <#cc/><#hasNewsGroups>Grupy dyskusyjne: <#newsgroups/><#hasReferences>Odniesienia: <#references/><#newLine/> -<#standardMode>Dnia <#date/>, <#from/> napisał(a):<#newLine/> +<#standardMode>W dniu: <#date/>, <#from/> napisał(a):<#newLine/> <#newLine/> <#messageBody/><#newLine/> <#replyPlacementOnBottom><#newLine/> From 7b65b7400e269bdc8d020d29bd8cf0b33aea09e1 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 7 Feb 2013 09:00:16 -0500 Subject: [PATCH 11/77] Update Finnish translation --- UI/MailerUI/Finnish.lproj/Localizable.strings | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/UI/MailerUI/Finnish.lproj/Localizable.strings b/UI/MailerUI/Finnish.lproj/Localizable.strings index db4510da4..dd10107c8 100644 --- a/UI/MailerUI/Finnish.lproj/Localizable.strings +++ b/UI/MailerUI/Finnish.lproj/Localizable.strings @@ -15,7 +15,7 @@ "Write" = "Kirjoita"; "Send" = "Lähetä"; -"Contacts" = "Kontaktit"; +"Contacts" = "Yhteystiedot"; "Attach" = "Liitä"; "Save" = "Tallenna"; "Options" = "Asetukset"; @@ -259,7 +259,6 @@ "Please select only one message to print." = "Ole hyvä ja valitse vain yksi viesti tulostettavaksi."; "The message you have selected doesn't exist anymore." = "Valitsemaasi viestiä ei ole enää olemassa."; - "The folder with name \"%{0}\" could not be created." = "Kansiota \"%{0}\" ei voitu luoda."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "Viestiä ei voi lähettää: seuraavat osoitteet ovat virheellisiä:"; "cannot send message: (smtp) error when connecting" = "Viestiä ei voi lähettää: virhe yhdistettäessä SMTP -palvelimeen."; -"Name" = "Nimi"; +/* Contacts list in mail editor */ "Email" = "Sähköposti"; +"Name" = "Nimi"; From 470a53a548c46af72d8956475fdacba045458d10 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Thu, 7 Feb 2013 13:00:27 -0500 Subject: [PATCH 12/77] Add example configuration for fail2ban From Arnd Brandes. (#2229) --- Scripts/fail2ban/sogo-filter.conf | 20 ++++++++++++++++++++ Scripts/fail2ban/sogo-jail.local | 9 +++++++++ 2 files changed, 29 insertions(+) create mode 100644 Scripts/fail2ban/sogo-filter.conf create mode 100644 Scripts/fail2ban/sogo-jail.local diff --git a/Scripts/fail2ban/sogo-filter.conf b/Scripts/fail2ban/sogo-filter.conf new file mode 100644 index 000000000..b6d2da58e --- /dev/null +++ b/Scripts/fail2ban/sogo-filter.conf @@ -0,0 +1,20 @@ +# /etc/fail2ban/filter.d/sogo.conf +# +# Fail2Ban configuration file +# By Arnd Brandes +# SOGo +# + +[Definition] +# Option: failregex +# Filter Ban in /var/log/sogo/sogo.log +# Note: the error log may contain multiple hosts, whereas the first one +# is the client and all others are poxys. We match the first one, only + +failregex = Login from '.*' for user '.*' might not have worked + +# Option: ignoreregex +# Notes.: regex to ignore. If this regex matches, the line is ignored. +# Values: TEXT +# +ignoreregex = diff --git a/Scripts/fail2ban/sogo-jail.local b/Scripts/fail2ban/sogo-jail.local new file mode 100644 index 000000000..4a403e70f --- /dev/null +++ b/Scripts/fail2ban/sogo-jail.local @@ -0,0 +1,9 @@ +[SOGo] +enabled = true +port = http,https +# in proxy-free setup this would be: +# port = 20000 +filter = sogo +logpath = /var/log/sogo/sogo.log +maxretry = 5 + From 8981dcd64503f1fa907e98593a76b6bff9cbb02d Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 8 Feb 2013 09:42:31 -0500 Subject: [PATCH 13/77] Fix segfault in SOGoSieveManager.m --- SoObjects/SOGo/SOGoSieveManager.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/SOGo/SOGoSieveManager.m b/SoObjects/SOGo/SOGoSieveManager.m index 19aa11132..603e21e28 100644 --- a/SoObjects/SOGo/SOGoSieveManager.m +++ b/SoObjects/SOGo/SOGoSieveManager.m @@ -278,7 +278,7 @@ static NSString *sieveScriptName = @"sogo"; else scriptError = [NSString stringWithFormat: @"Rule based on unknown field '%@'", - *field]; + jsonField]; } else scriptError = @"Rule without any specified field."; From 4952ff7914dd0f3aa5c9c2bf5e04e29bf4317836 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Fri, 8 Feb 2013 16:22:14 -0500 Subject: [PATCH 14/77] Use SOGoSystemDefaults in all tools sogo-ealarms-notify and sogo-slapd-sockd will now be able to use sogo.conf Fixes #2226 --- Tools/sogo-ealarms-notify.m | 11 ++++++----- Tools/sogo-slapd-sockd.m | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Tools/sogo-ealarms-notify.m b/Tools/sogo-ealarms-notify.m index 0e1f281f7..47fe3a3b5 100644 --- a/Tools/sogo-ealarms-notify.m +++ b/Tools/sogo-ealarms-notify.m @@ -23,28 +23,29 @@ #import #import +#import + #import "SOGoEAlarmsNotifier.h" int main (int argc, char **argv, char **env) { NSAutoreleasePool *pool; - NSUserDefaults *ud; SOGoEAlarmsNotifier *notifier; + SOGoSystemDefaults *sogoDefaults; int rc; rc = 0; pool = [NSAutoreleasePool new]; - ud = [NSUserDefaults standardUserDefaults]; - [ud addSuiteNamed: @"sogod"]; + sogoDefaults = [SOGoSystemDefaults sharedSystemDefaults]; - if ([ud objectForKey: @"SOGoEnableEMailAlarms"]) + if ([sogoDefaults objectForKey: @"SOGoEnableEMailAlarms"]) { notifier = [SOGoEAlarmsNotifier new]; if (![notifier run]) - rc = -1; + rc = -1; [notifier release]; } else diff --git a/Tools/sogo-slapd-sockd.m b/Tools/sogo-slapd-sockd.m index fd7662be3..300aec4a3 100644 --- a/Tools/sogo-slapd-sockd.m +++ b/Tools/sogo-slapd-sockd.m @@ -23,13 +23,14 @@ #import #import +#import + #import "SOGoSockD.h" int main (int argc, char **argv, char **env) { NSAutoreleasePool *pool; - NSUserDefaults *ud; SOGoSockD *sockd; int rc; @@ -37,8 +38,7 @@ main (int argc, char **argv, char **env) pool = [NSAutoreleasePool new]; - ud = [NSUserDefaults standardUserDefaults]; - [ud addSuiteNamed: @"sogod"]; + [SOGoSystemDefaults sharedSystemDefaults]; sockd = [SOGoSockD new]; if ([sockd run]) From caf6f0ec6cdc0a43a7026036b26b54ab944ceafc Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Mon, 11 Feb 2013 10:41:50 -0500 Subject: [PATCH 15/77] Add example apache configuration for apple AB --- Apache/SOGo-apple-ab.conf | 26 ++++++++++++++++++++++++++ packaging/debian-multiarch/sogo.docs | 1 + packaging/debian/sogo.docs | 1 + packaging/rhel/sogo.spec | 2 +- 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 Apache/SOGo-apple-ab.conf diff --git a/Apache/SOGo-apple-ab.conf b/Apache/SOGo-apple-ab.conf new file mode 100644 index 000000000..0f5516f6d --- /dev/null +++ b/Apache/SOGo-apple-ab.conf @@ -0,0 +1,26 @@ +# use *:8843 for SSL + + RewriteEngine Off + ProxyRequests Off + SetEnv proxy-nokeepalive 1 + ProxyPreserveHost On + ProxyPassInterpolateEnv On + ProxyPass /principals http://127.0.0.1:20000/SOGo/dav/ interpolate + ProxyPass /SOGo http://127.0.0.1:20000/SOGo interpolate + ProxyPass / http://127.0.0.1:20000/SOGo/dav/ interpolate + + Order allow,deny + Allow from all + + + + RequestHeader set "x-webobjects-server-port" "8800" + RequestHeader set "x-webobjects-server-name" "changethis:8800" + RequestHeader set "x-webobjects-server-url" "http://changethis:8800" + RequestHeader set "x-webobjects-server-protocol" "HTTP/1.0" + AddDefaultCharset UTF-8 + + + ErrorLog /var/log/apache2/ab-error.log + CustomLog /var/log/apache2/ab-access.log combined + diff --git a/packaging/debian-multiarch/sogo.docs b/packaging/debian-multiarch/sogo.docs index ded20965f..781cb916d 100644 --- a/packaging/debian-multiarch/sogo.docs +++ b/packaging/debian-multiarch/sogo.docs @@ -3,3 +3,4 @@ TODO Scripts/*.sh Scripts/*.py Scripts/updates.php +Apache/SOGo-apple-ab.conf diff --git a/packaging/debian/sogo.docs b/packaging/debian/sogo.docs index ded20965f..781cb916d 100644 --- a/packaging/debian/sogo.docs +++ b/packaging/debian/sogo.docs @@ -3,3 +3,4 @@ TODO Scripts/*.sh Scripts/*.py Scripts/updates.php +Apache/SOGo-apple-ab.conf diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index f283fd153..92eda7faa 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -252,7 +252,7 @@ rm -fr ${RPM_BUILD_ROOT} %config(noreplace) %{_sysconfdir}/cron.d/sogo %config(noreplace) %{_sysconfdir}/httpd/conf.d/SOGo.conf %config(noreplace) %{_sysconfdir}/sysconfig/sogo -%doc ChangeLog NEWS Scripts/*sh Scripts/*py Scripts/updates.php +%doc ChangeLog NEWS Scripts/*sh Scripts/*py Scripts/updates.php Apache/SOGo-apple-ab.conf %files -n sogo-tool %{_sbindir}/sogo-tool From c13c389ae5f55b89f78db4f114e7fb413eb1e201 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 12 Feb 2013 08:42:47 -0500 Subject: [PATCH 16/77] Update Danish translation --- .../Danish.lproj/Localizable.strings | 52 ++++++++---------- UI/Common/Danish.lproj/Localizable.strings | 23 ++++++++ UI/Contacts/Danish.lproj/Localizable.strings | 6 ++- UI/MailerUI/Danish.lproj/Localizable.strings | 30 +++++------ .../Danish.lproj/Localizable.strings | 53 +++++++++++-------- UI/Scheduler/Danish.lproj/Localizable.strings | 42 ++++++++------- 6 files changed, 117 insertions(+), 89 deletions(-) diff --git a/SoObjects/Appointments/Danish.lproj/Localizable.strings b/SoObjects/Appointments/Danish.lproj/Localizable.strings index 164a6a47a..8718169b7 100644 --- a/SoObjects/Appointments/Danish.lproj/Localizable.strings +++ b/SoObjects/Appointments/Danish.lproj/Localizable.strings @@ -8,23 +8,15 @@ vtodo_class1 = "(Privat opgave)"; vtodo_class2 = "(Hemmelig opgave)"; /* Receipts */ -"Title:" = "Titel:"; -"Start:" = "Start:"; -"End:" = "Slut:"; - -"Receipt: users invited to a meeting" = "Kvittering: brugere inviteret til et møde"; -"You have invited the following attendees(s):" = "Du har inviteret følgende deltager(e):"; -"... to attend the following event:" = "... til at deltage i følgende begivenhed:"; - -"Receipt: invitation updated" = "Kvittering: invitation opdateret"; -"The following attendees(s):" = "Følgende deltager(e):"; -"... have been notified of the changes to the following event:" = "... er blevet underrettet om ændringer i følgende begivenheder:"; - -"Receipt: attendees removed from an event" = "Kvittering: deltagere fjernet fra en begivenhed"; -"You have removed the following attendees(s):" = "Du har fjernet følgende deltager(e):"; -"... from the following event:" = "... fra følgende begivenhed:"; +"The event \"%{Summary}\" was created" = "Begivenheden \"%{Summary}\" blev oprettet"; +"The event \"%{Summary}\" was deleted" = "Begivenheden \"%{Summary}\" blev slettet"; +"The event \"%{Summary}\" was updated" = "Begivenheden \"%{Summary}\" blev opdateret"; +"The following attendees(s) were notified:" = "Følgende deltager(e) blev underrettet:"; +"The following attendees(s) were added:" = "Følgende deltager(e) blev tilføjet:"; +"The following attendees(s) were removed:" = "Følgende deltager(e) blev fjernet:"; /* IMIP messages */ +"calendar_label" = "Kalender:"; "startDate_label" = "Start:"; "endDate_label" = "Slut:"; "due_label" = "Forfaldsdato:"; @@ -33,32 +25,33 @@ vtodo_class2 = "(Hemmelig opgave)"; "comment_label" = "Kommentér:"; /* Invitation */ -"Event Invitation: \"%{Summary}\"" = "Begivenhed Invitation: \"%{Opsummering}\""; +"Event Invitation: \"%{Summary}\"" = "Begivenhed Invitation: \"%{Summary}\""; "(sent by %{SentBy}) " = "(Sendt af%{SentBy})"; -"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer}%{SentByText} har inviteret dig til%{Summary}. - -Start:%{StartDate}ved%{StartTime} -End:%{EndDate}ved%{endTime} -Description:%{Description}"; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" = "%{Organizer} %{SentByText}har inviteret dig til %{Summary}.\n\nStart: %{StartDate}\nSlut: %{EndDate}\nBeskrivelse: %{Description}"; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer}%{SentByText} har inviteret dig til%{Summary}.\n\nStart:%{StartDate}ved%{StartTime}\nEnd:%{EndDate}ved%{endTime}\nDescription:%{Description}"; /* Deletion */ -"Event Cancelled: \"%{Summary}\"" = "Begivenhed Annulleret: \"%{Opsummering}\""; +"Event Cancelled: \"%{Summary}\"" = "Begivenhed Annulleret: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" += "%{Organizer} %{SentByText}har aflyst denne begivenhed: %{Summary}.\n\nStart: %{StartDate}\nSlut: %{EndDate}\nBeskrivelse: %{Description}"; "%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" -= "%{Organizer} %{SentByText}har annulleret denne begivenhed: %{Summary}. - -Start: %{StartDate} at %{StartTime} -End: %{EndDate} at %{EndTime} -Description: %{Description}"; += "%{Organizer} %{SentByText}har annulleret denne begivenhed: %{Summary}.\n\nStart: %{StartDate} %{StartTime}\nSlut: %{EndDate} %{EndTime}\nBeskrivelse: %{Description}"; /* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} has changed" += "Aftalen \"%{Summary}\" for %{OldStartDate} er ændret"; "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" = "Aftalen \"%{Summary}\" den %{OldStartDate} kl. %{OldStartTime} er blevet ændret"; "The following parameters have changed in the \"%{Summary}\" meeting:" -= "Følgende parametre har ændret sig i \"% {Opsummering}\" møde:"; += "Følgende parametre har ændret sig i \"%{Summary}\" møde:"; "Please accept or decline those changes." = "Venligst acceptér eller afvis disse ændringer."; /* Reply */ +"Accepted invitation: \"%{Summary}\"" = "Accepterede invitationen: \"%{Summary}\""; +"Declined invitation: \"%{Summary}\"" = "Afslåede invitationen: \"%{Summary}\""; +"Delegated invitation: \"%{Summary}\"" = "Delegerede invitationen: \"%{Summary}\""; +"Not yet decided on invitation: \"%{Summary}\"" = "Ikke taget stilling til invitationen: \"%{Summary}\""; "%{Attendee} %{SentByText}has accepted your event invitation." = "%{Attendee} %{SentByText} har accepteret din begivenhedsinvitation."; "%{Attendee} %{SentByText}has declined your event invitation." @@ -69,4 +62,5 @@ Description: %{Description}"; = "%{Attendee} %{SentByText} har endnu ikke taget stilling til din begivenhedsinvitation."; /* Resources */ -"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\"." = "Maximalt antal samtidige bookings (%{NumberOfSimultaneousBookings}) er nået for \"%{Cn} %{SystemEmail}\"."; +"Cannot access resource: \"%{Cn} %{SystemEmail}\"" = "Kan ikke tilgå ressourcen: \"%{Cn} %{SystemEmail}\""; +"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}." = "Maksimalt antal tilladte indkaldelser (%{NumberOfSimultaneousBookings}) er nået for ressource \"%{Cn} %{SystemEmail}\". Konflikter med begivenheden \"%{EventTitle}\", som starter %{StartDate}."; diff --git a/UI/Common/Danish.lproj/Localizable.strings b/UI/Common/Danish.lproj/Localizable.strings index 4d202bb81..1c4f4456a 100644 --- a/UI/Common/Danish.lproj/Localizable.strings +++ b/UI/Common/Danish.lproj/Localizable.strings @@ -16,6 +16,7 @@ "Log Console (dev.)" = "Log konsol (dev.)"; "User" = "Bruger"; +"Vacation message is enabled" = "Ferie meddelelse er aktiv"; "Help" = "Hjælp"; @@ -37,6 +38,19 @@ "Sorry, the user rights can not be configured for that object." = "Beklager, brugerrettighederne kan ikke konfigureres for dette emne"; +"Any user with an account on this system will be able to access your mailbox \"%{0}\". Are you certain you trust them all?" + = "Alle brugere med en konto på dette system vil få adgang til din mail \"%{0}\". Er du sikker på at du har tillid til dem alle?"; +"Any user with an account on this system will be able to access your calendar \"%{0}\". Are you certain you trust them all?" + = "Alle brugere med en konto på dette system vil få adgang til din kalender \"%{0}\". Er du sikker på at du har tillid til dem alle?"; +"Potentially anyone on the Internet will be able to access your calendar \"%{0}\", even if they do not have an account on this system. Is this information suitable for the public Internet?" + = "Potentielt alle på internettet vil være i stand til at få adgang til din kalender \"%{0}\", selv om de ikke har en konto på dette system. Er disse oplysninger egnet til det offentlige internet?"; +"Any user with an account on this system will be able to access your address book \"%{0}\". Are you certain you trust them all?" + = "Alle brugere med en konto på dette system vil få adgang til din adressebog \"%{0}\". Er du sikker på at du har tillid til dem alle?"; +"Potentially anyone on the Internet will be able to access your address book \"%{0}\", even if they do not have an account on this system. Is this information suitable for the public Internet?" + = "Potentielt alle på internettet vil være i stand til at få adgang til din adressebog \"%{0}\", selv om de ikke har en konto på dette system. Er disse oplysninger egnet til det offentlige internet?"; +"Give Access" = "Giv adgang"; +"Keep Private" = "Forbliv privat"; + /* generic.js */ "Unable to subscribe to that folder!" = "Det er ikke muligt at abonnere på denne mappe!"; @@ -66,6 +80,15 @@ "delegate is a participant" = "Den inviterede er allerede en deltager."; "delegate is a group" = "Den angivne adresse svarer til en gruppe. Du kan kun invitere en enkelt person."; +"Snooze for " = "Udsæt i "; +"5 minutes" = "5 minutter"; +"10 minutes" = "10 minutter"; +"15 minutes" = "15 minutter"; +"30 minutes" = "30 minutter"; +"45 minutes" = "45 minutter"; +"1 hour" = "1 time"; + + /* common buttons */ "OK" = "OK"; "Cancel" = "Annullér"; diff --git a/UI/Contacts/Danish.lproj/Localizable.strings b/UI/Contacts/Danish.lproj/Localizable.strings index 3fe4e82ec..2f8cd2602 100644 --- a/UI/Contacts/Danish.lproj/Localizable.strings +++ b/UI/Contacts/Danish.lproj/Localizable.strings @@ -154,7 +154,9 @@ "Unable to subscribe to that folder!" = "Det er ikke muligt at abonnere på denne mappe."; -"User rights for:" = "Brugerrettigheder:"; +/* acls */ +"Access rights to" = "Adgangsrettigheder til"; +"For user" = "For bruger"; "Any Authenticated User" = "Enhver godkendt bruger"; "Public Access" = "Offentlig adgang"; @@ -193,9 +195,11 @@ "Lists can't be moved or copied." = "Lister kan ikke flyttes eller kopieres."; "Export" = "Eksportér"; "Export Address Book..." = "Eksportér adressebog ..."; +"View Raw Source" = "Vis kilde"; "Import Cards" = "Importér kort"; "Select a vCard or LDIF file." = "Vælg en vCard - eller LDIF-fil."; "Upload" = "Indlæs"; +"Uploading" = "Uploader"; "Done" = "Udført"; "An error occured while importing contacts." = "Der opstod en fejl under importering af kontaktpersoner."; "No card was imported." = "Intet kort blev importeret."; diff --git a/UI/MailerUI/Danish.lproj/Localizable.strings b/UI/MailerUI/Danish.lproj/Localizable.strings index e6278659d..e9dd97f78 100644 --- a/UI/MailerUI/Danish.lproj/Localizable.strings +++ b/UI/MailerUI/Danish.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Attach" = "Vedhæft"; "Save" = "Gem"; "Options" = "Indstillinger"; +"Close" = "Luk"; "Size" = "Størrelse"; /* Tooltips */ @@ -63,8 +64,10 @@ "Shared Account: " = "Delt konto:"; /* acls */ -"Default Roles" = "Standard Roller"; -"User rights for:" = "Bruger rettigheder for:"; +"Access rights to" = "Adgangsrettigheder til"; +"For user" = "For bruger"; + +"Any Authenticated User" = "Alle godkendte brugere"; "List and see this folder" = "Udvid og se denne mappe"; "Read mails from this folder" = "Læs beskeder fra denne mappe"; @@ -104,16 +107,13 @@ "cc" = "Cc"; "bcc" = "Bcc"; -"Addressbook" = "Adressebog"; - "Edit Draft..." = "Redigér kladde ..."; "Load Images" = "Indlæs billeder"; "Return Receipt" = "Kvittering"; "The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?" = "Afsenderen af ​​denne besked har bedt om at blive underrettet, når du læser denne besked. Vil du underrette afsenderen?"; -"Return Receipt (displayed) - %@"= "Kvittering (vist) -% @"; -"This is a Return Receipt for the mail that you sent to %@.\n\nNote: This Return Receipt only acknowledges that the message was displayed on the recipient's computer. There is no guarantee that the recipient has read or understood the message contents." = "Dette er en kvittering for den besked, du har sendt til% @ \ n \ n -Bemærk:. Denne kvittering anerkender kun, at budskabet blev vist på modtagerens computer. Der er ingen garanti for, at modtageren har læst eller forstået indholdet i beskeden."; +"Return Receipt (displayed) - %@"= "Kvittering (vist) - %@"; +"This is a Return Receipt for the mail that you sent to %@.\n\nNote: This Return Receipt only acknowledges that the message was displayed on the recipient's computer. There is no guarantee that the recipient has read or understood the message contents." = "Dette er en kvittering for den besked, du har sendt til %@\n\nBemærk:. Denne kvittering anerkender kun, at budskabet blev vist på modtagerens computer. Der er ingen garanti for, at modtageren har læst eller forstået indholdet i beskeden."; "Priority" = "Prioritet"; "highest" = "Højeste"; @@ -124,8 +124,8 @@ Bemærk:. Denne kvittering anerkender kun, at budskabet blev vist på modtageren "This mail is being sent from an unsecure network!" = "Denne besked bliver sendt fra et usikkert netværk!"; -"Address Book:" = ""; -"Search For:" = ""; +"Address Book:" = "Adressebog:"; +"Search For:" = "Søg efter:"; /* Popup "show" */ @@ -145,7 +145,6 @@ Bemærk:. Denne kvittering anerkender kun, at budskabet blev vist på modtageren "Date" = "Dato"; "View" = "Vis"; "All" = "Alle"; -"Unread" = "Ulæst"; "No message" = "Ingen besked"; "messages" = "Beskeder"; @@ -212,7 +211,6 @@ Bemærk:. Denne kvittering anerkender kun, at budskabet blev vist på modtageren "Open Message In New Window" = "Åben besked i nyt vindue"; "Reply to Sender Only" = "Svar kun afsenderen"; "Reply to All" = "Svar alle"; -"Forward" = "Videresend"; "Edit As New..." = "Redigér som ..."; "Move To" = "Flyt til"; "Copy To" = "Kopier til"; @@ -261,11 +259,10 @@ Bemærk:. Denne kvittering anerkender kun, at budskabet blev vist på modtageren "Please select only one message to print." = "Vælg kun én besked til at udskrive."; "The message you have selected doesn't exist anymore." = "Den besked du har valgt findes ikke længere."; - "The folder with name \"%{0}\" could not be created." -= "Mappen med navnet \"% {0}\" kunne ikke oprettes."; += "Mappen med navnet \"%{0}\" kunne ikke oprettes."; "This folder could not be renamed to \"%{0}\"." -= "Denne mappe kan ikke omdøbes til \"% {0}\"."; += "Denne mappe kan ikke omdøbes til \"%{0}\"."; "The folder could not be deleted." = "Mappen kunne ikke slettes."; "The trash could not be emptied." @@ -285,14 +282,15 @@ Bemærk:. Denne kvittering anerkender kun, at budskabet blev vist på modtageren = "Beskederne kunne ikke flyttes til papirkurven. Vil du slette dem med det samme?"; /* Message editing */ -"error_validationfailed" = "Validering mislykkedes"; "error_missingsubject" = "Emne mangler"; "error_missingrecipients" = "Ingen modtagere angivet"; +"Send Anyway" = "Send alligevel"; /* Message sending */ "cannot send message: (smtp) all recipients discarded" = "Kan ikke sende besked: alle modtagere er ugyldige."; "cannot send message (smtp) - recipients discarded:" = "Kan ikke sende besked. Følgende adresser er ugyldige:"; "cannot send message: (smtp) error when connecting" = "Kan ikke sende besked: Fejl ved oprettelse til SMTP-server."; +/* Contacts list in mail editor */ +"Email" = "Mail"; "Name" = "Navn"; -"Email" = "E-mail"; diff --git a/UI/PreferencesUI/Danish.lproj/Localizable.strings b/UI/PreferencesUI/Danish.lproj/Localizable.strings index 386377889..ed03ceabb 100644 --- a/UI/PreferencesUI/Danish.lproj/Localizable.strings +++ b/UI/PreferencesUI/Danish.lproj/Localizable.strings @@ -30,6 +30,7 @@ "Disable auto reply on" = "Deaktiver Autosvar til"; "Please specify your message and your email addresses for which you want to enable auto reply." = "Angiv venligst din besked og de e-mail-adresser, som du vil aktivere autosvar for."; +"Your vacation message must not end with a single dot on a line." = "Din ferie meddelelse må ikke slutte med et enkelt punktum på en linje."; "End date of your auto reply must be in the future." = "Sluttidspunkt for dit autosvar skal være i fremtiden."; @@ -75,10 +76,18 @@ "longDateFmt_2" = "%A, %d %B, %Y"; "longDateFmt_3" = "%d %B, %Y"; "longDateFmt_4" = ""; +"longDateFmt_5" = ""; +"longDateFmt_6" = ""; +"longDateFmt_7" = ""; +"longDateFmt_8" = ""; +"longDateFmt_9" = ""; +"longDateFmt_10" = ""; "timeFmt_0" = "%I:%M %p"; "timeFmt_1" = "%H:%M"; "timeFmt_2" = ""; +"timeFmt_3" = ""; +"timeFmt_4" = ""; /* calendar */ "Week begins on :" = "Uge start tidspunkt:"; @@ -132,6 +141,7 @@ "messageforward_inline" = "På linie"; "messageforward_attached" = "Som vedhæftet fil"; +"When replying to a message:" = "Når du besvarer en besked:"; "replyplacement_above" = "Start mit svar over citat"; "replyplacement_below" = "Start mit svar under citat"; "And place my signature" = "Og placér min signatur"; @@ -140,23 +150,32 @@ "Compose messages in" = "Skriv beskeder i"; "composemessagestype_html" = "HTML"; "composemessagestype_text" = "Almindelig tekst"; +"Display remote inline images" = "Vis eksterne indlejrede billeder"; +"displayremoteinlineimages_never" = "Aldrig"; +"displayremoteinlineimages_always" = "Altid"; /* IMAP Accounts */ "New Mail Account" = "Ny mail-konto"; "Server Name:" = "Server Navn:"; "Port:" = "Port:"; +"Encryption:" = "Krypteret:"; +"None" = "Ingen"; "User Name:" = "Brugernavn:"; "Password:" = "Adgangskode:"; "Full Name:" = "Fulde navn:"; "Email:" = "E-mail:"; +"Reply To Email:" = "Besvar på mail:"; "Signature:" = "Signatur:"; "(Click to create)" = "(Klik for at oprette)"; "Signature" = "Signatur:"; "Please enter your signature below:" = "Indsæt venligst din signatur nedenfor:"; +"Please specify a valid sender address." = "Angiv venligst en gyldig afsenderadresse."; +"Please specify a valid reply-to address." = "Angiv venligst en gyldig svar-til adresse."; + /* Additional Parameters */ "Additional Parameters" = "Yderligere parametre"; @@ -166,11 +185,11 @@ "Change" = "Skift"; /* Event+task classifications */ -"Default events classification :" = "Default events classification :"; -"Default tasks classification :" = "Default tasks classification :"; -"PUBLIC_item" = "Public"; -"CONFIDENTIAL_item" = "Confidential"; -"PRIVATE_item" = "Private"; +"Default events classification :" = "Standard begivenhedsklassifikation:"; +"Default tasks classification :" = "Standard opgaveklassifikation:"; +"PUBLIC_item" = "Offentlig"; +"CONFIDENTIAL_item" = "Fortrolig"; +"PRIVATE_item" = "Privat"; /* Event+task categories */ "category_none" = "Ingen"; @@ -190,18 +209,18 @@ "Danish" = "Dansk (Danmark)"; "Dutch" = "Nederlands"; "English" = "English"; -"Finnish" = "Suomi"; +"Finnish" = "Finsk"; "French" = "Français"; "German" = "Deutsch"; "Hungarian" = "Magyar"; -"Icelandic" = "Íslenska"; +"Icelandic" = "Islandsk"; "Italian" = "Italiano"; "NorwegianBokmal" = "Norsk"; "NorwegianNynorsk" = "Nynorsk"; "BrazilianPortuguese" = "Português brasileiro"; -"Polish" = "Polski"; +"Polish" = "Polsk"; "Russian" = "Русский"; -"Slovak" = "Slovensky"; +"Slovak" = "Slovensk"; "SpanishSpain" = "Spansk (Spanien)"; "SpanishArgentina" = "Spansk (Argentina)"; "Swedish" = "Svenska"; @@ -220,18 +239,6 @@ "Always send" = "Send altid"; "Ask me" = "Spørg mig"; -/* Return receipts */ -"When I receive a request for a return receipt:" = "Når jeg modtager en anmodning om en kvittering:"; -"Never send a return receipt" = "Send aldrig en kvittering"; -"Allow return receipts for some messages" = "Tillad kvitteringer for nogle beskeder"; -"If I'm not in the To or Cc of the message:" = "Hvis jeg ikke er i feltet Til eller Cc i meddelelsen:"; -"If the sender is outside my domain:" = "Hvis afsenderen er uden for mit domæne:"; -"In all other cases:" = "I alle andre tilfælde:"; - -"Never send" = "Send aldrig"; -"Always send" = "Send altid"; -"Ask me" = "Spørg mig"; - /* Filters - UIxPreferences */ "Filters" = "Filtre"; "Active" = "Aktiv"; @@ -245,6 +252,7 @@ "match any of the following rules:" = "match enhver af følgende regler:"; "match all messages" = "match alle beskeder"; "Perform these actions:" = "Udføre disse handlinger:"; +"Untitled Filter" = "Unavngivet filter"; "Subject" = "Emne"; "From" = "Fra"; @@ -285,6 +293,7 @@ "Label 4" = "Mærkat 4"; "Label 5" = "Mærkat 5"; +"The password was changed successfully." = "Adgangskoden er ændret."; "Password must not be empty." = "Adgangskode skal ikke."; "The passwords do not match. Please try again." = "Adgangskoderne stemmer ikke overens. Prøv venligst igen."; "Password change failed" = "Ændring af adgangskode mislykkedes"; @@ -297,5 +306,3 @@ "Unhandled error response" = "fejlreaktion"; "Password change is not supported." = "Adgangskodeændring er ikke understøttet."; "Unhandled HTTP error code: %{0}" = "HTTP fejlkode:%{0}"; -"New password:" = "Ny adgangskode:"; -"Confirmation:" = "Bekræftelse:"; diff --git a/UI/Scheduler/Danish.lproj/Localizable.strings b/UI/Scheduler/Danish.lproj/Localizable.strings index db08c2085..6a70c7038 100644 --- a/UI/Scheduler/Danish.lproj/Localizable.strings +++ b/UI/Scheduler/Danish.lproj/Localizable.strings @@ -60,6 +60,7 @@ "Import Events" = "Importér begivenheder"; "Select an iCalendar file (.ics)." = "Vælg en iCalendar-fil (.ics)."; "Upload" = "Indlæs"; +"Uploading" = "Uploader"; "Publish Calendar..." = "Publicér kalender ..."; "Reload Remote Calendars" = "Opdatér kalendere"; "Properties" = "Egenskaber"; @@ -81,7 +82,8 @@ /* acls */ -"User rights for:" = "Brugerrettigheder:"; +"Access rights to" = "Adgangsrettigheder til"; +"For user" = "For bruger"; "Any Authenticated User" = "Enhver godkendt bruger"; "Public Access" = "Offentlig adgang"; @@ -109,7 +111,6 @@ /* Button Titles */ -"New Calendar..." = "Ny kalender ..."; "Subscribe to a Calendar..." = "Abonnér på en kalender ..."; "Remove the selected Calendar" = "Fjern den valgte kalender"; @@ -290,7 +291,7 @@ "cycle_end_until" = "cycle_end_until"; "Recurrence pattern" = "Gentagelsesmønster"; -"Range of recurrence" = "gentagelsesinterval"; +"Range of recurrence" = "Gentagelsesinterval"; "Repeat" = "Gentag"; "Daily" = "Dagligt"; @@ -379,6 +380,7 @@ validate_invalid_startdate = "Forkert startdato!"; validate_invalid_enddate = "Forkert slutdato!"; validate_endbeforestart = "Indtastet slutdato ligger før startdato."; +"Events" = "Opgaver"; "Tasks" = "Opgaver"; "Show completed tasks" = "Vis udførte opgaver"; @@ -409,12 +411,8 @@ validate_endbeforestart = "Indtastet slutdato ligger før startdato."; "Workweek days only" = "Arbejdsuge dage kun"; "Tasks in View" = "Opgaver i visning"; -"eventDeleteConfirmation" = "Følgende begivenhed er/bliver slettet: -%{0} -Fortsæt?"; -"taskDeleteConfirmation" = "Følgende opgave(r) bliver slettet: -%{0} -Fortsæt?"; +"eventDeleteConfirmation" = "Følgende begivenhed er/bliver slettet: \n%{0}\nFortsæt?"; +"taskDeleteConfirmation" = "Følgende opgave(r) bliver slettet: \n%{0}\nFortsæt?"; "You cannot remove nor unsubscribe from your personal calendar." = "Du kan ikke fjerne eller afmelde din personlige kalender."; @@ -450,8 +448,7 @@ Fortsæt?"; "and" = "og"; "A time conflict exists with one or more attendees.\nWould you like to keep the current settings anyway?" -= "En tidskonflikt med en eller flere deltagere. -Behold de aktuelle indstillinger alligevel?"; += "En tidskonflikt med en eller flere deltagere. \nBehold de aktuelle indstillinger alligevel?"; /* apt list */ "Title" = "Titel"; @@ -459,12 +456,16 @@ Behold de aktuelle indstillinger alligevel?"; "End" = "Slut"; "Due Date" = "Forfaldsdato"; "Location" = "Sted"; + "(Private Event)" = "(Privat begivenhed)"; vevent_class0 = "(Offentlig begivenhed)"; vevent_class1 = "(Privat begivenhed)"; vevent_class2 = "(Hemmelig begivenhed)"; +"Priority" = "Prioritet"; +"Category" = "Kategori"; + vtodo_class0 = "(Offentlig opgave)"; vtodo_class1 = "(Privat opgave)"; vtodo_class2 = "(Hemmelig opgave)"; @@ -492,6 +493,11 @@ vtodo_class2 = "(Hemmelig opgave)"; "Show alarms" = "Vis alarmer"; "Show tasks" = "Vis opgaver"; +"Notifications" = "Notifikationer"; +"Receive a mail when I modify my calendar" = "Modtag en mail, når jeg ændrer min kalender"; +"Receive a mail when someone else modifies my calendar" = "Modtag en mail, når andre ændrer min kalender"; +"When I modify my calendar, send a mail to:" = "Når jeg ændrer min kalender, så send en mail til:"; + "Links to this Calendar" = "Links til denne kalender"; "Authenticated User Access" = "Godkendt brugeradgang"; "CalDAV URL" = "CalDAV URL"; @@ -509,12 +515,9 @@ vtodo_class2 = "(Hemmelig opgave)"; "Please specify a calendar name." = "Angiv venligst et kalender navn."; "tagNotDefined" = "Du skal angive et mærkat, hvis du ønsker at synkronisere denne kalender."; "tagAlreadyExists" = "Mærkatet du har angivet er allerede knyttet til en anden kalender."; -"tagHasChanged" = "Hvis du ændrer din kalenders mærkat, skal du genindlæse data på din mobile enhed. -Fortsæt?"; -"tagWasAdded" = "Hvis du ønsker at synkronisere denne kalender, skal du genindlæse data på din mobile enhed. -Fortsæt?"; -"tagWasRemoved" = "Hvis du fjerner denne kalender fra synkronisering, skal du genindlæse data på din mobile enhed. -Fortsæt?"; +"tagHasChanged" = "Hvis du ændrer din kalenders mærkat, skal du genindlæse data på din mobile enhed.\nFortsæt?"; +"tagWasAdded" = "Hvis du ønsker at synkronisere denne kalender, skal du genindlæse data på din mobile enhed.\nFortsæt?"; +"tagWasRemoved" = "Hvis du fjerner denne kalender fra synkronisering, skal du genindlæse data på din mobile enhed.\nFortsæt?"; "DestinationCalendarError" = "Kilde og destination kalendere er de samme. Prøv at kopiere til en anden kalender."; "EventCopyError" = "Kopieringen mislykkedes. Prøv at kopiér til en anden kalender."; @@ -523,12 +526,11 @@ Fortsæt?"; "Delete Task" = "Slet opgave"; "Delete Event" = "Slet begivenhed"; "Copy event to my calendar" = "Kopiér begivenhed til min kalender"; +"View Raw Source" = "Vis kilde"; "Subscribe to a web calendar..." = "Abonnér på en online kalender ..."; "URL of the Calendar" = "Kalenderens URL"; "Web Calendar" = "Online kalender"; "Reload on login" = "Genindlæs ved login"; "Invalid number." = "Ugyldigt nummer."; - -"Category" = "Kategori"; -"Priority" = "Prioritet"; +"Please identify yourself to %{0}" = "Identificer dig selv til %{0}"; From 71b9772546b83df5bd671ad46a9d10155da596af Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 14 Feb 2013 15:22:48 -0500 Subject: [PATCH 17/77] Ensure we hit the cache with hex-formatted keys. --- OpenChange/MAPIStoreMailMessageTable.m | 1 + OpenChange/MAPIStoreSOGo.m | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index 3933b62db..eb40f6739 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -155,6 +155,7 @@ static Class MAPIStoreMailMessageK, NSDataK, NSStringK; case PidTagChangeNumber: { + value = [NSString stringWithFormat: @"0x%.16llx", [value unsignedLongLongValue]]; modseq = [(MAPIStoreMailFolder *) container modseqFromMessageChangeNumber: value]; [self logWithFormat: @"change number from oxcfxics: %.16lx", [value unsignedLongLongValue]]; diff --git a/OpenChange/MAPIStoreSOGo.m b/OpenChange/MAPIStoreSOGo.m index c9e24b715..399a215c7 100644 --- a/OpenChange/MAPIStoreSOGo.m +++ b/OpenChange/MAPIStoreSOGo.m @@ -1229,7 +1229,7 @@ sogo_table_set_restrictions (void *table_object, struct mapi_SRestriction *restr GSRegisterCurrentThread (); pool = [NSAutoreleasePool new]; [table setRestrictions: restrictions]; - [table cleanupCaches]; + //[table cleanupCaches]; rc = MAPISTORE_SUCCESS; *table_status = TBLSTAT_COMPLETE; [pool release]; From 4f38b5cf3f3118784125b495167923a9027d243a Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 14 Feb 2013 15:59:19 -0500 Subject: [PATCH 18/77] Alse use hex-formatted keys for deleted mails. --- OpenChange/MAPIStoreMailFolder.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenChange/MAPIStoreMailFolder.m b/OpenChange/MAPIStoreMailFolder.m index a2a572938..e0be222b9 100644 --- a/OpenChange/MAPIStoreMailFolder.m +++ b/OpenChange/MAPIStoreMailFolder.m @@ -796,7 +796,7 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data) if (tableType == MAPISTORE_MESSAGE_TABLE) { - changeNumber = [NSString stringWithUnsignedLongLong: changeNum]; + changeNumber = [NSString stringWithFormat: @"0x%.16llx", changeNum]; modseq = [[self modseqFromMessageChangeNumber: changeNumber] unsignedLongLongValue]; if (modseq > 0) From efb45bfba69ca5dac10f9de5cb59f353e2bd0a34 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 15 Feb 2013 15:17:08 -0500 Subject: [PATCH 19/77] Fix issue with exceptions in repeating events Fixed the display of an exception when its recurrence id is outside the current view. --- NEWS | 4 ++ .../Appointments/SOGoAppointmentFolder.m | 61 +++++++++++-------- 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/NEWS b/NEWS index 44bc2598d..4b877e195 100644 --- a/NEWS +++ b/NEWS @@ -1,11 +1,15 @@ 2.0.5 (2013-02-dd) ------------------ +New features + - + Enhancements - Added logging of the X-Forwarded-For HTTP header (#2229) Bug fixes - Don't use the cache for password lookups from login page (#2169) + - fixed issue with exceptions in repeating events 2.0.4b (2013-02-04) ------------------ diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index 904cf896e..b54cb846c 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -873,7 +873,9 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir NSMutableDictionary *newRecord; NSDictionary *oldRecord; NGCalendarDateRange *newRecordRange; + NSComparisonResult compare; int recordIndex, secondsOffsetFromGMT; + NSNumber *dateSecs; newRecord = nil; recurrenceId = [component recurrenceId]; @@ -895,30 +897,24 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir [recurrenceId setTimeZone: tz]; } - if ([dateRange containsDate: [component startDate]] || - [dateRange containsDate: [component endDate]]) + compare = [[dateRange startDate] compare: recurrenceId]; + if ((compare == NSOrderedAscending || compare == NSOrderedSame) && + [[dateRange endDate] compare: recurrenceId] == NSOrderedDescending) { - recordIndex = [self _indexOfRecordMatchingDate: recurrenceId - inArray: ma]; + // The recurrence exception intersects with the date range; + // find the occurence and replace it with the new record + recordIndex = [self _indexOfRecordMatchingDate: recurrenceId inArray: ma]; if (recordIndex > -1) { - newRecord = [self fixupRecord: [component quickRecord]]; - [newRecord setObject: [NSNumber numberWithInt: 1] - forKey: @"c_iscycle"]; - oldRecord = [ma objectAtIndex: recordIndex]; - [newRecord setObject: [oldRecord objectForKey: @"c_recurrence_id"] - forKey: @"c_recurrence_id"]; - - // The first instance date is added to the dictionary so it can - // be used by UIxCalListingActions to compute the DST offset. - [newRecord setObject: [fir startDate] forKey: @"cycleStartDate"]; - - // We identified the record as an exception. - [newRecord setObject: [NSNumber numberWithInt: 1] - forKey: @"isException"]; - - [ma replaceObjectAtIndex: recordIndex withObject: newRecord]; - } + if ([dateRange containsDate: [component startDate]]) + { + newRecord = [self fixupRecord: [component quickRecord]]; + [ma replaceObjectAtIndex: recordIndex withObject: newRecord]; + } + else + // The range doesn't cover the exception; remove it from the records + [ma removeObjectAtIndex: recordIndex]; + } else [self errorWithFormat: @"missing exception record for recurrence-id %@ (uid %@)", @@ -926,16 +922,33 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir } else { + // The recurrence id of the exception is outside the date range; + // simply add the exception to the records array newRecord = [self fixupRecord: [component quickRecord]]; newRecordRange = [NGCalendarDateRange calendarDateRangeWithStartDate: [newRecord objectForKey: @"startDate"] endDate: [newRecord objectForKey: @"endDate"]]; if ([dateRange doesIntersectWithDateRange: newRecordRange]) - [ma addObject: newRecord]; + [ma addObject: newRecord]; + else + newRecord = nil; } if (newRecord) - [self _fixExceptionRecord: newRecord fromRow: row]; + { + recurrenceId = [component recurrenceId]; + dateSecs = [NSNumber numberWithInt: [recurrenceId timeIntervalSince1970]]; + + [newRecord setObject: dateSecs forKey: @"c_recurrence_id"]; + [newRecord setObject: [NSNumber numberWithInt: 1] forKey: @"c_iscycle"]; + // The first instance date is added to the dictionary so it can + // be used by UIxCalListingActions to compute the DST offset. + [newRecord setObject: [fir startDate] forKey: @"cycleStartDate"]; + // We identified the record as an exception. + [newRecord setObject: [NSNumber numberWithInt: 1] forKey: @"isException"]; + + [self _fixExceptionRecord: newRecord fromRow: row]; + } } // @@ -961,7 +974,7 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir { components = [[elements objectAtIndex: 0] allObjects]; max = [components count]; - for (count = 1; count < max; count++) + for (count = 1; count < max; count++) // skip master event [self _appendCycleException: [components objectAtIndex: count] firstInstanceCalendarDateRange: fir fromRow: row From 2572eedd8988f8a3d3e3d819c27ad070aa250c0b Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 18 Feb 2013 16:28:06 -0500 Subject: [PATCH 20/77] Added BSON encoder/decoder for Outlook cache files. --- OpenChange/BSONCodec.h | 50 +++ OpenChange/BSONCodec.m | 573 +++++++++++++++++++++++++++++ OpenChange/GNUmakefile | 4 +- OpenChange/MAPIStoreTypes.h | 4 +- OpenChange/NSObject+PropertyList.m | 74 ++-- OpenChange/SOGoMAPIDBObject.m | 17 +- 6 files changed, 672 insertions(+), 50 deletions(-) create mode 100644 OpenChange/BSONCodec.h create mode 100644 OpenChange/BSONCodec.m diff --git a/OpenChange/BSONCodec.h b/OpenChange/BSONCodec.h new file mode 100644 index 000000000..f3a1b6a0c --- /dev/null +++ b/OpenChange/BSONCodec.h @@ -0,0 +1,50 @@ +// +// BSONCodec.h +// BSON Codec for Objective-C. +// +// Created by Martin Kou on 8/17/10. +// MIT License, see LICENSE file for details. +// + +#import +#import + +@protocol BSONCoding +- (uint8_t) BSONTypeID; +- (NSData *) BSONEncode; +- (NSData *) BSONRepresentation; ++ (id) BSONFragment: (NSData *) data at: (const void **) base ofType: (uint8_t) typeID; +@end + +@protocol BSONObjectCoding +- (id) initWithBSONDictionary: (NSDictionary *) data; +- (NSDictionary *) BSONDictionary; +@end + +@interface NSObject (BSONObjectCoding) +- (NSData *) BSONEncode; +- (NSData *) BSONRepresentation; +@end + + +@interface NSDictionary (BSON) +@end + +@interface NSData (BSON) +- (NSDictionary *) BSONValue; +@end + +@interface NSNumber (BSON) +@end + +@interface NSString (BSON) +@end + +@interface NSArray (BSON) +@end + +@interface NSNull (BSON) +@end + +@interface NSCalendarDate (BSON) +@end diff --git a/OpenChange/BSONCodec.m b/OpenChange/BSONCodec.m new file mode 100644 index 000000000..f153a3609 --- /dev/null +++ b/OpenChange/BSONCodec.m @@ -0,0 +1,573 @@ +// +// BSONCodec.m +// BSON Codec for Objective-C. +// +// Created by Martin Kou on 8/17/10. +// MIT License, see LICENSE file for details. +// + +#import "BSONCodec.h" +#import +#import +#import + +#define BSONTYPE(tag,className) [className class], [NSNumber numberWithChar: (tag)] + +#define objc_msgSend(obj, sel, ...) \ + objc_msg_lookup(obj, sel)(obj, sel, ## __VA_ARGS__) + +static NSDictionary *BSONTypes() +{ + static NSDictionary *retval = nil; + + if (retval == nil) + { + retval = [[NSDictionary dictionaryWithObjectsAndKeys: + BSONTYPE(0x01, NSNumber), + BSONTYPE(0x02, NSString), + BSONTYPE(0x03, NSDictionary), + BSONTYPE(0x04, NSArray), + BSONTYPE(0x05, NSData), + BSONTYPE(0x08, NSNumber), + BSONTYPE(0x0A, NSNull), + BSONTYPE(0x10, NSNumber), + BSONTYPE(0x12, NSNumber), + nil] retain]; + } + + return retval; +} + +#define SWAP16(x) \ + ((uint16_t)((((uint16_t)(x) & 0xff00) >> 8) | \ + (((uint16_t)(x) & 0x00ff) << 8))) + +#define SWAP32(x) \ + ((uint32_t)((((uint32_t)(x) & 0xff000000) >> 24) | \ + (((uint32_t)(x) & 0x00ff0000) >> 8) | \ + (((uint32_t)(x) & 0x0000ff00) << 8) | \ + (((uint32_t)(x) & 0x000000ff) << 24))) + +#define SWAP64(x) \ + ((uint64_t)((((uint64_t)(x) & 0xff00000000000000ULL) >> 56) | \ + (((uint64_t)(x) & 0x00ff000000000000ULL) >> 40) | \ + (((uint64_t)(x) & 0x0000ff0000000000ULL) >> 24) | \ + (((uint64_t)(x) & 0x000000ff00000000ULL) >> 8) | \ + (((uint64_t)(x) & 0x00000000ff000000ULL) << 8) | \ + (((uint64_t)(x) & 0x0000000000ff0000ULL) << 24) | \ + (((uint64_t)(x) & 0x000000000000ff00ULL) << 40) | \ + (((uint64_t)(x) & 0x00000000000000ffULL) << 56))) + + +#if BYTE_ORDER == LITTLE_ENDIAN +#define BSONTOHOST16(x) (x) +#define BSONTOHOST32(x) (x) +#define BSONTOHOST64(x) (x) +#define HOSTTOBSON16(x) (x) +#define HOSTTOBSON32(x) (x) +#define HOSTTOBSON64(x) (x) + +#elif BYTE_ORDER == BIG_ENDIAN +#define BSONTOHOST16(x) SWAP16(x) +#define BSONTOHOST32(x) SWAP32(x) +#define BSONTOHOST64(x) SWAP64(x) +#define HOSTTOBSON16(x) SWAP16(x) +#define HOSTTOBSON32(x) SWAP16(x) +#define HOSTTOBSON64(x) SWAP16(x) + +#endif + +#define CLASS_NAME_MARKER @"$$__CLASS_NAME__$$" + +@implementation NSObject (BSONObjectCoding) +- (NSData *) BSONEncode +{ + if (!class_conformsToProtocol([self class], @protocol(BSONObjectCoding))) + [NSException raise: NSInvalidArgumentException format: @"BSON encoding is only valid on objects conforming to the BSONObjectEncoding protocol."]; + + id myself = (id ) self; + NSMutableDictionary *values = [[myself BSONDictionary] mutableCopy]; + + const char* className = class_getName([self class]); + [values setObject: [NSData dataWithBytes: (void *)className length: strlen(className)] forKey: CLASS_NAME_MARKER]; + NSData *retval = [values BSONEncode]; + [values release]; + + return retval; +} + +- (NSData *) BSONRepresentation +{ + return [self BSONEncode]; +} +@end + + +@implementation NSDictionary (BSON) + +- (uint8_t) BSONTypeID +{ + return 0x03; +} + +- (NSData *) BSONEncode +{ + // Initialize the components structure. + NSMutableArray *components = [[NSMutableArray alloc] init]; + + NSMutableData *lengthData = [[NSMutableData alloc] initWithLength: 4]; + [components addObject: lengthData]; + [lengthData release]; + + NSMutableData *contentsData = [[NSMutableData alloc] init]; + [components addObject: contentsData]; + [contentsData release]; + + [components addObject: [NSData dataWithBytes: "\x00" length: 1]]; + + // Ensure ordered keys. not in BSON spec, but ensures all BSONRepresentations + // of the same dict will be the same. + NSMutableArray *keys = [[NSMutableArray alloc] init]; + for (NSString *key in self) + [keys addObject: key]; + //[keys sortUsingSelector: @selector(caseInsensitiveCompare:)]; + + // Encode data.- (NSData *) BSONEncode; + uint8_t elementType = 0; + for (NSString *key in keys) + { + NSObject *value = [self objectForKey: key]; + + if ([value respondsToSelector: @selector(BSONTypeID)]) + elementType = [(id ) value BSONTypeID]; + else + elementType = 3; + + [contentsData appendBytes: &elementType length: 1]; + [contentsData appendData: [key dataUsingEncoding: NSUTF8StringEncoding]]; + [contentsData appendBytes: "\x00" length: 1]; + [contentsData appendData: [value BSONEncode]]; + } + [keys release]; + + // Write length. + uint32_t *length = (uint32_t *)[lengthData mutableBytes]; + *length = HOSTTOBSON32([contentsData length]) + 4 + 1; + + // Assemble the output data. + NSMutableData *retval = [NSMutableData data]; + for (NSData *data in components) + [retval appendData: data]; + [components release]; + + return retval; +} + +- (NSData *) BSONRepresentation +{ + return [self BSONEncode]; +} + ++ (id) BSONFragment: (NSData *) data at: (const void **) base ofType: (uint8_t) t +{ + const void *current = [data bytes]; + if ((id)base != nil) + current = *base; + else + base = ¤t; + + uint32_t length = BSONTOHOST32(*((uint32_t *)current)); + const void *endPoint = current + length; + current += 4; + + NSMutableDictionary *retval = [NSMutableDictionary dictionary]; + while (current < endPoint - 1) + { + uint8_t typeID = *((uint8_t *)current); + current++; + + char *utf8Key = (char *) current; + while (*((char *)current) != 0 && current < endPoint - 1) + current++; + current++; + NSString *key = [NSString stringWithUTF8String: utf8Key]; + + *base = current; + Class typeClass = [BSONTypes() objectForKey: [NSNumber numberWithChar: typeID]]; + id value = objc_msgSend(typeClass, @selector(BSONFragment:at:ofType:), data, base, typeID); + current = *base; + + [retval setObject: value forKey: key]; + } + + *base = current + 1; + + // If the dictionary has a class name marker, then it is to be converted to an object. + if ([retval objectForKey: CLASS_NAME_MARKER] != nil) + { + NSData *classNameData = [retval objectForKey: CLASS_NAME_MARKER]; + char *className = malloc([classNameData length] + 1); + memcpy(className, [classNameData bytes], [classNameData length]); + className[[classNameData length]] = 0; + + Class targetClass = objc_getClass(className); + if (targetClass == nil) + [NSException raise: NSInvalidArgumentException format: @"Class %s found in incoming data is undefined.", className]; + + id obj = [[targetClass alloc] initWithBSONDictionary: retval]; + return obj; + } + + return retval; +} +@end + +@implementation NSData (BSON) +- (uint8_t) BSONTypeID +{ + return 0x05; +} + +- (NSData *) BSONEncode +{ + uint32_t length = HOSTTOBSON32([self length]); + NSMutableData *retval = [NSMutableData data]; + [retval appendBytes: &length length: 4]; + [retval appendBytes: "\x00" length: 1]; + [retval appendData: self]; + + return retval; +} + +- (NSData *) BSONRepresentation +{ + return [self BSONEncode]; +} + ++ (id) BSONFragment: (NSData *) data at: (const void **) base ofType: (uint8_t) t +{ + const void *current = [data bytes]; + if ((id)base != nil) + current = *base; + else + base = ¤t; + + uint32_t length = BSONTOHOST32(*((uint32_t *)current)); + current += 4 + 1; + + NSData *retval = [NSData dataWithBytes: current length: length]; + current += length; + *base = current; + return retval; +} + +- (NSDictionary *) BSONValue +{ + return [NSDictionary BSONFragment: self at: NULL ofType: 0x03]; +} +@end + +@implementation NSNumber (BSON) +- (uint8_t) BSONTypeID +{ + const char encoding = tolower(*([self objCType])); + + switch (encoding) { + case 'f': + case 'd': return 0x01; + case 'b': return 0x08; + case 'c': + case 's': return 0x10; + case 'i': + // Ok, if you're running Objective-C on 16-bit platforms... + // Then YOU have issues. + // So, yeah, we won't handle that case. + if (sizeof(int) == 4) + return 0x10; + else if (sizeof(int) == 8) + return 0x12; + + case 'l': + if (sizeof(long) == 4) + return 0x10; + else if (sizeof(long) == 8) + return 0x12; + + case 'q': return 0x12; + default: + [NSException raise: NSInvalidArgumentException format: @"%@::%s - invalid encoding type '%c'", [self class], _cmd, encoding]; + } + return 0; +} + +- (NSData *) BSONEncode +{ + const char encoding = tolower(*([self objCType])); + + if (encoding == 'd') + { + double value = [self doubleValue]; + return [NSData dataWithBytes: &value length: 8]; + } + + if (encoding == 'f') + { + double value = [self floatValue]; + return [NSData dataWithBytes: &value length: 8]; + } + + if (encoding == 'b') + { + char value = [self boolValue]; + return [NSData dataWithBytes: &value length: 1]; + } + + if (encoding == 'c') + { + int32_t value = [self charValue]; + value = HOSTTOBSON32(value); + return [NSData dataWithBytes: &value length: 4]; + } + + if (encoding == 's') + { + int32_t value = [self shortValue]; + value = HOSTTOBSON32(value); + return [NSData dataWithBytes: &value length: 4]; + } + + if (encoding == 'i') + { + int value = [self intValue]; + if (sizeof(int) == 4) + value = HOSTTOBSON32(value); + else if (sizeof(int) == 8) + value = HOSTTOBSON64(value); + return [NSData dataWithBytes: &value length: sizeof(int)]; + } + + if (encoding == 'l') + { + long value = [self longValue]; + if (sizeof(long) == 4) + value = HOSTTOBSON32(value); + else if (sizeof(long) == 8) + value = HOSTTOBSON64(value); + + return [NSData dataWithBytes: &value length: sizeof(long)]; + } + + if (encoding == 'q') + { + long long value = HOSTTOBSON64([self longLongValue]); + return [NSData dataWithBytes: &value length: 8]; + } + + [NSException raise: NSInvalidArgumentException format: @"%@::%s - invalid encoding type '%c'", [self class], _cmd, encoding]; + return nil; +} + +- (NSData *) BSONRepresentation +{ + return [self BSONEncode]; +} + ++ (id) BSONFragment: (NSData *) data at: (const void **) base ofType: (uint8_t) t +{ + if (t == 0x01) + { + // #5: LLVM GCC requires double pointers to have a certain alignment in ARM CPUs. + // So we can't just read the double off directly from the data - need to copy it. + double value; + memcpy(&value, *base, sizeof(double)); + *base += 8; + return [NSNumber numberWithDouble: value]; + } + + if (t == 0x08) + { + char value = ((char *) *base)[0]; + *base += 1; + return [NSNumber numberWithBool: value]; + } + + if (t == 0x10) + { + int32_t value = BSONTOHOST32(((int32_t *) *base)[0]); + *base += 4; + + if (sizeof(int) == 4) + return [NSNumber numberWithInt: value]; + + return [NSNumber numberWithLong: value]; + } + + if (t == 0x12) + { + int64_t value = BSONTOHOST64(((int64_t *) *base)[0]); + *base += 8; + + return [NSNumber numberWithLongLong: value]; + } + + return nil; +} +@end + +@implementation NSString (BSON) +- (uint8_t) BSONTypeID +{ + return 0x02; +} + +- (NSData *) BSONEncode +{ + NSData *utf8Data = [self dataUsingEncoding: NSUTF8StringEncoding]; + uint32_t length = HOSTTOBSON32([utf8Data length] + 1); + + NSMutableData *retval = [NSMutableData data]; + [retval appendBytes: &length length: 4]; + [retval appendData: utf8Data]; + [retval appendBytes: "\x00" length: 1]; + return retval; +} + +- (NSData *) BSONRepresentation +{ + return [self BSONEncode]; +} + ++ (id) BSONFragment: (NSData *) data at: (const void **) base ofType: (uint8_t) typeID +{ + uint32_t length = BSONTOHOST32(((const uint32_t *) *base)[0]); + *base += 4; + + const char *utf8Str = (const char *) *base; + *base += length; + + return [NSString stringWithUTF8String: utf8Str]; +} +@end + +@implementation NSArray (BSON) +- (uint8_t) BSONTypeID +{ + return 0x04; +} + +- (NSData *) BSONEncode +{ + // Initialize the components structure. + NSMutableArray *components = [[NSMutableArray alloc] init]; + + NSMutableData *lengthData = [[NSMutableData alloc] initWithLength: 4]; + [components addObject: lengthData]; + [lengthData release]; + + NSMutableData *contentsData = [[NSMutableData alloc] init]; + [components addObject: contentsData]; + [contentsData release]; + + [components addObject: [NSData dataWithBytes: "\x00" length: 1]]; + + // Encode data. + uint8_t elementType = 0; + int i, count = [self count]; + for (i = 0 ; i < count ; i++) + { + NSObject *value = [self objectAtIndex: i]; + + if ([value respondsToSelector: @selector(BSONTypeID)]) + elementType = [(id ) value BSONTypeID]; + else + elementType = 3; + + [contentsData appendBytes: &elementType length: 1]; + [contentsData appendData: [[NSString stringWithFormat: @"%d", i] dataUsingEncoding: NSUTF8StringEncoding]]; + [contentsData appendBytes: "\x00" length: 1]; + [contentsData appendData: [value BSONEncode]]; + } + + // Write length. + uint32_t *length = (uint32_t *)[lengthData mutableBytes]; + *length = HOSTTOBSON32([contentsData length]) + 4 + 1; + + // Assemble the output data. + NSMutableData *retval = [NSMutableData data]; + for (NSData *data in components) + [retval appendData: data]; + [components release]; + + return retval; +} + +- (NSData *) BSONRepresentation +{ + return [self BSONEncode]; +} + ++ (id) BSONFragment: (NSData *) data at: (const void **) base ofType: (uint8_t) typeID +{ + NSDictionary *tmp = [NSDictionary BSONFragment: data at: base ofType: 0x03]; + NSMutableArray *retval = [NSMutableArray arrayWithCapacity: [tmp count]]; + int i; + for (i = 0; i < [tmp count]; i++) + [retval addObject: [tmp objectForKey: [NSString stringWithFormat: @"%d", i]]]; + + return retval; +} +@end + +@implementation NSNull (BSON) +- (uint8_t) BSONTypeID +{ + return 0x0a; +} + +- (NSData *) BSONEncode +{ + return [NSData data]; +} + +- (NSData *) BSONRepresentation +{ + return [self BSONEncode]; +} + ++ (id) BSONFragment: (NSData *) data at: (const void **) base ofType: (uint8_t) typeID +{ + return [NSNull null]; +} +@end + +@implementation NSCalendarDate (BSON) +- (uint8_t) BSONTypeID +{ + return 0x02; +} + +- (NSData *) BSONEncode +{ + NSString *v; + + v = [self descriptionWithCalendarFormat: @"%Y-%m-%d %H:%M:%S %Z" + locale: nil]; + + return [v BSONEncode]; +} + +- (NSData *) BSONRepresentation +{ + return [self BSONEncode]; +} + ++ (id) BSONFragment: (NSData *) data at: (const void **) base ofType: (uint8_t) typeID +{ + NSString *v; + + v = [NSString BSONFragment: data at: base ofType: 0x02]; + + return [NSCalendarDate dateWithString: v + calendarFormat: @"%Y-%m-%d %H:%M:%S %Z"]; +} +@end diff --git a/OpenChange/GNUmakefile b/OpenChange/GNUmakefile index 68f3e8dfb..197aec8b5 100644 --- a/OpenChange/GNUmakefile +++ b/OpenChange/GNUmakefile @@ -133,7 +133,9 @@ $(SOGOBACKEND)_OBJC_FILES += \ \ EOQualifier+MAPI.m \ \ - EOBitmaskQualifier.m + EOBitmaskQualifier.m \ + \ + BSONCodec.m $(SOGOBACKEND)_RESOURCE_FILES += \ diff --git a/OpenChange/MAPIStoreTypes.h b/OpenChange/MAPIStoreTypes.h index a556bb26f..b12cab6a1 100644 --- a/OpenChange/MAPIStoreTypes.h +++ b/OpenChange/MAPIStoreTypes.h @@ -52,9 +52,9 @@ static inline NSNumber * MAPIPropertyKey (enum MAPITAGS propTag) { #if (GS_SIZEOF_LONG == 4) - return [NSNumber numberWithUnsignedLong: propTag]; + return [NSString stringWithFormat: @"%ul", propTag]; #elif (GS_SIZEOF_INT == 4) - return [NSNumber numberWithUnsignedInt: propTag]; + return [NSString stringWithFormat: @"%u", propTag]; #else #error No suitable type for 4 bytes integers #endif diff --git a/OpenChange/NSObject+PropertyList.m b/OpenChange/NSObject+PropertyList.m index 37861ed0f..ce01bd227 100644 --- a/OpenChange/NSObject+PropertyList.m +++ b/OpenChange/NSObject+PropertyList.m @@ -33,6 +33,8 @@ #import #import +#import "BSONCodec.h" + const char *indentationStep = " "; @interface NSObject (plext) @@ -142,41 +144,43 @@ const char *indentationStep = " "; static void OCDumpPListData (NSData *content) { - NSDictionary *d; - NSPropertyListFormat format; - NSString *error = nil; - const char *formatName; + //NSDictionary *d; + //NSPropertyListFormat format; + //NSString *error = nil; + //const char *formatName; - d = [NSPropertyListSerialization propertyListFromData: content - mutabilityOption: NSPropertyListImmutable - format: &format - errorDescription: &error]; - if (d) - { - switch (format) - { - case NSPropertyListOpenStepFormat: - formatName = "OpenStep"; - break; - case NSPropertyListXMLFormat_v1_0: - formatName = "XML"; - break; - case NSPropertyListBinaryFormat_v1_0: - formatName = "Binary"; - break; - case NSPropertyListGNUstepFormat: - formatName = "GNUstep"; - break; - case NSPropertyListGNUstepBinaryFormat: - formatName = "GNUstep binary"; - break; - default: formatName = "unknown"; - } + //d = [NSPropertyListSerialization propertyListFromData: content + // mutabilityOption: NSPropertyListImmutable + // format: &format + // errorDescription: &error]; + //d = [content BSONValue]; - printf ("File format is: %s\n", formatName); - [d displayWithIndentation: 0]; - printf ("\n"); - } - else - printf ("an error occurred: %s\n", [error UTF8String]); + // if (d) + // { + // switch (format) + // { + // case NSPropertyListOpenStepFormat: + // formatName = "OpenStep"; + // break; + // case NSPropertyListXMLFormat_v1_0: + // formatName = "XML"; + // break; + // case NSPropertyListBinaryFormat_v1_0: + // formatName = "Binary"; + // break; + // case NSPropertyListGNUstepFormat: + // formatName = "GNUstep"; + // break; + // case NSPropertyListGNUstepBinaryFormat: + // formatName = "GNUstep binary"; + // break; + // default: formatName = "unknown"; + // } + + // printf ("File format is: %s\n", formatName); + // [d displayWithIndentation: 0]; + // printf ("\n"); + // } + // else + // printf ("an error occurred: %s\n", [error UTF8String]); } diff --git a/OpenChange/SOGoMAPIDBObject.m b/OpenChange/SOGoMAPIDBObject.m index 7f24c8dd6..94b6f975e 100644 --- a/OpenChange/SOGoMAPIDBObject.m +++ b/OpenChange/SOGoMAPIDBObject.m @@ -46,6 +46,7 @@ #import "GCSSpecialQueries+OpenChange.h" #import "MAPIStoreTypes.h" #import "SOGoMAPIDBFolder.h" +#import "BSONCodec.h" #import "SOGoMAPIDBObject.h" @@ -156,9 +157,9 @@ static EOAttribute *textColumn = nil; - (void) setupFromRecord: (NSDictionary *) record { NSInteger intValue; - NSString *propsValue, *error; + NSString *propsValue;//, *error; NSDictionary *newValues; - NSPropertyListFormat format; + //NSPropertyListFormat format; objectType = [[record objectForKey: @"c_type"] intValue]; intValue = [[record objectForKey: @"c_creationdate"] intValue]; @@ -174,13 +175,8 @@ static EOAttribute *textColumn = nil; propsValue = [record objectForKey: @"c_content"]; if ([propsValue isNotNull]) { - newValues = [NSPropertyListSerialization propertyListFromData: [propsValue dataByDecodingBase64] - mutabilityOption: NSPropertyListMutableContainers - format: &format - errorDescription: &error]; + newValues = [[propsValue dataByDecodingBase64] BSONValue]; [properties addEntriesFromDictionary: newValues]; - // [properties addEntriesFromDictionary: [propsValue - // objectFromJSONString]]; } else [properties removeAllObjects]; @@ -526,10 +522,7 @@ static EOAttribute *textColumn = nil; if ([properties count] > 0) { - content = [NSPropertyListSerialization - dataFromPropertyList: properties - format: plistFormat - errorDescription: NULL]; + content = [properties BSONRepresentation]; propsValue = [adaptor formatValue: [content stringByEncodingBase64] forAttribute: textColumn]; } From bcab7e7dc9eb664ece3f4bf9301e5c2acd8036b1 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 18 Feb 2013 16:42:59 -0500 Subject: [PATCH 21/77] C99 style fixes. --- OpenChange/BSONCodec.m | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/OpenChange/BSONCodec.m b/OpenChange/BSONCodec.m index f153a3609..8573184de 100644 --- a/OpenChange/BSONCodec.m +++ b/OpenChange/BSONCodec.m @@ -128,14 +128,16 @@ static NSDictionary *BSONTypes() // Ensure ordered keys. not in BSON spec, but ensures all BSONRepresentations // of the same dict will be the same. NSMutableArray *keys = [[NSMutableArray alloc] init]; - for (NSString *key in self) - [keys addObject: key]; + [keys addObjectsFromArray: [self allKeys]]; //[keys sortUsingSelector: @selector(caseInsensitiveCompare:)]; // Encode data.- (NSData *) BSONEncode; uint8_t elementType = 0; - for (NSString *key in keys) + int i; + + for (i = 0; i < [keys count]; i++) { + NSString *key = [keys objectAtIndex: i]; NSObject *value = [self objectForKey: key]; if ([value respondsToSelector: @selector(BSONTypeID)]) @@ -156,8 +158,8 @@ static NSDictionary *BSONTypes() // Assemble the output data. NSMutableData *retval = [NSMutableData data]; - for (NSData *data in components) - [retval appendData: data]; + for (i = 0; i < [components count]; i++) + [retval appendData: [components objectAtIndex: i]]; [components release]; return retval; @@ -494,8 +496,8 @@ static NSDictionary *BSONTypes() // Assemble the output data. NSMutableData *retval = [NSMutableData data]; - for (NSData *data in components) - [retval appendData: data]; + for (i = 0; i < [components count]; i++) + [retval appendData: [components objectAtIndex: i]]; [components release]; return retval; From e57b6835e63f4a888edfdee4c382a6c9c1d6c872 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 18 Feb 2013 16:50:54 -0500 Subject: [PATCH 22/77] Fix for objective-c runtimes. --- OpenChange/BSONCodec.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpenChange/BSONCodec.m b/OpenChange/BSONCodec.m index 8573184de..430ee0f3a 100644 --- a/OpenChange/BSONCodec.m +++ b/OpenChange/BSONCodec.m @@ -13,8 +13,10 @@ #define BSONTYPE(tag,className) [className class], [NSNumber numberWithChar: (tag)] +#ifndef objc_msgSend #define objc_msgSend(obj, sel, ...) \ objc_msg_lookup(obj, sel)(obj, sel, ## __VA_ARGS__) +#endif static NSDictionary *BSONTypes() { From 19923d10dbcba8598f4b2ed3aec86b2fe508a68f Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 19 Feb 2013 15:30:29 -0500 Subject: [PATCH 23/77] Also handle date-strings as date objects. Dates are stored as string in BSON - might change in the future. --- OpenChange/NSString+MAPIStore.m | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/OpenChange/NSString+MAPIStore.m b/OpenChange/NSString+MAPIStore.m index 83ca8d6e6..647eb79f1 100644 --- a/OpenChange/NSString+MAPIStore.m +++ b/OpenChange/NSString+MAPIStore.m @@ -24,8 +24,10 @@ #include #import +#import #import "NSString+MAPIStore.h" +#import "NSDate+MAPIStore.h" #undef DEBUG #include @@ -67,6 +69,16 @@ return unicode; } +- (struct FILETIME *) asFileTimeInMemCtx: (void *) memCtx +{ + NSCalendarDate *d; + + d = [NSCalendarDate dateWithString: self + calendarFormat: @"%Y-%m-%d %H:%M:%S %Z"]; + + return [d asFileTimeInMemCtx: memCtx]; +} + - (char) _decodeHexByte: (char) byteChar { char newByte; From 67c2d508ea2d0b6007d110d67383c7030711e0b9 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 19 Feb 2013 15:42:05 -0500 Subject: [PATCH 24/77] Added rationale around previous commit. --- OpenChange/NSString+MAPIStore.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenChange/NSString+MAPIStore.m b/OpenChange/NSString+MAPIStore.m index 647eb79f1..617f2d7e5 100644 --- a/OpenChange/NSString+MAPIStore.m +++ b/OpenChange/NSString+MAPIStore.m @@ -69,6 +69,9 @@ return unicode; } +// FIXME: This should go away at some point, when BSONCoder +// will correctly decode dates as NSCalendarDate objects +// instead of strings (because we first encode them as strings...) - (struct FILETIME *) asFileTimeInMemCtx: (void *) memCtx { NSCalendarDate *d; From fa5e99d58dd9a70602e47481bd02e70c76e2727f Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 19 Feb 2013 15:54:52 -0500 Subject: [PATCH 25/77] Much better fix over previous commit. --- OpenChange/BSONCodec.m | 3 ++- OpenChange/NSString+MAPIStore.m | 15 --------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/OpenChange/BSONCodec.m b/OpenChange/BSONCodec.m index 430ee0f3a..34e5cdfd6 100644 --- a/OpenChange/BSONCodec.m +++ b/OpenChange/BSONCodec.m @@ -33,6 +33,7 @@ static NSDictionary *BSONTypes() BSONTYPE(0x08, NSNumber), BSONTYPE(0x0A, NSNull), BSONTYPE(0x10, NSNumber), + BSONTYPE(0x11, NSCalendarDate), BSONTYPE(0x12, NSNumber), nil] retain]; } @@ -547,7 +548,7 @@ static NSDictionary *BSONTypes() @implementation NSCalendarDate (BSON) - (uint8_t) BSONTypeID { - return 0x02; + return 0x11; } - (NSData *) BSONEncode diff --git a/OpenChange/NSString+MAPIStore.m b/OpenChange/NSString+MAPIStore.m index 617f2d7e5..83ca8d6e6 100644 --- a/OpenChange/NSString+MAPIStore.m +++ b/OpenChange/NSString+MAPIStore.m @@ -24,10 +24,8 @@ #include #import -#import #import "NSString+MAPIStore.h" -#import "NSDate+MAPIStore.h" #undef DEBUG #include @@ -69,19 +67,6 @@ return unicode; } -// FIXME: This should go away at some point, when BSONCoder -// will correctly decode dates as NSCalendarDate objects -// instead of strings (because we first encode them as strings...) -- (struct FILETIME *) asFileTimeInMemCtx: (void *) memCtx -{ - NSCalendarDate *d; - - d = [NSCalendarDate dateWithString: self - calendarFormat: @"%Y-%m-%d %H:%M:%S %Z"]; - - return [d asFileTimeInMemCtx: memCtx]; -} - - (char) _decodeHexByte: (char) byteChar { char newByte; From 7d65d808f6ff80a2a5bac2a8c55ad218ba44aaa6 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 20 Feb 2013 10:50:58 -0500 Subject: [PATCH 26/77] Strip newline characters from user password files Makes it easier to create those files with a regular editor. --- OpenChange/MAPIStoreUserContext.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/OpenChange/MAPIStoreUserContext.m b/OpenChange/MAPIStoreUserContext.m index 4f398fe26..7432f91fd 100644 --- a/OpenChange/MAPIStoreUserContext.m +++ b/OpenChange/MAPIStoreUserContext.m @@ -20,6 +20,7 @@ * Boston, MA 02111-1307, USA. */ +#import #import #import #import @@ -107,15 +108,17 @@ static NSMapTable *contextsTable = nil; password = nil; path = [NSString stringWithFormat: SAMBA_PRIVATE_DIR - @"/mapistore/%@/password", newUsername]; + @"/mapistore/%@/password", newUsername]; content = [NSData dataWithContentsOfFile: path]; if (content) { password = [[NSString alloc] initWithData: content - encoding: NSUTF8StringEncoding]; + encoding: NSUTF8StringEncoding]; [password autorelease]; + password = [password stringByTrimmingCharactersInSet: + [NSCharacterSet characterSetWithCharactersInString: @"\r\n"]]; } return password; From 89766b2e7e037be88d1460520c762c77d66f302e Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 20 Feb 2013 12:10:34 -0500 Subject: [PATCH 27/77] Temporary fix for unsigned long long values. --- OpenChange/BSONCodec.m | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/OpenChange/BSONCodec.m b/OpenChange/BSONCodec.m index 34e5cdfd6..9e601fe3a 100644 --- a/OpenChange/BSONCodec.m +++ b/OpenChange/BSONCodec.m @@ -307,41 +307,41 @@ static NSDictionary *BSONTypes() - (NSData *) BSONEncode { - const char encoding = tolower(*([self objCType])); + const char encoding = *([self objCType]); - if (encoding == 'd') + if (encoding == 'd' || encoding == 'D') { double value = [self doubleValue]; return [NSData dataWithBytes: &value length: 8]; } - if (encoding == 'f') + if (encoding == 'f' || encoding == 'F') { double value = [self floatValue]; return [NSData dataWithBytes: &value length: 8]; } - if (encoding == 'b') + if (encoding == 'b' || encoding == 'B') { char value = [self boolValue]; return [NSData dataWithBytes: &value length: 1]; } - if (encoding == 'c') + if (encoding == 'c' || encoding == 'C') { int32_t value = [self charValue]; value = HOSTTOBSON32(value); return [NSData dataWithBytes: &value length: 4]; } - if (encoding == 's') + if (encoding == 's' || encoding == 'S') { int32_t value = [self shortValue]; value = HOSTTOBSON32(value); return [NSData dataWithBytes: &value length: 4]; } - if (encoding == 'i') + if (encoding == 'i' || encoding == 'I') { int value = [self intValue]; if (sizeof(int) == 4) @@ -351,7 +351,7 @@ static NSDictionary *BSONTypes() return [NSData dataWithBytes: &value length: sizeof(int)]; } - if (encoding == 'l') + if (encoding == 'l' || encoding == 'L') { long value = [self longValue]; if (sizeof(long) == 4) @@ -368,6 +368,13 @@ static NSDictionary *BSONTypes() return [NSData dataWithBytes: &value length: 8]; } + if (encoding == 'Q') + { + long long value = HOSTTOBSON64([self unsignedLongLongValue]); + return [NSData dataWithBytes: &value length: 8]; + } + + [NSException raise: NSInvalidArgumentException format: @"%@::%s - invalid encoding type '%c'", [self class], _cmd, encoding]; return nil; } @@ -412,7 +419,7 @@ static NSDictionary *BSONTypes() int64_t value = BSONTOHOST64(((int64_t *) *base)[0]); *base += 8; - return [NSNumber numberWithLongLong: value]; + return [NSNumber numberWithUnsignedLongLong: value]; } return nil; From a7c3f33447a3e0c6902913013574052763c36eaa Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Fri, 1 Mar 2013 01:26:15 -0500 Subject: [PATCH 28/77] Whitespace --- SoObjects/SOGo/SOGoGroup.m | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/SoObjects/SOGo/SOGoGroup.m b/SoObjects/SOGo/SOGoGroup.m index 63010ec13..3712a952a 100644 --- a/SoObjects/SOGo/SOGoGroup.m +++ b/SoObjects/SOGo/SOGoGroup.m @@ -264,10 +264,10 @@ login = [um getLoginForDN: [dn lowercaseString]]; user = [SOGoUser userWithLogin: login roles: nil]; if (user) - { - [logins addObject: login]; - [_members addObject: user]; - } + { + [logins addObject: login]; + [_members addObject: user]; + } } // We add members for whom we have their associated login name @@ -277,17 +277,17 @@ user = [SOGoUser userWithLogin: login roles: nil]; if (user) - { - [logins addObject: login]; - [_members addObject: user]; - } + { + [logins addObject: login]; + [_members addObject: user]; + } } - // We are done fetching members, let's cache the members of the group - // (ie., their UIDs) in memcached to speed up -hasMemberWithUID. - [[SOGoCache sharedCache] setValue: [logins componentsJoinedByString: @","] - forKey: [NSString stringWithFormat: @"%@+%@", _identifier, _domain]]; + // We are done fetching members, let's cache the members of the group + // (ie., their UIDs) in memcached to speed up -hasMemberWithUID. + [[SOGoCache sharedCache] setValue: [logins componentsJoinedByString: @","] + forKey: [NSString stringWithFormat: @"%@+%@", _identifier, _domain]]; } else { From f1846191d5d47717e7c5dff710e265e21c8f0fe2 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Fri, 1 Mar 2013 16:24:16 -0500 Subject: [PATCH 29/77] Use an autorelease pool in member expansion Otherwise, we would hold one ldap connection for each member of a group. And close them all later. With large groups, we could hit the open file limit (or the open file limit of the ldap server). Fixes #2256 --- SoObjects/SOGo/SOGoGroup.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/SoObjects/SOGo/SOGoGroup.m b/SoObjects/SOGo/SOGoGroup.m index 3712a952a..4a170be9b 100644 --- a/SoObjects/SOGo/SOGoGroup.m +++ b/SoObjects/SOGo/SOGoGroup.m @@ -57,6 +57,7 @@ #include "SOGoGroup.h" #import +#import #import #import @@ -224,6 +225,7 @@ NSDictionary *d; SOGoUser *user; NSArray *o; + NSAutoreleasePool *pool; int i, c; if (!_members) @@ -259,7 +261,8 @@ // We add members for whom we have their associated DN for (i = 0; i < [dns count]; i++) - { + { + pool = [NSAutoreleasePool new]; dn = [dns objectAtIndex: i]; login = [um getLoginForDN: [dn lowercaseString]]; user = [SOGoUser userWithLogin: login roles: nil]; @@ -268,11 +271,13 @@ [logins addObject: login]; [_members addObject: user]; } + [pool release]; } // We add members for whom we have their associated login name for (i = 0; i < [uids count]; i++) { + pool = [NSAutoreleasePool new]; login = [uids objectAtIndex: i]; user = [SOGoUser userWithLogin: login roles: nil]; @@ -281,6 +286,7 @@ [logins addObject: login]; [_members addObject: user]; } + [pool release]; } From 7e8a83aefb5bd1e89225dd2bd6be847bcbb39470 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 5 Mar 2013 10:22:20 -0500 Subject: [PATCH 30/77] Fix Slovak templates for mail reply/forward --- SoObjects/Mailer/GNUmakefile | 2 ++ SoObjects/Mailer/SOGoMailForward.h | 7 ++++--- SoObjects/Mailer/SOGoMailForward.m | 7 ++++--- SoObjects/Mailer/SOGoMailReply.h | 7 ++++--- SoObjects/Mailer/SOGoMailReply.m | 7 ++++--- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/SoObjects/Mailer/GNUmakefile b/SoObjects/Mailer/GNUmakefile index f4bbae9b2..975cfe503 100644 --- a/SoObjects/Mailer/GNUmakefile +++ b/SoObjects/Mailer/GNUmakefile @@ -72,6 +72,8 @@ Mailer_RESOURCE_FILES += \ SOGoMailPolishReply.wo \ SOGoMailRussianForward.wo \ SOGoMailRussianReply.wo \ + SOGoMailSlovakForward.wo \ + SOGoMailSlovakReply.wo \ SOGoMailSpanishSpainForward.wo \ SOGoMailSpanishSpainReply.wo \ SOGoMailSpanishArgentinaForward.wo \ diff --git a/SoObjects/Mailer/SOGoMailForward.h b/SoObjects/Mailer/SOGoMailForward.h index c2e4c9134..a1593d405 100644 --- a/SoObjects/Mailer/SOGoMailForward.h +++ b/SoObjects/Mailer/SOGoMailForward.h @@ -1,8 +1,6 @@ /* SOGoMailForward.h - this file is part of SOGo * - * Copyright (C) 2007 Inverse inc. - * - * Author: Wolfgang Sourdeau + * Copyright (C) 2007-2013 Inverse inc. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -93,6 +91,9 @@ @interface SOGoMailRussianForward : SOGoMailForward @end +@interface SOGoMailSlovakForward : SOGoMailForward +@end + @interface SOGoMailUkrainianForward : SOGoMailForward @end diff --git a/SoObjects/Mailer/SOGoMailForward.m b/SoObjects/Mailer/SOGoMailForward.m index 9beca2887..e7afdddd9 100644 --- a/SoObjects/Mailer/SOGoMailForward.m +++ b/SoObjects/Mailer/SOGoMailForward.m @@ -1,8 +1,6 @@ /* SOGoMailForward.m - this file is part of SOGo * - * Copyright (C) 2007-2012 Inverse inc. - * - * Author: Wolfgang Sourdeau + * Copyright (C) 2007-2013 Inverse inc. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -297,6 +295,9 @@ @implementation SOGoMailRussianForward @end +@implementation SOGoMailSlovakForward +@end + @implementation SOGoMailUkrainianForward @end diff --git a/SoObjects/Mailer/SOGoMailReply.h b/SoObjects/Mailer/SOGoMailReply.h index 4ee5828d2..123ea0308 100644 --- a/SoObjects/Mailer/SOGoMailReply.h +++ b/SoObjects/Mailer/SOGoMailReply.h @@ -1,8 +1,6 @@ /* SOGoMailReply.h - this file is part of SOGo * - * Copyright (C) 2007-2010 Inverse inc. - * - * Author: Wolfgang Sourdeau + * Copyright (C) 2007-2013 Inverse inc. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -98,6 +96,9 @@ @interface SOGoMailRussianReply : SOGoMailReply @end +@interface SOGoMailSlovakReply : SOGoMailReply +@end + @interface SOGoMailUkrainianReply : SOGoMailReply @end diff --git a/SoObjects/Mailer/SOGoMailReply.m b/SoObjects/Mailer/SOGoMailReply.m index b49bf3800..4efb356bd 100644 --- a/SoObjects/Mailer/SOGoMailReply.m +++ b/SoObjects/Mailer/SOGoMailReply.m @@ -1,8 +1,6 @@ /* SOGoMailReply.m - this file is part of SOGo * - * Copyright (C) 2007-2009 Inverse inc. - * - * Author: Wolfgang Sourdeau + * Copyright (C) 2007-2013 Inverse inc. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -155,6 +153,9 @@ @implementation SOGoMailRussianReply @end +@implementation SOGoMailSlovakReply +@end + @implementation SOGoMailUkrainianReply @end From 13277bbdb955a18200b26919c14171e7f391bc65 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Tue, 5 Mar 2013 10:47:09 -0500 Subject: [PATCH 31/77] c_content TEXT to LONGTEXT for OpenChange tables Add an script to update existing tables. Note that if a row already have 65535 char in it, the data is most likely broken. --- OpenChange/GCSSpecialQueries+OpenChange.m | 2 +- Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh | 52 +++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh diff --git a/OpenChange/GCSSpecialQueries+OpenChange.m b/OpenChange/GCSSpecialQueries+OpenChange.m index 914fe6227..2e6376b15 100644 --- a/OpenChange/GCSSpecialQueries+OpenChange.m +++ b/OpenChange/GCSSpecialQueries+OpenChange.m @@ -79,7 +79,7 @@ @" c_lastmodified INT NOT NULL," @" c_version INT NOT NULL DEFAULT 0," @" c_deleted TINYINT NOT NULL DEFAULT 0," - @" c_content TEXT)"); + @" c_content LONGTEXT)"); return [NSString stringWithFormat: sqlFolderFormat, tableName]; } diff --git a/Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh b/Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh new file mode 100644 index 000000000..567274e4a --- /dev/null +++ b/Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +set -e + +# This script only works with mysql +# updates c_content to longtext in SOGo/OpenChange cache tables +# to avoid truncation of data at 64k + + +defaultusername=$USER +defaulthostname=127.0.0.1 +defaultdatabase=sogo + +read -p "Username ($defaultusername): " username +read -p "Hostname ($defaulthostname): " hostname +read -p "Database ($defaultdatabase): " database + +if [ -z "$username" ] +then + username=$defaultusername +fi + +if [ -z "$hostname" ] +then + hostname=$defaulthostname +fi + +if [ -z "$database" ] +then + database=$defaultdatabase +fi + +sqlscript="" + +function growContent() { + oldIFS="$IFS" + IFS=" " + part="`echo -e \"ALTER TABLE $table MODIFY c_content LONGTEXT;\\n\"`"; + sqlscript="$sqlscript$part" + IFS="$oldIFS" +} + +echo "This script will ask for the sql password twice" >&2 +echo "Converting c_content from TEXT to LONGTEXT in SOGo/OpenChange cache tables" >&2 +tables=`mysql -p -s -u $username -h $hostname $database -e "show tables like 'socfs_%';"` + +for table in $tables; +do + growContent +done + +echo "$sqlscript" | mysql -p -s -u $username -h $hostname $database From e882dedac9e25320c2190fbce0654697e19586ec Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Tue, 5 Mar 2013 11:01:51 -0500 Subject: [PATCH 32/77] Update News --- NEWS | 2 ++ Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh | 0 2 files changed, 2 insertions(+) mode change 100644 => 100755 Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh diff --git a/NEWS b/NEWS index 4b877e195..0c5c87107 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,8 @@ Enhancements Bug fixes - Don't use the cache for password lookups from login page (#2169) - fixed issue with exceptions in repeating events + - Avoid data truncation issue in OpenChange with mysql backend + run sql-update-2.0.4b_to_2.0.5-mysql.sh to update existing tables 2.0.4b (2013-02-04) ------------------ diff --git a/Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh b/Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh old mode 100644 new mode 100755 From c79af52b67cdfe76d250e5607e2243b446df26a8 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 6 Mar 2013 11:03:19 -0500 Subject: [PATCH 33/77] Fix BSONCodec.m includes include objc.h instead of runtime.h so that it works on older gcc objc runtime --- OpenChange/BSONCodec.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenChange/BSONCodec.m b/OpenChange/BSONCodec.m index 9e601fe3a..518900ba2 100644 --- a/OpenChange/BSONCodec.m +++ b/OpenChange/BSONCodec.m @@ -9,7 +9,7 @@ #import "BSONCodec.h" #import #import -#import +#import #define BSONTYPE(tag,className) [className class], [NSNumber numberWithChar: (tag)] From 46815042c94dc79cbf93aafeaae91e382be79c1c Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 7 Mar 2013 09:29:56 -0500 Subject: [PATCH 34/77] Fixed bug when modifying/deleting exceptions of recurring events. --- .../Appointments/SOGoAppointmentObject.m | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/SoObjects/Appointments/SOGoAppointmentObject.m b/SoObjects/Appointments/SOGoAppointmentObject.m index d54f0d1d4..a2d279ec0 100644 --- a/SoObjects/Appointments/SOGoAppointmentObject.m +++ b/SoObjects/Appointments/SOGoAppointmentObject.m @@ -1798,20 +1798,18 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent iCalCalendar *oldCalendar; iCalEvent *oldEvent, *newEvent; iCalEventChanges *changes; - NSArray *oldEvents, *newEvents; + NSMutableArray *oldEvents, *newEvents; NSCalendarDate *recurrenceId; - BOOL master; int i; // // We check what has changed in the event and react accordingly. // - newEvents = [calendar events]; + newEvents = [NSMutableArray arrayWithArray: [calendar events]]; oldCalendar = [self calendar: NO secure: NO]; - oldEvents = [oldCalendar events]; + oldEvents = [NSMutableArray arrayWithArray: [oldCalendar events]]; recurrenceId = nil; - master = NO; for (i = [newEvents count]-1; i >= 0; i--) { @@ -1842,8 +1840,8 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent } else { - [calendar removeChild: oldEvent]; - [oldCalendar removeChild: newEvent]; + [newEvents removeObject: newEvent]; + [oldEvents removeObject: oldEvent]; } } @@ -1860,7 +1858,6 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent { oldEvent = [oldEvents objectAtIndex: 0]; newEvent = [newEvents objectAtIndex: 0]; - master = YES; } // A RECURRENCE-ID was added else if ([newEvents count] > [oldEvents count]) @@ -1892,25 +1889,38 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent if ([[newEvent attendees] count] || [[oldEvent attendees] count]) { NSString *uid; - + + // newEvent might be nil here, if we're deleting a RECURRENCE-ID with attendees + // If that's the case, we use the oldEvent for now just to obtain the organizer + // and we'll swap it back to nil once we're done. + if (!newEvent) + newEvent = oldEvent; + // We fetch the organizer's uid. Sometimes, the recurrence-id will // have it, sometimes not. If it doesn't, we fetch it from the master event. uid = [[newEvent organizer] uid]; - if (!uid && !master) + if (!uid && !recurrenceId) uid = [[[[[newEvent parent] events] objectAtIndex: 0] organizer] uid]; // With Thunderbird 10, if you create a recurring event with an exception // occurence, and invite someone, the PUT will have the organizer in the // recurrence-id and not in the master event. We must fix this, otherwise // SOGo will break. - if (!master && ![[[[[newEvent parent] events] objectAtIndex: 0] organizer] uid]) + if (!recurrenceId && ![[[[[newEvent parent] events] objectAtIndex: 0] organizer] uid]) [[[[newEvent parent] events] objectAtIndex: 0] setOrganizer: [newEvent organizer]]; + if (newEvent == oldEvent) + newEvent = nil; + if (uid && [uid caseInsensitiveCompare: owner] == NSOrderedSame) { - if ((ex = [self _handleUpdatedEvent: newEvent fromOldEvent: oldEvent])) + // A RECCURENCE-ID was removed + if (!newEvent && oldEvent) + [self prepareDeleteOccurence: oldEvent]; + // The master event was changed, A RECCURENCE-ID was added or modified + else if ((ex = [self _handleUpdatedEvent: newEvent fromOldEvent: oldEvent])) return ex; } // From a026e75c0e383db73c4096e23bb0370380e914be Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Fri, 8 Mar 2013 15:57:10 -0500 Subject: [PATCH 35/77] Removed note about linefeed in password files This is handled by the code now --- ...Native Microsoft Outlook Configuration.odt | Bin 31424 -> 30524 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Documentation/SOGo Native Microsoft Outlook Configuration.odt b/Documentation/SOGo Native Microsoft Outlook Configuration.odt index 5f648d913ca5b8ad9c740be619cf15e8663478fd..9b68abc0443e6f73c07390769a2ae458d5e03dbf 100644 GIT binary patch delta 28214 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 T&S1aI(Z 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 literal 31424 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 R?uPREDthzUaQ^w}{{U-JC{+Le From 41a6c02aa31b5bfb3b9ec0337eb31d22ef1d7e8e Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Fri, 8 Mar 2013 16:20:27 -0500 Subject: [PATCH 36/77] Rework web services section State that HTTPS is mandatory for autodiscovery services. Add example named config for SRV record. --- ...Native Microsoft Outlook Configuration.odt | Bin 30524 -> 30622 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Documentation/SOGo Native Microsoft Outlook Configuration.odt b/Documentation/SOGo Native Microsoft Outlook Configuration.odt index 9b68abc0443e6f73c07390769a2ae458d5e03dbf..8c969eb049fa0fbaa1a419a297d6b24a090eab8d 100644 GIT binary patch delta 16801 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 delta 16736 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 Z7zilsuM+70XEcOF2X`t6AE$qf{~x{Vl6U|B From d12c651d59cb6891ce21e21aa8d56f349c75cc2d Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 11 Mar 2013 09:34:36 -0400 Subject: [PATCH 37/77] New system default SOGoEncryptionKey To be used to encrypt the passwords of remote Web calendars when SOGoTrustProxyAuthentication is enabled. --- NEWS | 5 +- .../Appointments/SOGoWebAppointmentFolder.m | 57 +++++++++---------- SoObjects/SOGo/SOGoDefaults.plist | 2 + SoObjects/SOGo/SOGoSystemDefaults.h | 1 + SoObjects/SOGo/SOGoSystemDefaults.m | 5 ++ 5 files changed, 38 insertions(+), 32 deletions(-) diff --git a/NEWS b/NEWS index 0c5c87107..50b8a77fc 100644 --- a/NEWS +++ b/NEWS @@ -1,8 +1,9 @@ -2.0.5 (2013-02-dd) +2.0.5 (2013-03-dd) ------------------ New features - - + - new system default SOGoEncryptionKey to be used to encrypt the passwords of + remote Web calendars when SOGoTrustProxyAuthentication is enabled Enhancements - Added logging of the X-Forwarded-For HTTP header (#2229) diff --git a/SoObjects/Appointments/SOGoWebAppointmentFolder.m b/SoObjects/Appointments/SOGoWebAppointmentFolder.m index 0c405ffba..f5c004c84 100644 --- a/SoObjects/Appointments/SOGoWebAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoWebAppointmentFolder.m @@ -1,6 +1,6 @@ /* SOGoWebAppointmentFolder.m - this file is part of SOGo * - * Copyright (C) 2009-2010 Inverse inc. + * Copyright (C) 2009-2013 Inverse inc. * * Author: Cyril Robert * Ludovic Marcotte @@ -37,6 +37,7 @@ #import #import #import +#import #import #import #import @@ -69,27 +70,23 @@ size_t curl_body_function(void *ptr, size_t size, size_t nmemb, void *buffer) NSString *authValue, *userPassword; NSArray *parts, *keys; - userPassword = [[self authenticatorInContext: context] - passwordInContext: context]; + userPassword = [[self authenticatorInContext: context] passwordInContext: context]; if ([userPassword length] == 0) { - authData = nil; + userPassword = [[SOGoSystemDefaults sharedSystemDefaults] encryptionKey]; + } + authValue + = [[self folderPropertyValueInCategory: @"WebCalendarsAuthentication"] + decryptWithKey: userPassword]; + parts = [authValue componentsSeparatedByString: @":"]; + if ([parts count] == 2) + { + keys = [NSArray arrayWithObjects: @"username", @"password", nil]; + authData = [NSDictionary dictionaryWithObjects: parts + forKeys: keys]; } else - { - authValue - = [[self folderPropertyValueInCategory: @"WebCalendarsAuthentication"] - decryptWithKey: userPassword]; - parts = [authValue componentsSeparatedByString: @":"]; - if ([parts count] == 2) - { - keys = [NSArray arrayWithObjects: @"username", @"password", nil]; - authData = [NSDictionary dictionaryWithObjects: parts - forKeys: keys]; - } - else - authData = nil; - } + authData = nil; return authData; } @@ -99,18 +96,18 @@ size_t curl_body_function(void *ptr, size_t size, size_t nmemb, void *buffer) { NSString *authValue, *userPassword; - userPassword = [[self authenticatorInContext: context] - passwordInContext: context]; - if ([userPassword length] > 0) - { - if (!username) - username = @""; - if (!password) - password = @""; - authValue = [NSString stringWithFormat: @"%@:%@", username, password]; - [self setFolderPropertyValue: [authValue encryptWithKey: userPassword] - inCategory: @"WebCalendarsAuthentication"]; - } + userPassword = [[self authenticatorInContext: context] passwordInContext: context]; + if ([userPassword length] == 0) { + userPassword = [[SOGoSystemDefaults sharedSystemDefaults] encryptionKey]; + } + + if (!username) + username = @""; + if (!password) + password = @""; + authValue = [NSString stringWithFormat: @"%@:%@", username, password]; + [self setFolderPropertyValue: [authValue encryptWithKey: userPassword] + inCategory: @"WebCalendarsAuthentication"]; } - (NSDictionary *) loadWebCalendar diff --git a/SoObjects/SOGo/SOGoDefaults.plist b/SoObjects/SOGo/SOGoDefaults.plist index e0e0a2aa1..01fc78101 100644 --- a/SoObjects/SOGo/SOGoDefaults.plist +++ b/SoObjects/SOGo/SOGoDefaults.plist @@ -10,6 +10,8 @@ SOGoZipPath = "/usr/bin/zip"; + SOGoEncryptionKey = "MySOGoEncryptionKey"; + WOUseRelativeURLs = YES; WOMessageUseUTF8 = YES; WOParsersUseUTF8 = YES; diff --git a/SoObjects/SOGo/SOGoSystemDefaults.h b/SoObjects/SOGo/SOGoSystemDefaults.h index 24d211350..2057f24b0 100644 --- a/SoObjects/SOGo/SOGoSystemDefaults.h +++ b/SoObjects/SOGo/SOGoSystemDefaults.h @@ -43,6 +43,7 @@ - (BOOL) debugLeaks; - (int) vmemLimit; - (BOOL) trustProxyAuthentication; +- (NSString *) encryptionKey; - (BOOL) useRelativeURLs; - (BOOL) isWebAccessEnabled; diff --git a/SoObjects/SOGo/SOGoSystemDefaults.m b/SoObjects/SOGo/SOGoSystemDefaults.m index 4f5c5651a..e724c4fb9 100644 --- a/SoObjects/SOGo/SOGoSystemDefaults.m +++ b/SoObjects/SOGo/SOGoSystemDefaults.m @@ -349,6 +349,11 @@ _injectConfigurationFromFile (NSMutableDictionary *defaultsDict, return [self boolForKey: @"SOGoTrustProxyAuthentication"]; } +- (NSString *) encryptionKey; +{ + return [self stringForKey: @"SOGoEncryptionKey"]; +} + - (BOOL) useRelativeURLs { return [self boolForKey: @"WOUseRelativeURLs"]; From 63ff9751d78d271aba7a1148cf8c1f98003fa543 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Mon, 11 Mar 2013 11:37:59 -0400 Subject: [PATCH 38/77] Add ics_compare and use it in _testRespondTo() This new class uses vobject.ics_diff() to compare 2 VCALENDAR components. We should use this instead of textually comparing events for equality in future tests. --- Tests/Integration/test-davacl.py | 7 +++-- Tests/Integration/utilities.py | 53 ++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/Tests/Integration/test-davacl.py b/Tests/Integration/test-davacl.py index 0298a973a..986a27be5 100755 --- a/Tests/Integration/test-davacl.py +++ b/Tests/Integration/test-davacl.py @@ -681,9 +681,10 @@ class DAVCalendarAclTest(DAVAclTest): "organizer_line": "ORGANIZER:mailto:someone@nowhere.com\n", "attendee_line": att_line} event = self._getEvent(event_class, True) - self.assertEquals(exp_event.strip(), event.strip(), - "'respond to' event does not match:\nreceived:\n" - "/%s/\nexpected:\n/%s/" % (event, exp_event)) + ics_diff = utilities.ics_compare(exp_event, event) + self.assertTrue(ics_diff.areEqual(), + "'respond to' event does not match:\n" + "Diff(expected, got):\n %s" % ics_diff.textDiff()) class DAVAddressBookAclTest(DAVAclTest): resource = '/SOGo/dav/%s/Contacts/test-dav-acl/' % username diff --git a/Tests/Integration/utilities.py b/Tests/Integration/utilities.py index 20f70ad18..3b7f31441 100644 --- a/Tests/Integration/utilities.py +++ b/Tests/Integration/utilities.py @@ -1,9 +1,60 @@ #!/usr/bin/python +import StringIO +import sys import unittest +import vobject +import vobject.ics_diff import webdavlib import xml.sax.saxutils +class ics_compare(): + + def __init__(self, event1, event2): + self.event1 = event1 + self.event2 = event2 + self.diffs = None + + def _vcalendarComponent(self, event): + event_component = None + for item in vobject.readComponents(event): + if item.name == "VCALENDAR": + event_component = item + return event_component + + def areEqual(self): + s_event1 = StringIO.StringIO(self.event1) + s_event2 = StringIO.StringIO(self.event2) + + event1_vcalendar = self._vcalendarComponent(s_event1) + if event1_vcalendar is None: + raise Exception("No VCALENDAR component in event1") + + event2_vcalendar = self._vcalendarComponent(s_event2) + if event2_vcalendar is None: + raise Exception("No VCALENDAR component in event2") + + self.diffs = vobject.ics_diff.diff(event1_vcalendar, event2_vcalendar) + if not self.diffs: + return True + else: + return False + + def textDiff(self): + saved_stdout = sys.stdout + out = StringIO.StringIO() + sys.stdout = out + try : + if self.diffs is not None: + for (left, right) in self.diffs: + left.prettyPrint() + right.prettyPrint() + finally: + sys.stdout = saved_stdout + + return out.getvalue().strip() + + class TestUtility(): def __init__(self, test, client, resource = None): self.test = test @@ -144,3 +195,5 @@ class TestAddressBookACLUtility(TestACLUtility): sogoRights.append(sogoRightsTable[k]) return sogoRights + + From 15e082896ce62665ca7b655521a1b43505fd9401 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Tue, 12 Mar 2013 09:08:19 -0400 Subject: [PATCH 39/77] Update sogo-tool expire-autoreply syntax in cron --- Scripts/sogo.cron | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Scripts/sogo.cron b/Scripts/sogo.cron index b9824d1e6..85c9f740c 100644 --- a/Scripts/sogo.cron +++ b/Scripts/sogo.cron @@ -1,8 +1,8 @@ # Sogod cronjobs # Vacation messages expiration -# Make sure to set authname and authpassword with the credentials of a sieve admin -#0 0 * * * sogo /usr/sbin/sogo-tool expire-autoreply authname:authpassword +# The credentials file should contain the sieve admin credentials (username:passwd) +#0 0 * * * sogo /usr/sbin/sogo-tool expire-autoreply -p /etc/sogo/sieve.creds # Session cleanup - runs every minute # - Ajust the nbMinutes parameter to suit your needs From 93f9a7273e96970106259e4902cf378a425d1322 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 13 Mar 2013 15:04:11 -0400 Subject: [PATCH 40/77] Now handle mem context when saving messages and removed useless debugging. --- OpenChange/EOQualifier+MAPI.m | 10 +++++----- OpenChange/MAPIStoreCalendarEmbeddedMessage.m | 5 +++-- OpenChange/MAPIStoreCalendarFolder.m | 2 +- OpenChange/MAPIStoreCalendarMessage.m | 13 ++++++------ OpenChange/MAPIStoreContext.m | 6 +++--- OpenChange/MAPIStoreDBFolder.m | 4 ++-- OpenChange/MAPIStoreDBMessage.m | 2 +- OpenChange/MAPIStoreDBMessageTable.m | 2 +- OpenChange/MAPIStoreEmbeddedMessage.m | 2 +- OpenChange/MAPIStoreFAIMessage.m | 4 ++-- OpenChange/MAPIStoreFolder.m | 20 +++++++++---------- OpenChange/MAPIStoreGCSMessageTable.m | 4 ++-- OpenChange/MAPIStoreMailFolder.m | 6 +++--- OpenChange/MAPIStoreMailMessage.m | 2 +- OpenChange/MAPIStoreMailMessageTable.m | 8 ++++---- OpenChange/MAPIStoreMailVolatileMessage.m | 2 +- OpenChange/MAPIStoreMessage.h | 4 ++-- OpenChange/MAPIStoreMessage.m | 20 +++++++++---------- OpenChange/MAPIStoreSOGo.m | 6 +++--- OpenChange/MAPIStoreTable.m | 14 ++++++------- OpenChange/MAPIStoreTypes.m | 7 ++++--- OpenChange/NSObject+MAPIStore.m | 6 ++---- OpenChange/SOGoMAPIDBObject.m | 8 ++++---- OpenChange/iCalEvent+MAPIStore.h | 6 ++++-- OpenChange/iCalEvent+MAPIStore.m | 11 +++++----- 25 files changed, 89 insertions(+), 85 deletions(-) diff --git a/OpenChange/EOQualifier+MAPI.m b/OpenChange/EOQualifier+MAPI.m index 65e28c6fd..81e77d833 100644 --- a/OpenChange/EOQualifier+MAPI.m +++ b/OpenChange/EOQualifier+MAPI.m @@ -46,12 +46,12 @@ NSDictionary *properties; BOOL rc; - [self logWithFormat: @"evaluating object '%@'", object]; + //[self logWithFormat: @"evaluating object '%@'", object]; properties = [object properties]; rc = [self _evaluateSOGoMAPIDBObject: properties]; - [self logWithFormat: @" evaluation result: %d", rc]; + //[self logWithFormat: @" evaluation result: %d", rc]; return rc; } @@ -150,9 +150,9 @@ typedef BOOL (*EOComparator) (id, SEL, id); rc = ((isZero && (intValue & mask) == 0) || (!isZero && (intValue & mask) != 0)); - [self logWithFormat: @"evaluation of bitmask qualifier:" - @" (%.8x & %.8x) %s 0: %d", - intValue, mask, (isZero ? "==" : "!="), rc]; + //[self logWithFormat: @"evaluation of bitmask qualifier:" + // @" (%.8x & %.8x) %s 0: %d", + // intValue, mask, (isZero ? "==" : "!="), rc]; return rc; } diff --git a/OpenChange/MAPIStoreCalendarEmbeddedMessage.m b/OpenChange/MAPIStoreCalendarEmbeddedMessage.m index 35246c113..ca3ba12d6 100644 --- a/OpenChange/MAPIStoreCalendarEmbeddedMessage.m +++ b/OpenChange/MAPIStoreCalendarEmbeddedMessage.m @@ -161,7 +161,7 @@ return [self getNo: data inMemCtx: memCtx]; } -- (void) save +- (void) save: (TALLOC_CTX *) memCtx { // (gdb) po embeddedMessage->properties // 2442592320 = "2012-07-11 22:30:00 +0000"; @@ -208,7 +208,8 @@ [[container event] updateFromMAPIProperties: properties inUserContext: [self userContext] - withActiveUser: activeUser]; + withActiveUser: activeUser + inMemCtx: memCtx]; } @end diff --git a/OpenChange/MAPIStoreCalendarFolder.m b/OpenChange/MAPIStoreCalendarFolder.m index 5cab28712..8c0830683 100644 --- a/OpenChange/MAPIStoreCalendarFolder.m +++ b/OpenChange/MAPIStoreCalendarFolder.m @@ -63,7 +63,7 @@ SOGoAppointmentObject *newEntry; NSString *name; - [self logWithFormat: @"METHOD '%s' (%d)", __FUNCTION__, __LINE__]; + //[self logWithFormat: @"METHOD '%s' (%d)", __FUNCTION__, __LINE__]; name = [NSString stringWithFormat: @"%@.ics", [SOGoObject globallyUniqueObjectId]]; diff --git a/OpenChange/MAPIStoreCalendarMessage.m b/OpenChange/MAPIStoreCalendarMessage.m index bd6403f4c..de89eb487 100644 --- a/OpenChange/MAPIStoreCalendarMessage.m +++ b/OpenChange/MAPIStoreCalendarMessage.m @@ -200,6 +200,7 @@ static Class NSArrayK; - (void) dealloc { + //NSLog(@"MAPIStoreCalendarMessage: -dealloc (%p)", self); [calendar release]; [super dealloc]; } @@ -417,7 +418,7 @@ static Class NSArrayK; return [self getYes: data inMemCtx: memCtx]; } -- (NSString *) _uidFromGlobalObjectId +- (NSString *) _uidFromGlobalObjectId: (TALLOC_CTX *) memCtx { NSData *objectId; NSString *uid = nil; @@ -431,7 +432,7 @@ static Class NSArrayK; if (objectId) { length = [objectId length]; - bytesDup = talloc_array (NULL, char, length + 1); + bytesDup = talloc_array (memCtx, char, length + 1); memcpy (bytesDup, [objectId bytes], length); bytesDup[length] = 0; uidStart = bytesDup + length - 1; @@ -596,7 +597,7 @@ static Class NSArrayK; } } -- (void) save +- (void) save: (TALLOC_CTX *) memCtx { // iCalCalendar *vCalendar; // NSCalendarDate *now; @@ -608,7 +609,7 @@ static Class NSArrayK; if (isNew) { - uid = [self _uidFromGlobalObjectId]; + uid = [self _uidFromGlobalObjectId: memCtx]; if (uid) { /* Hack required because of what's explained in oxocal 3.1.4.7.1: @@ -650,12 +651,12 @@ static Class NSArrayK; activeUser = [[self context] activeUser]; [masterEvent updateFromMAPIProperties: properties inUserContext: [self userContext] - withActiveUser: activeUser]; + withActiveUser: activeUser + inMemCtx: memCtx]; [self _updateAttachedEvents]; [[self userContext] activateWithUser: activeUser]; [sogoObject updateContentWithCalendar: calendar fromRequest: nil]; - [self updateVersions]; } diff --git a/OpenChange/MAPIStoreContext.m b/OpenChange/MAPIStoreContext.m index 658bea97d..4f1e67819 100644 --- a/OpenChange/MAPIStoreContext.m +++ b/OpenChange/MAPIStoreContext.m @@ -224,7 +224,7 @@ static inline NSURL *CompleteURLFromMapistoreURI (const char *uri) NSURL *baseURL; int rc = MAPISTORE_ERR_NOT_FOUND; - NSLog (@"METHOD '%s' (%d) -- uri: '%s'", __FUNCTION__, __LINE__, newUri); + //NSLog (@"METHOD '%s' (%d) -- uri: '%s'", __FUNCTION__, __LINE__, newUri); context = nil; @@ -532,8 +532,8 @@ static inline NSURL *CompleteURLFromMapistoreURI (const char *uri) mappingId = [mapping idFromURL: childURL]; if (mappingId == NSNotFound) { - [self warnWithFormat: @"no id exist yet for '%@', requesting one...", - childURL]; + //[self warnWithFormat: @"no id exist yet for '%@', requesting one...", + // childURL]; openchangedb_get_new_folderID (connInfo->oc_ctx, &mappingId); [mapping registerURL: childURL withID: mappingId]; contextId = 0; diff --git a/OpenChange/MAPIStoreDBFolder.m b/OpenChange/MAPIStoreDBFolder.m index d96b81faf..74bf12e2f 100644 --- a/OpenChange/MAPIStoreDBFolder.m +++ b/OpenChange/MAPIStoreDBFolder.m @@ -236,7 +236,7 @@ static NSString *MAPIStoreRightFolderContact = @"RightsFolderContact"; messageKeys = [self messageKeys]; date = [NSCalendarDate date]; - [self logWithFormat: @"current date: %@", date]; + //[self logWithFormat: @"current date: %@", date]; max = [messageKeys count]; for (count = 0; count < max; count++) @@ -245,7 +245,7 @@ static NSString *MAPIStoreRightFolderContact = @"RightsFolderContact"; fileDate = [msg lastModificationTime]; if ([date laterDate: fileDate] == fileDate) { - [self logWithFormat: @"current date: %@", date]; + //[self logWithFormat: @"current date: %@", date]; date = fileDate; } diff --git a/OpenChange/MAPIStoreDBMessage.m b/OpenChange/MAPIStoreDBMessage.m index f794a381b..997f46570 100644 --- a/OpenChange/MAPIStoreDBMessage.m +++ b/OpenChange/MAPIStoreDBMessage.m @@ -135,7 +135,7 @@ [super addProperties: newNewProperties]; } -- (void) save +- (void) save: (TALLOC_CTX *) memCtx { uint64_t newVersion; diff --git a/OpenChange/MAPIStoreDBMessageTable.m b/OpenChange/MAPIStoreDBMessageTable.m index e457b5ac8..de22e238e 100644 --- a/OpenChange/MAPIStoreDBMessageTable.m +++ b/OpenChange/MAPIStoreDBMessageTable.m @@ -65,7 +65,7 @@ static Class MAPIStoreDBMessageK = Nil; cVersion = exchange_globcnt (([value unsignedLongLongValue] >> 16) & 0x0000ffffffffffffLL); version = [NSNumber numberWithUnsignedLongLong: cVersion]; - [self logWithFormat: @"change number from oxcfxics: %.16lx", [value unsignedLongLongValue]]; + //[self logWithFormat: @"change number from oxcfxics: %.16lx", [value unsignedLongLongValue]]; [self logWithFormat: @" version: %.16lx", cVersion]; *qualifier = [[EOKeyValueQualifier alloc] initWithKey: @"version" operatorSelector: EOQualifierOperatorGreaterThanOrEqualTo diff --git a/OpenChange/MAPIStoreEmbeddedMessage.m b/OpenChange/MAPIStoreEmbeddedMessage.m index 562d581de..f609726db 100644 --- a/OpenChange/MAPIStoreEmbeddedMessage.m +++ b/OpenChange/MAPIStoreEmbeddedMessage.m @@ -146,7 +146,7 @@ static Class MAPIStoreAttachmentK; return ULLONG_MAX; } -- (void) save +- (void) save: (TALLOC_CTX *) memCtx { [self subclassResponsibility: _cmd]; } diff --git a/OpenChange/MAPIStoreFAIMessage.m b/OpenChange/MAPIStoreFAIMessage.m index 99ab23c85..bfa093ff7 100644 --- a/OpenChange/MAPIStoreFAIMessage.m +++ b/OpenChange/MAPIStoreFAIMessage.m @@ -51,7 +51,7 @@ return [self getYes: data inMemCtx: memCtx]; } -- (enum mapistore_error) saveMessage +- (enum mapistore_error) saveMessage: (TALLOC_CTX *) memCtx; { enum mapistore_error rc; MAPIStoreContext *context; @@ -60,7 +60,7 @@ context = [self context]; ownerUser = [[self userContext] sogoUser]; if ([[context activeUser] isEqual: ownerUser]) - rc = [super saveMessage]; + rc = [super saveMessage: memCtx]; else rc = MAPISTORE_ERR_DENIED; diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index ebb011013..2e54838b3 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -180,7 +180,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe - (void) dealloc { - [self logWithFormat: @"METHOD '%s' (%d)", __FUNCTION__, __LINE__]; + //[self logWithFormat: @"METHOD '%s' (%d)", __FUNCTION__, __LINE__]; // [messageKeys release]; // [faiMessageKeys release]; @@ -366,7 +366,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe MAPIStoreMapping *mapping; NSString *childURL; - [self logWithFormat: @"METHOD '%s' (%d)", __FUNCTION__, __LINE__]; + //[self logWithFormat: @"METHOD '%s' (%d)", __FUNCTION__, __LINE__]; mapping = [self mapping]; childURL = [mapping urlFromID: fid]; @@ -393,7 +393,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe MAPIStoreFolder *childFolder; SOGoUser *ownerUser; - [self logWithFormat: @"METHOD '%s' (%d)", __FUNCTION__, __LINE__]; + //[self logWithFormat: @"METHOD '%s' (%d)", __FUNCTION__, __LINE__]; ownerUser = [[self userContext] sogoUser]; if ([[context activeUser] isEqual: ownerUser] @@ -450,8 +450,8 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe NSArray *keys; int rc = MAPISTORE_SUCCESS; - [self logWithFormat: @"METHOD '%s' (%d) -- tableType: %d", - __FUNCTION__, __LINE__, tableType]; + //[self logWithFormat: @"METHOD '%s' (%d) -- tableType: %d", + //__FUNCTION__, __LINE__, tableType]; if (tableType == MAPISTORE_MESSAGE_TABLE) keys = [self messageKeys]; @@ -513,8 +513,8 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe MAPIStoreMapping *mapping; SOGoUser *ownerUser; - [self logWithFormat: @"METHOD '%s' -- mid: 0x%.16llx associated: %d", - __FUNCTION__, mid, isAssociated]; + //[self logWithFormat: @"METHOD '%s' -- mid: 0x%.16llx associated: %d", + // __FUNCTION__, mid, isAssociated]; context = [self context]; ownerUser = [[self userContext] sogoUser]; @@ -699,7 +699,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe if (rc != MAPISTORE_SUCCESS) goto end; } - [destMsg save]; + [destMsg save: memCtx]; if (!wantCopy) rc = [sourceFolder deleteMessageWithMID: srcMid andFlags: 0]; @@ -844,7 +844,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe [mapping registerURL: [targetMessage url] withID: fmid]; } - [targetMessage save]; + [targetMessage save: memCtx]; } [pool release]; @@ -865,7 +865,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe [mapping registerURL: [targetMessage url] withID: fmid]; } - [targetMessage save]; + [targetMessage save: memCtx]; } [pool release]; diff --git a/OpenChange/MAPIStoreGCSMessageTable.m b/OpenChange/MAPIStoreGCSMessageTable.m index 74d9d3151..e6da41039 100644 --- a/OpenChange/MAPIStoreGCSMessageTable.m +++ b/OpenChange/MAPIStoreGCSMessageTable.m @@ -92,8 +92,8 @@ value = NSObjectFromMAPISPropValue (&res->lpProp); lastModified = [(MAPIStoreGCSFolder *) container lastModifiedFromMessageChangeNumber: value]; - [self logWithFormat: @"change number from oxcfxics: %.16lx", [value unsignedLongLongValue]]; - [self logWithFormat: @" c_lastmodified: %@", lastModified]; + //[self logWithFormat: @"change number from oxcfxics: %.16lx", [value unsignedLongLongValue]]; + //[self logWithFormat: @" c_lastmodified: %@", lastModified]; if (lastModified) { *qualifier = [[EOKeyValueQualifier alloc] initWithKey: @"c_lastmodified" diff --git a/OpenChange/MAPIStoreMailFolder.m b/OpenChange/MAPIStoreMailFolder.m index e0be222b9..f06508962 100644 --- a/OpenChange/MAPIStoreMailFolder.m +++ b/OpenChange/MAPIStoreMailFolder.m @@ -390,7 +390,7 @@ static Class SOGoMailFolderK, MAPIStoreMailFolderK, MAPIStoreOutboxFolderK; else value = [NSDate date]; - [self logWithFormat: @"lastMessageModificationTime: %@", value]; + //[self logWithFormat: @"lastMessageModificationTime: %@", value]; return value; } @@ -613,8 +613,8 @@ _compareFetchResultsByMODSEQ (id entry1, id entry2, void *data) [messageEntry setObject: modseq forKey: @"modseq"]; [messageEntry setObject: changeNumber forKey: @"version"]; - [self logWithFormat: @"added message entry for uid %@, modseq %@," - @" version %@", uid, modseq, changeNumber]; + //[self logWithFormat: @"added message entry for uid %@, modseq %@," + // @" version %@", uid, modseq, changeNumber]; changeKey = [self getReplicaKeyFromGlobCnt: newChangeNum >> 16]; [self _setChangeKey: changeKey forMessageEntry: messageEntry]; diff --git a/OpenChange/MAPIStoreMailMessage.m b/OpenChange/MAPIStoreMailMessage.m index d49cc0572..476ddbac6 100644 --- a/OpenChange/MAPIStoreMailMessage.m +++ b/OpenChange/MAPIStoreMailMessage.m @@ -1576,7 +1576,7 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) bodySetup = YES; } -- (void) save +- (void) save: (TALLOC_CTX *) memCtx { NSNumber *value; diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index eb40f6739..c13605829 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -120,7 +120,7 @@ static Class MAPIStoreMailMessageK, NSDataK, NSStringK; case PidLidAppointmentStartWhole: case PidLidAppointmentEndWhole: case PidLidRecurring: - [self logWithFormat: @"apt restriction on mail folder?"]; + //[self logWithFormat: @"apt restriction on mail folder?"]; rc = MAPIRestrictionStateAlwaysFalse; break; @@ -158,8 +158,8 @@ static Class MAPIStoreMailMessageK, NSDataK, NSStringK; value = [NSString stringWithFormat: @"0x%.16llx", [value unsignedLongLongValue]]; modseq = [(MAPIStoreMailFolder *) container modseqFromMessageChangeNumber: value]; - [self logWithFormat: @"change number from oxcfxics: %.16lx", [value unsignedLongLongValue]]; - [self logWithFormat: @" modseq: %.16lx", [modseq unsignedLongLongValue]]; + //[self logWithFormat: @"change number from oxcfxics: %.16lx", [value unsignedLongLongValue]]; + //[self logWithFormat: @" modseq: %.16lx", [modseq unsignedLongLongValue]]; if (modseq) modseq = [NSNumber numberWithUnsignedLongLong: [modseq unsignedLongLongValue] + 1]; @@ -317,7 +317,7 @@ static Class MAPIStoreMailMessageK, NSDataK, NSStringK; ASSIGN (sortOrderings, newSortOrderings); else ASSIGN (sortOrderings, [NSArray arrayWithObject: @"ARRIVAL"]); - [self logWithFormat: @"new sort orderings: '%@'", sortOrderings]; + //[self logWithFormat: @"new sort orderings: '%@'", sortOrderings]; } else ASSIGN (sortOrderings, [NSArray arrayWithObject: @"ARRIVAL"]); diff --git a/OpenChange/MAPIStoreMailVolatileMessage.m b/OpenChange/MAPIStoreMailVolatileMessage.m index 9193794dd..c8044d65f 100644 --- a/OpenChange/MAPIStoreMailVolatileMessage.m +++ b/OpenChange/MAPIStoreMailVolatileMessage.m @@ -904,7 +904,7 @@ MakeMessageBody (NSDictionary *mailProperties, NSDictionary *attachmentParts, NS return MAPISTORE_SUCCESS; } -- (void) save +- (void) save: (TALLOC_CTX *) memCtx { NSString *folderName, *flag, *newIdString, *messageKey; NSData *changeKey, *messageData; diff --git a/OpenChange/MAPIStoreMessage.h b/OpenChange/MAPIStoreMessage.h index 06ca45436..6fa42218c 100644 --- a/OpenChange/MAPIStoreMessage.h +++ b/OpenChange/MAPIStoreMessage.h @@ -64,7 +64,7 @@ - (int) getAttachmentTable: (MAPIStoreAttachmentTable **) tablePtr andRowCount: (uint32_t *) countPtr; - (int) setReadFlag: (uint8_t) flag; -- (enum mapistore_error) saveMessage; +- (enum mapistore_error) saveMessage: (TALLOC_CTX *) memCtx; - (NSArray *) activeContainerMessageTables; @@ -74,7 +74,7 @@ - (void) copyToMessage: (MAPIStoreMessage *) newMessage inMemCtx: (TALLOC_CTX *) memCtx; /* subclasses */ -- (void) save; +- (void) save: (TALLOC_CTX *) memCtx; /* attachments (subclasses) */ - (MAPIStoreAttachment *) createAttachment; diff --git a/OpenChange/MAPIStoreMessage.m b/OpenChange/MAPIStoreMessage.m index 0751c993d..0706432ab 100644 --- a/OpenChange/MAPIStoreMessage.m +++ b/OpenChange/MAPIStoreMessage.m @@ -139,7 +139,7 @@ rtf2html (NSData *compressedRTF) - (id) init { - [self logWithFormat: @"METHOD '%s' (%d) (%d)", __FUNCTION__, __LINE__, self]; + //[self logWithFormat: @"METHOD '%s' (%d) (%d)", __FUNCTION__, __LINE__, self]; if ((self = [super init])) { @@ -153,7 +153,7 @@ rtf2html (NSData *compressedRTF) - (void) dealloc { - [self logWithFormat: @"METHOD '%s' (%d) (%d)", __FUNCTION__, __LINE__, self]; + //[self logWithFormat: @"METHOD '%s' (%d) (%d)", __FUNCTION__, __LINE__, self]; [activeUserRoles release]; [attachmentKeys release]; [attachmentParts release]; @@ -260,7 +260,7 @@ rtf2html (NSData *compressedRTF) struct mapistore_message_recipient *recipient; NSUInteger count; - [self logWithFormat: @"METHOD '%s'", __FUNCTION__]; + //[self logWithFormat: @"METHOD '%s'", __FUNCTION__]; recipients = [NSMutableDictionary new]; recipientProperties = [NSDictionary dictionaryWithObject: recipients @@ -450,7 +450,7 @@ rtf2html (NSData *compressedRTF) NSString *key; MAPIStoreAttachment *attachment, *newAttachment; - [self logWithFormat: @"METHOD '%s' (%d) (%d)", __FUNCTION__, __LINE__, self]; + //[self logWithFormat: @"METHOD '%s' (%d) (%d)", __FUNCTION__, __LINE__, self]; //memCtx = talloc_zero (NULL, TALLOC_CTX); @@ -477,7 +477,7 @@ rtf2html (NSData *compressedRTF) //talloc_free (memCtx); } -- (enum mapistore_error) saveMessage +- (enum mapistore_error) saveMessage: (TALLOC_CTX *) memCtx { enum mapistore_error rc; NSArray *containerTables; @@ -490,7 +490,7 @@ rtf2html (NSData *compressedRTF) BOOL userIsOwner; MAPIStoreMessage *mainMessage; - [self logWithFormat: @"METHOD '%s' (%d)", __FUNCTION__, __LINE__]; + //[self logWithFormat: @"METHOD '%s' (%d)", __FUNCTION__, __LINE__]; context = [self context]; ownerUser = [[self userContext] sogoUser]; @@ -518,7 +518,7 @@ rtf2html (NSData *compressedRTF) /* folder modified */ notif_parameters - = talloc_zero(NULL, struct mapistore_object_notification_parameters); + = talloc_zero(memCtx, struct mapistore_object_notification_parameters); notif_parameters->object_id = folderId; if (isNew) { @@ -542,7 +542,7 @@ rtf2html (NSData *compressedRTF) if (isNew) { notif_parameters - = talloc_zero(NULL, + = talloc_zero(memCtx, struct mapistore_object_notification_parameters); notif_parameters->object_id = [self objectId]; notif_parameters->folder_id = folderId; @@ -562,7 +562,7 @@ rtf2html (NSData *compressedRTF) [[containerTables objectAtIndex: count] restrictedChildKeys]; } - [self save]; + [self save: memCtx]; /* We make sure that any change-related properties are removes from the properties dictionary, to make sure that related methods will be invoked the next time they are requested. */ @@ -937,7 +937,7 @@ rtf2html (NSData *compressedRTF) return MAPISTORE_ERROR; } -- (void) save +- (void) save: (TALLOC_CTX *) memCtx { [self subclassResponsibility: _cmd]; } diff --git a/OpenChange/MAPIStoreSOGo.m b/OpenChange/MAPIStoreSOGo.m index 399a215c7..720635975 100644 --- a/OpenChange/MAPIStoreSOGo.m +++ b/OpenChange/MAPIStoreSOGo.m @@ -68,7 +68,7 @@ sogo_backend_atexit (void) GSRegisterCurrentThread (); pool = [NSAutoreleasePool new]; - NSLog (@"allocated classes:\n%s", GSDebugAllocationList (YES)); + //NSLog (@"allocated classes:\n%s", GSDebugAllocationList (YES)); [pool release]; GSUnregisterCurrentThread (); } @@ -1024,7 +1024,7 @@ sogo_message_set_read_flag (void *message_object, uint8_t flag) } static enum mapistore_error -sogo_message_save (void *message_object) +sogo_message_save (void *message_object, TALLOC_CTX *mem_ctx) { struct MAPIStoreTallocWrapper *wrapper; NSAutoreleasePool *pool; @@ -1039,7 +1039,7 @@ sogo_message_save (void *message_object) message = wrapper->instance; GSRegisterCurrentThread (); pool = [NSAutoreleasePool new]; - rc = [message saveMessage]; + rc = [message saveMessage: mem_ctx]; // [context tearDownRequest]; [pool release]; GSUnregisterCurrentThread (); diff --git a/OpenChange/MAPIStoreTable.m b/OpenChange/MAPIStoreTable.m index cf34f1fe9..842fa3afc 100644 --- a/OpenChange/MAPIStoreTable.m +++ b/OpenChange/MAPIStoreTable.m @@ -375,12 +375,12 @@ static Class NSDataK, NSStringK; - (void) setRestrictions: (const struct mapi_SRestriction *) res { - EOQualifier *oldRestriction; + //EOQualifier *oldRestriction; // [self logWithFormat: @"set restriction to (table type: %d): %@", // type, MAPIStringForRestriction (res)]; - oldRestriction = restriction; + //oldRestriction = restriction; [restriction autorelease]; if (res) restrictionState = [self evaluateRestriction: res @@ -396,11 +396,11 @@ static Class NSDataK, NSStringK; // FIXME: we should not flush the caches if the restrictions matches [self cleanupCaches]; - if (restriction) - [self logWithFormat: @"restriction set to EOQualifier: %@", - restriction]; - else if (oldRestriction) - [self logWithFormat: @"restriction unset (was %@)", oldRestriction]; + //if (restriction) + // [self logWithFormat: @"restriction set to EOQualifier: %@", +// restriction]; + // else if (oldRestriction) + // [self logWithFormat: @"restriction unset (was %@)", oldRestriction]; } - (MAPIRestrictionState) evaluateNotRestriction: (struct mapi_SNotRestriction *) res diff --git a/OpenChange/MAPIStoreTypes.m b/OpenChange/MAPIStoreTypes.m index 8903eba73..f8e32c824 100644 --- a/OpenChange/MAPIStoreTypes.m +++ b/OpenChange/MAPIStoreTypes.m @@ -342,7 +342,8 @@ MAPIStoreDumpMessageProperties (NSDictionary *properties) { NSNumber *key; NSArray *allKeys; - NSUInteger keyAsInt, count, max; + NSUInteger count, max; + NSUInteger keyAsInt; id value; allKeys = [properties allKeys]; @@ -351,7 +352,7 @@ MAPIStoreDumpMessageProperties (NSDictionary *properties) NSLog (@"message properties (%d):", max); value = [properties objectForKey: @"recipients"]; - if (value) + if (value) NSLog (@" recipients: %@", value); for (count = 0; count < max; count++) @@ -363,7 +364,7 @@ MAPIStoreDumpMessageProperties (NSDictionary *properties) value = [properties objectForKey: key]; NSLog (@" 0x%.4x: %@ (%@)", keyAsInt, value, - NSStringFromClass ([value class])); + NSStringFromClass ([value class])); } } } diff --git a/OpenChange/NSObject+MAPIStore.m b/OpenChange/NSObject+MAPIStore.m index 958fb9208..e02f29f07 100644 --- a/OpenChange/NSObject+MAPIStore.m +++ b/OpenChange/NSObject+MAPIStore.m @@ -50,8 +50,7 @@ MAPIStoreTallocWrapperDestroy (void *data) GSRegisterCurrentThread (); pool = [NSAutoreleasePool new]; wrapper = data; - //NSLog (@"destroying wrapped object (wrapper: %p; object: %p)...\n", wrapper, wrapper->MAPIStoreSOGoObject); - NSLog (@"destroying wrapped object (wrapper: %p)", wrapper); + //NSLog (@"destroying wrapped object (wrapper: %p; object: %p (%@))...\n", wrapper, wrapper->instance, NSStringFromClass([wrapper->instance class])); [wrapper->instance release]; [pool release]; GSUnregisterCurrentThread (); @@ -67,8 +66,7 @@ MAPIStoreTallocWrapperDestroy (void *data) talloc_set_destructor ((void *) wrapper, MAPIStoreTallocWrapperDestroy); wrapper->instance = self; [self retain]; - NSLog (@"returning wrapper: %p; object: %p", wrapper, self); - + //NSLog (@"returning wrapper: %p; object: %p (%@)", wrapper, self, NSStringFromClass([self class])); return wrapper; } diff --git a/OpenChange/SOGoMAPIDBObject.m b/OpenChange/SOGoMAPIDBObject.m index 94b6f975e..6407fbda3 100644 --- a/OpenChange/SOGoMAPIDBObject.m +++ b/OpenChange/SOGoMAPIDBObject.m @@ -251,13 +251,13 @@ static EOAttribute *textColumn = nil; className = @"MAPIStoreNotesMessage"; else className = @"MAPIStoreDBMessage"; - [self logWithFormat: @"PidTagMessageClass = '%@', returning '%@'", - mapiMsgClass, className]; + //[self logWithFormat: @"PidTagMessageClass = '%@', returning '%@'", + // mapiMsgClass, className]; } else { - [self warnWithFormat: @"PidTagMessageClass is not set, falling back" - @" to 'MAPIStoreDBMessage'"]; + //[self warnWithFormat: @"PidTagMessageClass is not set, falling back" + // @" to 'MAPIStoreDBMessage'"]; className = @"MAPIStoreDBMessage"; } break; diff --git a/OpenChange/iCalEvent+MAPIStore.h b/OpenChange/iCalEvent+MAPIStore.h index 171813e2b..198526687 100644 --- a/OpenChange/iCalEvent+MAPIStore.h +++ b/OpenChange/iCalEvent+MAPIStore.h @@ -23,6 +23,8 @@ #ifndef ICALEVENT_MAPISTORE_H #define ICALEVENT_MAPISTORE_H +#include + #import @class MAPIStoreUserContext; @@ -34,8 +36,8 @@ - (void) updateFromMAPIProperties: (NSDictionary *) properties inUserContext: (MAPIStoreUserContext *) userContext - withActiveUser: (SOGoUser *) activeUser; - + withActiveUser: (SOGoUser *) activeUser + inMemCtx: (TALLOC_CTX *) memCtx; @end #endif /* ICALEVENT_MAPISTORE_H */ diff --git a/OpenChange/iCalEvent+MAPIStore.m b/OpenChange/iCalEvent+MAPIStore.m index 84ddddd7d..4d64a7ac7 100644 --- a/OpenChange/iCalEvent+MAPIStore.m +++ b/OpenChange/iCalEvent+MAPIStore.m @@ -20,7 +20,6 @@ * Boston, MA 02111-1307, USA. */ -#include #include #import @@ -75,16 +74,17 @@ @implementation iCalEvent (MAPIStoreProperties) - (void) _setupEventRecurrence: (NSData *) mapiRecurrenceData + inMemCtx: (TALLOC_CTX *) memCtx { struct Binary_r *blob; struct AppointmentRecurrencePattern *pattern; - blob = [mapiRecurrenceData asBinaryInMemCtx: NULL]; - pattern = get_AppointmentRecurrencePattern (blob, blob); + blob = [mapiRecurrenceData asBinaryInMemCtx: memCtx]; + pattern = get_AppointmentRecurrencePattern (memCtx, blob); [(iCalCalendar *) parent setupRecurrenceWithMasterEntity: self fromRecurrencePattern: &pattern->RecurrencePattern]; - talloc_free (blob); + //talloc_free (blob); } - (void) _setupEventAlarmFromProperties: (NSDictionary *) properties @@ -134,6 +134,7 @@ - (void) updateFromMAPIProperties: (NSDictionary *) properties inUserContext: (MAPIStoreUserContext *) userContext withActiveUser: (SOGoUser *) activeUser + inMemCtx: (TALLOC_CTX *) memCtx { BOOL isAllDay; iCalDateTime *start, *end; @@ -328,7 +329,7 @@ value = [properties objectForKey: MAPIPropertyKey (PidLidAppointmentRecur)]; if (value) - [self _setupEventRecurrence: value]; + [self _setupEventRecurrence: value inMemCtx: memCtx]; /* alarm */ [self _setupEventAlarmFromProperties: properties]; From 5f179ed6b0726504bbe7f300df3a8cbaa5d3c9a6 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 15 Mar 2013 11:06:26 -0400 Subject: [PATCH 41/77] Activate the menu option "Mark Folder Read" Fixes #1473 --- NEWS | 7 +-- .../Localizable.strings | 2 +- UI/MailerUI/Catalan.lproj/Localizable.strings | 2 +- UI/MailerUI/Czech.lproj/Localizable.strings | 2 +- UI/MailerUI/Danish.lproj/Localizable.strings | 2 +- UI/MailerUI/Dutch.lproj/Localizable.strings | 2 +- UI/MailerUI/English.lproj/Localizable.strings | 2 +- UI/MailerUI/Finnish.lproj/Localizable.strings | 2 +- UI/MailerUI/French.lproj/Localizable.strings | 2 +- UI/MailerUI/German.lproj/Localizable.strings | 2 +- .../Hungarian.lproj/Localizable.strings | 2 +- .../Icelandic.lproj/Localizable.strings | 2 +- UI/MailerUI/Italian.lproj/Localizable.strings | 2 +- .../NorwegianBokmal.lproj/Localizable.strings | 2 +- .../Localizable.strings | 2 +- UI/MailerUI/Polish.lproj/Localizable.strings | 2 +- UI/MailerUI/Russian.lproj/Localizable.strings | 2 +- UI/MailerUI/Slovak.lproj/Localizable.strings | 2 +- .../Localizable.strings | 2 +- .../SpanishSpain.lproj/Localizable.strings | 2 +- UI/MailerUI/Swedish.lproj/Localizable.strings | 2 +- UI/MailerUI/UIxMailFolderActions.m | 11 ++++ .../Ukrainian.lproj/Localizable.strings | 2 +- UI/MailerUI/Welsh.lproj/Localizable.strings | 2 +- UI/MailerUI/product.plist | 5 ++ UI/Templates/MailerUI/UIxMailMainFrame.wox | 6 +-- UI/WebServerResources/MailerUI.js | 53 ++++++++++++------- 27 files changed, 80 insertions(+), 46 deletions(-) diff --git a/NEWS b/NEWS index 50b8a77fc..9fb3b9862 100644 --- a/NEWS +++ b/NEWS @@ -4,14 +4,15 @@ New features - new system default SOGoEncryptionKey to be used to encrypt the passwords of remote Web calendars when SOGoTrustProxyAuthentication is enabled + - activated the menu option "Mark Folder Read" in the Webmail (#1473) Enhancements - - Added logging of the X-Forwarded-For HTTP header (#2229) + - added logging of the X-Forwarded-For HTTP header (#2229) Bug fixes - - Don't use the cache for password lookups from login page (#2169) + - don't use the cache for password lookups from login page (#2169) - fixed issue with exceptions in repeating events - - Avoid data truncation issue in OpenChange with mysql backend + - avoid data truncation issue in OpenChange with mysql backend run sql-update-2.0.4b_to_2.0.5-mysql.sh to update existing tables 2.0.4b (2013-02-04) diff --git a/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings b/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings index 7ba9903a5..825436cf4 100644 --- a/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Abrir em uma Nova Janela"; "Copy Folder Location" = "Copiar o Local da Pasta"; "Subscribe..." = "Inscrever-se..."; -"Mark Folder Read..." = "Marcar Pasta como Lido..."; +"Mark Folder Read" = "Marcar Pasta como Lido..."; "New Folder..." = "Nova Pasta..."; "Compact This Folder" = "Compactar Esta Pasta"; "Search Messages..." = "Procurar Mensagens..."; diff --git a/UI/MailerUI/Catalan.lproj/Localizable.strings b/UI/MailerUI/Catalan.lproj/Localizable.strings index 1543d6d5b..401299ece 100644 --- a/UI/MailerUI/Catalan.lproj/Localizable.strings +++ b/UI/MailerUI/Catalan.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Obrir missatge en una finestra nova"; "Copy Folder Location" = "Copiar adreça de la carpeta"; "Subscribe..." = "Subscriure..."; -"Mark Folder Read..." = "Marcar carpeta com a llegida..."; +"Mark Folder Read" = "Marcar carpeta com a llegida..."; "New Folder..." = "Crear carpeta..."; "Compact This Folder" = "Compactar aquesta carpeta"; "Search Messages..." = "Cercar missatges..."; diff --git a/UI/MailerUI/Czech.lproj/Localizable.strings b/UI/MailerUI/Czech.lproj/Localizable.strings index 79886fb13..7e55a6dd9 100644 --- a/UI/MailerUI/Czech.lproj/Localizable.strings +++ b/UI/MailerUI/Czech.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Otevřít v novém mailovém okně"; "Copy Folder Location" = "Kopírovat adresu složky"; "Subscribe..." = "Odebírat..."; -"Mark Folder Read..." = "Označit složku jako přečtenou..."; +"Mark Folder Read" = "Označit složku jako přečtenou..."; "New Folder..." = "Nová složka..."; "Compact This Folder" = "Provést údržbu složky"; "Search Messages..." = "Vyhledat zprávy..."; diff --git a/UI/MailerUI/Danish.lproj/Localizable.strings b/UI/MailerUI/Danish.lproj/Localizable.strings index e9dd97f78..8e5592395 100644 --- a/UI/MailerUI/Danish.lproj/Localizable.strings +++ b/UI/MailerUI/Danish.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Åben i nyt vindue"; "Copy Folder Location" = "Kopier mappens lokation"; "Subscribe..." = "Abonnér ..."; -"Mark Folder Read..." = "Mark mappe som Læst ..."; +"Mark Folder Read" = "Mark mappe som Læst ..."; "New Folder..." = "Ny mappe ..."; "Compact This Folder" = "Komprimér denne mappe"; "Search Messages..." = "Søg beskeder ..."; diff --git a/UI/MailerUI/Dutch.lproj/Localizable.strings b/UI/MailerUI/Dutch.lproj/Localizable.strings index 6ec3c1358..9b18ae348 100644 --- a/UI/MailerUI/Dutch.lproj/Localizable.strings +++ b/UI/MailerUI/Dutch.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "In nieuw e-mailvenster openen"; "Copy Folder Location" = "Kopieer maplocatie"; "Subscribe..." = "Abonneren..."; -"Mark Folder Read..." = "Map als gelezen markeren"; +"Mark Folder Read" = "Map als gelezen markeren"; "New Folder..." = "Nieuwe map..."; "Compact This Folder" = "Comprimeer deze map"; "Search Messages..." = "Zoeken..."; diff --git a/UI/MailerUI/English.lproj/Localizable.strings b/UI/MailerUI/English.lproj/Localizable.strings index 418bd6a49..92d7f6f5f 100644 --- a/UI/MailerUI/English.lproj/Localizable.strings +++ b/UI/MailerUI/English.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Open in New Mail Window"; "Copy Folder Location" = "Copy Folder Location"; "Subscribe..." = "Subscribe..."; -"Mark Folder Read..." = "Mark Folder Read..."; +"Mark Folder Read" = "Mark Folder Read"; "New Folder..." = "New Folder..."; "Compact This Folder" = "Compact This Folder"; "Search Messages..." = "Search Messages..."; diff --git a/UI/MailerUI/Finnish.lproj/Localizable.strings b/UI/MailerUI/Finnish.lproj/Localizable.strings index dd10107c8..e5de5d9d9 100644 --- a/UI/MailerUI/Finnish.lproj/Localizable.strings +++ b/UI/MailerUI/Finnish.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Avaa uudessa viesti-ikkunassa"; "Copy Folder Location" = "Kopioi kansion sijainti"; "Subscribe..." = "Liity..."; -"Mark Folder Read..." = "Merkitse kansio luetuksi..."; +"Mark Folder Read" = "Merkitse kansio luetuksi..."; "New Folder..." = "Uusi kansio..."; "Compact This Folder" = "Pakkaa tämä kansio"; "Search Messages..." = "Etsi viestejä..."; diff --git a/UI/MailerUI/French.lproj/Localizable.strings b/UI/MailerUI/French.lproj/Localizable.strings index 98a47adbf..abe35598f 100644 --- a/UI/MailerUI/French.lproj/Localizable.strings +++ b/UI/MailerUI/French.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Ouvrir dans une nouvelle fenétre"; "Copy Folder Location" = "Copier l'adresse du dossier"; "Subscribe..." = "S'abonner..."; -"Mark Folder Read..." = "Marquer le dossier comme lu"; +"Mark Folder Read" = "Marquer le dossier comme lu"; "New Folder..." = "Nouveau dossier..."; "Compact This Folder" = "Compacter ce dossier"; "Search Messages..." = "Rechercher dans les messages..."; diff --git a/UI/MailerUI/German.lproj/Localizable.strings b/UI/MailerUI/German.lproj/Localizable.strings index a5bed3ef0..c5bbc1a4a 100644 --- a/UI/MailerUI/German.lproj/Localizable.strings +++ b/UI/MailerUI/German.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "In neuem Fenster öffnen"; "Copy Folder Location" = "Ordneradresse kopieren"; "Subscribe..." = "Abonnieren..."; -"Mark Folder Read..." = "Ordner als gelesen markieren"; +"Mark Folder Read" = "Ordner als gelesen markieren"; "New Folder..." = "Neuer Ordner..."; "Compact This Folder" = "Komprimieren"; "Search Messages..." = "Suchen..."; diff --git a/UI/MailerUI/Hungarian.lproj/Localizable.strings b/UI/MailerUI/Hungarian.lproj/Localizable.strings index 50234cbd5..0211ad020 100644 --- a/UI/MailerUI/Hungarian.lproj/Localizable.strings +++ b/UI/MailerUI/Hungarian.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Megnyitás új üzenet ablakban"; "Copy Folder Location" = "Mappa helyének másolása"; "Subscribe..." = "Feliratkozás..."; -"Mark Folder Read..." = "Mappa megjelölése olvasottként..."; +"Mark Folder Read" = "Mappa megjelölése olvasottként..."; "New Folder..." = "Új mappa..."; "Compact This Folder" = "Mappa tömörítése"; "Search Messages..." = "Üzenetek keresése..."; diff --git a/UI/MailerUI/Icelandic.lproj/Localizable.strings b/UI/MailerUI/Icelandic.lproj/Localizable.strings index a6f949997..f8a6cf239 100644 --- a/UI/MailerUI/Icelandic.lproj/Localizable.strings +++ b/UI/MailerUI/Icelandic.lproj/Localizable.strings @@ -186,7 +186,7 @@ "Open in New Mail Window" = "Opna í nýjum glugga fyrir póst"; "Copy Folder Location" = "Afrita staðsetningu möppu"; "Subscribe..." = "Fá áskrift..."; -"Mark Folder Read..." = "Merkja möppu sem lesna..."; +"Mark Folder Read" = "Merkja möppu sem lesna..."; "New Folder..." = "Ný mappa..."; "Compact This Folder" = "Þjappa þessari möppu"; "Search Messages..." = "Leita í Skilaboðum..."; diff --git a/UI/MailerUI/Italian.lproj/Localizable.strings b/UI/MailerUI/Italian.lproj/Localizable.strings index 138c23a80..5d5b84071 100644 --- a/UI/MailerUI/Italian.lproj/Localizable.strings +++ b/UI/MailerUI/Italian.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Apri in una nuova finestra"; "Copy Folder Location" = "Copia cartella"; "Subscribe..." = "Sottoscrivi..."; -"Mark Folder Read..." = "Contrassegna cartella come già letta..."; +"Mark Folder Read" = "Contrassegna cartella come già letta..."; "New Folder..." = "Nuova cartella..."; "Compact This Folder" = "Compatta cartella"; "Search Messages..." = "Cerca messaggi..."; diff --git a/UI/MailerUI/NorwegianBokmal.lproj/Localizable.strings b/UI/MailerUI/NorwegianBokmal.lproj/Localizable.strings index 4b4aa2ada..8d38c34fa 100644 --- a/UI/MailerUI/NorwegianBokmal.lproj/Localizable.strings +++ b/UI/MailerUI/NorwegianBokmal.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Åpne i nytt vindu"; "Copy Folder Location" = "Kopiere mappens lokasjon"; "Subscribe..." = "Abonnere..."; -"Mark Folder Read..." = "Merk mappe som lest..."; +"Mark Folder Read" = "Merk mappe som lest..."; "New Folder..." = "Ny mappe..."; "Compact This Folder" = "Komprimer mappen"; "Search Messages..." = "Søk meldinger..."; diff --git a/UI/MailerUI/NorwegianNynorsk.lproj/Localizable.strings b/UI/MailerUI/NorwegianNynorsk.lproj/Localizable.strings index 78ed3e9ec..27bb80b5b 100644 --- a/UI/MailerUI/NorwegianNynorsk.lproj/Localizable.strings +++ b/UI/MailerUI/NorwegianNynorsk.lproj/Localizable.strings @@ -186,7 +186,7 @@ "Open in New Mail Window" = "Åpne i nytt vindu"; "Copy Folder Location" = "Kopiere mappens lokasjon"; "Subscribe..." = "Abonnere..."; -"Mark Folder Read..." = "Merk mappe som lest..."; +"Mark Folder Read" = "Merk mappe som lest..."; "New Folder..." = "Ny mappe..."; "Compact This Folder" = "Komprimer mappen"; "Search Messages..." = "Søk meldinger..."; diff --git a/UI/MailerUI/Polish.lproj/Localizable.strings b/UI/MailerUI/Polish.lproj/Localizable.strings index 532e9db38..ea67784b8 100644 --- a/UI/MailerUI/Polish.lproj/Localizable.strings +++ b/UI/MailerUI/Polish.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Otwórz w nowym oknie"; "Copy Folder Location" = "Kopiuj położenie foldera"; "Subscribe..." = "Subskrybuj"; -"Mark Folder Read..." = "Oznacz folder jako przeczytany"; +"Mark Folder Read" = "Oznacz folder jako przeczytany"; "New Folder..." = "Nowy folder"; "Compact This Folder" = "Kompaktuj ten folder"; "Search Messages..." = "Szukaj wiadomości"; diff --git a/UI/MailerUI/Russian.lproj/Localizable.strings b/UI/MailerUI/Russian.lproj/Localizable.strings index b09c4ec0b..52629d204 100644 --- a/UI/MailerUI/Russian.lproj/Localizable.strings +++ b/UI/MailerUI/Russian.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Открыть в новом окне"; "Copy Folder Location" = "Скопировать адрес папки"; "Subscribe..." = "Подписаться..."; -"Mark Folder Read..." = "Отметить все письма в папке как прочтенные..."; +"Mark Folder Read" = "Отметить все письма в папке как прочтенные..."; "New Folder..." = "Создать папку..."; "Compact This Folder" = "Сжать эту папку"; "Search Messages..." = "Поиск в сообщениях..."; diff --git a/UI/MailerUI/Slovak.lproj/Localizable.strings b/UI/MailerUI/Slovak.lproj/Localizable.strings index e6baeee7b..44fc1bbd4 100644 --- a/UI/MailerUI/Slovak.lproj/Localizable.strings +++ b/UI/MailerUI/Slovak.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Otvoriť v novom okne"; "Copy Folder Location" = "Kopírovať adresu priečinka"; "Subscribe..." = "Potvrď odber..."; -"Mark Folder Read..." = "Označ priečinok ako prečítaný..."; +"Mark Folder Read" = "Označ priečinok ako prečítaný..."; "New Folder..." = "Nový adresár"; "Compact This Folder" = "Vykonaj údržbu tohoto priečinku"; "Search Messages..." = "Hľadať správy"; diff --git a/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings b/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings index 5166a2a7e..9455bced7 100644 --- a/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings +++ b/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Abrir mensaje en nueva ventana"; "Copy Folder Location" = "Copiar dirección de la carpeta"; "Subscribe..." = "Suscribir..."; -"Mark Folder Read..." = "Marcar carpeta como leída..."; +"Mark Folder Read" = "Marcar carpeta como leída..."; "New Folder..." = "Crear carpeta..."; "Compact This Folder" = "Compactar esta carpeta"; "Search Messages..." = "Buscar mensajes..."; diff --git a/UI/MailerUI/SpanishSpain.lproj/Localizable.strings b/UI/MailerUI/SpanishSpain.lproj/Localizable.strings index a07103840..0df416d9c 100644 --- a/UI/MailerUI/SpanishSpain.lproj/Localizable.strings +++ b/UI/MailerUI/SpanishSpain.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Abrir mensaje en nueva ventana"; "Copy Folder Location" = "Copiar dirección de la carpeta"; "Subscribe..." = "Suscribir..."; -"Mark Folder Read..." = "Marcar carpeta como leída..."; +"Mark Folder Read" = "Marcar carpeta como leída..."; "New Folder..." = "Crear carpeta..."; "Compact This Folder" = "Compactar esta carpeta"; "Search Messages..." = "Buscar mensajes..."; diff --git a/UI/MailerUI/Swedish.lproj/Localizable.strings b/UI/MailerUI/Swedish.lproj/Localizable.strings index d78d968ef..3ac0c88cd 100644 --- a/UI/MailerUI/Swedish.lproj/Localizable.strings +++ b/UI/MailerUI/Swedish.lproj/Localizable.strings @@ -186,7 +186,7 @@ "Open in New Mail Window" = "Öppna i nytt fönster"; "Copy Folder Location" = "Kopiera mappens sökväg"; "Subscribe..." = "Prenumrera..."; -"Mark Folder Read..." = "Märk mapp som läst..."; +"Mark Folder Read" = "Märk mapp som läst..."; "New Folder..." = "Ny mapp..."; "Compact This Folder" = "Komprimera mapp"; "Search Messages..." = "Sök meddelanden..."; diff --git a/UI/MailerUI/UIxMailFolderActions.m b/UI/MailerUI/UIxMailFolderActions.m index 729c24b5a..41d4afc5e 100644 --- a/UI/MailerUI/UIxMailFolderActions.m +++ b/UI/MailerUI/UIxMailFolderActions.m @@ -256,6 +256,17 @@ return response; } +- (id) markFolderReadAction +{ + id response; + + response = [[self clientObject] addFlagsToAllMessages: @"seen"]; + if (!response) + response = [self responseWith204]; + + return response; +} + - (WOResponse *) exportFolderAction { WOResponse *response; diff --git a/UI/MailerUI/Ukrainian.lproj/Localizable.strings b/UI/MailerUI/Ukrainian.lproj/Localizable.strings index 86bf825cf..8a7f7b729 100644 --- a/UI/MailerUI/Ukrainian.lproj/Localizable.strings +++ b/UI/MailerUI/Ukrainian.lproj/Localizable.strings @@ -189,7 +189,7 @@ "Open in New Mail Window" = "Відкрити в новому вікні"; "Copy Folder Location" = "Копіювати адресу теки"; "Subscribe..." = "Підписатись..."; -"Mark Folder Read..." = "Відзначити всі листи в теці прочитаними"; +"Mark Folder Read" = "Відзначити всі листи в теці прочитаними"; "New Folder..." = "Створити теку..."; "Compact This Folder" = "Стиснути цю теку"; "Search Messages..." = "Пошук повідомлень..."; diff --git a/UI/MailerUI/Welsh.lproj/Localizable.strings b/UI/MailerUI/Welsh.lproj/Localizable.strings index f30090f6a..61ad37797 100644 --- a/UI/MailerUI/Welsh.lproj/Localizable.strings +++ b/UI/MailerUI/Welsh.lproj/Localizable.strings @@ -186,7 +186,7 @@ "Open in New Mail Window" = "Agor mewn ffenestr Neges Newydd"; "Copy Folder Location" = "Copio Lleoliad Ffolder"; "Subscribe..." = "Tanysgrifio..."; -"Mark Folder Read..." = "Marcio Ffolder Darllenwyd..."; +"Mark Folder Read" = "Marcio Ffolder Darllenwyd..."; "New Folder..." = "Ffolder Newydd..."; "Compact This Folder" = "Cywasgu'r ffolder hwn"; "Search Messages..." = "Chwilio negeseuon..."; diff --git a/UI/MailerUI/product.plist b/UI/MailerUI/product.plist index 49941d90b..60d726ba0 100644 --- a/UI/MailerUI/product.plist +++ b/UI/MailerUI/product.plist @@ -132,6 +132,11 @@ actionClass = "UIxMailFolderActions"; actionName = "saveMessages"; }; + markRead = { + protectedBy = "View"; + actionClass = "UIxMailFolderActions"; + actionName = "markFolderRead"; + }; exportFolder = { protectedBy = "View"; actionClass = "UIxMailFolderActions"; diff --git a/UI/Templates/MailerUI/UIxMailMainFrame.wox b/UI/Templates/MailerUI/UIxMailMainFrame.wox index c0438bb64..858156769 100644 --- a/UI/Templates/MailerUI/UIxMailMainFrame.wox +++ b/UI/Templates/MailerUI/UIxMailMainFrame.wox @@ -54,7 +54,7 @@
  • -
  • +
  • @@ -70,7 +70,7 @@
  • -
  • +
  • @@ -87,7 +87,7 @@
  • -
  • +
  • diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index 3b0b381d0..99f646504 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -912,7 +912,7 @@ function refreshUnseenCounts() { } function getUnseenCountForFolder(mailbox) { - var url = ApplicationBaseURL + encodeURI(mailbox) + '/unseenCount'; + var url = URLForFolderID(mailbox) + '/unseenCount'; triggerAjaxRequest(url, unseenCountCallback, mailbox); } @@ -2353,17 +2353,37 @@ function onMenuRenameFolderConfirm() { } function onMenuDeleteFolder(event) { - showConfirmDialog(_("Confirmation"), - _("Do you really want to move this folder into the trash ?"), - onMenuDeleteFolderConfirm); -} - -function onMenuDeleteFolderConfirm() { var folderID = document.menuTarget.getAttribute("dataname"); var urlstr = URLForFolderID(folderID) + "/delete"; var errorLabel = _("The folder could not be deleted."); - triggerAjaxRequest(urlstr, folderOperationCallback, errorLabel); - disposeDialog(); + showConfirmDialog(_("Confirmation"), + _("Do you really want to move this folder into the trash ?"), + function(event) { + triggerAjaxRequest(urlstr, folderOperationCallback, errorLabel); + disposeDialog(); + }); +} + +function onMenuMarkFolderRead(event) { + var folderID = document.menuTarget.getAttribute("dataname"); + var urlstr = URLForFolderID(folderID) + "/markRead"; + + // Delete the associated data sources + deleteCachedMailbox(folderID); + + if (folderID == Mailer.currentMailbox) { + // Reset the data source so the message headers are reloaded in the callback function + Mailer.dataTable.dataSource.destroy(); + } + else { + // Reset the unseen count of the mailbox + var node = mailboxTree.getMailboxNode(folderID); + if (node) { + updateUnseenCount(node, 0, false); + } + } + + triggerAjaxRequest(urlstr, folderRefreshCallback, { "mailbox": folderID, "refresh": true }); } function onMenuExpungeFolder(event) { @@ -2767,22 +2787,19 @@ function onMenuAccountDelegation(event) { function getMenus() { var menus = { accountIconMenu: [ null, null, onMenuCreateFolder, null, null, onMenuAccountDelegation ], - inboxIconMenu: [ null, null, null, "-", null, + inboxIconMenu: [ null, null, null, "-", onMenuMarkFolderRead, onMenuCreateFolder, onMenuExpungeFolder, onMenuArchiveFolder, "-", null, onMenuSharing ], - trashIconMenu: [ null, null, null, "-", null, + trashIconMenu: [ null, null, null, "-", onMenuMarkFolderRead, onMenuCreateFolder, onMenuExpungeFolder, onMenuArchiveFolder, onMenuEmptyTrash, "-", null, onMenuSharing ], - mailboxIconMenu: [ null, null, null, "-", null, - onMenuCreateFolder, - onMenuRenameFolder, - onMenuExpungeFolder, - onMenuArchiveFolder, - onMenuDeleteFolder, - "folderTypeMenu", + mailboxIconMenu: [ null, null, null, "-", onMenuMarkFolderRead, + onMenuCreateFolder, onMenuRenameFolder, + onMenuExpungeFolder, onMenuArchiveFolder, + onMenuDeleteFolder, "folderTypeMenu", "-", null, onMenuSharing ], addressMenu: [ newContactFromEmail, newEmailTo ], From 15f9b7d22e6a5937224570b580dee31e391789dd Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 15 Mar 2013 11:23:27 -0400 Subject: [PATCH 42/77] Fix comments in UIxContactFolderActions.* --- UI/Contacts/UIxContactFolderActions.h | 6 +++--- UI/Contacts/UIxContactFolderActions.m | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/UI/Contacts/UIxContactFolderActions.h b/UI/Contacts/UIxContactFolderActions.h index c6f80c112..3e04de561 100644 --- a/UI/Contacts/UIxContactFolderActions.h +++ b/UI/Contacts/UIxContactFolderActions.h @@ -19,8 +19,8 @@ 02111-1307, USA. */ -#ifndef __UIxContactsListView_H__ -#define __UIxContactsListView_H__ +#ifndef __UIxContactFolderActions_H__ +#define __UIxContactFolderActions_H__ #import @@ -39,4 +39,4 @@ @end -#endif /* __UIxContactsListView_H__ */ +#endif /* __UIxContactFolderActions_H__ */ diff --git a/UI/Contacts/UIxContactFolderActions.m b/UI/Contacts/UIxContactFolderActions.m index 8e2bde448..ea416bc3a 100644 --- a/UI/Contacts/UIxContactFolderActions.m +++ b/UI/Contacts/UIxContactFolderActions.m @@ -288,4 +288,4 @@ return rc; } -@end /* UIxContactsListView */ +@end /* UIxContactFolderActions */ From 9fb9f2cae667aa966e285216846a6b688418f753 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 20 Mar 2013 11:51:37 -0400 Subject: [PATCH 43/77] Enable saml2 support on squeeze (temporary fix) --- packaging/debian/control-squeeze | 4 ++-- packaging/debian/rules | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packaging/debian/control-squeeze b/packaging/debian/control-squeeze index 0f5963934..b09355940 100644 --- a/packaging/debian/control-squeeze +++ b/packaging/debian/control-squeeze @@ -1,14 +1,14 @@ Source: sogo Priority: optional Maintainer: Inverse Support -Build-Depends: debhelper (>= 7.0.15), gobjc | objc-compiler, libgnustep-base-dev, libsope-appserver4.9-dev, libsope-core4.9-dev, libsope-gdl1-4.9-dev, libsope-ldap4.9-dev, libsope-mime4.9-dev, libsope-xml4.9-dev, libmemcached-dev, libxml2-dev, libsbjson-dev, libssl-dev, libcurl4-openssl-dev | libcurl4-gnutls-dev, libmapi-dev, libmapistore-dev, libmapiproxy-dev +Build-Depends: debhelper (>= 7.0.15), gobjc | objc-compiler, libgnustep-base-dev, libsope-appserver4.9-dev, libsope-core4.9-dev, libsope-gdl1-4.9-dev, libsope-ldap4.9-dev, libsope-mime4.9-dev, libsope-xml4.9-dev, libmemcached-dev, libxml2-dev, libsbjson-dev, libssl-dev, libcurl4-openssl-dev | libcurl4-gnutls-dev, libmapi-dev, libmapistore-dev, libmapiproxy-dev, liblasso3-dev (>= 2.3.5) Section: web Standards-Version: 3.9.1 Package: sogo Section: web Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, tmpreaper, sope4.9-libxmlsaxdriver, sope4.9-db-connector, gnustep-make, libcurl3 +Depends: ${shlibs:Depends}, ${misc:Depends}, tmpreaper, sope4.9-libxmlsaxdriver, sope4.9-db-connector, gnustep-make, libcurl3, liblasso3 (>= 2.3.5) Recommends: memcached Suggests: nginx Description: a modern and scalable groupware diff --git a/packaging/debian/rules b/packaging/debian/rules index 9e76c6c62..eac3a5a02 100755 --- a/packaging/debian/rules +++ b/packaging/debian/rules @@ -4,13 +4,18 @@ export DH_VERBOSE=1 # export DH_OPTIONS="-p sogo" DESTDIR=$(CURDIR)/debian/tmp +DIST_CODENAME=$(shell lsb_release -cs) + +ifeq ($(DIST_CODENAME), squeeze) + SAML2_CONFIG=--enable-saml2 +endif include /etc/GNUstep/GNUstep.conf include /usr/share/GNUstep/Makefiles/common.make config.make: configure dh_testdir - ./configure --prefix=$(GNUSTEP_SYSTEM_ROOT) + ./configure --prefix=$(GNUSTEP_SYSTEM_ROOT) $(SAML2_CONFIG) #Architecture build: build-arch From 9c4b7d848141166eb9742e080831b017d660ec78 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Thu, 21 Mar 2013 15:39:02 -0400 Subject: [PATCH 44/77] Add notes regarding html mails and mod_reqtimeout --- ...Native Microsoft Outlook Configuration.odt | Bin 30622 -> 31003 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Documentation/SOGo Native Microsoft Outlook Configuration.odt b/Documentation/SOGo Native Microsoft Outlook Configuration.odt index 8c969eb049fa0fbaa1a419a297d6b24a090eab8d..778b2e7ef92b566609453f988dd86b6298aa3e0f 100644 GIT binary patch delta 17208 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 UM~I@B_O@tpVYxb6bO}fl05U&4AOHXW delta 16755 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 HKc4>&=P3xr From 95dc134ca618a47be6e2eafca71e6c7f9c9cbccc Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Fri, 22 Mar 2013 15:13:39 -0400 Subject: [PATCH 45/77] Revamped openchange_cleanup.py This is now usable again. - Don't delete password files in mapistoreCleanup() - reworked the ldb cleanup and enabled it - sql cleanup should now be able to figure out the db info from the config regardless of the format used (xml, plist, sogo.conf or GNUstepDefaults) (We really need a python plist parser.. the current solution is not elegant) - Inform user of missing python packages --- Scripts/openchange_cleanup.py | 99 +++++++++++++++++++++++------------ 1 file changed, 65 insertions(+), 34 deletions(-) diff --git a/Scripts/openchange_cleanup.py b/Scripts/openchange_cleanup.py index c646cff75..92d135a81 100755 --- a/Scripts/openchange_cleanup.py +++ b/Scripts/openchange_cleanup.py @@ -2,7 +2,7 @@ import getopt import imaplib -#import ldb +import ldb import plistlib import os import re @@ -16,7 +16,7 @@ imapport = 143 sambaprivate = '/var/lib/samba/private' mapistorefolder = "%s/mapistore" % (sambaprivate) sogoSysDefaultsFile = "/etc/sogo/sogo.conf" -sogoUserDefaultsFile = "/home/sogo/GNUstep/Defaults/.GNUstepDefaults" +sogoUserDefaultsFile = os.path.expanduser("~sogo/GNUstep/Defaults/.GNUstepDefaults") # - takes a username and optionally its password # - removes the entry in samba's ldap tree via ldbedit (NOTYET) @@ -79,13 +79,15 @@ def main(): except (shutil.Error, OSError) as e: print "Error during mapistoreCleanup, continuing: %s" % str(e) - # try: - # pass - # #ldbCleanup(sambaprivate, username) - # except ldb.LdbError as e: - # print "Error during ldbCleanup, continuing: %s" % str(e) + try: + ldbCleanup(sambaprivate, username) + except ldb.LdbError as e: + print "Error during ldbCleanup, continuing: %s" % str(e) - sqlCleanup(username) + try: + sqlCleanup(username) + except Exception as e: + print "Error during sqlCleanup, continuing: %s" % str(e) def extractmb(si): inparen = False @@ -135,6 +137,7 @@ def cleanupmb(mb, client): print "mailbox '%s' coult NOT be deleted (code = '%s')" % (mb, code) def imapCleanup(imaphost, imapport, username, userpass): + print "Starting IMAP cleanup" client = imaplib.IMAP4(imaphost, imapport) (code, data) = client.login(username, userpass) if code != "OK": @@ -152,24 +155,43 @@ def imapCleanup(imaphost, imapport, username, userpass): client.logout() def mapistoreCleanup(mapistorefolder, username): + print "Starting MAPIstore cleanup" + # delete the user's folder under the mapistore and under mapistore/SOGo - shutil.rmtree("%s/%s" % (mapistorefolder, username), ignore_errors=True) + mapistoreUserDir = "%s/%s" % (mapistorefolder, username) + for dirpath, dirnames, filenames in os.walk(mapistoreUserDir): + for f in filenames: + if f != "password": + os.unlink("%s/%s" % (dirpath,f)) + break #one level only + shutil.rmtree("%s/SOGo/%s" % (mapistorefolder, username), ignore_errors=True) - # NOTYET - #def ldbCleanup(sambaprivate, username): - # conn = ldb.Ldb("%s/openchange.ldb" % (sambaprivate)) - #### entries = conn.search(None, expression="(|(cn=%s)(MAPIStoreURI=sogo://%s:*)(MAPIStoreURI=sogo://%s@*))" % (username,username,username), - # entries = conn.search(None, expression="cn=%s" % (username), - # scope=ldb.SCOPE_SUBTREE) - # for entry in entries: - # print "Deleting %s" % (entry.dn) - # conn.delete(entry.dn) +def ldbCleanup(sambaprivate, username): + conn = ldb.Ldb("%s/openchange.ldb" % (sambaprivate)) + # find the DN of the user + entries = conn.search(None, expression="(cn=%s)" % (username), scope=ldb.SCOPE_SUBTREE) + if not entries: + print "cn = %s not found in openchange.ldb" %(username) + return + + for entry in entries: + # search again, but with the user's DN as a base + subentries = conn.search(entry.dn.extended_str(), expression="(distinguishedName=*)", scope=ldb.SCOPE_SUBTREE) + for subentry in subentries: + print "Deleting %s" % (subentry.dn) + conn.delete(subentry.dn) def mysqlCleanup(dbhost, dbport, dbuser, dbpass, dbname, username): - import MySQLdb + try: + import MySQLdb + except ImportError: + msg ="""The python 'MySQLdb' module is not available +On Debian based distro, install it using 'apt-get install python-mysqlbd' +On RHEL, install it using 'yum install MySQL-python'""" + raise Exception(msg) - conn= MySQLdb.connect(host=dbhost, port=int(dbport), user=dbuser, passwd=dbpass, db=dbname) + conn = MySQLdb.connect(host=dbhost, port=int(dbport), user=dbuser, passwd=dbpass, db=dbname) c=conn.cursor() tablename="socfs_%s" % (username) c.execute("TRUNCATE TABLE %s" % tablename) @@ -177,28 +199,33 @@ def mysqlCleanup(dbhost, dbport, dbuser, dbpass, dbname, username): def postgresqlCleanup(dbhost, dbport, dbuser, dbpass, dbname, username): - import pg + try: + import pg + except ImportError: + msg ="""The python 'pg' module is not available +On Debian based distro, install it using 'apt-get install python-pygresql' +On RHEL, install it using 'yum install python-pgsql'""" + raise Exception(msg) + conn = pg.connect(host=dbhost, port=int(dbport), user=dbuser, passwd=dbpass, dbname=dbname) tablename = "socfs_%s" % username conn.query("DELETE FROM %s" % tablename) - print "table '%s' emptied" % tablename + print "Table '%s' emptied" % tablename def getOCSFolderInfoURL(): global sogoSysDefaultsFile, sogoUserDefaultsFile OCSFolderInfoURL = "" - # read defaults from /etc/sogo/sogo.conf - if os.path.exists(sogoSysDefaultsFile): - sogoDefaults = plistlib.readPlist(sogoSysDefaultsFile) - if "OCSFolderInfoURL" in sogoDefaults: - OCSFolderInfoURL = sogoDefaults["OCSFolderInfoURL"] - - # defaults from user directory must have precedence - if os.path.exists(sogoUserDefaultsFile): - sogoDefaults = plistlib.readPlist(sogoUserDefaultsFile) - if "sogod" in sogoDefaults and "OCSFolderInfoURL" in sogoDefaults["sogod"]: - OCSFolderInfoURL = sogoDefaults['sogod']['OCSFolderInfoURL'] + # read defaults from defaults files + # order is important, user defaults must have precedence + for f in [sogoSysDefaultsFile, sogoUserDefaultsFile]: + if os.path.exists(f): + # FIXME: this is ugly, we should have a python plist parser + # plistlib only supports XML plists. + pipeline = """sogo-tool dump-defaults -f %s | grep -w OCSFolderInfoURL | awk -F\\" '{print $2}'""" % f + tmp = subprocess.check_output(pipeline, shell=True) + if tmp: OCSFolderInfoURL = tmp return OCSFolderInfoURL @@ -226,6 +253,7 @@ def asCSSIdentifier(inputString): return "".join(newChars) def sqlCleanup(username): + print "Starting SQL cleanup" OCSFolderInfoURL = getOCSFolderInfoURL() if OCSFolderInfoURL is None: raise Exception("Couldn't fetch OCSFolderInfoURL or it is not set. the socfs_%s table should be truncated manually" % (username)) @@ -233,6 +261,9 @@ def sqlCleanup(username): # postgresql://sogo:sogo@127.0.0.1:5432/sogo/sogo_folder_info m = re.search("(.+)://(.+):(.+)@(.+):(\d+)/(.+)/(.+)", OCSFolderInfoURL) + if not m: + raise Exception("Unable to parse OCSFolderInfoURL: %s" % OCSFolderInfoURL) + proto = m.group(1) dbuser = m.group(2) dbpass = m.group(3) @@ -248,7 +279,7 @@ def sqlCleanup(username): elif (proto == "mysql"): mysqlCleanup(dbhost, dbport, dbuser, dbpass, dbname, encodedUserName) else: - raise Exception("Unknown sql proto: " % (proto)) + raise Exception("Unknown sql proto: %s" % (proto)) if __name__ == "__main__": main() From b4ebc90dd0b452dfe134efc137de2f62b8ece59e Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Mon, 25 Mar 2013 14:12:12 -0400 Subject: [PATCH 46/77] replace subprocess.check_output with Popen magic check_output isn't available in py 2.6... --- Scripts/openchange_cleanup.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Scripts/openchange_cleanup.py b/Scripts/openchange_cleanup.py index 92d135a81..9ceeca85a 100755 --- a/Scripts/openchange_cleanup.py +++ b/Scripts/openchange_cleanup.py @@ -223,8 +223,13 @@ def getOCSFolderInfoURL(): if os.path.exists(f): # FIXME: this is ugly, we should have a python plist parser # plistlib only supports XML plists. - pipeline = """sogo-tool dump-defaults -f %s | grep -w OCSFolderInfoURL | awk -F\\" '{print $2}'""" % f - tmp = subprocess.check_output(pipeline, shell=True) + # the following magic replaces this shell pipeline: + # sogo-tool dump-defaults -f %s | awk -F\\" '/ OCSFolderInfoURL =/ {print $2}' + p1 = subprocess.Popen(["sogo-tool", "dump-defaults", "-f", f], stdout=subprocess.PIPE) + p2 = subprocess.Popen(["awk", "-F\"", "/ OCSFolderInfoURL =/ {print $2}"], stdin=p1.stdout, stdout=subprocess.PIPE) + p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits. + tmp = p2.communicate()[0] + if tmp: OCSFolderInfoURL = tmp return OCSFolderInfoURL From a009c71034826e3755a987a0f5730724dfc9f063 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 25 Mar 2013 15:58:36 -0400 Subject: [PATCH 47/77] Fixed table initialization. --- SoObjects/SOGo/SOGoSAML2Session.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/SOGo/SOGoSAML2Session.m b/SoObjects/SOGo/SOGoSAML2Session.m index e9258d694..4cd4750e1 100644 --- a/SoObjects/SOGo/SOGoSAML2Session.m +++ b/SoObjects/SOGo/SOGoSAML2Session.m @@ -77,7 +77,7 @@ static NSMapTable *serverTable = nil; { if (!serverTable) { - serverTable = [NSMapTable mapTableWithStrongToWeakObjects]; + serverTable = NSCreateMapTable(NSObjectMapKeyCallBacks, NSNonRetainedObjectMapValueCallBacks, 128); [serverTable retain]; } lasso_init (); From 74c01dc44841c696ed322c9b0bff542e7f2b4115 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Tue, 26 Mar 2013 13:42:22 -0400 Subject: [PATCH 48/77] gen-charset-table.py: script to import ms charmaps For example: http://msdn.microsoft.com/en-us/goglobal/cc305147 --- OpenChange/gen-charset-table.py | 84 +++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100755 OpenChange/gen-charset-table.py diff --git a/OpenChange/gen-charset-table.py b/OpenChange/gen-charset-table.py new file mode 100755 index 000000000..06e2ab8b1 --- /dev/null +++ b/OpenChange/gen-charset-table.py @@ -0,0 +1,84 @@ +#!/usr/bin/python + +import getopt +import os +import re +import string +import sys + +h_template = """unsigned short %(charsetName)s[%(len)d] = { %(values)s }""" +CHAR_UNDEF = "0x0000" +MAP_LEN = 256 +itemsPerLine = 16 + +def usage(): + usageMsg = """ +Usage: %s -f inputFile +""" % (os.path.basename(sys.argv[0])) + sys.stderr.write(usageMsg) + +def parseCharsetFile(file = None): + if file is None: + return None + + charmap = [CHAR_UNDEF] * MAP_LEN + + # Sample line: + # FD = U+200E : LEFT-TO-RIGHT MARK + for line in file.xreadlines(): + m = re.search("(\w{2}) = U\+(\w{4}) :", line) + if not m: + sys.stderr.write("Skipping weird line: %s" % line) + continue + + ind = int(m.group(1), base=16) + unicodeValue = str(m.group(2)).lower() + + charmap[ind] = "0x%s" % (unicodeValue) + + return charmap + + +def formatCharacterMap(charmap = None): + if not charmap: + return None + + value = "" + for i in xrange(0,MAP_LEN-1): + char = charmap[i] + if i % itemsPerLine == 0: + value += "\n " + value += "%s, " % (char) + i += 1 + value += charmap[MAP_LEN-1] + + return value + +if __name__ == '__main__': + inputFile = None + + try: + opts, args = getopt.getopt(sys.argv[1:], "f:") + except getopt.GetoptError, err: + sys.stderr.write(str(err)) + usage() + sys.exit(2) + + for o, a in opts: + if o == "-f": + inputFile = a + else: + assert False, "unhandled option" + + if not inputFile: + usage() + sys.exit(1) + + + f = open(inputFile, "r", 1) + + charsetMap = parseCharsetFile(f) + charsetValues = formatCharacterMap(charsetMap) + print h_template % {"len": len(charsetMap), + "charsetName": os.path.basename(inputFile), + "values": charsetValues} From c26e5fa7fed83bae25529679fead923e8a8fe1f2 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Tue, 26 Mar 2013 14:01:04 -0400 Subject: [PATCH 49/77] semi-colon --- OpenChange/gen-charset-table.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenChange/gen-charset-table.py b/OpenChange/gen-charset-table.py index 06e2ab8b1..1bcc1aa17 100755 --- a/OpenChange/gen-charset-table.py +++ b/OpenChange/gen-charset-table.py @@ -6,7 +6,7 @@ import re import string import sys -h_template = """unsigned short %(charsetName)s[%(len)d] = { %(values)s }""" +h_template = """unsigned short %(charsetName)s[%(len)d] = { %(values)s };""" CHAR_UNDEF = "0x0000" MAP_LEN = 256 itemsPerLine = 16 From 663351029ac49e1c9802e07d1c874a872f147ca3 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 26 Mar 2013 19:32:08 -0400 Subject: [PATCH 50/77] 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 zcmYKFW0Yt+(*}yRZQHhO+qP}nwpQD=ZQH%twr$_F-|wDt{$^&(O4WnP$Vl*`Apj1% zZ)5?0ue2?_H^q`(R`=9hOk@S9ctkWCkt{RFSxDD66viSR{w#<91(HQFLd;tTFgbs{ z))Zk|B&4`EW=;65?I#P6%$L{JKGs~g;gzkocWiH*H@j`f|FGuSzFpm3FYM0V*d5pX z@SMB6yyRWq++N$?@~q#uytwD_B6|N4`BCNRnCejtC---y4VaHjsC;9>e0St+t^A(9 z-*vKMd@VTV2j$V9_x$~xoqh2Gf9l)xZ0&>hSNP@roO92MxaQAHbj|xc{os!^{8l_N zHAI5`N<887Q=eTi#veN;e-y=%E6pf>zASvaZtH^WzFBzY)a|p4z*V5r<#yRFxUA)n zEO7~&;PAdvqLfSGfwOo4leulfIrYM#VuT~6yrYLf6FfL&#x!TSQZP}L6dA@MGD6ys zK0b0pnH`h?GooA4EJxv+MA`>FghdRgpLR$wSMqQqFq1@xLnoRxctFpE@->7WIj{9e z5UW4mj{-DkQC48~6bC>7gwI|q5e66;Rs@0kkOvTo*<-@G zC8T5KzVNZh63E+%iXvXclLFMi&GaXM;u#$SeetQhpwzff5}gPWS;idiZ!mizEqM7% zcjz6Fs)B^k8$YOGki?CaavDm+B|uFmBUAHq8*;yo<2V!20ZELYPkuJT5({d*Dq?b~ zJ~T+q@g!(&_p~NS$6b#`F=tfH8_p@_I7S*cw86_=YhJL7pq?1?#@Rd&Px#f03<4?g zs#%UHrE=oYIuCdexMtiVLk4lKG$)DUu?1U$#0f_SdPB}? z;|R}_<2z7YzQ|A{d{jbhFwZ2$ADoDAhODSAvt&Hh`)@l_hDyQECQgJd>z8e=NJ)y@ z+`sgKWK{9}D*_dSnb|5f9#(XLUVP#O=cxTo0?aLZ^CN#kCjsXS>BOJ`KOO^+db#C~ zd86EN$?jZA(=HKTser)cp$b$dDpPKFi#>j;aA%#2ADgHV9#E z@Wlu_>d`|exyZvXg?4P~;=abs#toENB3v-Ii6OyC416eSAZtLt#vYf!97)TxMVT67 zOrT1oPotC+%`iEuFa;lz8D`V2hcw8mQlLnJN?w^A3`9%P;umML-}MIHWKL>2$?H)8 zJ1{}Hb1|*2z#mw7_EK9h%y*)W8b}qyF^V2J*kA_BdRPD@|II=TyE@hkGS<Y6Ykez;e5TI= zSqG=#TNZ3&fMs8HS>w6!0Zl|rjX(sMUe~%$&_l78*ftXDSZ_}riOYTbfdP4~jf4prTX02A)nlTW2O-v9Z z&TAPCh3ijuY&@VPle#tHyFUo+KW24J7#6rF5;pQM)=QJT-H^dh5CD00_Y2MuX-FHQ z0np>gVcJJauFc0I>Rly5FLW83wLwHC9?!QNM-gHA06zdHo0!bDy5CsQ!eZy3HzQQR zlLiV>iIMZpaX6teH(`>=G*NwL}IFjx9sZWDODEGtIaLA0tSBbVgH)UIOfTz6t0d zngS4|V%k4ygJ!m|Opq_r;~j*}5N-%AAf4otDoe4BLKR+}SPWQ(PhG2d@WguvnIgss zVL3cmI=>na;yTk>y#k;*SSj4B0Y{Tg!*@b>f}Nv}8G$g^Oh^o->(B#_bJ-p9S8t#W zW+DhAJq~$Z2L^H#TkyhG5u;p$Z@~sAE~^WRGSH4F)G#I~3owmoM!?hngsB&Pi6mFG zo>m;g_&eRd$`B%ugr;nGN;MrE3UptZf$}(JzM=^xO-;x=XG#!+8HKW1mkA<&6HU6l zTiw7@E}}8K{mjsabN+r#&$(~+x$j-=Ngk{xZOHD?NE}8^zdy|)xBL#dr`|O;;3OUb z9GKl6h8-LnRtu=WlD1ChlH&mcFIR98-q3DA8Zg&%ZxjP(6?-5`w)?l+{9!u(Ej{47 zQ5(t@0ZN3b(E-c>G=wXjXZL8->P>Jw5H-}?u~HPfRPF&G%`pNPZlF=Y5rO*09W@EG7sZMO6x?u^R>GAO(8e zX8s(x6Z$=9@3}I$xe^n(U;-va>Cjh(V{#aGEN*7wMe0P&h*p#_lUF3%x`P&5HmiKN zu<1zEs|GEbmc1+`OZJFSSn#pD9Ch3qZX;yh-?kGl<7w1Fas-Eqm&gc^)5k6ftj2 zA)d4t*+Ne@7aynZshV(QhMFYIp9~ahveg_2?F3mr`X^fO3ZC$JMHi~}BWAFRY7s}L zwjk}NCel=F)KB4eZVTuy6y5B51W2oDYmRtE6Hq77eG1a*zfN&BDI@cdBsPRhi%pYv zQB97Byc5Lq%g&Z<(G7es9aRXa5`ZDrjkf1giEaH%u7;#6V@C%RAk@Hs0X_ZD+eJ&% z>gZ?11xR$7>u@PxgrJ^I3|h!{3I67+Qvoe?;6KcKw>w}_XXqCe8YIWr=00Z6B5|(u&Q0EVu;h$0v^3XCGXPchaqPrqM`$Gc`A-!w|AbQJjt0 zu2$p-%h=7Gr2$8KtEeDXyz19jS-2*8speqQW*c>0;=p@A4z6@bj0Zh2cffPyQIb?+ zOoC~Q-td&ql)pUJ^tHsNLI4T7!JjFaXKx~-&gSmDXvk~k>%AyPzdpv2aCIAf7 zJZUa{jSRwA#B;=VAaRjqF-&_fwJFu9Sam_WL1}uKmrC9eDnM{H5fd9u}|(uAUugdED38ptc;NprIjR29}bC4<5l+H zfsT`B#DE}agu>M~ejQgKXD(o7b`kw^d};Q3aMkGk)640@-_6J8jN@kVBYK69UFgR% z0yRRCQsBsl!jGe$gAbpHF5JnQQr#s5t#eG=Rvm_1BIKZ->=3}P|L#ap6!6fY>`5;o z&nSoH5J&N8lQLY@7URxYYASks)Tl*uhL%;@R*XJ>X1iWEmqfA%Y5--!?yJn=2z79F zgfhEn<7A&-sN*DsNqE%;n}a&Rt2c<3z#Ft>puH5v1d}OtLObmmEhXj##fNQEU;3pE z3R|y6QOu;0@#kC?JY0tq!7QYQj5~${dr8C;dxS#~TD!62G~~GpX(-!739ZU-u6<5LA<^0bu%aXQVr60ACsrTmg8KehC4Q zihFpfo18-cox6qf{PekobLugFS+^hlJ?HbPy(N9j=AAnXu0aP|vSQNN;Pt_8NGdY*{VVHB^GI^wQXYrAPfzC zt#}R|1@TDg5TI(HMsGDTf2~5%@Z{yJ)tHg(xe8B-rbSnL(SX|8di zxngfyzIlU`D~F`(%b4|0NZ~2Mk?59Aq%%dD8^W`Moa3@M8t5$crv94V>lht~GfxS& z9)q=t)&})vdTz%lVbI&=6KM)cB%^AS*$C{mALF#w zIFp6gxg%wB;7-pVlalS>jP07{X-5yug^P^8m1mBO_oQIoL zMjkm*g9Zpj!7$W04K4r6F3Q!%%%J#q&pSA8H#W}@H_!ugny5FR#QyR7vA5XA?>}DV^b>z&$)0>w z>A&VUzw7+-=vnp%f_HPx_xt)j$A9?9`RzPx^IaEj==btPZsFC{)K>g^%Du_`%lG?k z?$i4_HSnqrB@}CQu}6QOlu4wP^OQjx9wF(XXeNgsDc+iV6LT^}JJj_0(m%?2)_FQZtwjIl%TcX#81(A*N#=5?EMauj zXLzaX?aD@7Hqd&5AKsr0TtjtL{w`Kgor>@{p`dzO$u zcd@vGG&gBy&JP19!YThibc-spVQuZ}cx=CFlYLBmXes)!uE5~KR@mqHPx*ucns;e(qVqo?}xVC(ezJU?%~<3|)^U7MID%tGVvutJg6^z)+FCl7fK`%P+ZVi(=#L@@4At`$xPL1`i{TV&tXD@cuSJZP5qSmk#&lJ7EzM z{UI<$ihe4ST7u+LroBC{PcpheLwd=+|sYx7m_WwJ&j{(2O&uqR7n~r~ZFE${`xk~|wrmHRl zg-o5o&c>Z(f{1N*jJxOPNdq@OU0VYC@~6;&3;O`zXJ_lLmNq;4v+3Xpwa%{KHrKhG z8{9L!(}!&P7+qXm4eZRJ+V=aP3@~ve@;PJpEV{&7wel`L;oJGVqVMn1h zwtFv%^q$~9S0U?{=tvQw`+M$+Z_nyAg`}-p!YSMKUiZSj5#;fVu&#NNW z)$Uwpe7k&qjql8H%a!pj?wg^6O7C?$vD#>F;&{6SF;6Qvcrgc`YmS7+tZv@h=MG~b zVul|C+t`J62KmT}wHw-Kb_`D)pu$}Jmtd^u^wG+Lv^+xtdTfx;|6S&7~3ows7@V5qn(#}Vb9B?txUch|)8Clo7{Tc^lDp{#LsWi`08r0={9vOZmKu*gRh- zkRYWS%MQC2ql$F$l}cxeWFL0dzXsUX2Otbaj+XmYxJw%%V(6A#gs<1pBK)ItDm`Y-+%OOKyiTML;r#p0Qd0^rTk6ywOD`d;GOrW)tizuTF;y%pcrWiPw;zcpE2-quT~?0r$#r_lGaFkbG;)@^|K)&4-Oc`9;kW(2<5T?H zt#H&|R|?Bvh&3+-Z)ZCNHlN~W6trc{{=J7BZZwSAZFOu{j&~frqsq8# zA5VVsx)P=p-5)e^66d7-J34qkO~8QlUG!0rIan}Qrw#DI`7yDgHF9U6MN>0oWj9|Z z>4a3TzBY*GjMDaY+Qege7>19=-{WztNOrVKy29|{vyt%%`xQkv{g0&JW}Hf(jdRlJ^r^=hvR6Y`;WU_XDxoa1w<(Zal0je5}^KBS1rOYY3mcCDEI+nTa;sGRt+|3; z&%N~bjxTAVpaVbS4892EIIijvlx3s8s-|3L;yf4@=mIt}!09)l~8g!48;#>85|{v&M;22u+n~(y>d~MIM{X zZTY~eK-|<*D%EC14z6bm&cHS%yqb_ADl&5+9zdtlM1D;_V8HhhIow7~^pZ`C4j@q8 zLBih<0ajB1hf|FNZ*m5B{9XeE&xv*(%83C{OTU0F!>p;9VVMS6W8cU9+r{xar0LfL zU0pC7Yel(-(u2EkfUJgxl5*Z<0V-LjQG7uR%E{e&<0uv_F|iEM+_>(dusTC{j$CU; zl^=840$aUMP8KCIVqk@rM5I#8(H}%4=K@yDm<5g~warBt=H5c;#zPEKq7seOH=jig z`@ZX(mwfZo9dLh=f7WyKQQYMQE}9=PDgH7W7@vqJXvJ9 zfXZy32xa-W3nnfg!4?3GA-n{(_=mbe-O1`GSE%)l@|-@d5N}m!3(9ynq!))+Y7wEq zl~rgVB}Je=C-7P)q($M{x%?HG(rP@+f*s*zn^S zjHs1f&ctmg`sd$avIz=!gp7xR@x25Oxivq{y4J87s0lw35m%qw8a;^Ie2O)M$YSxaL1RdhvxG{3+mAG^MM|J(5IR z2)5T%8Z_RPs%Ak6G2ZAFJc-Z3NTLtkVk<}jBaPGv)Tr?HYhJWoMm^0zU4^w$&td%S z-Es{}HnxcSciy~xgwI7Tg{o;6P69}&qr~cOer287Z|SZVJkFSShRVEiec>H-ct8b| zeQ?k!WozoS+c{(4*EywyyJZjFi$~;7%CtYuvR?rk^;(QNz*10k+Bpi3P+ZGVba-^3 z+S<}n50OIwkCENcXE3Lkpl1#c`7uh15eNZ@b%`Lhtw5EsSZFI@1t;8Jue;=9z(;fk zN|b5G;FvL75%9CA+kclA7(Pnz(1FNUwhEQ(+2BQB^$4lg#5#DeJyrAzGTwIr)xUVa zG(Uw^rMJZ{=}?c&lML77vIzee({xlDkc^06+_0gbr0Wy}=0Q$7cT#4oP+u67=i>Zc zV!%Cus2X+HRibnxb*Ai=mxKR$xOkNJDq}ylco(0-meciM<`2*klwj(e zX$baU9iDT%;MrlW?IdglKx4*o4UZbc8|OSWGb^gns<=T-yM0e*aOz-)QB1@T z29J&GoMyB?vOGl&x|3Wp1sHO!fnJpePSR3yG!gZL^5RWv2DbxwCa#G6Xt$6<1aWQ@ zm3B~_bch1Mu6p~1Nc)TXI)91XKxkP_QOsM6hA&vWsDELWm-7wkiV zgti5drpg}il&v-RrHwM2#Tr?`eL?adkut?^+bc}ivU_P0?AW6$Bsd-cBQ-#@48CZJ^CNL3O*Ea94QqOLu?u(U|i5@c#y zb=u{!cuo2|bxU}G!&E-D$uGF{>$)YTjWTvUMsij5xKj+vvYDvl_t%qS4waj4oo^y- z&^4Xj#pl7G?Aycr6Yzqfos>*h11@DZI)n)ZWC53ilQoYgfK~VzEjZB&dPAmZn3hjH z&(a&pZt1Rj;a=rr;wCw`$lufodl;By;B@7LEp*y%4uj1~$gR3!xH@si+e?Xozh~d% z<|&&ez-is8Q^86s&|LmCKSm!wjWneJRH|7mGCsh^N5vkqd9!QI-90a_8Q<;}{}xPc zcw(Vx+u#@E1nSi-;H@;L`0EpEkJK2>T}&AY#6$t8$wA=Z4&1CTA(}o&cS{}cJMb`= zia*?1l^yT;iUYRM@o#BP4tQ6%JRIH?*rq&z3%=X={m;w2@lT2qPU#oK!Kx)wBqd1^ zvcN-dPZ7WdU=D2iT*x8Wbq=l#+7;RL&o+klyQNYwQevSHU|R-ElobvoRdXFYEAHCeiX$lZvK zRlzx&AeF6iH?_bvE{EuM>=?ALbvFbE%^D$PTBETUsvV*kA2(wf_PhJ_tmZ`Ubr$`> zfV3$v+~v_VsWfm>^sG^U09Pv;*R+iri1jbi%V;Bx(M%MPs)4Bz-PA}MB=(QgS zW`QEMyR;ck5C#WxNhrkCFe*cXRa@)+cp{5b9Oa6*O%z^smh=PqQvAHbB?^T{L`{72 zJOX1sdCCqjvp?Kav5zEzUQrsyMs_Q+aE>R14e47b&Mf9M5b|?fH)1+&IqvhwF!L75 z4Pr6QVX%H-Mo;x?6H&CE5CXHLe*r^2HK)x&7pGMJirz#+YL6X67!~DDSsjO9{0f{j zsOJ5pBVx-XiH3L{a!2w?=E@ZyFLFfB366mLTmLnBKESP1xR_3nmabGOs@VaPgwja? z$BYROfh`;h!8kJUM(2`Hq74;BFrBZ;j%f#45Ffm)l0G>vxMG(y9L8scZYr8QzQ(_~ z0w%()@HjJ6d@JN@ar9v9Qyz~dMcS?qB#%oUHAl=(H8Xk#sm20cz|_7 zAxmZj_dEmb*6WCb;E>5(AkHZ-67sN76n5mH|YWk6aPXKUHAzL z6vTUQMMHM!x!k-~A%b38gxlvBicI7&>JW`Xb=_O!M3#Kxd+fV6zn_<_F^Mk@Uap{H7eeV|hHg*pEE-JWWrqRgmPuZ*KiNJp$ zPP|Jl8+ez*tywoyb!6BEH6gfW=MH>3@NY2AH=sr%kK?VC6#O&f2t~n2S$=wE_jWI} zRMQqDGFLay(jK^kgqLpEtOomw=f<9fC7HzjDG%%Y-b<}pO zAOt0Cjp!H%R%j`T6#=8>N8hmP__J}LL$={{Ax&oF76M5wuu|%%7O(`!X$d1AX>a0? znLQ)g4olM`|0R5%xni27!H$9KtppzZt~W$x(hg=uzk(vV=Wr+cA5SNfDejnp$~d2V<5X5drZKWNzPs`XGc(MWm`FHy$5 zP3K>>v+T&n|7s<-2G;ZN5Br}|m(5}BCD&@Dnbyt7iPL?IQx~?x44HrBKK3&qSSLYV zjOe#D^uwbIm>vCkN%N;_tbm{Q6XJ<%8|Mk|$P1Y6cD%2G)xSXv6?xx@`c}qG(EsXS z3AX95Gf{~OPwyR51s;Ih%nzX(TLv;1eDuQYLQn=Tg#B-1i74VKQ{WX|f2TYFIYHn5 zTLZ7u4syf4E_0C0Lda{;W+8|ZnG6_xBJ^LPE&_hcH7F2^B8CPkx@S9S|4UypGYxr( zFfipd_IO$$Q8Vw~up!l<{Xcf%-hE!H4C}gUh%Cz}HzH=(|1O>LkF`(y%lnyt6BR8M znK8FmhV38Mi-FheoE5jtPs~(x>;M1%Wy^&=)t-%^nauk~=v|44QCk!~jb*?+KMuof zlnIqJBtzQ^rqKU|BTMc3w>qcqdDQe?iybT0r4SpDlg(e36^#Ey!$j1T9VoXjBSNSC za^lZ+DD5gOe_C;%tl~SHZu>p=&45cUWZtOr9BRFqPPYlcl|nxC_tO8T6gmvZB>;04 z80fA{dkaAwzR4U<mj`JMk^D=Pu+ z0$%LXdpzV^Ds*+rvq6?2XLU*(-pPs2`8sE)gdFJ+r1EzBFCS*>Crcp=45#3$sT^Th zLA=MXGU%C@ai1<#r<8vb;P{`^`98DHSQfl>3z!~_8xc!0*k*s9{^^ta3Yd}bAK*Xt zX~nx5dKo{#imba8LG3;%O{%swY})_o@YLJ5mo4%iAoHI?_I`d@9PTwX|3mYA3}5!P z^JqKh;s0H*nVz8!d#I9^p92LR2+)3n(lamH+l zz@2GS`x>ocD;YW4Kg)gLcSiU>Ge1K6vpXH|QIqEQOj=e6`b`t%BEB3sXFfAxLJURl zuGvlhIt2MCAQO~f(#H?#yuI{z0K!xhPRV4(yGc)PaWS+Oq%|6*o$^1b*_Xl^hhviv zCI5d8Bt6Ew#-+9vCq4c4A1S!;pKSkA)kD^KMUA|db?9$p2AU}`(?19AQlc1@b^A}; zX45t^?~cZv##D*_4}-tmM^a5eh7IkO1F!#&cDVDt4*Td&2dpP(nmSbJ@SFLNj25(m zmpCvR-bE(U|JfhIUGi^gp=c#LtAdxzft}+W+}ym%p8P9BO%K~IBz{38_RA)p;8M2V z9k5Glf#}>^=CV0DzVEijLr!%yPcPMO#;q&8*`?g9pE6x?@xxj;&&=g@X&P4~&-+SqN)8|J6R8QN`N+ zPE2T4r-Ub>yFgTA{Fl;1A)8pf4PR8l297ru3zK)t`^Usx*;|)inAj}%sD&eE6)my1 zvhLpDsO$0ZWnrnOES^nw_c~@}SeGZdyBce7^+_6a7C+A$8rRzyt4KUe#8ts|LpQe- z6ydW}Kp)_tJ2<7ACXNI}aWDO-THTtOH@yzgSc=`6m947yaSgd?yL`fu(_ApoTbd<{ z)QhuxPHp})qiTY=ib!?_H?MWu#|oV~{Nm9&J>B_(CsX9R>mWsi;*Sos-DOPepDXDZ zT?+S_PF(6&LaVi6ZZVEX zu61x9m6IE=m~g~44dYPDJQRIgdvF!0x;!gkRg*es4)reR-WG41Va(XH1L87*<@s~C zL6$WnqN`#f>f0hE3T|a$T)ji7$=P~N!l=wxy0J<6`~GjkrFMMg4Vy+5MMN~G5W-?k zf$=*h)fJ%;%Ho;A47b^JDF%soIgR;Re44)dW+rRa3K!)J!Y)`@207yAt%lYb@Ul?~ zIk7Xy8z#i~igF?8%2|)fm}K>PgvJ4fm-@gm)8U#kYa6P}wzPEkN9?CR*;5OGnT>&* z6>>xoYn|^>GU}&=kf@n-hmBx8Br26LaYum?G@v z_qOC0c$?n6QDMkX5~7$j-P2xSrqYg^X2{u&jOIxMXQ^u{I{4&Z->& zi&^(=XRFAtJ_ADIYk?PERFf|~g!|l)R-f3w%0{v2=Qx0x=s)pEd(;u(veRp8BDQMnn;^wmFJp8bIui_npYv=Io+C( zzLzf$E3)#bHPz`kp3I+OpZ2gW)$ZTA!JoZ_avoZj&0cbO`ZUAtOYh=vL<=Xia|S*& z(MP!3=9%)0C)(hO9$Cn1IFy}TG9a2u-*;k66R21Po=Y$qP%@cwbgveuR|Dh$50%80 zl2e~|73k5+?5ojTP49+PcG=ovEfMO?FsY(-Vh%V6ek#;l1R(C5v_`Ng>7aLv^6f*!mmeHcM{UFG z@kdUB_dSl-r0+Sz_8HKCY#AkZpDE?Wg(GIchL7`ULZQdzB{Q1P_mLoj2w$M=C2Yl& z(wEeHc-R2B;(q<}_#=^9Qw7e7#_hK;JTCMKh5X)BNq7fWr8{=Aj z=!|p_cBM_8P4%4$?ei9(Gu}BGjpEL4j%-~X2OrqPoJ$hrT&V#O+xSGO`^kGZbW)Y#P?O#+Z)_>yuWq1l}5;Vg-Es5R2T%?wP+y(o4s360M}(=;EzUiHTVFt z%`};po}Z(GN2B}Q6DbzB-~G~y;$zwMw|UnaCJ1?CD>@MJJT|#7(MyeP?w@u)MSWFn z?mK)y!cmnkOO=n4S+}8bj_K`o z{#JcPjz~IMs$yu6EoJ8f7z0to%0lfT3=IW(Llx)I#_tFFJ3qBZMM&Kf2D*zn12zf= z&2-$Pq)h{?S!QNRvN5l}LRFGfs6HzgGD@va9$msw`ov9a9gygizL+gZys zr|Tq{8|>&X$}@iT5?rz7+NonJ%T_zBFX*c~@^`j3sZVeifL>!0Yg92%SL@ZsUzL>whJ2#+|3A4jj==+EmGWp_kHLN*xaxsKCi&Yg(gs@dHq zB0RF2DDLrlWw^{1l%Iu4A;zN3d1z@S((z^i+l$eFC163sucrZtoQg+6OCp;4C(k*K z4T0UPuc%URp#BC7b_^>Ds+H@BTd2weycHS)StPgsW-KO8P3s;GT#^8vr<75ZY##S# ztx|C~PtT)FMo{A&46z~_SG6q#0c*|0lVpr9#1?8c>^&Io2WK(!TNpl_?d^d?T@Dz^s^H^Q47(-6 zHK2M{wTn&!WHAq{H=vTa+sa)VdB+Au@M)R(DRSG%VH0SEkxbZOeVwKi?|z<5(h43uJX|+LC>`w8H~jgq{C0J?YY|P5h6Cuq6iV*dWJ3rFfrbre#QYwki@xW)72jcL1rvr}Frl*k5K+qQD z6NouFg3E*tXDu*JIFNPkr8h8TgrPOdPv3pcy}aNnY|;z_c5Ui-0aBcLIx>P1$yiXd z%HO^1y@_~<$!uksAs#*lY0ND`b=DX-17e|i2{O!>pz=~}NGqK%F32(y3CQ&Hs-||= z)ay4V-D1GXiM)aQ& z0P%dZzX0%VZS#4$HCwweE+lFhh?CbQSjxK`RLM3-NI6SjMX#Ts&s-OY)2qVGLPvLL~-C#dKlNWk?UahQi4iLOH0+%rxgqGoD)(5ts*0GqxL4` z&kVU>VP4SSc^ezZ08 zS6=&vD+vc&_pb8soa-*+K2lgG79{MW$cj&Zetiq0M{s>s8#i?bL1 z;+l64JZ!iyxmGqj9;d|u6A3xQUn2yGpa)xKns_z6=ID7Y7RgM>{x)v{U2RwYwCA_W z&dRjg3j6>qj8vG9uq#4tNsaZ;ElmetczLX23CvhDtsdL%ee)G~JIoV{f$1(>jqg*j zTg0|DZ<_skJ@6e9C<9;!og+(Mj=Ouz!|S8JYJtGnb5vcV`7Q*rBV1>uInBN(Pm-nf-9q?04VW?W;&HF_ue^{u8shF%k2$Iq z)?=iL*r}$*X84*dN6U}zxdIe4hWZ~aLSRCW(kmuyWVHEl;Gd&h_M)1C{4u$%$IcC8V@e1VB;kM-UbQk-I{g4K5-r{(@H;yn^gZ&{Nyadsh>lb zp=qv<(|GU}tpqjD*i6_K9j4{*OTd;T-at7yy@N8#8cG7=vjQqPG2W!279mzh(zb?D z!&c~{L@nfVk-rh;xsnz4@rC-`Bktc<+P6Eu+qbaWR~3H9 zp*A-0egt*DBK+hkYusD;5|-oDuU8@qKfK`Z@2;fr5sx#cn>G)$iUXiDV4n9!k05*( zuMi{3AuB8{Q{4e{zsVN2uurH7(tWqx_(2y;X*+Z1#Gv4hp2p?((I6j-qHznqV0Uuy zk+gOn0KxTgP87bmtPwDwo1`9inec&kW^e6cvP#`$Z%Aiy z6c*fGEHZUrWwWbPOnNmk*Qw&@Kc3gAp1#r<0UViUv~o}}?`2` zzff4gpa~=A`gt%kGLu7$zYjBu+XU$?>U7;QN{DMl9`zdfW2>-F)E>!5L1+7vDCo`dnfwf+^oKZ;b)7RqMeVQ7*>fIQb0SoThq+R8(z zYyu2fQs%~tkvRQ(xCwyz;64~W_bt32K|m_15l3zb`=fqvrv;qw3mIIg%lwBJJ-$Tj z5=VbAyo_KiS1%F+Wa~5`D`m&)8aL#!!^oV2AOgjbq4L5LvLP% zzE4c2fgFnUFDuJnbv%*g*CbJnb`9lzWH!4%$lk^MVx3W;sdtrX8hY0L-F1?GURf#& zonXsb2P=#E1#T?AKKVq>qx~ptLt^Vme+TOw6}eP3NtKz^m>N+!^b|oKO+mnOBv7SF z3?+ki9I(=Jc7PBr;UFl>>1mF)i~w}lG3AY~cRWUo0yo!)SBA5IG{e#Tbw-4{^&-F> zcEKBUDW!|iC7KePC4&6T-l_>GwPL86BjWK#DcI<_j0G0aX6S0H{ALtV8b%GGPh#-T z#({cV)HbT?=c`NuP0LzHiUNP5$ZAw**FBX>Dj(RVk~ED`4$}Xf#mi&Ll`ry@nYs-t zy9{7aX$iff9@RN9|e`H^*O6Kbgt4L}%@Zj#tf^fz<%t3WkMd{GWi_b$n$%X=z64}OsW9;N9 zlp`3dU4rRo`mKEAxL_njW%AYSt#u$pGIE70A>!c>Cr~e59>q9R_KRT_uciAXbt^4J z|G?&ohG_?6dpTjtmEqyBw9_hJT7o>`;z*@2GOmeoA;O&}s{a7yH90sVH%LzpG$IbC z#s6jK9aP4lD^>PNi8=G~{(TGVRM!_y_2JEDB8*EN3kYDw-X-%Il01NkMVo4tfn7v0 zdnWUYZ&sHbma_Ml03t(2OF5y%+2!}plPI4qc7ZV0%ou(@k^_tSYrYW#=q55T3!LcD zZz-A+=V(6|h1f9uci{L9Ne!B>csyXS7@15?Js8#7Alm2l9ID#9SiMgpO&MCwB>TMi zUfTLtRONHd?b?5np0r-=vsKn>?U_pICZ6H&JeBXo+!FG{<>K!HR9v`bN=7qrx>&~Z> zR6|d+sB>FNZi}gW7e0&w?ag~M$EOpzMLp9YjL6;Cd1cR2+_NeJYuXynO?YNA5G(cr zs87KDIIi_OBM9KA5MwQ#Zgl@YzRoGQ5-wV|Np}Yw+qP}nwr$(yj&0jEc5K_W(MdW^ zZvS=f%dI+fs^-&rU#n`aZ_F_R5QGOpnyAbE{SoHjOX6rjGBZVqRosK@W^#?$SFD^v zd@nVuuQht9wuLaSoCy>aSDs^sPaIRRhDj*vxpvyrf(e$duw)6m^+*3``AX6H)*Aao zb|8~#X7LVnDpioHeijX(Pi%AFA^>TW3y%tv^V(Ly#d(MEX&=@F$&iF6GNK3folZ*k z@Y#+~v~-;@=o1lU4L`)-Q^;FQD{)Mb2k`y{E)ooq52_9ir(6!oYYJZnl_!c1RC`6}c zF)^q9?;#hrta}j~#{_r18(c2mmiH3h4)^*~OBpQ=yZqky<3liS7Ms9a6A0k#*SN#v zq7&{SGbg*ujK{+LAI{2VxHXEh{00HoSE2QZxut*+1|_(J=zJ|*UrOW#MI*fuVocKo z3BE`f_ZK21GqMp(1G;^NTebyxqC|-TQ}WyPjLax{d}!1Uv#4Xdq1-w8n6^qpGi|ET zK&2-eDFJcSkxazDOKWQz6M+6(VnmZ{s;4-FhZmRLT4#(NC1xW% zS-Hs#!92!`-DTPQZ+N=BnRn9CJ;XF}iGck0l$EvZV!}@s1T}rdKQU)y|lqUDC zF>utDw(D5d_?F8sjiTHc6P6x?v6y!$cM9(5b2O^ui*v$R+`f!B+cLrM|i4ryyB$$5slF<x;1AGy z@;J$R2GS-ZMF=y3i>)Qv6z5fS;S^#I01N8)?9>fw5fB8NN!#3I8Pocct<}isV8D=JE~&IDnDEi1 zod1IJ`=AXne#Hok$^{7IW~KDtU;aRe?=#c&=7MRA@c$ zhNBa!QLIp653}ON5ypd@bi5Ba`7iO1Boe$OPbu-P1mELaJDK6U2To~b7Grkk3cNF@w$K=@q1C0DP64h41qRVZ-2hfH}L zIWb_E@a0?ri{U!kG)k^{q=_x#@JBla`66QcaMIaF_pf-kSZwTe^>sZVaHJhXVq(_i zUdA-*?o0T>{o++ngeRMy2%;cHf?FKXpuz%z;=Lh|SWJJ^-Q{w<3_cJ|R*HF8e@8Ay z1Y7zq2yaddq1He+cX(|Wf#y73eBB3UHvIrAjN9K7R@ExUz;ZU0!#A+Ft>5tW@@WM2 z*2z-2HP<_cjFp&8C%$h^|VI$7wI{P z{M1&!RzPHwT()eAf~hCuDu->aTE>29n_ssiz{VJkv9v!77X>|;Bzc{8W40vVw`tXi zA=wV-Wm-Tm5@Y@a7t1JkB8gOP1#F0ir`0MH$=-AGY?p&Lzn=-@@^A>^BS@#8yg2!d zQ)H9*XN&WrhOci!Cw3Of+MCCv|#|H(2<)&~03E zl7Yg{&Bh;8N_%=I_^7*VFU1~?VcV| z<^;A(?2||tfG*?ivmPTk;-v3w;QmlQ^$?#Y0H}?QtV3YDb-H=g8EB@ zkK~&*@q{Sq>{s*G3r$RM7j1BWRp+}RxOQ|ybx%SU=@0R3EH|=590$L6P3iV7jY)r# z-ZFo60V2;nQGJd53wxIcfe+l!X+(Qo55HV4(mcJ5TE$jC=QsuoAFaZ?l+ zwFYw9gL-RS^m)e+rED86MIj`}YB5uHC6>AvC@8$Uotxb~4p5KFwWSMNIO=f3+DjA` zpR>H5^Y4UMPL@q&qQYQKv02AACR@EUu|YAnzqJ^R(kxen1H&6bKo1 z4Jbj}xppV~oy{^tU_u>BbpZUT?y+dmDp_%=+IlNQCHfc2_n=f-6T-zknz;p6bhOnw zqCq%8*NGW#cMqo=)V8WvpZj)F$6r^)tYzp|=RHW#uL&~E)yjdchEMJF%g#`6HFV|% zpwG-0=_$RHL^y?dWU%@b7%=koqw)p@)?P!)B^+O4FrH}=V)VUEI=JH!aC=6zs1E&U zC0d+P7f5nn217h5CJv^>Akp2xw<*h-Fk)6afG(nAjwN5bXP7oEGX_M3)RI}%+pJ22 z${Zy%^Y8)q)sI+A{f#sx=(xu=vjmMnaFQYaWmhO)}}e8cLHlqSkG38%XYvj zOES|#=7j3#2FBQa?l$FB;VAT~NUDgX6trbG`jtIQC-G&<-Q-jmZV^v$0LVPx(N;;- ziI9;kzm)J-5wgBPjJ^`DN=~B)2 zHr<`3c&RR*E_v~)Rv-?+2XtEId2R~E(l2zlN+if>?6{B7D>0*wJ`oUMxhtUzKjpd9 zP-2v6PXoB2*XgeMqGU>+G|YtIb^COKw%vZRByJXIJB-^a?b=p5m=R5~z#;kb_)hB&kiuRWx z8)}N&{a9?BIN&&&9102Owso-o3G^0kXGLk!rK&A0^aUAjR-x)A40y%mOItUBy+2#0O5xej5$p(3BHdLct)ohO z3Iv@S6dG&}dTi$}wM)1&6t=+*)uXwu<5i1pm5m73IXbTTffe6OH?cAA zlu8WA6a~(32Gq_q^%9;9VWC#%4maqW7(MYMvTt}SZ<{(eNE=tUF)u6scEmv2xMNi_ zDD(9+T8i_T(H0rOB$T~j81Hag>hzDD6jX2aO}mEX&JLh%K2OYsjvAx<8!J{JGH?lu z@S}?4dEYLa;p+iGi72*l=fc=3H`-X}xG65loR!iww6>tn zBrH4zNuZ;Qdl(B%W1$6Tdk$U4^^cJ=5bfq|J&u9%WB5?k9G_np?Sr7|0KqN8zs~*x zWcUEt?t)MIA_RMGRCcCQf1+LoG@*YK_ykgc--ft2gXR;0cE+ulmYHeOQ4dQ5Tc-TC z4HgkZ3Y5e*Rlxg=nJHZ&g9_VX{1qQoLGi&p>?|sX*bCrafA@Aa%B)F^{|n*Vy%+uL zYk=q12B>2=jRWhE&aeG_Yb@87S)K-iYR@9j37=u43sj%ZnvxQ*JXwtq@L{YXyO{RH z4>KL?ZK`x-6^mAlnIwO{HEt{J$?g}{B#_S?BhCz(7!wxD;!|~sg+B!^%Fuv25ZyWW zD7WrB0m%DQKkPt+W*D<%K-!}kFHlyY&%?q+_TsL~a}1~_=savOY{+%~v=|Acxi>oN ztj*Q9QQ{r7D93sY($Q*+AA-gvB4^+$MExr8Ik%I4!QwTQ2PexGE-T zKnGK)oW{FsMLWL|5FZGdzUg|PU}-@?N-dC>!V*=hR{{Ekd4T^Cr?})}7Xac>_uiZQ zSu}UE$^ZReJa+|B8m|`qLRRKiIL#l=c3Q9`ecLOZYRo<1*A=vGZAj=Mcu5>gMRIev zd#YMm!NFZ!Hz>w%LxQjD_h9m#*Ts5d-81-^L?s}Ep{gk$VCH6Me@OJF{V!9Jr5U70 z9Xa+&mBQiVNI574*}oKMm~nN@f}L()F+j~uBn&xohKER?RY}0L`8W36CMc{1wC9Q` zoj64iDaW98W7{F@p>PlzuVYcoE}Y+xU1P1V7iJ%5GbYWagf5K#$NlIm|93Z~@zT+( z0``k089&^w*|#R*-lYmE!^fznv@9!h*xJV6i$q7resG2HCtM?P#5=yHlhG84d?}p4 z8!ZqCtQTR`4Kg49QO3{egptXZca?gH1j9o4mgv5pj_Vn=!*N0^zQ?b726GLt?(1!B zJXHgzHqXT|!fPKE+-rfFg}pa8_tSDFf|tl=&CKF5R!2p!7Z*yI?<6Z?#LzD*%d%wC zoe$tAq|FU#1!awW*9Fq@aYU6Qv#~T1LO)Dyn1A&gFaMpO&h8ixvUp51KFl}pO_5zK zBGo?gNsoMR3L-RuDk|PBOLHR7SJ^Sm6v zm}szmtp@SuWI=mX{Iz@G{`L}KnVsFi^%woK5oI)t-ob8Yz64utW)Z0$dh@-!#xWbagDI(GEqCrfg=u65Xv8-zeqXuH{1t@{A?hKuq@Vphv;DO#{W z&GK>eQp6LLnc(@U1gnUB$rHia&N~0v`VK@iQ300H#7^*YSGn*`zIE~*6c_v4rv96RzWq4Nc#ZEwC?j8Qd3-!bykP@D z!fLE*^RzVw&NxiHRDjz^N#79c6-@i>5Di~xD2D29rc@0ESlPXV8&a7;2_D>tsOYLQ zGF7JVO?kQ2xRZ9Mq4fcpHO&uN3nrFd+EGQUg51T454c{4yy~nPc&32SO@Ve%fCJa# zgRXF`!W5*ydv0Gr)AQr6uT5Sneol}2Np`!VyJ+N0XbuYqMROUoAI~aW!1g|1G@SCN zN!4lN=tZ>flCS7&Q2+!{qCvaFn)!oSJ&Y+mdD6UDk)x}tD!P6V?DbVu!7At*N}kv! zIM;_Ae4?R|(gj9K_C1V@!#QLiHtmWiRsvg+*8JbWdAN6~_2%di8fKaUEsqCHRRPw7 zKQt35jT#l9f^>i+Le5>HFtKgKs_f&YbS<$$eGf_*O{Rbv2G73nEXJ%}^Kja+AuLkl zzh9fZ;}l0~5~1nroftAkh?D!U8H;D}I-rj*WR_EUvj@pKXvE?W_E+xR5cyj%Zap?! z7E9R*-nyHU!VyAj+&=GM`@H#H><}W?HetCUS1fB8aK(yi(7YqCy8Dsr*&VjbZH&%@ zs{u`g+f7c66|_%R9_(EyE@sWrB;rbnwT4951EDv`U z3w7ju@-&TR8t1;zh|X@L7JNw}Z{mVS`4L_G!F_Zk=6nlJcb+rSx)_jyr$m3>hJ*6i zz6`+DH4n*p%ZOp`8DNm*%>{&m<76#7P+3$aHe7;PFY&`U7x@_T1b2MNBsm6SjDgkRT{e?YFMp~D7q>wvqTarSH{CMa2NHU~BGtT_hZXC~RkMlSCIDo(K$E^8K)r=3Mvhq|benl?& zGl-c|$a03IpPcY7B)TVV&(oY*QV!DdI6yQ6Z8_YMvv4Lf8Q~jsgh>J9oAGx*{;q?W zQxa#-6#@Eb^-ixWiq~GS8T;D&d2qj)gatZr;E*T|-r8L_Hd^vO4 zpfhsaa%~k5hYnoSrTocTz{gT#u^I(u&%> zNDJU$zY(FicQhwv_B5I1=-Dme>iF5;`*d^Pn=61&&f*$|XrXaq;v+osFor_#KDjbf z;Yg+={qoir=~R07@&n8lljxr)f?M&Q^I(+6B!Vu?CL;qzy3<*g9wUeObIfIKr$-Qh8Uu&FGl2d{yVQ!H!z>YB}0b z_J4c7y&G~OI$!l zi1@_vAA4$pK;yggOgMem`KJkz-&grd=5`G2Puw$CE#};<+E-Y4FLm|<29j?3QD;}A zgh^0u9Bg%*94c6%8_GtiIkMzI?OBF^NTi?bV}|2$JYpGtzF@UUt0AOaHkZADa9!H~ zz>$VD%=|GW=St2t%|^6AeF(Lxt(|5sv0dwlr4KJwS8#8|0DA9|zM3|5jTdmE5=4*8 zy=%#|dRAMcSlaAbG`_?$`E&KMh#k?D?^nQyA=`1MHTn!er(x5OE}l&5d!#P8r5_Kx zymkFVT6M-BRYqGmQDe8F@GAJKqGjxYHv{+_*9JWuT zeR1O5@cK7)QPOeyF8$QTRh2o)=ZR|Z#ma;}^m(Xy)2gR2-Ukf`t9FtfQi#RmW~p2h z4)=}9^mYXUTk8WwwloA5JX=V}tfugD$AsB_)krd@mE>XCqHH^+4>_BaM1)UjR_g|s z?py4m@Tq(&c*xbm)e1MU!~BrH1f?-uy2RnBSx8gfdDC&!e(VHjX*a0H*KF`%e^buD#9UkAJ*$x95k? zqZ5TWb#XQcKreXyKtHL6OqiI$qjZ~_P& zG-Z^>qivi+rowEI3$-|*7Cmeo!O#Kg9F3^zg}Kho$$o;nEeMYW!uHNzZ|Uef8C>Rf z;cNfYoY6LeAFAgUzsInHrv`fIh?}FFRuf$d*Tt*m@p)FX6EXWi;s<2MLKxmK=}v(* zb<=tBd>8H3r+7d4#%)$~mvK)u7J8?9wtpSsE&~8_hvI}mcTP`lSG%z6OQYPG{+n;; z9FZ-@MGptaPW#yP&VzLE#tz8a4_wbd{ZlPdsuLYXj&JWcX!Seux4X7vC}!xH^d2Fc zzBhB;S#0mhyuVFP=I_&?h?N{FCzQS(@T)tCdl%QaEPVCSYltpTJt1m2~FJqUP$B;aj^Vf+_xXA7OI;<)1bk?tCF8%XWin zSIwJPX##b6!&V^A-XIIy`XBk!S(@LyPGjrTvmU(uTe{JQh)^Vos|af(Rney^hL%80*5D(Jj-=^ z-(aB% zH`X1)vG_#+St1MT0xC@(VLwAI$Dm1}d@n`5fJLmQIkE2=8`U-wlsEww>>Ym}l->TYNw1*V~^IL>cA=$z9ti zQ!rEQWS-|4*1`Up<2&e&tfReu`$)XiY0AJ;k`fZV@EWMfv(9#Yt6UolDnmcjL9c{t z79vFT(~^iBP$v#P);Yc1?fGV%2^VgSf23)A z`^LXb*Sdk_{dBS5Tp0J*$S7~3%nhMv@`>R&-TM!G zudGbDXip+5^3YJEmYcb#Or*C#@Dm!JPz%rp!evI_S6Nl7iNzBf9O0nSb5>tKi&vTW%fU_b3lyQ$kf^7M4Tw7kB#JP~Bgs<_(k8IMHdsadlU4B2D%E_0^ zH#Ap;0o+mqQUNl`3^Jqp1v*I^kowiJS; z`6o6jA?7|E;e$%(YJo>V{beP)2`D|R8|t2%moJA5xvtac+;tCfp3C~dZYDP|jKW#Hcsy!3xvlXHBzOLccc&jsAj!CSA?PQ6uaLRPY0T@5=&JH%-jl6@DCe z>M;nYTvxHafM}^@Q?b%;>a`Pg6L7E#-UCr*GbB3JQIa%4BAeqD(0UUzJjJ7LQ@b?afCsAXTXDl*K z7vnYKJN*s(iQw(Qe{&$RfAfwzS$$Sx#3`-4n(iP{vHLu0WkFvO1W2PbNazX5w2yL@ zoHeD;;jI{T!1sCz2DZ!Kg`DP=WxbFOkCRlOy$b~>A`aAO%JKR5Jl^VLk?}zwS7CTWO&=tS9h?@)VU1z^BRP&?Y|9+W?2#qA zYr5@`KyX={M$9ZbM0R`Sk|eiaHV{r+cZPtGR$3;IaIplV@KnoW2p6Ew@~bq;iiw(- z*@qI5WUjq+`Qy4yv|uWXm`VY`GTO*}mur-sIV`nGC9i;KusYb8{bJ?ZIF(0J{ZK{w z3{0ExrG;AeF6v$+>KwI+bGAn$OWgI+$qP#-QDCqCM}GY?ocZvIFq&%`E_Wx3n4vDb zl4P8cMYv?vNT+a_qLiImZ_4gd=XIA;m%i0G1c^CHejCo{fCmejNvRd#FH6v4hN3)? z$@yH(_E1xnAWygv5b8cy7CbjQD~pEs-I-HP%qFmn&c2}75hy7;%Gq!boXn<&1wq*G ztjllIM#4su5OmqPahe>F0~s5B&__>y@6)`|_s!9`EW@benC16n@xJI?hOY@vXlJH| zI0kn7S?>VYD?p6OMVR2rn1lsgd4X}3jiXwIz-+%m6ZG^^CG4HT#(IPBQk3$hkqL!Q z`I9(_;&pop&9>)Exqy7Ry?N$e*W!h9%vWHja7h-%Vw?+COai`xfs72G6oW~plsM=I zfrG*t7K^scoK~%mT0#$R7VRL^njWk5Tw^RuAfp$Pk<|}72oW~MdXsWI{FPkZvQ}Le zt^-3f*wdpdq=*7}}&(*cn2gP5tZj; zfq>_tCbwS(|2L!}|03f$L)*6LHlQ<^0r=pe}jL-{i)m4vo7K9Ylzpop@-fj+& z+2UFtX!hzs%_`$~yJJ=gEf!lHHXQ|0;Bbz|B6PX%hXJNvpadOjBtPjg>})jO_ebwd zxCThab}AxT*ahlJZUkyGKSi#zj3Gn}9=+>~%*e!um&KU|b<;HnvC6`YKFHSk zy!b_rkydYQ+~=5yJ$YQOXA;E4w5no(4B*#ThYeO;lc3Nv@5j_t$G)I;mG`abVRWvL z95;--5nOlTbkWVTyjYmZDsz)sFo4BCQ~OKqBMmvbc7YUUO0LC#RgjO+l4E z1kVF_j#zb%b@o$O%wr>+C)qfP7_air5?4=qDf}Zh3S7^!mn6V~yB<6oGW&Rk=2}YM z3Z6x?yfv;OWesV;JxR_%KefD2iCwZD+=679%>*Ni;n1z@*zbn=%@(HTdlwH5xuuyj z{f(zZStDDNR8$GDIZ~DFGGutV9YXAcu10CqJ8oL@{H8a{#)(Ngdya_rAHvm!2VOx! z#wP?1NG2b!QNi-aJJ}o@0RmY&mgm-ToILhe-#gvVP+xX87| zOzx;UHNYl*Y|}q4fcD<*H)n6pd8!>2ZXl1yuH9l&G_TAaHOg%A_KXO(h2QcWzN}KR zWa#@PYbAexUu^Oz(3`#uu~9Z(yKP+Z_I3q7y3*%}ea=9t7VT9rOV}?=p>UX~#xHeX zkk>gZKX?rWa}}C~Qm2ve?59p{V)f6v;oCKI1Trag`24!NdhN%5$$}D4&tB?)n`%Q! z`P$ch@sKez%dAws*=h)T{@(bh)J#h~Add3}?9o;C*9Ur}J#o7?g5+f>1F@ymE z9ABGa<(OF9ZZv)oleTe)SR;kkrj;tYi1Lk;Sh5QVsTWy%Pz|f6cu>sd@-KD?gZ&+0 zTxUK+%ye;Fd;NS0^XU>tZvYkTA{a*Blwc3CQ?n7Tk5Wy5_L|PG%}V4azA?(Cb!#RyMBk@F;!P&vChRF@>;-p!sSG9hLbF$*yw;AHhSlp2x-PkktpyeFh2 z$I)KI4I{xbqVJB5kHihUuOm+U^|E+$1$~&$k%_FTkORqqReV4}IV#Jd^^xpTlJ!8c zjBr{@^=OS&6iK&`VbjIKVTw{t?`R3XpO-WX`<5<7W+~qtkr05Zov^j}!mMg8$;5d{ zZZQTM-|xwfNeKThnNkAvjKkgo;rj=+MUUK=6p3QH#j0EjC3KSrcu?R1W)`cKLJI|9 zyeN?mDG{Mp9fV^vReoqYd@LrgfaL6$M#_zh&4W1UV$ZsOf&jtN&XG_!_{Ec!AVy6^Wc3M2+EM6cIzrDG!Dqw-`li9lzADLy#C~@LB3G za~i-(7=S+;5uQPZ{YSF}IE7ovV{Cx`PUs^rT4ppL4%{EZ!Sa(f@io#t`%G{{g0V7y zgFf-qA*G%En;gQLhU?+XOM1+t%}gL2TPC?(P`Z92;6{(hRhbnFem-nFO;KEi0afI{ z%dO?6oI7@nb}K;TxgZ%PuuT-9e)=ctxs-;%X)~{$-%Q<#ska*iirWPp=s+cI`|0mRf(h^7uO6)OHw9Ms@rOS${ zZY&2wwV8zL{uHV}=1UAg8BSA%)lBwj(A1sx=138D9~*q1Y%vB9Qk*wVF}_6d&-<`_ zvqobK7O{X5H!=^Ru5G7+0*_Co!*{)s`_YVPtbJlQ|50iWp#M>7z9#&Gte|vKRbkPR z@8c;!&coGSYaP)_=MKg01V#dh!`>p!N|Xr(ACbfIkS7TvJy>_tCUtck={yS}QMW9PL?MuLGiJeUS)-`p6x!DCtdnQwnOycB?aB+yZ*w(x`(8LJquw!U#kb%Lh?$x0;x`>YJuhH8BJuPAzf}?Llqu6gov-JQr9b(Y5 z0uq0w*@f9HC(Ncz2w|OK%3dxRFA4K`2Ig_pj=H*@sHH(+@v#DGMm5K)yZQ`wk&Bb` z{iWx-J6=k6S%if{NM6_yGi;^sgLY|mj&5OetGR2F-zI83Z#w?9&NUZHf&lw(oE`=*45_RZf|BX|j2KaXO?Ch&$r zy3btB)`Lum%7)0g0!CcQdAhW~HrT;Ugw33-F`X}yuj4Thcb~k2cYd{$I*9Z{EwJDf zwW7>Ob@~41xZGBI>I!+$-e&R)QP*e*Wm< z$F*{js)iTpfHcy$%g4UTjzVpX`^-qG$Cl>O^jTxZeyNAnl^-~>XLcZrGA*O)AzaLj zWZ<7ci{wEIe^6OKq2A~DGEp|QY(tm`+;Vr>!H~V3E~xvX?|~r`ff4k;)l+;Zm(Z!r zNlSBIslJ?aP__j^>FX&KF;7UEn1s)u)X1tU%J#JfQZXI&Ka;W)L&)|>+=FA<8nQ$A zS0E!m5Im=Kkx~RIul2Lc_8V_=$8N@DLvRAIP1#|!GuEjl5G&B?+}?Zr)x(l^A+Gk65P#FkzeWOY|q-wX7XRlpo4- zA%0gQ7!dy>B~SKd?xz`!#BB?sD_JA~2TA zpe4R{;OTA&V-`N6B}_;i?RD$y=@SP(@F8*h-4=sC@~Hr|Ra;NmaFjv^oVQnaEOl7X zZitew;mT6BXRNntZjrC^UW4?cH4;1bxV(h|D~B|MT3uT*CBhOJU^ZYND-}|0iC!*S zGHA8yx7Y&D7)=%ZYC2BnFIt{r>TY~Lr+2@;YTkNGTK((+hhuMf6nu2Zfh1vRln=)O z=`csvws%^u4OH5&)b}$W+*i(M!SX^^xRg`J%*Wu&Cs)VuK`p3=r8s-QZY5z;1$e+F zs0wp1XT1qL4K%fU?2iJfB+j2yMFRV%>`nb&2@`MH|19+DPZ_2WfvC& zLR{K8FRhnTV)R#5sZ5w-LP{e%f^(4JmH7BUec?szDH#?-{bpBJtLI4u!zbhUYvE}% zEGIJHkL6MlU=MPWAKpinN_w1L{T`KR6p}e1n2gV?=;%d$!M0E;B@z(oY|Q($bc9Cj z{m};G#i@_eipcM6giX`Yb1~nR@+DwyVTNUIxp2Lu=+5YQ<=+T23~|V{&51!C(=o6Za`UjM0vKQSFV5dN~{dwXB4h~ zG9;S0^T{@OlNXvj50+as5;aQ)4fBFzM$$Oe(?o&&P6_YpbQY?=ZR`m2j;2~~{ zqJEVxOX{|M#6XkWN2;@_`c4#8si=vaX;EBmdk+U?-+H!NO-cq2aVkh6SI zh`*olmFM+wan04#YQklpPkpKcgb57&dq%F~HI5In4nxY}&g9*kPlmbbLa3GWOB+uc zgW*S&KZLNYQQMuP!lQtPpTT+VacW$sEl6Sx-qutwKZ!>1U!cB`xz^?3a&hsb{sn39 zR9kTSg)Kq&tY86DR>*_`iddtCZ(1}dElfo_dKQiG#t|uZyQ1qO9X99DdNd2L7k%0o zCEnI@@N4#MZcu+d_8@t6@{MCtQqrwnZH~K@3O4wYFrv#%%E=E?!#P>0c{QA^wJRai zPh#oVKukCZ1aiRak(Cat)vR5J4BTHXzKK z?HWT{u=(_VJ|NpHL5taWVqFt2C@qAVY1ki$qr(pNoqes3B5i(b!X2*|DY<9Ti9lL} zz=Qc?O4R1Y$!OP>%T%e7rn`f9iRHw8KMj!zR=F04j5=FS8%((SIst!h=QEW8UL*!ecL5obX~*gVFcf)Ka*sp8;!vJ^cs^@^1!(ppb- z-kmSYwi-#8=1>`;pi zp;3N}++~fNCc0~?468a+eu3hl+NgmaA9{}0JT{(`V4<(<B&vX`e9L>T}su z$?~^)*^yBaKe0K)!|#l=*5MbKJ?O5Dg!eCG{gZz++lZEY+%I=7{RAYs-&aZ1wb`h35*;}}(j{P${ErCH> z{thCp*m7^h+Rx@AlD)llIolCG-q?qvL|aVj7kHjpxQXy94B>7Zoh+7|vp@2eX3K?# z@YW=Z^P0Z%WuH$RR?YBEPNL5bY{7-QIc3*7>Bl84Y!8hr<%{bn30 z0rQc-+2?zY6VcbiqQq^Izr=ZiNc;#xCEJ!XfR4^;ao@w~>u}gXOMV0$Ocbq7bVD2( z4*xa*ih>X|9vkapHJ{JQMoQ&CKL(y8L>bY&MODD_L-18>sk#?obg4-z+DEb48dbAs z5zcNl`ST;=Gs5We?8;_Knj8qX!S-gg5f8enG-JXmBZ%$_W1T-_l zljp@z5}x;eo%FZCsN$$gTr78>1~b83qy%SSDJO6jAs9%;h zl&NNwGz@$qn~9UVQVhnen`5SsU-*hmA!iUg>s~f@Cn9|3;SQhjAP@1>$NMIzr)euy zhd-pEhl|}z96fnO-V0af4VJ<;_YMa)nog~Jf$ADJM7jCm+eh8l+mPpr)6JvJL)D2O zS-w6=atDEaoPlD}9c%_u=NW2RW~;PCFFuh{3#a#}L`RZBSOZlqyj`7Fu5{zaQEG~2 zBJwIpmcQakTIV6{hF7yKP~3>2n^3SqnyV0E-9t32`TRoO{=|S!XZbo=Yv=8 zJ+^{B=I_M*#odCc7alwzx&|ZBXrq_K;e3v3FZeMKUi3xx3p*k6e@64&9Vu6OB1j2D zNCG8iR6|q^_M0s0_yxt!EppMWkA&z|Sb7L{l9ZoNF;Qg5#}oi!MPD(5DV`!+MPDq# z-#?c0!ZW3~Nw;^mOpN^H^A$a^))^N_dE_ab5fBV99FaB2%2nbfv9db&ITs+0&hIpo_YbHF80W;9X8HHk(T1ww)yj@ ziZJ1#Zw0UYhs_7=rVS<$3(%tJF?K$|Qa7&9j_$|^KMeVduruAI#dA$w3Vi;Z?cGyQ zK#k=y13TuKE{y(I2tV|iE`rZ6@pqg` z-ZXcYbuPiPi?&Bs;ck+qP}nwr$(V zPIheDwr$(Cb#qSle@Aye)O$VEs`0J)&6#(Uf)T#JWgXH6#RjEL|4n0b*NtztMd)S} zFHgdRPDm^B1Y(N7Ye_?;+!Y5AWb%GQM2Tip-T4ZFF%Szl+B956Gw&#E?qd!|wA@q(IC&YbgH4Byhu>U^8RN zGs?qZ^ebh604rvajpn$kmg#j|297@o7~Ud=0JB(tSrUu1IK%l;j4>;^7>Ud!c(ZslLVQHlRhW^r3RykfOi&6I$y*}} z9tvEFpeH0u=Rbp1W`nT5%ETzssJ3Ovs>CjTXh8r1%Zd6qF&L#J;w}E^*I`|mafZm| zM;marMIPjV1yV_is7UT35SJ?s)x|*NJtIH}ELmb}6oBR@40lB|qd-tydasWh*OG|Y z!qq1{k1oI`X9{;2Sb7Er<7vAKY7eW;*#}M_ef3l_N}zA?PYc{*ni^K_(>jij$`ctc zr$yt{BpUpH9v_2pG75|=u1-tz2MRLZbI+atKjn*co7w{q6scm3P>Yj&1vwt9>Ne%x zXdh7A%(}m}`(zUnG*r#lvsCS(hJyB&4kbZK5%<-SONT@?TEj|{EF*;z|gi@jNsxzt`YzJE{6)>C@t!JIn zcN?0OcjW;H7y1Xr+n;%}NLR!6(-ZtXnM>oYnmr#JS~ddZ9v9x@ukF|I_T9dCoaJDT z0H{I4zKq17(*Ri|)!{MqUCxR2`Yp=dIhUx85SymRwvP_vl3?~J_6Y<$ZDKW?QiHv- zt=c}@vLIxIZ4VW3UdS}QrZpfA{(DQo)#*~tjhRhO>3#hU1gG|G7i5}1`_(l!5!~5o zQqkqF`!!qrZ1_?HG_AK>{asQm(x_q8yof>2=ei1!WCBaTo1^@T!CjO#0O!Q-GeH%7 z>i;aUG4S0{-pqexjLn5XKvj*!NrDEyd5|!RWVoBYg>mN5rXqPG8^3$09N3S72hieN z4igk(wxT66;GgU-)7j(m+1lmvcuFQ-e0$f|P>{6+3D@9n^&jC&Em-54bck-$ntu{WXmZkJ==M;^zaso#y^^uu>^Tz?BEh(J zomepM1({;{b(VK#djHbjpOCTSgjHwgf}KFWSLH;0a}`#xl|l*0B3gW7jh4V7#dUBj zf>hXn;UQGUGyAFmLp!4!E~8wmu!TM;P3N^%)JmUG%@O{BB~3e^+?ZO1dD^zi;6qUU zcQejd-B$5zk4eJ&Ft8D?84Koi2$*D?WN9+V7(G-As|B0XbocZFsy(lsL)VL%F#Xn zaQaU5&b9Sl(*SE8KY6FbdX{^Vp`N|TJ1JsmA+?I)X|SM;ZQ0~ind?!Iy>`giMv7LS znM^oCuGFMsd(09SjtdcIWvc~luc0z?&mbEiNF^R~;fQQ?uR}CPjfwE~X?w8{cQ*JD z&E_l@;I3;!fWwF2z=H+4R{_Ip`igU$kLRs3njSZMWU0$sr;QUbcI*d3cWQTJz#-n8 zL<}xDN0Y5SX9BK1S@-X1vHhtIIxw8;o~yhUKlF80Pzl@%ZWA8ZW#Kn9$A{Z`;q9RJ zSl_zPVe1)0@h(RhcCkquW^F{1TceYdJM)dCZjD447#i2d0Og`_X z&BeXA=%Fo=?6vBfM#Xk1TQk18+&BzG<`-5Vf!TFiJ@Gs~!UQdrdXbXlf+$YTr5HIN zAWz^n_bOL;!86h&al7l>7v(=$#LR%3jEkoymW(9+UOt(70z~-8;NR2AJBXP${#g51 zeUC`itY5DCv6qHt@ql_J8h)Q>~`l`;bW{XNQd&f+E@=2iV307jbsF1fYAHV82klIy@WrrQ4%A* z3b7jss0vsO^ebBzF1zS6QEnwf02?N~nq&-VTy72^12=6(eAv(Vc+j(nYvf= z{>1cS>=((|$Ji^3qlW`N?csj!F~GX!K5jLeChByEadnLx*`B#aIPU%Ps+S$LlSdO( ztG=i2O%!%^H}*W%aA4ZC=fHh>7F9iJW4z6}5`G3Ed=k&0Jy>A`S{O5Vh|rxDBX3eO zJ?|aL$A}MOoRAiL{p^U6-<#kovGf&kG(d1&IaI1jy-8`WNYr-0m<2*E@G#klDru*M>cD z&A~od5hqSjs)c;c=Yx9D-vBX^&Nsc*qn}1E=T5ggo(wSF zY~GEX9gq9mHVJ36S(_%WCm0gk$%u*f9tuus;bJuHbg{4P;8fbpiV3^r9_kc7>Mkvl z0G_~EqtsMaBk(Q}Egm!m==mUBNnu_(VRfHDS!HUS5=%5nX7~Zq@E!skHnK7E{A}Dt zyequTUtd;-pSPii_uL<@I&3S6A(tN?%6aPoVv+CGedAZZ$zf^Kc zj?LMJtTfNszNtN|<`o}3y`lY==^O8^@{$mbw{3EAs%OLHxXfTU)d27oLyIB4S$Ch= z$7o9gSKLya?fwzeK{~}t9l4lZr3ltQH!@_fIj@0%)EfB2IM^>s*{{*?ta#T^>z9Pn zOXS~)G;~&LB=y^3>z%4GD(}Rzs#5hOR)adeqDW*{=|cc!n?5X6WcD>)EFOgZyQRK$ zC&-Rgsj6_cDg}O-zNRTjS_1?T*1BMqdrg)w15XD_{6peD`EMNHP5{6E;4cDu!^mYr z^kLZuIiIc@2#oj2o#UYQu@u&;$0@W%AGMmsK&Znu3)cr1*$FA_a z^K)H!`kBnTRrLX9Y8k2nbr{^p#Q90uG`5KJtqM!Tbhr&ubPX~uQamC!<^9Win)xNT z-m*NPPT3Ee4C&?H*qrNO;U$6N74gx%3w_2=A=gak@Ws;!BqXeyymw1^oOyRDuaojF zpUq-{4-c=OoO8%LmvEKAN=$FpT-i#(x#4m^9gfKa>fRP5A#?zXv|;Q)$I~5K`hT0Z zL7H8HaHk|Hlr(2DKt*`Zxf^Q!!nX*P(T)ATn!R~D6@GFZ!uO8ICoM?cehpK3%(z|s z>|9UagHRTZPrXLXn7^fiA=PCzcXJDL`R=OA;hqn4t|HM0oN5aw@3Zgqky<3wWt_bj0q<=`9JsGmqiK> zEar#(T(}{uv6r_kQx0FyEyY-=S~s(+K{T0QWXd&P24oG*c0#Y z>b@QqYM_%{$u8Y6Lt%IBF!Q+6fJvFp1AMW_hE@cGT3fiy66FH>Q|BvPSzj~bz!C+= zi>0-HoV$y5^W2}G$N~LZVd>`%W|A{V!fS%6h9Mm;f9;6|?vzqtDa-*x=i-@fi^}g1 ze=3?OV=Ot8t6E;`OS3PeXSAqdK;g-UDA=Lk_1qx1l(4Q5%Vc!VZ#}B-prk|e9H1<1 zI}LDx8UtqTu)k6Kw)b*|>1OJnKf`P^nC(D3+1aet{jr~hQ{P#*NrVRA>Qt4iXB3Rg)dWXcOZ}arqRfpIzzcETWxrPEG6RQwW`?Zl>vJS-|BFk{PR=*aZjYscIlckv}4zBz%&T zMd$=tj4!{n5DykvJkX5PGO(tY`%5%W2(x!mY973Dmdr0bjBtiqR*PDGoot)BUBDAz z1K39d-zcv#sCehhqW$1Dhz>7S$z%q8hlhqq@wg9%}vkL+Uco+X9GI{ELzZyug=>vtwKyI@$9CK{{IWKcDw}tjuxXP zw=Ul6c8Dir(d>R`}ept$g5lIzHszM;pi8^RzsoOL$rxujB;NF;^eoiz=LzIsu|rll7~h4 zPkVMwAsqHl;(-!XMVHX-(NlWYb6KdEJEDp>(mi(A8QVY7MC~yF6SuevBJydj!h((@ zJ(Y9Q4(ogOo^wbxY8M~#KA#IT$LkAR#4M=~e?KPV0I7F$7K29ls_YsSx3^?^&YE05 z7wF!s)r%b}xcHM(tU-39-Z+!AuFU&Vn5xhTRI;33OKvfv5gQ^m*e zy~2Qf41ph~RGndx?{yIWOdz_B?#)vw^%fK9c^fAd7Ix0{d&|~QLVLGI4Ve6k%pEyP z?S=$4#mBb(w>}##1KP}X$hs>iD-rm}xIaZBNQ2IO6|HQ8?3k|cCnXE0L5I)D6c#Pi zpfHWW_;zsT;J^9VFpO(`Px4*xD@x$_cx5Hr=nmfDdZ4l8&ye7gDd(UO|3394iB zxPKY#A)Y0RSn|-I2^YO|J^pT0dx9(Wa_K?P8V~IllBR#(Hstcgzc_|G4(FeJGeTN2 zKGqQ2=9!u1%97raM@vm$wN@cnZ1(iS6g_lys!}ssMZ1jA3)PPhoeY-|HfVqIv&0W~ zz=8c*eTWZA95WQIl{+N&{T2q|EJxYSslV~rFtoF$2}=_vs|w9Lgza@g_eDIBspFC= z`AL{{9uOx*RvuDQ{Y{cf?2@wZ4!C>-#PrYQgj{*^LUjaFFji*0B%-S7P3k*$0u0v& zk0rnIx6fI>$~SMSug@X6?%AW0s~Nifc^xf7;pna7!oTUu-fwT_%r(>gV%*83w_+9)&8VOMHq8$sqXA8wBK=+W?(H;D)J1;*di+dwDlE zc6e0p3YEw_8rjbw+W^6a>!+vxV(NmG5uSNF-^uhljfpfMtNS1%GvJrC(CU?r0++=H zSXOn{>F&g@NK9gCx6T}x#}2|PU_IG&3ob?PT@(%!cE|HN4g~bq7Iy0P_7r>cmyl-& zWxzW-iYHI~X?)^ik|!TOh9BOnOA-vLiDr@ReSg*&#AP6?DQkbI*}gn!4eB-& zuVV9)??92OCfFCavs^F@lS-R^MWM%m1Z!omm(ViEI^Vj+O)*kw9B8UaE{ONjb* z*3TbbTslgwqw(Cu#x#R@mLOl*?-W3CC<78~4HYVyR9JrO1^$?a<|N0@OHdFg+3+_P z+=Wz7zDHRyH^&qFF_ElVP<=D`bA;Q?|D_P#FMz!@i&U+-23XkB{OtB*k3DkE&XJ?N zM{`2JYc&gB(~q%I_JDBiCjIK`-e|a{JkE&bfZ7Vc0`9$DoFi5!MR?VxCKr~@4jB|nJQqWu& zK3;y$=vck-YBNWW?SQ0~k&hEBcrM+O(2|C0CC>FQj@e0z$ zJ5n%g|H0VozvY^^b6CN_OPt^M>(v3wSpfIJo&CNc9ENTX{DL#`-~U~XYwgej4zmzL zxX)XNv*E%V_}63@W5CnT4+$XR#&G!smO3?pXKaC4qfOvrFEE7kbB^yI-#~7KO2-07 zCYAOAO?B((462<%8#B!5&!Nuj&hZ=jeIMhqzgqa=7@3Z7!Q2Ev&AYw}(|;kS#-OIK|h zS9MFysmwq_=ip`2h+~1L<)dYkbs9wpd|;{QuAlVr-*+J%po9zit7TCTD=NPGg4R04 z5?z3*3=kadIN)w6+xRqf?G2Lr3!@5|1I(3o;{{GDd4V#F$h5xP| z6F_5tr3GNjgw4Mm)Xo+#dBPT;E!5E#aNmRlfN|L6IB3+knQSVnQv3|0J6*3FN;9z? zr2lHU@Q|BHRN!SZ>MuB7K0lV|zb|oBr9;M02p;DCpaj?+qm&TybTK42y$0tUV%(gA ziB9z>L8Jxq4O8*@R*0pbZ)^?z`f0|rcF*~=-h&*SdM-9G)_TF?<|aTpVZ70Wf6)g5 zn>_*6 zsh|)>%U4yv{MYKu>5hgD(G6a;0-%7VR@;_t63oEt_tfir>TJRpKCfnZW#>1L3az_` zS%}(zc<%JBHh!9|5g;_5o7asoWU!@`>%W;-F@fY-NgLo8l*0Cnc_1TsaR=A>1HTcgde-Y(yh}4OnW0 zWdE0#aFm7K^E%vq&qDNMC7#n@YbDBg?>x-1`!PCW?*|Psj;-A@1fgUUPkHZaOUz5o z0RGh@7rANJj6_>-r;YB))f0yX0}V4GUer3z>GOIrf#0o3tz7KH{V4Af<(J7nR zVeM7$w`eQ|zJq8{`#-ytV^>(H*TV#~DY~ri69vhv%+BB-J0J$W_fW^&EsnPcm(x^X zY9pB-#(&|oqO?6wkW9I&OAlP>Z2q+U0OjlU>yD@uhLO)HzW<~Eor1YW3tI!gz^j0r zcy8VlyG!sF^`oeU6ppH>yw?fu--p*3c>hxd^5~QK^kQh!&Wom7)>Cy>@{Dh;EAl+& zg2CkN{;VfFFJ7G|4f31wDl6cQzn$7NMpl1%F9;xKNZM2$L8eQXr?b3L=dACJ)Tb&} zPGl@f%mJ+UR&3dmdP-r17SAb`QEmo0({1Vbtbb8FX)zjvbGxC&Wb9p*kqI#5o?(V> z20r6Ue|L6O0j)$e87se8f;JGXQLdPr*#R0TXvah&8QH^t@v#NB&)p|bOpMt-eY~ci~U{2dpi*8?qzh(6pS3AGAq;7BuN-VsKjsH zfjR;b%PC2E9Q#OprekehKC7lp>MjKbln;evy92fxE+mRxA00M9V@5CU_4<)#4lg6N z;wZU$Z7Sgi(S(g9rEE!Cl)s?G`St{s%EbUu)KR3XSOkV-0qiM`nX;UKo;Gc&TZ?Ds z5oMKyOOBmeCeHw_3Msk+=&N*pofEJ~WH`pT*x&IH>jToucG+tC>Mq6@!m~F*g1>Px zTc94raAOUqq?2W4?X(+G$s|xaYz2JRxE8NoJ8@u^j(AwE!;Khir?Lbc7^5_#ErFf2 zSIL`urG-ooEmes7s&+|&?HFn(j%p>Um<(rlx6GGi!z3f`rxUDHFKU|d(YS%}xJm>e z!NO^sgdha<98E*0(<>htO^$CP-om`bh&UZa@WAhM&L#@~Azv=M@eZ3~Lmg$TTl5{+ zh76fJA#FA8de _=;8T)MdL78RiP{^WwxMkq^PKR@*Q4%-w>H9kDLTyeb(J417oz z8ILCjWAE7ULeYED&xWnCv7ilbg$KP0F0@W4iPpt}V`=7&;;d0bf0qIv2rUJK`{az# zNXd*YB{{J5!e)!H&}YDSWVE7M)rG@$e1?iUwbS0U0iZFkp5IZ9zh?Y8nhFzmwB&Fj{4{Oa}>4CP6Gd+P{idrA{Y zbN;cRKkA*v!>dYu^Y65GmHy=TL`#)pQC_B&TvQFuwFw!fUayMSoJv?D%?O%(fr3n_ zdt2cRwmif~ijCnn8kYANfN(7>gPsAj($^cI=xcEx?^8a2^fmrM2W4K$P&PmB-xZclDt!sW;1$p#3=5+Y9T1rQ@Hp^ z7xOS!diF}dlB3Qt3X<&9`SQkRc}jUWVt$d(%k6nATIQ6#@wWZGzdk5re|%5XM5E2o z-Q<(Ky&EK{#5;^o@rRFq_@0_15HzSCt&WfZfTotVjS@VUo3}y4`)|b8qryv}usBdZ zCKqD3PE}Xm&97z7kMAwf0H{eIQ!Y_dS9fA4p;Mx>rs<5pl=N)OiSC51;2&{lkXy%~ zg5B`EZ918FcDKqJ^T)t+ry%<_ZEG9DxmSciDRt^1Q6ni+lGnXYe*XNnq;n#o|9}nELyaGX21Y)(=p^c`f9+<-l!dk!O8d_?TNH5`5B9pMY!xWu zJ#BHgfoyK{`?mSO;0pM3XD|&Ce!PghmUMHp|w|OTtjIGH)Q1TR2hV2c?wy z4RRR)j?RDW51TkjW36B%qoM_<&)nhxSj0?6G(g>R)>B9q9KaejK(P!&ffq@)+8ZSt z7{5-Ucba&>{(Np?jvdso+d)zp1DQ7%Q*ZW#Q#Z`f(A4lNj#x(!za-LXvTK%wtWU^Y zN}1pA1Mjcd{$0I-Pm)GqU@??tRv`7L<&Ihk3Odl_Y!f()$bA&zaTDpWibSYgkZBdS zTp2s@zGFvo8(SmjMP~+69d29cZ3UWT|%2JbvJc?9SzZC z*gtrDxKjCaQ0%EZJrhEw$_mZ&JMt`ovC}MBF;yF1owgru7ChK6rsu64N$2y9qczyr zPn4#SluuPXLx3v9=n+yV|{i!o;f2tvK8Rruz{500Jn297b~{D>Z%oB zQ3^0qor*B4D)B^_%ILdlQDAAFW+Yu^B$=JXH0>an(1vf(GIrvEPcsQpU64+ioBn6> zXn4Ff$c~lTI(7Lk$w#2qt>G|~iB{GBH8J*nF_wwGE=@u!fB2Yn4AxW#QHOH^Qq-bB zpfP`9IW-i;zdXj8Ra@7%D2A1J2ts4xc(um!L}cIE_}N^ zpOUPu+Avc_4;o5!6f_>~*s1PW9aj5U38|BIi9-}}eOs!avjCdG&zWlPtmjGUzzOaS zW>&4%xc&OD+_&c_9I)$WkJvs|b0jnv>4xN`OO;-A>o9-kQCq#iW1wj+tj!90HC-4H zKA&wyvn!fa%5>=%;J{=kJ@*q$;2K-g{?EQ3HByhw;)NZZ|EHBW6g5OV;KU<;nR44f zeC=3${$jo+=Cd_xY6t<==2B;+jKb2g#hQE14&X;^?@CyO`6f#?-T%=Sd|n}K7JlSn zjs>Ac6+wJiKT}hiq=qk3UwJW6AZ6PD*W8a3{a=+q!4Y@&!SY9~r-5Py`WP#*9rHEv zIK3X`Exh!qe9^m`O4m{F({vF~6Fx#CzmO)>XcGe|TP&QO%TEDI_84ci_@oKCG>dWS z?NOo4t%*h%oLG#ZbVNfuf2mQIog8xivMGqP&0+l3B-KSPx}GC=3oYPvi2 zmCfCDn9Tfk7HX}RFm*=wAq*S%;coh*BqLVDofy(Nc8T452HhoH#Ie0b&(@dEvFl>r zubWQAv!ZU@hDI?pk#p{DMK%ZK<>gG)^PS2&rN)qr;dvRxhlAl_2X5O4AH;(#!;eTv+ICwV`G z)Ogw2gKv?wV3&O90W=d>d1lgHlibf?i*+vBP;Vax1Wal35M^vy@CktgyhtURdtsI( z3m)Q)h~kbiuk>A~RP@g5ar zd?`{mFAL{exAu!@>OEG&b^ zm+nl92+gjVv{sAPE_U&J*%(YZ-`L%xcGa9CbPgdzqJ&mmSf{`fr$}cGhiQne3mQf|Og_u4#&`^-Qs-vg3#@fy6c(t?hfbD)^X~E>_6I z?g%6Vo6`q&K5}LknENoUq*tv>IoeBm0Ue&x)y+mJ1A{<^uw5sU zFhsgIVZ_R^33sm@6HY?I3gh9=G{se`=ke!=Kq#RK?VIeOOKY6`6BMEM`n$8Ae;Sd8 z|NB*s;$~ch{Up)Dz+{eVnz+22xC6oUxQFrZ1rFqbAl@_B>7fn5uzn8-0_`AeVX3FD1j;Tj3%7mlwA}ush zg@Hv<)Nr#&J^&Y8D@P+r5jMqXNi}wXs;^Q%2vHCjDKIIbKLwJBPiS5Rqg{1bkegtP z7bZ{}lS$h^M9NPZ#gnD3yjL5c<5DiQ;x!O|tQ469T?zgaz4n7iNo8XY)+FGuh%F?+ z+MJRPjR6-W+_FE%jvJzBoffjGPA7wG6FT;|@3>H5lU$gzZl0N2Si_&kMp#mGc~l;C zDR(uX^t&dA0Lyu_{Jo;2Z6;yhq%I@7z_gkfMSND?8Wz-D*8Gy)Ao)eYflnkO6Drs) zq`ok`-qrI!ik~BVXa@-zlGbs^4O~NHl$?K__)>|^^R=m^rNtE3|4y4${avqJ;~5%5 zlz#5%^7KZj1MV>=pOHO7^154!A#xzm*YUi|?RKcY*k2MerR_ZXTGjwb>)0vJ^^-^@ zl`6ZO-l66 z5)lJV=ftsEfMMXsJQPxZ83Ry3Xe;cr=k7)%IG`LD2W4)Vu@zZ6&aGBiM-MA3xn9|* zYET-?k{^AYPi=|*ubykcgo&j!#wDdx#zbk>8{`rPTRP?(-ffks-ef)UT(bUFa8Yso zY=(XhV{i6j=0kmSCBSl=DCfd~ zwiRRyP>h!YP4az3yAu34fKzH-iijWDNo*SJvYaY(_NSb9H7e7( zKrrMB8g!0Fm#mhj2>grC=4`Ms-UbOj$kZsvmkw*N_hhGf$NRp!t4<7%TfqMyQl=EV znUjb+UEvPgBHs1t%t)4Wmn|}#I4xflRnx*9FWhcp5Cs@Kn|`R15?$-+WkH7N zwpL5qKs9U1!I9zNZvulVTmW|W#^L(R;w`!Yn`OM?QN&pxBuN4bLe_y}nl%t2boKCD1^pJJjAZXN4|#&b=1rVm+7qEAMLI zscVu4A8mn3m*pBqX}O%pjrjWF>wl2xNVr3xg{H8MkX^Z{kRTYm$(_GLi0`S*l& z@q`f(gORK5J#Yr}(ZTGmv+)q#oLzL9X`7;sspl<_DwV$?Q6r@l7JYJFVIZemHNlrV z-*qaE1g(0QpV#scRSQCa^E?<;=T0XYJL^taY@2*%+dE~lsAv3|th3;0cU=7f=KPeP z8B|@w*Z@A%Ba_jI7(a?M$>y1tdZv3S(b+p8JPxM~LeqK#^ATGMUy>)2zw5{Q_0jVj z_nEo0+Mp4{?)^gQ(DkR~zO^sBqx&w;C0Fdi?s}_W=V|h0edVQFL+j_=Z+WHXdqeHz z`}t|b?_=YqvdXWa?z`nj!3wV+sO2jI$PkO_iBBh2wB6}p=-~0ieD>x8uFJ){7}KoF zfT)Xj1owOn*`aV1Uyw4MMsAV$!rX9BZ*@Imw)tNL*dbI<`UP?vKtmFbuD5n%6zbbY zLFe)sp4nkfH(ckFUC);KP>iSG z*r$u289`!qUs?!yF8B)ixH>Roe=sR2+NjRW0WP0(#ZtK3zr>$q}7Q zlXJ+#L8KA&WKrP~yX}%WM7`0!ymAKq+L}9GIR^(ZQ*OIdEq5@p18a$dRv)47)IG_3=CDyB-jWd-=Yb`682pgZIY z1gIDv6U@-^`HkX5%_kc(@G04PgKs6LyW`J_A5UBy;4Ee+Yd4RxqV~*l`!)*ZoyAF| z05HvN(E2QM-wx;|F4RtR6E;L{Hp-RXwkiAx~ee6<2XN7gNKk>bvZ!uiEhJV zr^xZDX3Bq{&|~?0xG9&ZZRG9pCnNBUPGXx%)j$%R81cc?Na7jQ+Cz_z#kX^nY5jGV za|dM^cT{)dE!p8v3s4pXi0iB^Em^XLKakCU0_v-wuMYXW2ZJIvt->p8LYMfYCXun?V8Raq#OEaushu5-ww{ghwV5AnF4_Ic9q5N z$cw*gN>j)-ygsJvmYa#;d{x7ZAklW#Mkt{fkL>344%!4q?z3`aGk;ZsgSPSEVuGUU zyZ`XA5E$}B2vsGdkZ5zem`Ug2%=35QV@K>$zxh%N0x*o@q>XHDUsw<`9a`8VhJOu3 z5;4Au1!zXg>IMG+MC-d$pQly4K3Zjho*$mS`Ib;Hq@&(_5PtfW@8v5AFTy#X{tJlm z`w4{7<69B`@}cG~DY&K){MBkejX%nYMe~WkyR3F3+3 zTFjWFuy*V*bD1Z>pL0mI>PZ7TluZ30KcJv@oe&nHQ4CKusy1~Nlzw-$OY{%1LS@#x z(O2q4)i@Q@IaxGBV@k;qco~nP9x`TgQ%n%4DRR^&+BThwEWbFYgx53Sff&C#;NZ%u zGLN|8{gE#ylIU^1Mc|0iqe|f~3K~(=NUz@9onTH}(YzcGtu`>ovb3I^2niVxxpV1d& zs|a^qCDKjrs^a~h=kvq1(i3G@<;7EP?9AfzLJm03ES?6IWl<#?j|*@;s$qvVZT8u~ z!IP8T!7cqtrU1J@8)+MrmVqD9nJbz7OUmnwfTBXPtey@NnExK-?|GT zF{lA{M4xb`5;8k`P?>3!c^U@iHleqrRh97Te5##CZceg4a^B@&ZZDw=bDd^QL5H!)blSNRzxj3fzy*3}SDx+P26%!uM%JuE`Sd)ic7CnmZP*j%# z>-DYmntNQBR5H7tKUNX$>eCE^!0tZc%0@+;tbN4o#?i6$J7&?#`Z^=IB{G-NbqNg8 zKj)PLS<)yE5p_lsFsk@7Z_Z18($?YMIkgs;$>ls{jar~vz;yoFX(E}Du2KPyouCAh4ySk2+a+j^eC_I+EOn?vaqY__om zfU{x5-c~JuiL+N7&C}SGXjRUjCVr`{yr~w~5Rs%7$cr8Za_Fg_eB2YyibBdLXRtT4 zQO7`$(=_^$hs?=(LZwtJfm4vb^*)GZhI^-UGY#%=#7fJkPB_VpCQ@O1sc? zJM4SlL!3117eCJDi&mT*g#*O2**p%moYaR8@cbVwD{4 zjT2|k_vcfMVx1x6>uEUQX~9KPE?w6dXWFjHwxbdFxAL`DgQMEYCyEdwSGl|sywr{{ z`r6Gzboddx!bD`{KCDoUWI@mhwYy;b-QB?P7xG;g*oQC>l_XGd6#1KmJokmvKk_UG z`fY$4PAAkHkIr&{#9MMDKmK2y=j-@6TE@yeHlztFf@?Y*qo_6my?Ons>QlN`)jbB* zOADYBq1&Hts8rtIvN~ZI4Mg7H4S?uqF4ZnM%_GNP>T=`cgI~)=_OUp^oMoPviHBsW z^&xDgIkIP*h|dJWeM7t*aDt|eAV910Saxj>K+q1p=dqiwRcYX*&7bg55d2$+X-dly z=zM|?8==^gC*EO7s@5o49{@qQETb&<%y?Z)=rUE$w5j=i;>F*>R zZ4ewwb-AbF-79k1<5Lx~C5l;R#Dj_p!Fn;Ww8(pg1o0Jf1Pl*M2iE6u+HpzwN*C7w zZSyZ<4yypal%?p4>TvBqh#D(0AsN*Wv8Y z5$WbLENYR-RybRi+BpiZ@;wzN{M|59oH zlwaoU2oC01-)0*Zi>EDdwj=*wR5oDe+tLx9qOXV}*P`CiS3Bs^jy$7De57@2EXY%u z_7yOPMw~OU0|_P`rv;)O#xMGj{F2Nun@Xdoyf9}8wC4^qLsj&gr;j9Xy0SvT8p(qV z8d^K8$S_uU=du!#1FhPZ34Fxc#6W$mm~*ip;E*~HgbFvHt1gi`9FgBRWkgTxK((*1 ze`V=t4eO!#qmNBTuQ;NMeVU*o?1%MYkX&OV;2WJ}&e0%OV1=zCTmJAU;EGD{DZC`@ z`Q=v7`@ejQs_(>M^xNw2oN-6c=8cZOx9C-^{9?=>Ehwl>L@8H~prB`%<2K8qCv~oE zVPL!A->kaHdX6Vpqn{8U*MV>iWUAB%&eW8`q~ z>Gye~yYcR_tG*gF&7r3NahnTGznhd*FeQ>`(p4t4mbH>C-Agds~E&R zX2vvt%G4b|ZHjmBaaAjZqm^OPPATOTh*YTSeMc^lS*Rj$*|X92p~8aChLDA{V8jL% zj+$hU?y>he2a6uZjNJXjp4onIPI^4Rf=a$PsHL)XHQF6qad7KgG9o>4M=ynCQyr17 zGc0$1EQRXJ&WS@-s$@$&K(Z`F(BS^|S5+06ycv_E?t$FX<}+RN0EhWQyNmy#%cjcA zO#zM;>grgb|88z~{BoSP1}ESc(Ouy2GHE)>Dhd?1lvWM|dxJx@l+UM*1IU*b8Wd<} zL~)nY%uT!9c2W4^1eU+$mlRv({$FMpU4k>G>fvBaC7(7CV$!L63#3YIu}_}oe*?>$ zT*vKYit}PaKH&+hpkqolcSZ&IxSt1edwK7&Hj69Q2@G)jE@x8!&D&J?MHsr|>QHCl z6%5(2MmKw@0aq|>Fs<=Qi;DXj$Q=N|NYR7XvRp(eSP>c_{}-~1AjxPny8FlBVFPd5 z2lHKck1Np?qqi3O66kpz|0oqDQzK!!9~bVpQb0RE)S{jDLPwRkGUK>B*G;lZ0jrKh z6gWW77f?>vA4;cUnAdtVBtdH9BfnyCb0)Sm2{l|lTZzoX z2uYN<3bk2KMvHwFuuWI-C=qF;^lx-6foj`ejljhtymE!=ZD=UjET@OM(VFnIQzXuX zTSTY5COV@Z&BT$;`(7BHZs7`DMaooFm8D2#7Xo*kQQ(xREgKDvV3?;|UuLpQ+*+RJ z-&!YY;VZB?@CfNtEZNb9RztQBuG&0}LtugEjjXv+4aQ=dfsC1o?$w8ru(yF{rlIYGr>?*vCd3{!G%9-?gNC zcKCMdX8%9){Z67hN#*7<8C&)XI zmYaR_!)=lKc4_t6^p)=S<-GY1oREB9G(F%^i&5EnEVaiuiT)$xt1IfN_ar6LQHM+3 zi3(xW$6?B?VP()J|4SH3M%q5vBVw> zGWI@LI%Wkmvs$iGK(05U@qLSoy5!-ZOwZf4XLR$F#p7?YX3?QwDe7$~^O7H?1E@k8 zUj-s{r4H~0IXo!xoXFqW_UZ2U_$>ai_xkJ3W=}MWV^HS@@e0hOFgk?ZM|)l6|J{2hkdimhREZtu>Y5F<#%{SVJ^iD7B?pIh z1+LF>$9Fxu`+mMN`c8ISE;iJ!vFCV>17cN0;pfV40DQ@?-z@HG2$~|qLA~VL-NAiZ z1N;PK8t~ie*(zdX6|tNe&U`N$kYFxF__pN(gb~s6*H3_5yCzH8b^oCujxzB7of9Mh zUH=oQo>2zszRJtZ>F(V4MUwxUUzc(>n)vXi#?YQX-Ph$I|0JJL{GK3yf=yjlgI`@k z7d`~zvJhX6;x50HLGX3Vm*!}QuoKdCkeVQZyc z?e2E{g6m02*X(0Bd}~I(ys|yabmI{%3mcdkKeFJj;tk~)f|a)dB59UaR_4~Fzz#>$ zXmM?1N)6cBg2{Y|&-KdEq?H7IT|0AC^=jd^4t>IkLJwGTK?GN;7F49BOZ=*Gk79mU zi&4E!J7{3DAcn8E=ne*?ON$};`fEzd8UqM$vABBvsu^LeU)(f$j(y)jFPd35p1Pl^ zlD2dm}l_4>}$7 zuwu@n(-ry`)LNqmvPV7ZwGv8ycRCS;s1{bGzqdBw8+)Mj6e5$fpMMgh*%HUp)|_7H znBwuk$s5ZA+n0giQoJF1TS?M*Tad4#y=b0Y4ym||h~a?k&NPhO39-vBMl=FLgU3j~ z-E-T8jcCnzZV`j0uP%g#`M02xXtR-gG#(mPW)9*(b?h$ySS7J7ShR5(v(Yu)!JYZP&z1K8885YF$JQ*>HD6m5V*!?seyzLOy)~6p;`i` z2l{NNrHsz;O<5#=3gXs8H0DScpJ#qDZRcPYy&ve$I^^-O+CDMx&x=A7A!(C$l}4iW zA4cOO8yLI;QKtmVXWF#6*h!Ot8PZ_pydU_#>c~FOr0DK?ObJY@+#mjQRyufvt|6*S zETe#0pd=$G&6^`pUg^L{IBXl(gwtS9-<)U7r)ZKhkNLzbTFr#6P-kDHTNx{W8Bu7h z_h+A&Hq{S0bW4^^i*lmS`C4>Wv%a~IaxcB>$#NuLzhu+URoOJq-8Hdd77@ENIRU@0 zuZRcq9a)QDIViTE>%bs;TXX|1D!ydait%j3Xx0>p^-4!KLMnM2^uu!5G*vutkV_wb5#`A)hQp%>AU3AZ7a zp0X%ZzmL4_v<%>gpWdb4q|}Z)OXJrpS!+2mtU;I&Vvxt{qTNh<*^h{?sM5<)`)MZy zzE3zqQ8H2#+}*f<{ncHmY>yW0zsGYz`HPJUOz&e|&gea1a!d`~>`tx8@O-gI(i8>v zH%iY^Z`p^e=0sb}x^Kz{{06qo6S1k(a|kcJ_M(~1&d+%L^>ou2;81khCQ2#hIe60@ zu*-AJyvV?K&Bn1b{UXx}mXKmhXA%@Gxf0ccnRE5U^xId-dXNSkvIVaLX*?sh5J+N< zg;HCkfVp?I+++fwZJ9MJLc>QG`)+;$#6{efse}5A9XlGbyApW#tIhzKQH%I&aurp0 z-{D$%HrScpmkIVzah{(HqY94uW#C^+G&{C=YyBMN17E~(UFuN=)>BQT<+CdFow@fhEc?62?Gmq8*>?0i9Y;+WEbe5oNstT#*kZxkpU`FItXP z^iOs=+*QHqU89BwzafNT$LoEzF$Y<<*%~WHhNX9pr~vo<^fj1vWC=*W|G^Wt13?MA z5cZ#M7Kp;nNXPTezV{}uQ5}KqFMi`s3@p+FKxE+anG1T(Th9e@Ad>;3kA>L$H~tzF zhPvvTzU&5DC}Ya2NCr0Nj3NKNjx4q3r+1EDv#9Ca=G&Gm3&GaH z#~Xj0moff*8z!QTOkcUVDG@r=rz2mseQ8H&`Qx%ZWfkw~WXs<(pA5M4LZfNE@nEdijgP+M<;Qh!xWuEiWDPVjs zsz)r%V4eQ^_>U7^0y7Z)IMMfATJes$ZpL?z0?STCV5@g>gNltctJcpvJa*UbW()sg zklBv`J73={cDEYqf35j8f-iH^ez+BQ|9?7cs%vnVux|JKS*{(8sX@;8aOG#}b=6&# zwcQaz|J6=2pJB?zo5zBl6jMih()B!pC*b@3;y)QVK6Ho$oA6`f26vDWUOx~Kk^;@y z`ohsb#KBkZWo>CzBCbHilS@SAKqMBlKQ8_ziS;y(iDspfRIJ3lt_l6C8f(z|kqyU& zpVk;DWBYz+zoGSjNE>)R3#OzEX&tUdXDGRQPA3B&BBv;rJH!nFe%dpdH5eMxYOxY^ zKr_zsgLVWAVq=Jt{m6p|dNMRl6d5O|sTEvy+x{KfXk*RP4xriowQD3dO7Gf~K+(Rih!=}*=@o%t2;M$nd+*tQBk zJHtOiV~xiBIsBGZ#dZHLs58>w&gfsL8*tGw94ve|@?Cn*w*2dpcBN&_yk|A2-&LlX z$uXneA9>f31sH5=|Hdtb29}eNn4_2q;r|}{dGNA>s+EekOJO1N{cmVH^S=&)?#W00 z&CoKsuh{4Pv%Q21SRv}3=p#6o=P>-UpY-?2eQQOcRctTvpD{#q4E1qw3n>NgZ4oz? z7kpvj7ert`Z}18%Wc%I%J2w}I%*#$A4Bit_*c^gvW}^o+FaGTJdL4!~Bj z(!|Dw{RWJi7M=@bHTTs%oLs`%{7gV-P@{w|tTj)VV>m})q?k@9+lV8gW(~uWi;4aZ zA_+;%kLNQz8@@*1ftwVBZj^jo^^OHUf&<=eo~f8muSqQMsWL=FR~358@}(H^Fmkdj zII^8Rd^$&}fUBJ4npS25IM_`&i|)^TLqJLwMGPr|!cN9L32V);b<3O+8|5^{BxF@tkj{-p`5ofFqpk?GDmX0 zgIYG}(#!pusa>_6j>WBDvq@D0pdmlngQRPWJ(6={{9A>L4s3cn(M`h`)KVWsZ_BCqGA@V(eW~!eq{y1iILU%b=@@7C7%EDxf#YBbOV)NAs-8jMmoS+F z-%0a^v3X$;^-;vo_+tRVfe952XwZRg&8I#aU zR^~qTm_?_N^=7N#lS7b!H$bLB@V+4pRR2|IwF?_#x;2EO*zVBwyC`|j~@CsMH^`HqsOet za>~7|Z{B`k$-2kO2jGr~Q!VfHHAk9u4@6|QS*t_r3GRhg zsc6%5cwY8*1*L+qPRWroEmd!Mi*^%sgbETi+lDCnC21=Ru&QM^I%UEmQW3Mn`R&?vSWR=~HV5u^j-K(Tct_#-1 zg(77ci&SkWJt;+m;&4_hJV8-rrNDGet)-h|r^0-scTpU(8uU7t4g)s|Iem~ZixQT! ztshh`OwQND1XNqMqhZsVzU-|Ro7NUUtG_Pt;z(%mWW;h^deP~ST3OjE)&U-bQ;`5? zo$xfiT9?B;h74%i#PRM^*zAda`cd5B5I6Hb*=s7bAzMBBq^NOyP~i|eGLW8YhnPa; zrPky~i^y)_a6RTavC$3jg0-nFGVJf%_v(eBV6)MVHKI(7K5_fSp3nz1>^F3jCz z*?bya?+Z$LO9_dd?weB^m0?G_j_6bP6C6em=@n0yz5g z*KdKkh-)+=(FjNyQvqc~K>+@URi9=gYDBCh8+r(j$xxTC1S2^NrVj1n z4_^?druFjEW-Lq189@e?92pTyO|65cYo_;eOPi1QBswqR@UY(-M{L=Db+CDeTE^|9 zK|BmIGqSwF4}1hi*g3d<-#~Dx5y0y}=wwQ9VrSeF9g!Jr`K{@Zh&qL*Li}P|d-_ui z2WH-gSTTVo?`+h_2V0Z|!KS{$yQX|prGD81e9AjbqnY3P!INdo=im(!pL0f{P%Jeh zY8{;+bvNI!<^HVgqoSvF+J#0(gZ#ARc6EjONC>>4x={~NqYay3*cnwlgMKwe_|G*aj00_9LcF_SxsO)15RmZZO0snm+7#+5C zbql2M+1nD+XZ0LB+VidQdezi$gFjQeFF<&M_qSnV2ZlQ@=Ipq`m7~gU*c-i;G$7M9 z1H<4%1?^mFKPRx74ADr_48eBN`N&vS{#tw|Zv@qksVa0CI6~`6oKOKRK}Nw>4)V0M+(AXS^+X zhC^%M3C*QTf$~2>^E1H{UP@`3;Y0Lg$LQ?S8YPVIGy!>Yq$>0zR2yOuANNLRbkzms z1KS@O+vVOA-0pI|DMJt0)L?s?e!l6qm%y?G_dzXlWv=c;ZADMraiFK0-S2d#UWiRL z(PmWxW$gi7!W}7@lKOBL8vnuj8uBDHh;jl*8_GYRv`=)chDCFDee?p%i%YlC5Oib$ z&?lEfl@Nv$xq|i)5|h7hV?nGS+z7LPMkWt}$U6uL62syTq9?H%4tk1vB-uRB5fLp1 zI!}|07)vH%b{n=gNs0FzrV9uCUK!8QMdX&CGl+2La_<`JNQ^w$!FLliVF*|daGIFF z!$%X)&{K)#fvCz3lEYwEYyMQpJ5tC4L!BUrfoc?Z;ufed0PaV{Lgow1gBnZ9(K5Nk zfd5W{`C%$nCflX~+v!&APBI87(NhU-CbSTLc%Q<-rMW6|;6QL05~;HW*D5hON$9}~ zqfaLfqH;-xHbu#bb=gmqFu<$`N7ro2Lc^K!@Ff}(iLphR4h2rcg}~cRf98kG6$J$$ zQ`CZou_*Ys7b9)Ra1N>-*6gE^0^3f5n2o5WZ#Ho>MP0Fg5xtvdyop@3a@hDAV zoq^_Op9~G5gwq!ktn&691RWrsVKO*aWr{?vKpXN%QJppiPJx;$pMv%=C#gJ^o6|{T zj0m$$g#$1=y{l^6H~0I_Np>4Cvm$% zkp^8sMbW**gKpYO27|smJy-{Rw0HYBT$`(18xj_?48YB46)feMi}=ktL_|47XhCgS zq{rM6hu5Xd!A?hjrBOt;#kkCC7qj|dSQ28Fen7eJUA!C9wVi8k^ID2RO+!Q3)UTTe zc2^u$4WTV3e5w2@7|060U}0R|;C>kszyhkhQ0kA0q(yUwImyb8d zAmv=_e$jv#P~Th453)DCoAu10eHmts*!tQZ!PL`W~1E62?yt}I>dSI7q9`(eP8u{W=4 zqu-wknZseuVYQTlYEd&L+L-NfYJ9ej*;34+)R7ASK?7Lei7I491WEnUUkwa4U-sOK zRP!7)Ib(7m#7Zz9P)qH9-cc1Sz>Ro=MMd3HI(`|l+xb~6opJoV((<%aSKX*o{+(u? zK4w&`v(gXUlz)^%xzgz!qS#x}a<`A3NaVgzzOtihEfCz;i<6~M=k1v)nevlhAT^0n zg0?hY*H1r8)oDMzRV`zXa?xnrxpSkRF^0nbs@8ggu-2c-b@Aktlr=@L0MnzhuI(0k zQiDQ`mR^_V0epn<*QIM823fBgvGJie85b}|#%*mZ@^=+8Hxb}IbWrd5oFnF?)97!# z%s?o6{^hxFrQdsXr z5b?30RxQVqXP<{%jO(>QGA_H@$N#R&)Z7mofRyC(S+K```3s*0FX{ zpf$xq)sZ_b^BJh6nF-utC?@IYcM)V7X!dk2w>hY_!difKT@km(k;UXt$C2D?55jZE z(RbiEJ$!Y=VsS%Sm>{{;WJ$MGIaZ-w(7P9bUAT8cgstHL>SRZ9`S`QL-FMLK3V)BO z4!`1The@6r>y;EPc6>YjMEdm<_Pm_ltUUhc&pzDVKdvg*)wQ&WdM>H}KezI4)gE8) zzP>WQeTDq~iu(Pn#fv>q$0a{Wq8ikKpIc#xd8=Ha7?O`(VRjzvjHCnjxqF7WLrs(zd}t?(x?xP;pGF~r27mK1 zsCh|({+JbxS^5UKlTA#dv-tw@Z&Y*p<(thC0UNwZ>VcaL7ja|p-YzMp*j4+1bS_J_ zZ8xif^=J$vKtS+JM&i}4?Ohp+4)EJ0<4dI)UeFzn#E3cVOL89Mr) zrL;W@om~Q7Uf?TX>@!ti*7?;kT^m*=vWJw6Of9IzG@hl{pL=KU$fe4`UrYCH%(~ z9^35iT^Y%2Wnj8A=Z(5E(Oo1G`M2k@;y^GoxuD}F^yoa2DXjjrE2(+kPtNPAz-Nhh z!-Em%!mu)V?OEO&=AwW%P@_5!&vNO#(5-DR_f6`7JQ|UL=rHp3?~?a-u?p&ZnG9SE zO_B(Z+r}b`&ao038Cb1#fIjPAIWa>djsQV!{9xX=w+6REE6)fJQ1U8-i5mi;*dH9( zVaMFUX6Ndvf1`~apCdL29^P+=EKpiGLWymHZ`!u2=#EF#wWK1_9F6em?_jcG>j@6K zw7lNiB1IU{kK7_;u-uSZXCKLgU32BeC|Gc;53kIzaRC!%I5<&??nKU^nCb)P337#5 z4*0Xic?cyEs7&AKg-Fh=6d>3Y=D;1@IL}}7$@Vi5Yemb%_OY65znlew*43Su@S9W- zT4Wu9EI2KC0{3j;4=y5}=O(hj_l5h`wbZaX?@4l-k|>7Th6>*^>U^N3FB5>U&win4 z_E%{dc+`B|b(5)VFO)})v*fQsRmB1Ux0T)9d?1w2y_Ym1vi7HbLJtg!oGF{6NKdJc zjVc~`il9!WA>ud_sZgYZlKw+c)pzxT=C9@=D9-P$OLmF^wBIu3j%o5bz>EU5HHuS5 zwu3Up)%|opg}?J8#Ow9JA9XFEPS7Qo5}YQ4{La{G2rM>dsGKF@^~ES!?L3VJl+a@C zXsmo=5mFe&3Zltm^35lPew^2^Xy_OGoeG+ovz!C;QR+iX_Z$Yka z;WII5n?O^8mmxO*eVTo~a-!PPE&g=jRH;WE;EAY2YS4G*9L$Dz$lT9Eby@q%v56a3 zfNGWv6)HWlkq1xT-A}MU(BI%Uw!O)l#)aFwf%q@W_s&406G@WcQyfVVcl&7mTJhgW zO#Kx=*e3CYM(+~$k}`DfZ0=~7wt$Z3V>awLp6;`|&HN_Ch_i0?6gtC$`sioE?8Rcb zZ{Xh3{Zlf7v<%=Aq6m7tiUY4uat^KOvS$j6g%?*}2jJ(rKCl}1PyXYDub@nJxA|xDyY;0>-3y!fX>0q?05r zObW$33uv%aL{ctz;eEg|R2Rryo zy4(caFGC$!8ukQ-(uHBVniO<}E541UzcxL|y_#1WtY-!*RTOP}{n2Gw@2hzwr0EM4 zN)uGxnfw->g`z~Stw4q|!&%ra0s?Ind5ruP!J zAm@jdxvU2J1xlH?mO=@^*Rj6m>GLgX{$F*{BY)qVq6Xak!H`uuZ7PRgpgO7rbnC8D zD5DyUzy_S#A_4LDYfh%L*JREq6_(1#NGSmoBTEz!huy;`ir!5lqHR|HI!HsS=GN26 zF6F~s2@F{!x_eSBnX{~6!`uf0#9k{JZKPXBRXj)&skCUXn>@7$!R~z)IQpU&Lp*2K z*I4A*i`9x3)6L&$|62-E?{i|aYuKb-7-mqnrVnlL@IFX?mZxdBn&aYkELA3gO%81> z%|z|bpq}^)pCDLVaZ64_Rlff!@|r3KbPB=MAja4!X>}_>U&{LvWhX1KF zVrn#TuCj$RtzHBilUP}5hx03~Y7v7-#$)NMz6}keKy$$w=nR|*YVlpo^2>@4IX#?7 zBeUR&Dw`_AQ@4N#&pW1WXa$Hc+=Ey7k@L(&$;JMX>2?pz4bYg3Cp^3h(qaR1JQ zT(o3~BM1-~b_ple=#}3`S1)x~g_rPo^+h%aCJ#mp67g572(SxS-f$b8fUDJQ*J1D@u;cIL+}!nE-&_Rn++d3K@Lu=nYSNUvXN}|mZ)E1) zQ;D3V7P1VV5+gwY9@AU=hw4cNpBUR#t9tyya#sEzr$E4vJ*{K1xi7Oo?)Z6dPc zo2-;;|9afTCG%Fy`Yy#y?>dM3yZw#Ahx?83%1Umt{U&!n*}@F`v-LWFzzh($izwcJg0t9cHl4&%OSK0m5>rJ)_^#NFk_&l%TtN;plF0gO003R z1o0aMnSWdGK<9=yUxYYONNP^!fvF{Jw>P!&Z5BH3aTn`pOl9eIcjGEMVB#X?nC(sxfGf;elM?Ab^I%qzBNcM zx!4b;#lcRw(aNTO*`D^6l=XfqCU3@k+Hhd{V-3`P!X6!Mc3?6%`QT_xzE`B5|4DiR zcOW$6?|Cs{4jo}}-I7|~ii2V8PQ}TCl>JJNn<3AKxN~SEm&ZJut1IFQP$KJB-!}LTre?~bikRV!AGZbqe#RO_)0Y2IHUQy%@O`v!dkI1AFcFQzOk_uWKK_nR~F+<}h|F z*)+6*F@C#BwgNIM$Sz#3w!~=#IkVd#$dodx1Hp7N{~j51_<`MvPTgMFz5M8U^D&xi ze3x?0+$S?}K!OcM=d+ZaYKAVscyHcZ_u%fPnsxyi=penDT+R{`gX$98gYj1cQ$=s) z0gPU2Nwv|v8JC@s_PWi3>v|s?@KUwR_OP8KP`Ni#vlmZ%AJ&2l&5v{U{zvw3Fnnb_?S9YqMv~tAQf8N16Yd^^G*+o=qdiV3wm2w$3q6)^_D1fKk4z+t8;Kvq;Y6$z$#5jrSKZzwdu71tjp zkD0XcKQRsrz$qyx_a-_5q?;(d&Br%ITYng`+d%c5jYz%}p0SKM zfOhjD+|X5Z5UZILBsCbGQb^H4`8GYycjPOVyltG3-k6Ua_XhMC=aNeJfQ#JU z$OgQNRkn8951o;&<9*giVut?FNvK&B(2GULrPOsqSS2bS`tyAR)4(d+=hKq3GvBZ? zzu<>m_=a(dzE=DA1Mr4ATD~&CPQa^GMI^^A(+TGfXf}q~sgg%3S`}OaK^5vSM1?c~ zZ$CJ-9L0(t3NR~fA7R+dNhSf7lV6WRAeZ1SzDtkwCVrb0I>-zbIdDj~v>gV~T1WN~ zD}oN4M@~ESJHmOxA;GuC3oaX=w3u#Z^f^AXO44PmCRIJRPfL!+PA(8GhGf}d0F`tN z)L+zgFaKZx$0DJFfd;dMqnKySfTy%yC-p46uK0bxY~Z3nbbPs87na%C^>?tJ*9R3i zU!Vgw#&dW=x>Z+C4?c!tT>OV3u2HQykYr*Y+FwDcqoi7;#}TKP9u8Go#4O-iU8D-g z1_^{#a1Nvq49NachHM}+w>I8vo5YX|zOL1{@}5fA9AQ|*b|x3OnlfLlB0@B5&MzWn z(EL-CF8zm6&JHK$HKW4%!a8hH2-Xz^A#k}Gsop2RtK^bOlGNZk?~zgn_xA@L9%Flp za$O8`pUXHuqj*YvWl3*-6lbjcPvvh#EBfpvXhlp>2>24(M^ny2=s}V|8YV386yLR2s-NQ;Y&PWyrrL4G)YZP{g%*GL6 ztp#lOMFvS!%BE-;dqYq2S$Aty?RIxW&B_9-^-hOfNgraPN7oKGZcT&NXxw-@I&~0Ic-{RJk}LV}0Bq)6ZRm%PLlW zKS*mPkzr}#=%(kvd;oWVNk!XbZxLz`CcWFod+Ma{y18vS6{8HUW#-lQ5IS|R7elPr z|Avj*H;T!Rj;jh)VaT`U;;upiW$2LFxlaY*=Vt0Qe+lf5;Fq@iTqYA)<;%OKOw zL60_J^=?g zVYvQX^g0y+$Hi(jL)@|VO~909@7j>&Z-NT8>f4?QJXe~+FTOYtpaA#u;NxON8Wr3# zs))9bYAg=BLWWxg)dLMI3s$>wn}A3Lp$~#E;D93>X!MF?bU%SAXK-T?s((1+?iJ%$ zIQHP9+Zn)DnEH4=1J8VHDTEyLX)5I3*a-#X4GfO|7i+xGM~!!U!frQKF-W&l$j}B} zkI-vCts*@e2e?`m-_BWCaL63eZ6E5pectDZK#Zbks1_ZUAfxpsnT}ZDrawRb@@{%= zdoMyQxyY6#VtK#wAI7+#%+8POHK-qYE?q5+fd-2e;#pS1>Cdc55~tbsF1(}@-1@_?om*|DxzQ}S|F%isK))zHlMkMA^9mp=Fy ze+MV1Ha=qzI2%XN>EO91kS;q{l!wGw8rcsF!DRV0Byi{vMC}m-ti73zT_p9Vrd_^S zh(5px-QT}!9}l&xu{H)c-G93#x|VOal!FsRK_vLIAqz<`jIyw;KQXdjwI>i`7X4#M zo91aS*<*V?I?6INYXGgyIA62#ug@!W9%^;Gf;+76*T%H0Ylw1NP}@wq0Wv#_ro#!y zu`#U$_|9g(_4&4x(X#&F$t|ZumxNZQRFaxXeeeFeZd5(!y8_i>yrm)c-X%-EeoFicEd>e#T2! zwFs~aHiY{)&1+jUlzOYPZY)klXt$1mS%X|g(me<)BzGa09zc#u6*(_`!Ld6n*bEJR zOO$4zv%EGdgl?av-=YH;bNFlyNBc(cG-VV*RdhvbWd+1&F;IKiH1N%EvTqFq|v>V_?QyY zs+_uEF)^2hYBSs0+G2~@Q%iGyp*ha`@zkI_Hq$&l)FvhPN7O!Fo;{v1m+lfOCp+Hs z(1m;j=Zev`@0fWa?zIBi@URZH)x7}X`aMz>Zsv}(N*V9);e={azb?kMv4H)udrVquls66Vb zWwDKTFXqoIId!ikIC&$lZ5p*iT4>gweDCfAdITkz@+qFuSt-5(4#p1;jXIJ$7pADe zUuB6Za&LZqRi5~w1=J3TkNq}DI#BuaFf|uW-<&jMM2X6Ij|O8E7y!uNS$DmRgFR{0 zD=@joc`%sKgg&1oS4{=c?1a*uWGqrvz}Gfp5*3x2{YJW%?uzI$j~gzfgpz9d!_$xr zX{aK0`!Mo^zawLv{i7gn8sc;oqFe4L%6^JRihhU9Ki^KFB{rcEOE5}<)l1;f5^mBC zJQKo~eOoks3KJ;0R1TlbTF35^zG{_v1ULC*nd@TuipEy-x`f$VFbO=gGH(;*iEIRa zO`nmA#GY|6M&ivv5BH;C^Fz82mTX@?h|N8JszHKl`j0ldKVx2o$ady`tx@)E%JxNN z2lLXk*`Wzh?GTS5LAZTUan`)YxG#pB14q{D}`LV(#1c`zg`=R#wxHT{$ zOJMxUvJi*EkCA7LxD7pl0wDGl{?p;$^SED8o$>+{{@Aet4dZ7365z_eNeHbC&4Di9 z{+cO@`^`jzCe6Z#l|PwAQ=ls_XTw58L&0i*i>+)G&8f04+c4S6nO&8xq-@@7ZUo;>O+~gwF7Aa^| z$Mq2fM2NkaW)j5H&CVZprH$(HSsx=2`%uyd4D^~46PY>;kpJo(0rxe zZ;Wj4U8yGgeuI0FD+PcwP&5Gq%{U9`iisLMn4gfY&DiTp%C%lC7krwz7~srLul~MQ z8__Z9QsIM+1J-Oq+mSu^KTkGh5o(Kui2PaSYh-*l$aLfCAJhDWQFNrg9tqCZO^*RvQDD(O)tN(66 z9FvBvrd%hUAW$gRl-&>Pu$EynBuJRqeQ#|~f4Ulaak;@^sL~pEh1X;cfsJns&P6Zv zxROKMy%s@hZUd6zdK@khGiDsr&iOcn8qqX61~lHzIaaRVWURj(hPM3cQ5mn5$64Z$ zqEeE`)mQ{ck-%vPfnuWSIwg(6DI{f9Jke+&U*9H0XQhZ->(o14;?^;c&=P8(c!gMk zD}e|DHD&O=(LLNM7{`;mvs8}Fgu6}SuZ<-G#In{_a2n^G?hrKvO{_9-w5ld_ z;8o67P|lT4FU7sGh~yfwdr#Cl3T(S1zV^VN8)@q#$i_?@oIEzP!Ke`;0)r%r2uQ-& z2&G8fpN3z)jU7IIFB!diX_WD+--%F$K3;NoI1qS4BY}eIEblY4e-0e+m^!HuucD;_ zBCuC6?RS3i*`=u%Dv^w-{}^Jm_Y!YNrH2*>b0#8SqR*+68pE~VHikF;r!w`8?Rx$8MCd9P^-a{kozw4cGgKQIYAO^Vdf(e`6P9lE& zIX1bt>-*B_b|4NTmocZ^&A$@6O6~-?uCVrY4fVnVE-gK*I_aD^js|Y@85%9}2Pc}> zXP06(eK4&9F_{r7+B5C)b#PEfQZI7By{xKT0USob7wh5#`?P&Z5-{vuq_?0%$4uXy zM+9Qitd624vLS1#{t7F?e^$A-z$~d|qCVGjf6!3jXGyrDK2NFtDb6WC7@hnG3( zsC;wmU!Joyn-rM?#>L{#{L9N=ur;7c`!1EK#rhb{l=cwIUiHySm6o=tBp3hsxFvBq z+Bf1*{MR^(c(79IY)(BuKZpoDX&fGx5vE!^ofz#&cXMnm&yEdBG2iMoU$BuQaSnIgcI;urXHib6H;77pgX>2S1rT6% z50sL<*@@6Ch?^^vMj#g#?7Qm(g11~K0j%+y<>!NY&}?!2O27Vjq&h^z0pr-7wd}jl zlJ`BdN3ak)Y)05G+i=Wp!EpYU=YfhRX#prx^&IaOi2We*hu!?|Hub*ijKE>kid$`L zxm6aW^3I0@d(nVnxaGsDtKHk3%FFQaSY2S|yW0BLwKudQ&-0H-B&XDn?-m3BH=V?5 zUaS{sg`hPU!s(=@u7r4N>|v9 z`i7v-J-?)?2q$RE2@2LkIYq|4=5zn{qNEQFzB0QNK6sVa+Rq}DuaAv9$cEUU5Qwqt zXZ;SfAQya!t5nDIlsIRKgZ}H zL+OW|k}U5DpHHp>bU*pO#*O!KCIVoU zy)nyd6JU|yGAc_-eN^`#`l+WVOMemHzZGD;YEhMd48k%}R zvb;EH*LG!OHmLewm-M4l0U4o<+Q~ors?1N=PxDT$ue2-r6rzV7V4L6rSfPoFiJXTJ!vX#Ea!mP6BIqJLVK4 zM1ceGUE>1x_Xz_pKvIc3-9PpycAg3XZn z<4bs`ixB4_o|F^2&dk(Nzv4t|QINqBv0^S(>=MY2`Fg(%AbwYOu-#+@qHYfdavc?K zLrpz)Jv(X|2%(cpez4Mk^V)@%guvH{y3_tr^%2VBt;(}W@psq=lBNV~01nZ~U)h*7 zGF8Hcu?90$jOlFOgotQOc6d`so9z^&p%;k{7)hC+Z`*faES0NRoV($AN}9nM?O#c~LiGtq_c z@hA(OG0r98`iz>&>};K+6c?? z3zTd3_+S>sGlY|jUr0*stJkj%DN~np?VPNrS#M{(Z6h6Yu5Nlbl#eLriSO(HvzCiE z0>8M};B2O@cC6s3!)QB3jlqHkQy2mNL^$}vVE8A;R$kezgB6pM0<<4?e?Q7#Y$oWuGIDx|j1~tn#Ktg#he;NRdr4MT zCf$i6xDmt5{nSZ9=b&DTRa&IH(fOm+uW27<+u`|pMZX0bH34!NNyynlGS^7iO=lN#03k!elyd^Lb>seQ+yN%f4Du(6csmq>h> z$Kuz@MG+U06EBGWwE^oDT-QPuu>cH}UQ zD7+fJs#q19;6ooR*o9$7D^}{Zi20!#kj~qPO}qP3;vq{T8E#%|EvpWq+M)+Ctmqu3 ztwg2P2N!zWZ>ujim7hPN$3a81Uw$Y~eS{Vy@fq=Mt}CYa{(o)> ztHu~myT3J^em>UgQSBpy*8vLlXqb(}4gR!S;7ppEMH`4@yYA%*M(4$XVTBDm;4)%>G?ShJhDS^O2M#bbtSCk4RsKtAkE4&X6>e&q z9)i0Hv@UtBwgJ9n4^huCN2V{gBy(ix*L_ZasE=RpYgwZiplh`PspcljB2FHn<5^|t z!Yg!bUwTQwX=J9E#vwb};PGpRz7s|4cbC(sBcQjg_UynZG@=l42S*D(boT=Y?W6%B zQA!4rXYa|aGStK&=@=;6qu=n2=SpafxsEIR|ni;yzDksME$TENKLn=EE!{v-YcK?+@ zn^u$+M)ZENOtH@?>izjb5d|vx;V}FjaQs0dzN~g>6o-E53TgjC&pWJEo7xWcrmRTr zHT^{7wSlPp*9uo9BBH@yoFK^F(fKobH@0m#yc@IM<~urjWYbB}!alO&9(JA60PU=i zJzx9DQ!q$ShE-ctveVH14I2lwewWc^j|VMEDSBp&doYL3^=ynz)>nO>wG^l#M>Iz?HBWY80bLnv@I9k^b!AKnYr3}?)p+OGTyqG+(i4fuQl4KEP%irX zUjV#7L%)_E2-i^*N>uvRANlv1-kf)KM5Q%T)kU~%et`u{8rtpF*-hhdNC&;;-k8_` zfrzKQT*7P5HH2CDN=B?yWd;4e{26eI+i!9E2g2>{X84G>UGK1xH1c+f-EOh}hAp=F zF^Q##V{r0xgr2yE+nw8ucf0ZaD>mLAc(%R&E#=P#P((6M!6?_eE14OXa!vBS=dKO@ zZ6|+U(AOOQ+5?m9U9p@R)P##|WgZjaQ-7*9gfS-wP`bMRnqe^;%j<(0IZCBt}7 zQOi!wl~pBg*dTm`l9jCh-@0vd6Q8P;SS=6XgQ$~p+RBjS9#m6z3r=lwU=Lq*U*VbU z!N8~;^Z+e6tLPW0Z`A;0@A?FdlQOL4P1NdjVUXU)3qVdsYWdCTu!1QWtiLmABYcB- z!7m85BH3{+m)}$znj*vY;n*J>K2UdSYib9*=KrSJZPZ{Qt6GeYh_e#)P~pD1{p4^D zz50uaJ}N?yjyDd%>3GoA-or-;O*lL0AB|5>S%V*?31Rc{(W6kE$CuQ%sEr!#FomcA zGRnv`5v!MWNMi$ly+M91T8$ycYDay=3cGtRXc!8oohP%4@iT|L2#1lPU8o^UC$uh3X+6Nqka6}1 zqet*kD4KA_DH84D!NI}uWd&!9+J4z-Q z(jMlGy{_Kk$K{pN3TKNdTkq`W4fnGY=Ny19;ZY}8f7cx8E|G9R7LUyWI) z0qI$LD-cld@@6Y{1CVVBNCQ?7W>{5g6z~b3U#`7UDEIX~uiMW!FjH?3B6>zF!7f9p zzxATQS?^7+0Y?CwL{35k^T_+68QiIE!zH4+9jWU5)}yD-U$hPno-mj-Ta*HGJ2JhZ$RXv+@U)>%)1jT>O?m(z*s|zClaA;HfbIYJ z#=-IZx^LjLBv+Z(VD#E)eZ_PZ)y*fB!qHWaEQ~e$G2)aH^qt0?o~M#Hue|RP00T5~ z#ztwWMDM?ilTq9VTJX&4yn%Za&9ul792`MT98{`JAk+fxpRQS^q9n7@KgE$0OX^-v zL6bWaS_-IQa-;wUnf4}t*Rf-YI%z_sO7jt$3tsD=!bzvR7^xV`eg#IoX=bn~Q%k$v z?XLVvs&rZ@r`ym=q;+JQE~zKU1@->k;r+tiJDe3;4|&vGa{TDh7=<-GNF_Z=p&cge z8tWRJMlHGN{Z@Y0Yqsyo?S84L1xU^)KyNvXmGNjS$W7Hk2+{(Yz>NMUT8{S2!YwSL z5zGoO23P@Zpz)x6RYi}5EIXeSWXu+5=>iJ|8Y?KdrMwsdaA;1?O9wR^Zf^Wn$cD(0 z5neRDB)4>uh%>SM7|`dv?VX^euN5D+nFn*he7UpE)7-4Qcp7#J7 z*cKnD)D461k&)0?&_c&H+2X7+fu4ckrWcyZRqNxSw6kM}s2gXt#mG>2U+<4dqS|pQ zS-SI-QGuRN-_JDd>quqe6N-Bahe{_gt{>@iN|7IMU|dXyr5G|?#zTSvAaGFF8#H@t z&{nQ|R*}6uyDh^C*k3hU(6WsTfiZS6;%WkJ2She8uwf!!6y)?peG7*>IdpsyI5?u`?s7wc{h{h7-*qurTo*e|ho)gE_y z9Z`8@{)D^o*b4|ZTEYTL)4BH}@uz0%? zq@_ys_(oQPszz!1yy-qwa&U+%CwlRG7zeEL4*)5|COL4)bz{r=4?m1Y;~_3Vj!sRi zy*@@Qbq8|Q>?dN^8b2Tcqt|^MGcz$7sveRV?!v?h(K$U7>y7&Z_05`ErfQlMa-=0d zET5pjDNDdOjtZ^lTh-`f-}0VHq;mDuKH4aW#&?ol1m;bIm$+1 zxf|Bbk)SLD$|2yfE5}~7a3}26&O>p9kumGn`MO>^XG=#7D`hpv7Dc;+nzjaYqG zKj{wY*?CR!jFK^odaefg*5SP=eURIsbmX1lS0YN^c|CZVxSyPxgBYtm0L5PLju8p}5$AhP7qIN$2+^(Na5^JZh zY(Of2&Y|iaop^BZ4%vy^g9t0&RGsR({Lo2G!)9$<*%-#u;TTRTIJ(_`+krhCUXdP$C@t6*Kj;#B~P3 z6dbEsMg&MuLPQ2_@u2EeVJ}H01EOL=kvX$hd+~q~##4z8CEJqdlzbVH!>j0Q6(|b~ zzue9GEZ@UvIk}?qtja}oB#f)D*E3LPt)IwcnYMd;iHB|%)l5w*Pb0wW=m<8R`EMh(b{k_r_ z`lF$@gv~A-s74MWsZoDe_~{6~nZo76N4xv`mQ2tT0J8GD&gD?Hg`m{;=GyPG_*1xY z=v>6x&tdI+gB|_>+9a;eDE`$Aikp$UMnRX8=W{#qg}jJFKrzD@A_B(c&o(;A!1%di z6^x9+;t;J#9J+3njWHB?ic8aOgoLg}QTjSVsY*N$vF9%&cc{SLI3#~&JVK)m4m-vSvOJEZU_?H#Z9i4e3x=t!s_F2i`;9Avo^wUKx}s$^b%`_sEB6( zr=F27c52Z#wYAwb^FVGo^*s&!E?Zo>Od}fR+USX;QWW@@ZNO6ydf@!*6@RPfMPoed zX+VqIA~f1Cg$j^1{b*14a5=2iL~@p%`WHp5qO<7jMSQ|9CX1L4bW%F8SQ%of?Cjj% zeTp&Q8wR5;P&^=Zl_SBL&#@wu=Xgw9q>T-vPrh(@Ypv4=cj*ucYMz&$I>GxYD8xLl zqH@d&L#8-I3p+~^6Ybu36eAy>Lv|w)0nM-Fh06#mPAlTg6D46;JM9k14(Z=MMSBm(=f`MF?WYRwVZ}e$CWLl8jDz2|98EWN_L`hRDO| zX6;Ns-sJ{3fKRfH2BWb%`DoFOog-B}Q=~5m5FSVeqSNdmbD?Mu{cgs@ct*s+CEQSB zR+YdO9RB=F8h}CXaz#feax{Qk*UmFt06=fSWx50fPEXM#^}%6%1J%c_;B#N)AfeMr zrjdIwY8g2Z-ZDU!Kpvuyp_XregxA4SXb`hz5Z}<~GE7`V5|@~QsI&%vo>7du{F)RF zq1a&SkA1)(7`#IKS1c~AiclC*bylE2oFk-~R;-YTOZ?TnCx=Jd`}>+%GpRNijm}#F z<)(U*e|Vf7Si0?YG9IuS)?u9B6kNcd6H6?O$nllRdT>W&&LP$YCs>R}b|#WBfnDc& zTCEP3g<2i|*4sOE)LB7nN_!h$EDA7h=98anHn#w9O4I= zC;32C>y5Rd9Xg0e3b)IHb)swzcMjCS{Uh|_2;1aMEH?-w;aETFR5LkYjY#49bmO7m ziw0%zPC&iGtSby{gM>(75V2|s*hpYFI){ee64{toXL^5R?F1h+Foy+mlTb-_rbkM` zn#&HnnURtvGFvwwcbrI*xqPm=4Et|_*5VjA?%9zzW0hbAFuAQ`zMwDg=&skUb{v2;AV z=p5HwxFs|6YEqR70TiiNA*>n2uyr{Yi{&-_w^M19w;b%>m^lV81SMUTIR;(zFdiw0(;j`_>bb#d28e#dZB)toRg0hD@&-R`kc||#C zZpr)GN84UGOmIu7YF~YI_ih*%x7U2QpT|)L1A8(3`H$9!TZp(mM_r?Y7_;m^8?KRn z%TSX)ndRwcX1Sc(?Sla>(u}1Jqb|}}G|WtLMXvPK50U!xsiWl3krZn<_Vj6EG7zbo zV@gopr%!K4xod)ugd-#x%FH&T4#jbY?r?aIx*Wn@6#f%M(SZzIj;E@ssB+E^3iXM! zURo8_AbhF!x+isflv6?Trtz4eQEnx#MbImBq5XoqI8t5~67fpMuVL&FxjR7aXk_d` zOvtl#o5U8Z6FDX}*%>sZP31Y%D$u?$ARBUyC}=z z6s@IjR$8sYqx(CpmLlm6+D-t@B~qFoI7R6SoGIdy;+;N?V^l%tFoh@LVy^dqm*SK7 z#nCG2Bf!|g^3*a|ig%ilaKRPI!Yz6jrO>q1Knp1(5IN_CS%9^Ccr_SBmuzcO!bVf5 z3-nJ-USUZpgqI}J>G;c;yrEuO_mrJY@wl_9o3Ujx!%gY5*!>J<@;C!IrnJWpo z8EI*OPrnH(2@0Y?nC7QdMtBG>i;(z+m5kDLRNZZR8l)~8k5O+%FofO4!uhyE>{5@S0sMT5#{QKquj-Qf`B zwTsl(Jr!n_Zm}6*+is7&;1k0QB$^?e*#wl}XDBfEH^mmcX`&-)fW7D>qf5|95J|kQ;iOOx31VsZr?T)S(i++&s zq93}l1*0GQlf@?22>eD^kM0>-?$%4-6B+5yp;w(}MZW-qId0rgB>NCH-G?wPMK~qb zUx|U>vs6pkj zklxSb@a!(?5ZzcsDzA})^KyoNjSkLDG;plkMi1m{tpV*;+0)u_N*Ac9g6vvae!N4k4D0DL#&K<0eu^b31ciL-=!>#9}J3?*e4^cfJWKw0*Q;IG$4 zzHGsA+XSM=ltulu#+tvV*VZ?_xclW-Uw`wh`o3hges_T5$o8M8J}wi1B!-tM_vSzt z^+op9f1~_Vm9K`4c&C6J^f-&bCn5HZ4CW>?O$=tt*~=k4R+mMYvXA%jN)?SkJs@re z(98_xz>+<%EUZ2`Duk+B<{YS;0fkrG%m&9tD(iRkxmxF#NPct#{8T*~DZ*KHj{DJN zb?sfw%;FvvBSqx|j z>2Pz_*H)G{eqCRykk2$ynkM26c23;S`1}O)JrKL4z-SlwJzrn5PLm8DE=T^jF|=T% zDQ7;EJ5@$EhF8H>IeXs&bq$Io#&McMlTe-osE*zD zBRi1E=RwgRKh&+2}Bi7_XChJ@gG9VyjLwZBxZP(@nNY2#@Enco*3sDRL!nW*6dEwHM`d* zY{Z}}_fz_^y5W(@N@A+w59aj+NIKa&3gXn#O)sXO6kY_l~tmNQ*pSD z=2f9_nRW@{hv5NWKWENKn7|r?Os;z!eo7k5h%zopCdxF(W3*$ ze#q2#&_f|D+lo~&Xh1D+4M<2OOfa~3U2<#O{5u@+)ZvK}-kka{&�-)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 */ From 6a8e6cd762c51514224eb3cf24ae08c8a2a08d23 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 28 Mar 2013 08:32:00 -0400 Subject: [PATCH 51/77] Fixed the GNUmakfile and const's for charset tables. --- OpenChange/GNUmakefile | 3 ++- OpenChange/RTFHandler.m | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/OpenChange/GNUmakefile b/OpenChange/GNUmakefile index 21a2f904a..df3f5f116 100644 --- a/OpenChange/GNUmakefile +++ b/OpenChange/GNUmakefile @@ -131,7 +131,8 @@ $(SOGOBACKEND)_OBJC_FILES += \ \ EOBitmaskQualifier.m \ \ - BSONCodec.m + BSONCodec.m \ + RTFHandler.m $(SOGOBACKEND)_RESOURCE_FILES += \ diff --git a/OpenChange/RTFHandler.m b/OpenChange/RTFHandler.m index 84a1aa655..99ddd48b1 100644 --- a/OpenChange/RTFHandler.m +++ b/OpenChange/RTFHandler.m @@ -32,7 +32,7 @@ // // Charset definitions. See http://msdn.microsoft.com/en-us/goglobal/bb964654 for all details. // -unsigned short ansicpg1250[256] = { +const 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, @@ -50,7 +50,7 @@ unsigned short ansicpg1250[256] = { 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] = { +const 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, @@ -68,7 +68,7 @@ unsigned short ansicpg1251[256] = { 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] = { +const 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, @@ -86,7 +86,7 @@ unsigned short ansicpg1252[256] = { 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] = { +const 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, @@ -104,7 +104,7 @@ unsigned short ansicpg1253[256] = { 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] = { +const 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, @@ -122,7 +122,7 @@ unsigned short ansicpg1254[256] = { 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] = { +const 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, @@ -140,7 +140,7 @@ unsigned short ansicpg1255[256] = { 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] = { +const 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, @@ -158,7 +158,7 @@ unsigned short ansicpg1256[256] = { 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] = { +const 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, @@ -176,7 +176,7 @@ unsigned short ansicpg1257[256] = { 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] = { +const 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, @@ -194,7 +194,7 @@ unsigned short ansicpg1258[256] = { 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] = { +const 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, From e07734fa5f57325a92ea70bcb4410b73340aa026 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Fri, 29 Mar 2013 10:38:52 -0400 Subject: [PATCH 52/77] Filter sql source entries based on the user domain When using dynamic domains with SQL sources (DomainFieldName), let WebUI and dav lookups return entries from current domain and other domains visible from the originating domain. Fixes #2269 SQLSource.m: _visibleDomainsQualifierFromDomain: returns a EOQualifier OR'ing all visible domains from specified domain (including specified domain) SQLSource.m: allEntryIDsVisibleFromDomain Replacement for allEntryIDs. Instead of returning all entries from the sql source, only return the entries visible from the specified domain. SoObjects/SOGo/SQLSource.m: allEntryIDs Changed to call allEntryIDsVisibleFromDomain with an empty domain. SQLSource.m fetchContactsMatching:inDomain: Use _visibleDomainsQualifierFromDomain to filter entries LDAPSource.m: allEntryIDsVisibleFromDomain Simply call allEntryIDs, discarding the domain. LDAP does need to do the extra domain filtering SOGoContactSourceFolder.m: toOneRelationshipKeys Call new method: allEntryIDsVisibleFromDomain --- SoObjects/Contacts/SOGoContactSourceFolder.m | 5 +- SoObjects/SOGo/LDAPSource.m | 7 ++ SoObjects/SOGo/SOGoSource.h | 1 + SoObjects/SOGo/SQLSource.m | 106 +++++++++++++++++-- 4 files changed, 109 insertions(+), 10 deletions(-) diff --git a/SoObjects/Contacts/SOGoContactSourceFolder.m b/SoObjects/Contacts/SOGoContactSourceFolder.m index b270460c1..faa4f5ed5 100644 --- a/SoObjects/Contacts/SOGoContactSourceFolder.m +++ b/SoObjects/Contacts/SOGoContactSourceFolder.m @@ -200,7 +200,10 @@ - (NSArray *) toOneRelationshipKeys { - return [source allEntryIDs]; + NSString *userDomain; + + userDomain = [[context activeUser] domain]; + return [source allEntryIDsVisibleFromDomain: userDomain]; } - (NSException *) saveLDIFEntry: (SOGoContactLDIFEntry *) ldifEntry diff --git a/SoObjects/SOGo/LDAPSource.m b/SoObjects/SOGo/LDAPSource.m index 302944673..0abf57afa 100644 --- a/SoObjects/SOGo/LDAPSource.m +++ b/SoObjects/SOGo/LDAPSource.m @@ -779,6 +779,13 @@ static Class NSStringK; return fields; } +/* This is required for SQL sources when DomainFieldName is enabled. + * For LDAP, simply discard the domain and call the original method */ +- (NSArray *) allEntryIDsVisibleFromDomain: (NSString *) domain +{ + return [self allEntryIDs]; +} + - (NSArray *) allEntryIDs { NSEnumerator *entries; diff --git a/SoObjects/SOGo/SOGoSource.h b/SoObjects/SOGo/SOGoSource.h index ebf085200..2415f408c 100644 --- a/SoObjects/SOGo/SOGoSource.h +++ b/SoObjects/SOGo/SOGoSource.h @@ -61,6 +61,7 @@ inDomain: (NSString *) domain; - (NSArray *) allEntryIDs; +- (NSArray *) allEntryIDsVisibleFromDomain: (NSString *) domain; - (NSArray *) fetchContactsMatching: (NSString *) filter inDomain: (NSString *) domain; diff --git a/SoObjects/SOGo/SQLSource.m b/SoObjects/SOGo/SQLSource.m index c2db99f7d..7d0de6c07 100644 --- a/SoObjects/SOGo/SQLSource.m +++ b/SoObjects/SOGo/SQLSource.m @@ -37,6 +37,8 @@ #import #import +#import + #import "SOGoConstants.h" #import "NSString+Utilities.h" #import "NSString+Crypto.h" @@ -626,23 +628,94 @@ return [self _lookupContactEntry: entryID considerEmail: YES inDomain: domain]; } -- (NSArray *) allEntryIDs +/* Returns an EOQualifier of the following form: + * (_domainField = domain OR _domainField = visibleDomain1 [...]) + * Should only be called on SQL sources using _domainField name. + */ +- (EOQualifier *) _visibleDomainsQualifierFromDomain: (NSString *) domain +{ + int i; + EOQualifier *qualifier, *domainQualifier; + NSArray *visibleDomains; + NSMutableArray *qualifiers; + NSString *currentDomain; + + SOGoSystemDefaults *sd; + + /* Return early if no domain or if being called on a 'static' sql source */ + if (!domain || !_domainField) + return nil; + + sd = [SOGoSystemDefaults sharedSystemDefaults]; + visibleDomains = [sd visibleDomainsForDomain: domain]; + qualifier = nil; + + domainQualifier = + [[EOKeyValueQualifier alloc] initWithKey: _domainField + operatorSelector: EOQualifierOperatorEqual + value: domain]; + [domainQualifier autorelease]; + + if ([visibleDomains count]) + { + qualifiers = [NSMutableArray arrayWithCapacity: [visibleDomains count] + 1]; + [qualifiers addObject: domainQualifier]; + for(i = 0; i < [visibleDomains count]; i++) + { + currentDomain = [visibleDomains objectAtIndex: i]; + qualifier = + [[EOKeyValueQualifier alloc] initWithKey: _domainField + operatorSelector: EOQualifierOperatorEqual + value: currentDomain]; + [qualifier autorelease]; + [qualifiers addObject: qualifier]; + } + qualifier = [[EOOrQualifier alloc] initWithQualifierArray: qualifiers]; + [qualifier autorelease]; + } + + return qualifier ? qualifier : domainQualifier; +} + + +- (NSArray *) allEntryIDsVisibleFromDomain: (NSString *) domain { EOAdaptorChannel *channel; - NSMutableArray *results; + EOQualifier *domainQualifier; GCSChannelManager *cm; NSException *ex; - NSString *sql; - + NSMutableArray *results; + NSMutableString *sql; + results = [NSMutableArray array]; cm = [GCSChannelManager defaultChannelManager]; channel = [cm acquireOpenChannelForURL: _viewURL]; if (channel) { - sql = [NSString stringWithFormat: @"SELECT c_uid FROM %@", + sql = [NSMutableString stringWithFormat: @"SELECT c_uid FROM %@", [_viewURL gcsTableName]]; + if (_domainField) + { + if ([domain length]) + { + domainQualifier = + [self _visibleDomainsQualifierFromDomain: domain]; + if (domainQualifier) + { + [sql appendString: @" WHERE "]; + [domainQualifier _gcsAppendToString: sql]; + } + } + else + { + /* Should not happen but avoid returning the whole table + * if a domain should have been defined */ + [sql appendFormat: @" WHERE %@ is NULL", _domainField]; + } + } + ex = [channel evaluateExpressionX: sql]; if (!ex) { @@ -671,6 +744,11 @@ return results; } +- (NSArray *) allEntryIDs +{ + return [self allEntryIDsVisibleFromDomain: nil]; +} + - (NSArray *) fetchContactsMatching: (NSString *) filter inDomain: (NSString *) domain { @@ -699,16 +777,26 @@ lowerFilter, lowerFilter]; if (_mailFields && [_mailFields count] > 0) - { - [sql appendString: [self _whereClauseFromArray: _mailFields value: lowerFilter exact: NO]]; - } + { + [sql appendString: [self _whereClauseFromArray: _mailFields value: lowerFilter exact: NO]]; + } [sql appendString: @")"]; if (_domainField) { if ([domain length]) - [sql appendFormat: @" AND %@ = '%@'", _domainField, domain]; + { + EOQualifier *domainQualifier; + domainQualifier = + [self _visibleDomainsQualifierFromDomain: domain]; + if (domainQualifier) + { + [sql appendFormat: @" AND ("]; + [domainQualifier _gcsAppendToString: sql]; + [sql appendFormat: @")"]; + } + } else [sql appendFormat: @" AND %@ IS NULL", _domainField]; } From 5487f34b9ee9b9639e3f1d4a7abf4fad2d240d66 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 5 Apr 2013 08:57:47 -0400 Subject: [PATCH 53/77] Disable hint verification for now. --- SoObjects/SOGo/SOGoSAML2Session.m | 1 + 1 file changed, 1 insertion(+) diff --git a/SoObjects/SOGo/SOGoSAML2Session.m b/SoObjects/SOGo/SOGoSAML2Session.m index 4cd4750e1..01c6f4bb2 100644 --- a/SoObjects/SOGo/SOGoSAML2Session.m +++ b/SoObjects/SOGo/SOGoSAML2Session.m @@ -381,6 +381,7 @@ LassoServerInContext (WOContext *context) responseData = strdup ([authnResponse UTF8String]); + lasso_profile_set_signature_verify_hint(lassoLogin, LASSO_PROFILE_SIGNATURE_VERIFY_HINT_IGNORE); rc = lasso_login_process_authn_response_msg (lassoLogin, responseData); if (rc) [NSException raiseSAML2Exception: rc]; From b4aaa68d85edbaee9f555efef3f82f64598c050f Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 5 Apr 2013 10:26:17 -0400 Subject: [PATCH 54/77] Also consider the "mail" attribute in order to get the user's login --- SoObjects/SOGo/SOGoSAML2Session.m | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/SoObjects/SOGo/SOGoSAML2Session.m b/SoObjects/SOGo/SOGoSAML2Session.m index 01c6f4bb2..3576ee148 100644 --- a/SoObjects/SOGo/SOGoSAML2Session.m +++ b/SoObjects/SOGo/SOGoSAML2Session.m @@ -43,6 +43,8 @@ #import "SOGoCache.h" #import "SOGoSAML2Exceptions.h" #import "SOGoSystemDefaults.h" +#import "SOGoUserManager.h" + #import "SOGoSAML2Session.h" @@ -246,6 +248,13 @@ LassoServerInContext (WOContext *context) login = [NSString stringWithUTF8String: textNode->content]; [login retain]; } + else if (strcmp (attribute->Name, "mail") == 0) + { + value = LASSO_SAML2_ATTRIBUTE_VALUE (attribute->AttributeValue->data); + textNode = value->any->data; + login = [[SOGoUserManager sharedUserManager] getUIDForEmail: [NSString stringWithUTF8String: textNode->content]]; + [login retain]; + } else attributeList = attributeList->next; } From 37a6f8265978b2a2ec019527b16b68ed10051cf3 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 8 Apr 2013 11:05:45 -0400 Subject: [PATCH 55/77] Initial Arabic translation --- .tx/config | 10 + .../Arabic.lproj/Localizable.strings | 66 +++ SoObjects/Appointments/GNUmakefile | 2 +- .../Contacts/Arabic.lproj/Localizable.strings | 1 + SoObjects/Contacts/GNUmakefile | 2 +- SoObjects/Mailer/GNUmakefile | 2 + .../SOGoMailArabicForward.html | 13 + .../SOGoMailArabicForward.wod | 79 +++ .../SOGoMailArabicReply.html | 16 + .../SOGoMailArabicReply.wod | 106 ++++ SoObjects/Mailer/SOGoMailForward.h | 3 + SoObjects/Mailer/SOGoMailForward.m | 3 + SoObjects/Mailer/SOGoMailReply.h | 3 + SoObjects/Mailer/SOGoMailReply.m | 3 + SoObjects/SOGo/SOGoDefaults.plist | 2 +- Tests/Integration/preferences.py | 2 +- .../Arabic.lproj/Localizable.strings | 15 + UI/AdministrationUI/GNUmakefile | 2 +- UI/Common/Arabic.lproj/Localizable.strings | 110 ++++ UI/Common/GNUmakefile | 2 +- UI/Contacts/Arabic.lproj/Localizable.strings | 208 +++++++ UI/Contacts/GNUmakefile | 2 +- .../Arabic.lproj/Localizable.strings | 46 ++ UI/MailPartViewers/GNUmakefile | 2 +- UI/MailerUI/Arabic.lproj/Localizable.strings | 296 ++++++++++ UI/MailerUI/GNUmakefile | 2 +- UI/MainUI/Arabic.lproj/Locale | 35 ++ UI/MainUI/Arabic.lproj/Localizable.strings | 78 +++ .../Localizable.strings | 1 + UI/MainUI/Catalan.lproj/Localizable.strings | 1 + UI/MainUI/Czech.lproj/Localizable.strings | 1 + UI/MainUI/Danish.lproj/Localizable.strings | 1 + UI/MainUI/Dutch.lproj/Localizable.strings | 1 + UI/MainUI/English.lproj/Localizable.strings | 1 + UI/MainUI/Finnish.lproj/Localizable.strings | 1 + UI/MainUI/French.lproj/Localizable.strings | 1 + UI/MainUI/GNUmakefile | 2 +- UI/MainUI/German.lproj/Localizable.strings | 1 + UI/MainUI/Hungarian.lproj/Localizable.strings | 1 + UI/MainUI/Icelandic.lproj/Localizable.strings | 1 + UI/MainUI/Italian.lproj/Localizable.strings | 1 + .../NorwegianBokmal.lproj/Localizable.strings | 1 + .../Localizable.strings | 1 + UI/MainUI/Polish.lproj/Localizable.strings | 1 + UI/MainUI/Russian.lproj/Localizable.strings | 1 + .../Localizable.strings | 1 + .../SpanishSpain.lproj/Localizable.strings | 1 + UI/MainUI/Swedish.lproj/Localizable.strings | 1 + UI/MainUI/Ukrainian.lproj/Localizable.strings | 1 + UI/MainUI/Welsh.lproj/Localizable.strings | 1 + .../Arabic.lproj/Localizable.strings | 309 ++++++++++ .../Localizable.strings | 1 + .../Catalan.lproj/Localizable.strings | 1 + .../Czech.lproj/Localizable.strings | 1 + .../Danish.lproj/Localizable.strings | 1 + .../Dutch.lproj/Localizable.strings | 1 + .../English.lproj/Localizable.strings | 1 + .../Finnish.lproj/Localizable.strings | 1 + .../French.lproj/Localizable.strings | 1 + UI/PreferencesUI/GNUmakefile | 2 +- .../German.lproj/Localizable.strings | 1 + .../Hungarian.lproj/Localizable.strings | 1 + .../Icelandic.lproj/Localizable.strings | 1 + .../Italian.lproj/Localizable.strings | 1 + .../NorwegianBokmal.lproj/Localizable.strings | 1 + .../Localizable.strings | 1 + .../Polish.lproj/Localizable.strings | 1 + .../Russian.lproj/Localizable.strings | 1 + .../Slovak.lproj/Localizable.strings | 1 + .../Localizable.strings | 1 + .../SpanishSpain.lproj/Localizable.strings | 1 + .../Swedish.lproj/Localizable.strings | 1 + .../Ukrainian.lproj/Localizable.strings | 1 + .../Welsh.lproj/Localizable.strings | 1 + UI/Scheduler/Arabic.lproj/Localizable.strings | 536 ++++++++++++++++++ UI/Scheduler/GNUmakefile | 2 +- .../SOGoACLArabicAdditionAdvisory.wox | 28 + .../SOGoACLArabicModificationAdvisory.wox | 28 + UI/Templates/SOGoACLArabicRemovalAdvisory.wox | 28 + .../SOGoFolderArabicAdditionAdvisory.wox | 23 + .../SOGoFolderArabicRemovalAdvisory.wox | 23 + 81 files changed, 2123 insertions(+), 12 deletions(-) create mode 100644 SoObjects/Appointments/Arabic.lproj/Localizable.strings create mode 100644 SoObjects/Contacts/Arabic.lproj/Localizable.strings create mode 100644 SoObjects/Mailer/SOGoMailArabicForward.wo/SOGoMailArabicForward.html create mode 100644 SoObjects/Mailer/SOGoMailArabicForward.wo/SOGoMailArabicForward.wod create mode 100644 SoObjects/Mailer/SOGoMailArabicReply.wo/SOGoMailArabicReply.html create mode 100644 SoObjects/Mailer/SOGoMailArabicReply.wo/SOGoMailArabicReply.wod create mode 100644 UI/AdministrationUI/Arabic.lproj/Localizable.strings create mode 100644 UI/Common/Arabic.lproj/Localizable.strings create mode 100644 UI/Contacts/Arabic.lproj/Localizable.strings create mode 100644 UI/MailPartViewers/Arabic.lproj/Localizable.strings create mode 100644 UI/MailerUI/Arabic.lproj/Localizable.strings create mode 100644 UI/MainUI/Arabic.lproj/Locale create mode 100644 UI/MainUI/Arabic.lproj/Localizable.strings create mode 100644 UI/PreferencesUI/Arabic.lproj/Localizable.strings create mode 100644 UI/Scheduler/Arabic.lproj/Localizable.strings create mode 100644 UI/Templates/SOGoACLArabicAdditionAdvisory.wox create mode 100644 UI/Templates/SOGoACLArabicModificationAdvisory.wox create mode 100644 UI/Templates/SOGoACLArabicRemovalAdvisory.wox create mode 100644 UI/Templates/SOGoFolderArabicAdditionAdvisory.wox create mode 100644 UI/Templates/SOGoFolderArabicRemovalAdvisory.wox diff --git a/.tx/config b/.tx/config index 1e7b39447..a782bec99 100644 --- a/.tx/config +++ b/.tx/config @@ -4,6 +4,7 @@ host = https://www.transifex.net [sogo.ui-mailerui] source_file = UI/MailerUI/English.lproj/Localizable.strings source_lang = en +trans.ar = UI/MailerUI/Arabic.lproj/Localizable.strings trans.ca = UI/MailerUI/Catalan.lproj/Localizable.strings trans.cs = UI/MailerUI/Czech.lproj/Localizable.strings trans.cy = UI/MailerUI/Welsh.lproj/Localizable.strings @@ -29,6 +30,7 @@ trans.uk = UI/MailerUI/Ukrainian.lproj/Localizable.strings [sogo.ui-preferencesui] source_file = UI/PreferencesUI/English.lproj/Localizable.strings source_lang = en +trans.ar = UI/PreferencesUI/Arabic.lproj/Localizable.strings trans.ca = UI/PreferencesUI/Catalan.lproj/Localizable.strings trans.cs = UI/PreferencesUI/Czech.lproj/Localizable.strings trans.cy = UI/PreferencesUI/Welsh.lproj/Localizable.strings @@ -54,6 +56,7 @@ trans.uk = UI/PreferencesUI/Ukrainian.lproj/Localizable.strings [sogo.ui-scheduler] source_file = UI/Scheduler/English.lproj/Localizable.strings source_lang = en +trans.ar = UI/Scheduler/Arabic.lproj/Localizable.strings trans.ca = UI/Scheduler/Catalan.lproj/Localizable.strings trans.cs = UI/Scheduler/Czech.lproj/Localizable.strings trans.cy = UI/Scheduler/Welsh.lproj/Localizable.strings @@ -79,6 +82,7 @@ trans.uk = UI/Scheduler/Ukrainian.lproj/Localizable.strings [sogo.ui-contacts] source_file = UI/Contacts/English.lproj/Localizable.strings source_lang = en +trans.ar = UI/Contacts/Arabic.lproj/Localizable.strings trans.ca = UI/Contacts/Catalan.lproj/Localizable.strings trans.cs = UI/Contacts/Czech.lproj/Localizable.strings trans.cy = UI/Contacts/Welsh.lproj/Localizable.strings @@ -104,6 +108,7 @@ trans.uk = UI/Contacts/Ukrainian.lproj/Localizable.strings [sogo.ui-mainui] source_file = UI/MainUI/English.lproj/Localizable.strings source_lang = en +trans.ar = UI/MainUI/Arabic.lproj/Localizable.strings trans.ca = UI/MainUI/Catalan.lproj/Localizable.strings trans.cs = UI/MainUI/Czech.lproj/Localizable.strings trans.cy = UI/MainUI/Welsh.lproj/Localizable.strings @@ -129,6 +134,7 @@ trans.uk = UI/MainUI/Ukrainian.lproj/Localizable.strings [sogo.ui-common] source_file = UI/Common/English.lproj/Localizable.strings source_lang = en +trans.ar = UI/Common/Arabic.lproj/Localizable.strings trans.ca = UI/Common/Catalan.lproj/Localizable.strings trans.cs = UI/Common/Czech.lproj/Localizable.strings trans.cy = UI/Common/Welsh.lproj/Localizable.strings @@ -154,6 +160,7 @@ trans.uk = UI/Common/Ukrainian.lproj/Localizable.strings [sogo.ui-administrationui] source_file = UI/AdministrationUI/English.lproj/Localizable.strings source_lang = en +trans.ar = UI/AdministrationUI/Arabic.lproj/Localizable.strings trans.ca = UI/AdministrationUI/Catalan.lproj/Localizable.strings trans.cs = UI/AdministrationUI/Czech.lproj/Localizable.strings trans.cy = UI/AdministrationUI/Welsh.lproj/Localizable.strings @@ -179,6 +186,7 @@ trans.uk = UI/AdministrationUI/Ukrainian.lproj/Localizable.strings [sogo.soobjects-appointments] source_file = SoObjects/Appointments/English.lproj/Localizable.strings source_lang = en +trans.ar = SoObjects/Appointments/Arabic.lproj/Localizable.strings trans.ca = SoObjects/Appointments/Catalan.lproj/Localizable.strings trans.cs = SoObjects/Appointments/Czech.lproj/Localizable.strings trans.cy = SoObjects/Appointments/Welsh.lproj/Localizable.strings @@ -204,6 +212,7 @@ trans.uk = SoObjects/Appointments/Ukrainian.lproj/Localizable.strings [sogo.soobjects-contacts] source_file = SoObjects/Contacts/English.lproj/Localizable.strings source_lang = en +trans.ar = SoObjects/Contacts/Arabic.lproj/Localizable.strings trans.ca = SoObjects/Contacts/Catalan.lproj/Localizable.strings trans.cs = SoObjects/Contacts/Czech.lproj/Localizable.strings trans.cy = SoObjects/Contacts/Welsh.lproj/Localizable.strings @@ -229,6 +238,7 @@ trans.uk = SoObjects/Contacts/Ukrainian.lproj/Localizable.strings [sogo.ui-mailpartviewers] source_file = UI/MailPartViewers/English.lproj/Localizable.strings source_lang = en +trans.ar = UI/MailPartViewers/Arabic.lproj/Localizable.strings trans.ca = UI/MailPartViewers/Catalan.lproj/Localizable.strings trans.cs = UI/MailPartViewers/Czech.lproj/Localizable.strings trans.cy = UI/MailPartViewers/Welsh.lproj/Localizable.strings diff --git a/SoObjects/Appointments/Arabic.lproj/Localizable.strings b/SoObjects/Appointments/Arabic.lproj/Localizable.strings new file mode 100644 index 000000000..23754f510 --- /dev/null +++ b/SoObjects/Appointments/Arabic.lproj/Localizable.strings @@ -0,0 +1,66 @@ +"Personal Calendar" = "التقويم الشخصي"; +vevent_class0 = "(حدث عام)"; +vevent_class1 = "(حدث خاص)"; +vevent_class2 = "(حدث سري)"; + +vtodo_class0 = "(مهمة عامة)"; +vtodo_class1 = "(مهمة خاصة)"; +vtodo_class2 = "(مهمة سرية)"; + +/* Receipts */ +"The event \"%{Summary}\" was created" = "أُنشِئ الحدث \"%{Summary}\""; +"The event \"%{Summary}\" was deleted" = "حُذِفَ الحدث \"%{Summary}\""; +"The event \"%{Summary}\" was updated" = "حُدِّث الحدث \"%{Summary}\""; +"The following attendees(s) were notified:" = "تم ابلاغ المدعو (المدعويين) الأتي أسماءهم:"; +"The following attendees(s) were added:" = "تم أضافة المدعو (المدعويين) الأتي أسماءهم:"; +"The following attendees(s) were removed:" = "تم مسح المدعو (المدعويين) الأتي أسماءهم:"; + +/* IMIP messages */ +"calendar_label" = "التقويم:"; +"startDate_label" = "البداية:"; +"endDate_label" = "النهاية:"; +"due_label" = "تاريخ الاستحقاق:"; +"location_label" = "المكان:"; +"summary_label" = "الملخص:"; +"comment_label" = "التعليق:"; + +/* Invitation */ +"Event Invitation: \"%{Summary}\"" = "دعوة الحدث: \"%{Summary}\""; +"(sent by %{SentBy}) " = "(أرسلت بواسطة٪ {SentBy})"; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" = "وقد دعت%{Organizer} %{SentByText} الى %{Summary} . ⏎\n⏎\nبداية:٪ {StartDate} ⏎\nنهاية:%{EndDate}⏎\nالوصف:%{Description}\n"; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}قام بدعوتك %{Summary}. ⏎\n⏎\nبداية:٪ {StartDate} في {٪ StartTime} ⏎\nالغاية: {٪ EndDate} في {٪ EndTime} ⏎\nالوصف:%{Description}\n"; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "الحدث الغي : \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" += "ألغى%{Organizer} %{SentByText} هذا الحدث:.%{Summary} ⏎\n⏎\nبداية:٪ {StartDate} ⏎\nنهاية:%{EndDate} ⏎\nالوصف:%{Description}"; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" += "%{Organizer} %{SentByText}قام بإلغاء هذا الحدث: %{Summary}.⏎\n⏎\nبداية:٪ {StartDate} في {٪ StartTime} ⏎\nالغاية: {٪ EndDate} في {٪ EndTime} ⏎\nالوصف:%{Description}"; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} has changed" += "موعد \"%{Summary}\" بتاريخ %{OldStartDate} قد تغير"; +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "تعيين \"%{Summary}\" ل٪ {OldStartDate} في {٪ OldStartTime} قد تغيرت"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += " لقد تغيرت المحددات التالية في الاجتماع \"%{Summary}\":"; +"Please accept or decline those changes." += "يرجى قبول أو رفض تلك التغييرات."; + +/* Reply */ +"Accepted invitation: \"%{Summary}\"" = "دعوةٌ مقبولة: \"%{Summary}\""; +"Declined invitation: \"%{Summary}\"" = "دعوةٌ مرفوضة: \"%{Summary}\""; +"Delegated invitation: \"%{Summary}\"" = "دعوة تفويض: \"%{Summary}\""; +"Not yet decided on invitation: \"%{Summary}\"" = "دعوةٌ لم تقرر بشأنها: \"%{Summary}\""; +"%{Attendee} %{SentByText}has accepted your event invitation." += "وقد قبلت%{Attendee} %{SentByText} دعوتك الحدث."; +"%{Attendee} %{SentByText}has declined your event invitation." += "وقد رفض %{Attendee} %{SentByText} دعوتك للحدث"; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "وقد فوض%{Attendee} %{SentByText} الدعوة إلى %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText} لم يقرر حتى الآن حضورهذا الحدث الخاص بك."; + +/* Resources */ +"Cannot access resource: \"%{Cn} %{SystemEmail}\"" = "لا يمكن الوصول إلى الموارد: \"%{Cn} %{SystemEmail}\""; +"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}." = "الحد الأقصى لعدد الحجوزات في وقت واحد (%{NumberOfSimultaneousBookings}) وصلت للموارد \"%{Cn} %{SystemEmail}\" . الحدث المتضارب في الموعد هو \"٪ {EventTitle}\"، ويبدأ فى٪ {StartDate}."; diff --git a/SoObjects/Appointments/GNUmakefile b/SoObjects/Appointments/GNUmakefile index 308926b3a..10fd04297 100644 --- a/SoObjects/Appointments/GNUmakefile +++ b/SoObjects/Appointments/GNUmakefile @@ -53,7 +53,7 @@ Appointments_RESOURCE_FILES += \ \ MSExchangeFreeBusySOAPRequest.wo -Appointments_LANGUAGES = BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh +Appointments_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh Appointments_LOCALIZED_RESOURCE_FILES = Localizable.strings diff --git a/SoObjects/Contacts/Arabic.lproj/Localizable.strings b/SoObjects/Contacts/Arabic.lproj/Localizable.strings new file mode 100644 index 000000000..188cc411b --- /dev/null +++ b/SoObjects/Contacts/Arabic.lproj/Localizable.strings @@ -0,0 +1 @@ +"Personal Address Book" = "دفتر العناوين الشخصية"; diff --git a/SoObjects/Contacts/GNUmakefile b/SoObjects/Contacts/GNUmakefile index d0f3e2965..23871c73d 100644 --- a/SoObjects/Contacts/GNUmakefile +++ b/SoObjects/Contacts/GNUmakefile @@ -27,7 +27,7 @@ Contacts_OBJC_FILES = \ Contacts_RESOURCE_FILES += \ product.plist \ -Contacts_LANGUAGES = BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh +Contacts_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh Contacts_LOCALIZED_RESOURCE_FILES = Localizable.strings diff --git a/SoObjects/Mailer/GNUmakefile b/SoObjects/Mailer/GNUmakefile index 975cfe503..db5edc0b0 100644 --- a/SoObjects/Mailer/GNUmakefile +++ b/SoObjects/Mailer/GNUmakefile @@ -42,6 +42,8 @@ Mailer_RESOURCE_FILES += \ product.plist \ Mailer_RESOURCE_FILES += \ + SOGoMailArabicForward.wo \ + SOGoMailArabicReply.wo \ SOGoMailBrazilianPortugueseForward.wo \ SOGoMailBrazilianPortugueseReply.wo \ SOGoMailCatalanForward.wo \ diff --git a/SoObjects/Mailer/SOGoMailArabicForward.wo/SOGoMailArabicForward.html b/SoObjects/Mailer/SOGoMailArabicForward.wo/SOGoMailArabicForward.html new file mode 100644 index 000000000..379fc9c16 --- /dev/null +++ b/SoObjects/Mailer/SOGoMailArabicForward.wo/SOGoMailArabicForward.html @@ -0,0 +1,13 @@ +<#newLine/> +<#newLine/> +<#newLine/> +-------- الرسالة الاصلية --------<#newLine/> +الموضوع: <#subject/><#newLine/> +التاريخ: <#date/><#newLine/> +من: <#from/><#newLine/> +<#hasReplyTo>ردً على: <#replyTo/><#hasOrganization>المنظمة: <#organization/>إلى: <#to/><#newLine/> +<#hasCc>CC: <#cc/><#hasNewsGroups>مجموعات الأخبار: <#newsgroups/><#hasReferences>المراجع: <#references/><#newLine/> +<#newLine/> +<#messageBody/><#newLine/> +<#newLine/> +<#signature/><#newLine/> diff --git a/SoObjects/Mailer/SOGoMailArabicForward.wo/SOGoMailArabicForward.wod b/SoObjects/Mailer/SOGoMailArabicForward.wo/SOGoMailArabicForward.wod new file mode 100644 index 000000000..7787fa18e --- /dev/null +++ b/SoObjects/Mailer/SOGoMailArabicForward.wo/SOGoMailArabicForward.wod @@ -0,0 +1,79 @@ +subject: WOString { + value = subject; + escapeHTML = NO; +} + +date: WOString { + value = date; + escapeHTML = NO; +} + +from: WOString { + value = from; + escapeHTML = NO; +} + +newLine: WOString { + value = newLine; + escapeHTML = NO; +} + +hasReplyTo: WOConditional { + condition = hasReplyTo; +} + +replyTo: WOString { + value = replyTo; + escapeHTML = NO; +} + +hasOrganization: WOConditional { + condition = hasOrganization; +} + +organization: WOString { + value = organization; + escapeHTML = NO; +} + +to: WOString { + value = to; + escapeHTML = NO; +} + +hasCc: WOConditional { + condition = hasCc; +} + +cc: WOString { + value = cc; + escapeHTML = NO; +} + +hasNewsGroups: WOConditional { + condition = hasNewsGroups; +} + +newsgroups: WOString { + value = newsgroups; + escapeHTML = NO; +} + +hasReferences: WOConditional { + condition = hasReferences; +} + +references: WOString { + value = references; + escapeHTML = NO; +} + +messageBody: WOString { + value = messageBody; + escapeHTML = NO; +} + +signature: WOString { + value = signature; + escapeHTML = NO; +} diff --git a/SoObjects/Mailer/SOGoMailArabicReply.wo/SOGoMailArabicReply.html b/SoObjects/Mailer/SOGoMailArabicReply.wo/SOGoMailArabicReply.html new file mode 100644 index 000000000..377f1025a --- /dev/null +++ b/SoObjects/Mailer/SOGoMailArabicReply.wo/SOGoMailArabicReply.html @@ -0,0 +1,16 @@ +<#replyPlacementOnTop><#newLine/> +<#newLine/> +<#signaturePlacementOnTop><#newLine/> +<#signature/><#newLine/> +<#outlookMode>-------- الرسالة الأصلية --------<#newLine/> +الموضوع: <#subject/><#newLine/> +التاريخ: <#date/><#newLine/> +من: <#from/><#newLine/> +<#hasReplyTo>ردً علي: <#replyTo/><#hasOrganization>المنظمة: <#organization/>إلى: <#to/><#newLine/> +<#hasCc>CC: <#cc/><#hasNewsGroups>مجموعات الأخبار: <#newsgroups/><#hasReferences>المراجع: <#references/><#newLine/> +<#standardMode>في <#date/>, <#from/> كتب:<#newLine/> +<#newLine/> +<#messageBody/><#newLine/> +<#replyPlacementOnBottom><#newLine/> +<#newLine/> +<#signaturePlacementOnBottom><#signature/><#newLine/> diff --git a/SoObjects/Mailer/SOGoMailArabicReply.wo/SOGoMailArabicReply.wod b/SoObjects/Mailer/SOGoMailArabicReply.wo/SOGoMailArabicReply.wod new file mode 100644 index 000000000..3fbed6d61 --- /dev/null +++ b/SoObjects/Mailer/SOGoMailArabicReply.wo/SOGoMailArabicReply.wod @@ -0,0 +1,106 @@ +outlookMode: WOConditional { + condition = outlookMode; +} + +standardMode: WOConditional { + condition = outlookMode; + negate = YES; +} + +subject: WOString { + value = subject; + escapeHTML = NO; +} + +date: WOString { + value = date; + escapeHTML = NO; +} + +from: WOString { + value = from; + escapeHTML = NO; +} + +newLine: WOString { + value = newLine; + escapeHTML = NO; +} + +hasReplyTo: WOConditional { + condition = hasReplyTo; +} + +replyTo: WOString { + value = replyTo; + escapeHTML = NO; +} + +hasOrganization: WOConditional { + condition = hasOrganization; +} + +organization: WOString { + value = organization; + escapeHTML = NO; +} + +to: WOString { + value = to; + escapeHTML = NO; +} + +hasCc: WOConditional { + condition = hasCc; +} + +cc: WOString { + value = cc; + escapeHTML = NO; +} + +hasNewsGroups: WOConditional { + condition = hasNewsGroups; +} + +newsgroups: WOString { + value = newsgroups; + escapeHTML = NO; +} + +hasReferences: WOConditional { + condition = hasReferences; +} + +references: WOString { + value = references; + escapeHTML = NO; +} + +messageBody: WOString { + value = messageBody; + escapeHTML = NO; +} + +signature: WOString { + value = signature; + escapeHTML = NO; +} + +replyPlacementOnTop: WOConditional { + condition = replyPlacementOnTop; +} + +replyPlacementOnBottom: WOConditional { + condition = replyPlacementOnTop; + negate = YES; +} + +signaturePlacementOnTop: WOConditional { + condition = signaturePlacementOnTop; +} + +signaturePlacementOnBottom: WOConditional { + condition = signaturePlacementOnTop; + negate = YES; +} diff --git a/SoObjects/Mailer/SOGoMailForward.h b/SoObjects/Mailer/SOGoMailForward.h index a1593d405..032733692 100644 --- a/SoObjects/Mailer/SOGoMailForward.h +++ b/SoObjects/Mailer/SOGoMailForward.h @@ -37,6 +37,9 @@ @end +@interface SOGoMailArabicForward : SOGoMailForward +@end + @interface SOGoMailBrazilianPortugueseForward : SOGoMailForward @end diff --git a/SoObjects/Mailer/SOGoMailForward.m b/SoObjects/Mailer/SOGoMailForward.m index e7afdddd9..3fcdb840a 100644 --- a/SoObjects/Mailer/SOGoMailForward.m +++ b/SoObjects/Mailer/SOGoMailForward.m @@ -241,6 +241,9 @@ @end +@implementation SOGoMailArabicForward +@end + @implementation SOGoMailBrazilianPortugueseForward @end diff --git a/SoObjects/Mailer/SOGoMailReply.h b/SoObjects/Mailer/SOGoMailReply.h index 123ea0308..20b698f76 100644 --- a/SoObjects/Mailer/SOGoMailReply.h +++ b/SoObjects/Mailer/SOGoMailReply.h @@ -42,6 +42,9 @@ @end +@interface SOGoMailArabicReply : SOGoMailReply +@end + @interface SOGoMailBrazilianPortugueseReply : SOGoMailReply @end diff --git a/SoObjects/Mailer/SOGoMailReply.m b/SoObjects/Mailer/SOGoMailReply.m index 4efb356bd..5738d520f 100644 --- a/SoObjects/Mailer/SOGoMailReply.m +++ b/SoObjects/Mailer/SOGoMailReply.m @@ -99,6 +99,9 @@ @end +@implementation SOGoMailArabicReply +@end + @implementation SOGoMailBrazilianPortugueseReply @end diff --git a/SoObjects/SOGo/SOGoDefaults.plist b/SoObjects/SOGo/SOGoDefaults.plist index 01fc78101..1ff09173c 100644 --- a/SoObjects/SOGo/SOGoDefaults.plist +++ b/SoObjects/SOGo/SOGoDefaults.plist @@ -35,7 +35,7 @@ SOGoLoginModule = "Mail"; SOGoLanguage = "English"; - SOGoSupportedLanguages = ( "Catalan", "Czech", "Dutch", "Danish", "Welsh", "English", + SOGoSupportedLanguages = ( "Arabic", "Catalan", "Czech", "Dutch", "Danish", "Welsh", "English", "SpanishSpain", "SpanishArgentina", "Finnish", "French", "German", "Icelandic", "Italian", "Hungarian", "BrazilianPortuguese", "NorwegianBokmal", "NorwegianNynorsk", "Polish", "Russian", "Slovak", diff --git a/Tests/Integration/preferences.py b/Tests/Integration/preferences.py index 854f7cb0c..f66ac0dea 100644 --- a/Tests/Integration/preferences.py +++ b/Tests/Integration/preferences.py @@ -10,7 +10,7 @@ import sogoLogin # must be kept in sync with SoObjects/SOGo/SOGoDefaults.plist # this should probably be fetched magically... -SOGoSupportedLanguages = [ "Catalan", "Czech", "Dutch", "Danish", "Welsh", "English", "Finnish", +SOGoSupportedLanguages = [ "Arabic", "Catalan", "Czech", "Dutch", "Danish", "Welsh", "English", "Finnish", "SpanishSpain", "SpanishArgentina", "French", "German", "Icelandic", "Italian", "Hungarian", "BrazilianPortuguese", "NorwegianBokmal", "NorwegianNynorsk", "Polish", "Russian", "Slovak", diff --git a/UI/AdministrationUI/Arabic.lproj/Localizable.strings b/UI/AdministrationUI/Arabic.lproj/Localizable.strings new file mode 100644 index 000000000..44e7695fb --- /dev/null +++ b/UI/AdministrationUI/Arabic.lproj/Localizable.strings @@ -0,0 +1,15 @@ +/* this file is in UTF-8 format! */ + +"Help" = "مساعدة"; +"Close" = "اغلاق"; + +"Modules" = "وحدات"; + +/* Modules short names */ +"ACLs" = "قوائم الصلاحيات"; + +/* Modules titles */ +"ACLs_title" = "إدارة صلاحيات مجلدات المستخدمين"; + +/* Modules descriptions */ +"ACLs_description" = "

    وحدة إدارة قوائم الصلاحيات تسمح بتعديل صلاحيات تقويم ودفتر العناوين لكل مستخدم.

    لتعديل قائمة صلاحيات خاصة بمجلد مستخدم, اكتب اسم المستخدم في حقل البحث في الجزء العلوي من النافذة واضغط مرتين على المجلد المطلوب.

    "; diff --git a/UI/AdministrationUI/GNUmakefile b/UI/AdministrationUI/GNUmakefile index 3b8ecd176..d57aee9dc 100644 --- a/UI/AdministrationUI/GNUmakefile +++ b/UI/AdministrationUI/GNUmakefile @@ -6,7 +6,7 @@ BUNDLE_NAME = AdministrationUI AdministrationUI_PRINCIPAL_CLASS = AdministrationUIProduct -AdministrationUI_LANGUAGES = BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh +AdministrationUI_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh AdministrationUI_OBJC_FILES = \ AdministrationUIProduct.m \ diff --git a/UI/Common/Arabic.lproj/Localizable.strings b/UI/Common/Arabic.lproj/Localizable.strings new file mode 100644 index 000000000..2f3b62db7 --- /dev/null +++ b/UI/Common/Arabic.lproj/Localizable.strings @@ -0,0 +1,110 @@ +/* this file is in UTF-8 format! */ + +/* toolbars */ +"Save" = "احفظ"; +"Close" = "أغلق"; +"Edit User Rights" = "حرِّر صلاحيات المستخدم"; + +"Home" = "الصفحة الرئيسية"; +"Calendar" = "التقويم"; +"Address Book" = "دفتر العناوين"; +"Mail" = "البريد"; +"Preferences" = "التفضيلات"; +"Administration" = "إدارة"; +"Disconnect" = "قطع الاتصال"; +"Right Administration" = "حق الإدارة"; +"Log Console (dev.)" = "سجل وحدة التحكم (برمجة)"; + +"User" = "مستخدم"; +"Vacation message is enabled" = "فُعِّلت رسالة العُطْلة"; + +"Help" = "المساعدة"; + +"noJavascriptError" = "سوجو يتطلب جافا سكريبت للتشغيل. يرجى التأكد من هذا الخيار متاح ضمن تفضيلات المتصفح."; +"noJavascriptRetry" = "إعادة المحاولة"; + +"Owner:" = "المالك:"; +"Publish the Free/Busy information" = "نشر معلومات متوفر / مشغول"; + +"Add..." = "إضافة ..."; +"Remove" = "إزالة"; + +"Subscribe User" = "اشتراك المستخدم"; + +"Any Authenticated User" = "أي مستخدم مسجل"; +"Public Access" = "وصول الجمهور"; +"Any user not listed above" = "أي مستخدم غير مذكور أعلاه"; +"Anybody accessing this resource from the public area" = "أي شخص يدخل على هذه الموارد من منطقة عامة"; + +"Sorry, the user rights can not be configured for that object." = "آسف، لا يمكن أن يتم تكوين حقوق المستخدم لذلك الكائن."; + +"Any user with an account on this system will be able to access your mailbox \"%{0}\". Are you certain you trust them all?" + = "إن أي مستخدم لديه حساب على هذا النظام سيكون قادرا على الوصول إلى صندوق البريد الخاص بك \"٪ {0}\". هل أنت متأكد من أنك تثق بهم؟"; +"Any user with an account on this system will be able to access your calendar \"%{0}\". Are you certain you trust them all?" + = "أي مستخدم لديه حساب على هذا النظام سيكون قادرا على الوصول إلى التقويم الخاص بك \"٪ {0}\". هل أنت متأكد من أنك تثق بهم؟"; +"Potentially anyone on the Internet will be able to access your calendar \"%{0}\", even if they do not have an account on this system. Is this information suitable for the public Internet?" + = "يحتمل أن يكون أي شخص على الإنترنت قادرا على الوصول إلى التقويم الخاص بك \"٪ {0}\"، حتى لو لم يكن لديهم حساب على هذا النظام. هل هذه المعلومات مناسبة لشبكة الانترنت العامة؟"; +"Any user with an account on this system will be able to access your address book \"%{0}\". Are you certain you trust them all?" + = "إن أي مستخدم لديه حساب على هذا النظام سيكون قادرا على الوصول إلى دفترالعناوين الخاص بك \"٪ {0}\". هل أنت متأكد من أنك تثق بهم؟"; +"Potentially anyone on the Internet will be able to access your address book \"%{0}\", even if they do not have an account on this system. Is this information suitable for the public Internet?" + = "يحتمل أن يتمكن أي شخص على الإنترنت من الوصول إلى دفنرالعناوين الخاص بك \"٪ {0}\"، حتى لو لم يكن لديه حساب على هذا النظام. هل هذه المعلومات مناسبة لشبكة الانترنت العامة؟"; +"Give Access" = "منح حق الوصول"; +"Keep Private" = "إبقاءه مخفي"; + +/* generic.js */ +"Unable to subscribe to that folder!" + = "غير قادر على الاشتراك في هذا المجلد!"; +"You cannot subscribe to a folder that you own!" + = "لا يمكنك الاشتراك في المجلد ملك لك!"; +"Unable to unsubscribe from that folder!" + = "غير قادر على إلغاء الاشتراك من هذا المجلد!"; +"You cannot unsubscribe from a folder that you own!" + = "لا يمكنك إلغاء الاشتراك من مجلد تمتلكه !"; +"Unable to rename that folder!" = "غير قادر على إعادة تسمية هذا المجلد!"; +"You have already subscribed to that folder!" + = "أنت مشترك بالفعل في هذا المجلد!"; +"The user rights cannot be edited for this object!" + = "لا يمكن تعديل حقوق المستخدم لهذا الكائن!"; +"A folder by that name already exists." = "مجلد بهذا الاسم موجود بالفعل."; +"You cannot create a list in a shared address book." + = "لا يمكنك إنشاء قائمة في دفتر العناوين المشترك."; +"Warning" = "تحذير"; + +"You are not allowed to access this module or this system. Please contact your system administrator." += "لا يسمح لك بالوصول إلى هذه الوحدة أو هذا النظام. الرجاء الاتصال بمسؤول النظام."; +"You don't have the required privileges to perform the operation." += "ليس لديك الصلاحيات المطلوبة لتنفيذ العملية."; + +"noEmailForDelegation" = "يجب تحديد العنوان الذي تريد تفويضه بدعوتك."; +"delegate is organizer" = "المفوض هو المنظم. يرجى تحديد مفوض مختلف."; +"delegate is a participant" = "المفوض هو بالفعل أحد المشاركين."; +"delegate is a group" = "العنوان المحدد يناظر مجموعة من العناوين. يمكنك فقط أن تفوض شخص معين."; + +"Snooze for " = "تأجيل الى"; +"5 minutes" = "5 دقائق"; +"10 minutes" = "10 دقائق"; +"15 minutes" = "15 دقيقة"; +"30 minutes" = "30 دقيقة"; +"45 minutes" = "45 دقيقة"; +"1 hour" = "1 ساعة"; + + +/* common buttons */ +"OK" = "موافق"; +"Cancel" = "إلغاء"; +"Yes" = "نعم"; +"No" = "لا"; + +/* alarms */ +"Reminder:" = "تذكير:"; +"Start:" = "البداية:"; +"Due Date:" = "تاريخ الاستحقاق:"; +"Location:" = "الموقع:"; + +"a2_Sunday" = "ح"; +"a2_Monday" = "ن"; +"a2_Tuesday" = "ث"; +"a2_Wednesday" = "ر"; +"a2_Thursday" = "خ"; +"a2_Friday" = "ج"; +"a2_Saturday" = "س"; diff --git a/UI/Common/GNUmakefile b/UI/Common/GNUmakefile index 488ab9fc1..5eaf6c036 100644 --- a/UI/Common/GNUmakefile +++ b/UI/Common/GNUmakefile @@ -6,7 +6,7 @@ BUNDLE_NAME = CommonUI CommonUI_PRINCIPAL_CLASS = CommonUIProduct -CommonUI_LANGUAGES = BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh +CommonUI_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh CommonUI_OBJC_FILES += \ CommonUIProduct.m \ diff --git a/UI/Contacts/Arabic.lproj/Localizable.strings b/UI/Contacts/Arabic.lproj/Localizable.strings new file mode 100644 index 000000000..004bd95ca --- /dev/null +++ b/UI/Contacts/Arabic.lproj/Localizable.strings @@ -0,0 +1,208 @@ +/* this file is in UTF-8 format! */ + +"Contact" = "بيانات شخص"; +"Address" = "عنوان"; +"Photos" = "صور"; +"Other" = "اخرى"; + +"Address Books" = "دفاتر العناوين"; +"Addressbook" = "دفتر العناوين"; +"Addresses" = "عناوين"; +"Update" = "تحديث"; +"Cancel" = "إلغاء"; +"Common" = "مشترك"; +"Contact editor" = "تحرير بيانات شخص"; +"Contact viewer" = "معاينة بيانات شخص"; +"Email" = "بريد إلكتروني"; +"Screen Name" = "اسم"; +"Extended" = "موسعة"; +"Fax" = "فاكس"; +"Firstname" = "الاسم الاول"; +"Home" = "منزل"; +"HomePhone" = "رقم المنزل"; +"Lastname" = "الاسم الاخير"; +"Location" = "الموقع"; +"MobilePhone" = "رقم المحمول"; +"Name" = "الاسم"; +"OfficePhone" = "رقم المكتب"; +"Organization" = "الجهة"; +"Work Phone" = "رقم العمل"; +"Phone" = "رقم الهاتف"; +"Phones" = "ارقام هواتف"; +"Postal" = "بريد"; +"Save" = "حفظ"; +"Internet" = "انترنت"; +"Unit" = "وحدة"; +"delete" = "مسح"; +"edit" = "تعديل"; +"invalidemailwarn" = "البريد الإلكتروني المحدد غير صالح"; +"invaliddatewarn" = "التاريخ المحدد غير صالح."; +"new" = "جديد"; +"Preferred Phone" = "رقم الهاتف المفضل"; + +"Move To" = "نقل الى"; +"Copy To" = "نسخ الى"; +"Add to:" = "إضافة الى:"; + +/* Tooltips */ + +"Create a new address book card" = "إنشاء بطاقة جديدة بدفتر العناوين "; +"Create a new list" = "إنشاء قائمة جديدة"; +"Edit the selected card" = "تحرير بطاقة مختارة"; +"Send a mail message" = "إرسال رسالة بريد"; +"Delete selected card or address book" = "حذف بطاقة أو دفتر عناوين محدد"; +"Reload all contacts" = "تحديث كافة جهات الاتصال"; + +"htmlMailFormat_UNKNOWN" = "غير معروف"; +"htmlMailFormat_FALSE" = "نص عادي"; +"htmlMailFormat_TRUE" = "HTML"; + +"Name or Email" = "الاسم أو البريد الإلكتروني"; +"Category" = "فئة"; +"Personal Addressbook" = "دفتر العناوين الشخصية"; +"Search in Addressbook" = "البحث في دفتر العناوين"; + +"New Card" = "بطاقة جديدة"; +"New List" = "قائمة جديدة"; +"Properties" = "خصائص"; +"Sharing..." = "مشاركة ..."; +"Write" = "كتابة"; +"Delete" = "مسح"; +"Instant Message" = "رسالة لحظية"; +"Add..." = "إضافة..."; +"Remove" = "مسح"; + +"Please wait..." = "يرجى الانتظار..."; +"No possible subscription" = "لا يوجد إشتراك"; + +"Preferred" = "المفضل"; +"Display:" = "عرض:"; +"Display Name:" = "الاسم المعروض:"; +"Email:" = "البريد الالكتروني:"; +"Additional Email:" = "بريد إلكتروني إضافي"; + +"Phone Number:" = "رقم الهاتف:"; +"Prefers to receive messages formatted as:" = "يفضل تلقي رسائل منسقة على النحو التالي:"; +"Screen Name:" = "أسم التعريف:"; +"Categories:" = "الفئات:"; + +"First:" = "الاول:"; +"Last:" = "الاخير:"; +"Nickname:" = "الاسم الرمزي:"; + +"Telephone" = "رقم الهاتف:"; +"Work:" = "العمل:"; +"Home:" = "المنزل:"; +"Fax:" = "الفاكس:"; +"Mobile:" = "المحمول"; +"Pager:" = "النداء:"; + +/* categories */ +"contacts_category_labels" = "الزميل، المنافس، العملاء، الصديق، العائلة، شريك تجاري، مقدم خدمة، الصحافة ، كبار الشخصيات"; +"Categories" = "الفئات"; +"New category" = "فئة جديدة"; + +/* adresses */ +"Title:" = "اللقب:"; +"Service:" = "الخدمة:"; +"Company:" = "الشركة:"; +"Department:" = "الادارة:"; +"Organization:" = "الجهة"; +"Address:" = "العنوان:"; +"City:" = "المدينة:"; +"State_Province:" = "الولاية / الاقليم / المحافظة:"; +"ZIP_Postal Code:" = "الرمز البريدي:"; +"Country:" = "الدولة:"; +"Web Page:" = "صفحة الانترنت:"; + +"Work" = "العمل"; +"Other Infos" = "معلومات أخرى"; + +"Note:" = "ملاحظة:"; +"Timezone:" = "المنطقة الزمنية:"; +"Birthday:" = "تاريخ الميلاد:"; +"Birthday (yyyy-mm-dd):" = "تاريخ الميلاد (يوم-شهر-سنة):"; +"Freebusy URL:" = "موقع مشغول /حر:"; + +"Add as..." = "إضافة إلى ..."; +"Recipient" = "مستلم"; +"Carbon Copy" = "نسخة من"; +"Blind Carbon Copy" = "نسخة مخفية من"; + +"New Addressbook..." = "دفتر عناوين جديدة ..."; +"Subscribe to an Addressbook..." = "الاشتراك في دفتر العناوين ..."; +"Remove the selected Addressbook" = "إزالة دفتر العناوين المحدد"; + +"Name of the Address Book" = "اسم دفتر العناوين"; +"Are you sure you want to delete the selected address book?" += "هل أنت متأكد أنك تريد حذف دفتر العناوين المحدد؟"; +"You cannot remove nor unsubscribe from a public addressbook." += "لا يمكنك إزالة أو إلغاء الاشتراك من دفترالعناوين العامة."; +"You cannot remove nor unsubscribe from your personal addressbook." += "لا يمكنك إزالة أو إلغاء الاشتراك من دفتر العناوين الشخصية."; + +"Are you sure you want to delete the selected contacts?" += "هل أنت متأكد أنك تريد حذف الأسماء المحدد؟"; + +"You cannot delete the card of \"%{0}\"." += "لا يمكنك حذف البطاقة من \"%{0}\"."; + +"Address Book Name" = "اسم دفتر الكتاب"; + +"You cannot subscribe to a folder that you own!" += "لا يمكنك الاشتراك في مجلد تمتلكه."; +"Unable to subscribe to that folder!" += "غير قادر على الاشتراك في هذا المجلد."; + +/* acls */ +"Access rights to" = "صلاحية الدخول الى"; +"For user" = "للمستخدم"; + +"Any Authenticated User" = "أي مستخدم مسجل"; +"Public Access" = "وصول الجمهور"; + +"This person can add cards to this addressbook." += "يمكن لهذا الشخص إضافة بطاقات إلى دفتر العناوين المحدد."; +"This person can edit the cards of this addressbook." += "يمكن لهذا الشخص تحرير بطاقات من دفتر العناوين المحدد."; +"This person can list the content of this addressbook." += "يمكن لهذا الشخص عرض محتويات دفتر العناوين المحدد."; +"This person can read the cards of this addressbook." += "يمكن لهذا الشخص قراءة بطاقات من دفتر العناوين المحدد."; +"This person can erase cards from this addressbook." += "يمكن لهذا الشخص محو بطاقات من دفتر العناوين المحدد."; + +"The selected contact has no email address." += "الاسم الذي تم اختياره ليس لديه عنوان البريد الإلكتروني."; + +"Please select a contact." = "الرجاء اختيار إحدى جهات الاتصال."; + +/* Error messages for move and copy */ + +"SoAccessDeniedException" = "لا يمكنك الكتابة إلى دفتر العناوين المذكور."; +"Forbidden" = "لا يمكنك الكتابة إلى دفتر العناوين المذكور."; +"Invalid Contact" = "الاتصال المحدد لم يعد موجودا."; +"Unknown Destination Folder" = "دفتر العناوين المحدد المرسل اليه لم يعد موجودا."; + +/* Lists */ +"List details" = "تفاصيل القائمة"; +"List name:" = "اسم القائمة/"; +"List nickname:" = "اسم القائمة الرمزي:"; +"List description:" = "وصف القائمة:"; +"Members" = "أعضاء"; +"Contacts" = "جهات إتصال"; +"Add" = "إضافة"; +"Lists can't be moved or copied." = "لا يمكن أن يتم نقل القوائم أو نسخها."; +"Export" = "تصدير"; +"Export Address Book..." = "تصدير دفتر العناوين ..."; +"View Raw Source" = "عرض المصدر الخام"; +"Import Cards" = "استيراد بطاقات"; +"Select a vCard or LDIF file." = "حدد شكل vCard أو ملف LDIF."; +"Upload" = "تحميل الى"; +"Uploading" = "تحميل الى"; +"Done" = "تم"; +"An error occured while importing contacts." = "حدث خطأ أثناء استيراد جهات الاتصال."; +"No card was imported." = "لم يتم استيراد أي بطاقة."; +"A total of %{0} cards were imported in the addressbook." = "قد تم استيراد ما مجموعه%{0} بطاقات في دفتر العناوين."; + +"Reload" = "إعادة التحميل"; diff --git a/UI/Contacts/GNUmakefile b/UI/Contacts/GNUmakefile index b51fda829..b29b0373d 100644 --- a/UI/Contacts/GNUmakefile +++ b/UI/Contacts/GNUmakefile @@ -6,7 +6,7 @@ BUNDLE_NAME = ContactsUI ContactsUI_PRINCIPAL_CLASS = ContactsUIProduct -ContactsUI_LANGUAGES = BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh +ContactsUI_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh ContactsUI_OBJC_FILES = \ UIxContactsUserFolders.m \ diff --git a/UI/MailPartViewers/Arabic.lproj/Localizable.strings b/UI/MailPartViewers/Arabic.lproj/Localizable.strings new file mode 100644 index 000000000..ddf59a018 --- /dev/null +++ b/UI/MailPartViewers/Arabic.lproj/Localizable.strings @@ -0,0 +1,46 @@ +ACCEPTED = "مقبول"; +COMPLETED = "منجز"; +DECLINED = "مرفوض"; +DELEGATED = "مفوض"; +"IN-PROCESS" = "جاري"; +"NEEDS-ACTION" = "بحاجة إلى عمل"; +TENTATIVE = "مؤقت"; +organized_by_you = "منظم من قبلك"; +you_are_an_attendee = "أنت أحد الحضور"; +add_info_text = " \"اضافة\" لا يوجد دعم حتى الآن من قبل سوجو."; +publish_info_text = "المرسل يعلمك بالحدث المرفق."; +cancel_info_text = "تم إلغاء دعوتك أو الحدث برمته."; +request_info_no_attendee = "يقترح عقد إجتماع للحضور. تلقيت هذه الرسالة بمثابة إشعار، وليس من المقرر لكم المشاركة."; +Appointment = "موعد"; + +Organizer = "منظم"; +Time = "الساعة"; +Attendees = "الحضور"; +request_info = "يدعوك للمشاركة في الاجتماع."; +"Add to calendar" = "إضافة الى التقويم"; +"Delete from calendar" = "مسح من التقويم"; +"Update status" = "تحديث الحالة"; +Accept = "قبول"; +Decline = "رفض"; +Tentative = "مؤقت"; +"Delegate ..." = "تفويض ..."; +"Delegated to" = "تفويض إلى ..."; +"Update status in calendar" = "تحديث الحالة فى التقويم"; +"delegated from" = "مفوض من "; + +reply_info_no_attendee = "تلقيت ردا على الحدث المسجل لكن الراسل ليس مشاركا."; +reply_info = "هذا هو الرد على دعوة الحدث التي قمت بها."; + +"to" = "إلى :"; + +"Untitled" = "بدون عنوان"; + +"Size" = "الحجم"; + +"Digital signature is not valid" = "التوقيع الرقمي غير صالح"; +"Message is signed" = "الرسالة موقعة"; +"Subject" = "العنوان"; +"From" = "من"; +"Date" = "التاريخ"; +"To" = "إلى"; +"Issuer" = "المصدر"; diff --git a/UI/MailPartViewers/GNUmakefile b/UI/MailPartViewers/GNUmakefile index 328141f7e..745914636 100644 --- a/UI/MailPartViewers/GNUmakefile +++ b/UI/MailPartViewers/GNUmakefile @@ -6,7 +6,7 @@ BUNDLE_NAME = MailPartViewers MailPartViewers_PRINCIPAL_CLASS = MailPartViewersProduct -MailPartViewers_LANGUAGES = BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh +MailPartViewers_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh MailPartViewers_OBJC_FILES += \ MailPartViewersProduct.m \ diff --git a/UI/MailerUI/Arabic.lproj/Localizable.strings b/UI/MailerUI/Arabic.lproj/Localizable.strings new file mode 100644 index 000000000..ed074efca --- /dev/null +++ b/UI/MailerUI/Arabic.lproj/Localizable.strings @@ -0,0 +1,296 @@ +/* this file is in UTF-8 format! */ + +/* Icon's label */ +"Create" = "أنشئ"; +"Empty Trash" = "أفرِغ سلة المهملات"; +"Delete" = "احذف"; +"Expunge" = "محا"; +"Forward" = "ارسال الى"; +"Get Mail" = "الحصول على البريد"; +"Junk" = "تافه"; +"Reply" = "رد"; +"Reply All" = "رد للكل"; +"Print" = "طباعة"; +"Stop" = "توقف"; +"Write" = "كتابة"; + +"Send" = "ارسال"; +"Contacts" = "عناوين"; +"Attach" = "إضافة مرفق"; +"Save" = "حفظ"; +"Options" = "خيارات"; +"Close" = "إغلاق"; +"Size" = "حجم"; + +/* Tooltips */ + +"Send this message now" = "إرسال هذه الرسالة الآن"; +"Select a recipient from an Address Book" = "حدد المستلم من دفتر العناوين"; +"Include an attachment" = "تضمين مرفق"; +"Save this message" = "حفظ هذه الرسالة"; +"Get new messages" = "الحصول على رسائل جديدة"; +"Create a new message" = "إنشاء رسالة جديدة"; +"Go to address book" = "انتقل إلى دفتر العناوين"; +"Reply to the message" = "الرد على الرسالة"; +"Reply to sender and all recipients" = "الرد للمرسل وجميع المتلقين"; +"Forward selected message" = "إرسال الرسالة المحددة"; +"Delete selected message or folder" = "مسح الرسالة او المجلد المحدد"; +"Mark the selected messages as junk" = "سجل الرسائل المحددة على انها تافهة"; +"Print this message" = "اطبع هذه الرسالة"; +"Stop the current transfer" = "وقف النقل الحالي"; +"Attachment" = "مرفق"; +"Unread" = "غير مقروء"; +"Flagged" = "تم وضع علامة عليه"; + +/* Main Frame */ + +"Home" = "الصفحة الرئيسية"; +"Calendar" = "التقويم"; +"Addressbook" = "دفتر العناوين"; +"Mail" = "البريد"; +"Right Administration" = "حق الإدارة"; + +"Help" = "مساعدة"; + +/* Mail account main windows */ + +"Welcome to the SOGo Mailer. Use the folder tree on the left to browse your mail accounts!" = "مرحبا بكم في خدمة سوجو البريدية. استخدم شجرة المجلد على اليسار لتصفح حسابات البريد الإلكتروني الخاص بك!"; + +"Read messages" = "قراءة الرسائل"; +"Write a new message" = "كتابة رسالة جديدة"; + +"Share: " = "مشاركة :"; +"Account: " = "حساب:"; +"Shared Account: " = "حساب مشاركة:"; + +/* acls */ +"Access rights to" = "حقوق الوصول إلى"; +"For user" = "الى مستخدم"; + +"Any Authenticated User" = "أي مستخدم مسجل"; + +"List and see this folder" = "فتح ورؤية هذا المجلد"; +"Read mails from this folder" = "قراءة الرسائل من هذا المجلد"; +"Mark mails read and unread" = "وضع علامة مقروء او غير مقروء على الرسائل"; +"Modify the flags of the mails in this folder" = "تعديل علامات الرسائل بهذا المجلد"; +"Insert, copy and move mails into this folder" = "إدراج، نسخ ونقل الرسائل في هذا المجلد"; +"Post mails" = "إضافة رسائل"; +"Add subfolders to this folder" = "إضافة مجلدات فرعية إلى هذا المجلد"; +"Remove this folder" = "مسح المجلد"; +"Erase mails from this folder" = "مسح الرسائل من هذا المجلد"; +"Expunge this folder" = "محو هذا المجلد"; +"Archive This Folder" = "أرشفة هذا المجلد"; +"Modify the acl of this folder" = "تعديل قائمة الصلاحيات لهذا المجلد"; + +"Saved Messages.zip" = "حفظ Messages.zip"; + +"Update" = "تحديث"; +"Cancel" = "إلغاء"; + +/* Mail edition */ + +"From" = "من"; +"Subject" = "الموضوع"; +"To" = "إلى"; +"Cc" = "نسخة الى"; +"Bcc" = "نسخة مخفية إلى"; +"Reply-To" = "الرد إلى"; +"Add address" = "إضافة عنوان"; + +"Attachments:" = "مرفقات:"; +"Open" = "فتح"; +"Select All" = "إختيار الكل"; +"Attach Web Page..." = "إرفاق صفحة ويب ..."; +"Attach File(s)..." = "إرفاق ملف (ملفات) ..."; + +"to" = "إلى"; +"cc" = "نسخة الى"; +"bcc" = "نسخة مخفية إلى"; + +"Edit Draft..." = "تعديل مسودة ..."; +"Load Images" = "تحميل صور"; + +"Return Receipt" = "عودة الإيصال"; +"The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?" = "طلب مرسل هذه الرسالة أن يتم إعلامه عند قراءة هذه الرسالة. هل ترغب في إبلاغ المرسل؟"; +"Return Receipt (displayed) - %@"= "إيصال عودة (عرض) -٪ @"; +"This is a Return Receipt for the mail that you sent to %@.\n\nNote: This Return Receipt only acknowledges that the message was displayed on the recipient's computer. There is no guarantee that the recipient has read or understood the message contents." = "هذا هو الإيصال مقابل الرسالة الإلكترونية التي أرسلت إلى @٪\n\nملاحظة: هذا الإشعار بالاستلام لا يقر سوى أنه تم عرض رسالة على الكمبيوتر المستلم. ليس هناك ما يضمن أن المتلقي قد قرأ أو فهم محتويات الرسالة."; + +"Priority" = " الأولوية"; +"highest" = "قصوي"; +"high" = "أعلى"; +"normal" = "عادي"; +"low" = "قليلة"; +"lowest" = "دنيا"; + +"This mail is being sent from an unsecure network!" = "يتم إرسال هذا البريد من شبكة غير آمن!"; + +"Address Book:" = "دفتر العناوين:"; +"Search For:" = "البحث عن :"; + +/* Popup "show" */ + +"all" = "الكل"; +"read" = "قرأ"; +"unread" = "لم يقرأ"; +"deleted" = "مسح"; +"flagged" = "معلم"; + +/* MailListView */ + +"Sender" = "الراسل"; +"Subject or Sender" = "الموضوع أو المرسل"; +"To or Cc" = "إلى أو نسخة الى"; +"Entire Message" = "الرسالة كاملة"; + +"Date" = "التاريخ"; +"View" = "عرض"; +"All" = "الكل"; +"No message" = "لا يوجد رسالة"; +"messages" = "رسائل"; + +"first" = "الأول"; +"previous" = "السابق"; +"next" = "التالي"; +"last" = "آخر"; + +"msgnumber_to" = "إلى"; +"msgnumber_of" = "من"; + +"Mark Unread" = "سجل غير مقروء"; +"Mark Read" = "سجل مقروء"; + +"Untitled" = "بدون عنوان"; + +/* Tree */ + +"SentFolderName" = "البريد الصادر"; +"TrashFolderName" = "المهملات"; +"InboxFolderName" = "البريد الوارد"; +"DraftsFolderName" = "مسودات"; +"SieveFolderName" = "فلاتر"; +"OtherUsersFolderName" = "مستخدمين أخرين"; +"SharedFoldersName" = "مجلدات مشتركة"; +"Folders" = "مجلدات"; /* title line */ + +/* MailMoveToPopUp */ + +"MoveTo" = "نقل ومساعدة؛"; + +/* Address Popup menu */ +"Add to Address Book..." = "إضافة الى دفتر العناوين"; +"Compose Mail To" = "إنشاء بريد الى"; +"Create Filter From Message..." = "إنشاء فلتر من الرسالة ..."; + +/* Image Popup menu */ +"Save Image" = "حفظ الصورة"; +"Save Attachment" = "حفظ المرفقات"; + +/* Mailbox popup menus */ +"Open in New Mail Window" = "فتح في نافذة بريد جديدة"; +"Copy Folder Location" = "نسخ موقع المجلد"; +"Subscribe..." = "إشترك..."; +"Mark Folder Read" = "اجعل رسائل المجلد مقروءة"; +"New Folder..." = "مجلد جديد..."; +"Compact This Folder" = "ضغط هذا المجلد"; +"Search Messages..." = "ابحث عن رسائل ..."; +"Sharing..." = "مشاركة..."; +"New Subfolder..." = "مجلد فرعي جديد ..."; +"Rename Folder..." = "إعادة تسمية مجلد ..."; +"Delete Folder" = "مسح المجلد"; +"Use This Folder For" = "استخدم هذا المجلد لى"; +"Get Messages for Account" = "الحصول على الرسائل من حساب"; +"Properties..." = "خصائص ..."; +"Delegation..." = "تفويض..."; + +/* Use This Folder menu */ +"Sent Messages" = "الرسالة المرسلة"; +"Drafts" = "المسودات"; +"Deleted Messages" = "الرسائل المحذوفة"; + +/* Message list popup menu */ +"Open Message In New Window" = "إفنح الرسالة في نافذة جديدة"; +"Reply to Sender Only" = "الرد على المرسل فقط"; +"Reply to All" = "الرد على الكل"; +"Edit As New..." = "تعديل كالجديد ..."; +"Move To" = "نقل إلى"; +"Copy To" = "نسخ إلى"; +"Label" = "ملصق"; +"Mark" = "وضع علامة"; +"Save As..." = "حفظ باسم ..."; +"Print Preview" = "معاينة قبل الطباعة"; +"View Message Source" = "عرض مصدر الرسالة"; +"Print..." = "طباعة..."; +"Delete Message" = "مسح الرسالة"; +"Delete Selected Messages" = "مسح الرسائل المختارة"; + +"This Folder" = "هذا المجلد"; + +/* Label popup menu */ +"None" = "لا شيء"; +"Important" = "مهم"; +"Work" = "عمل"; +"Personal" = "شخصي"; +"To Do" = "تفعل"; +"Later" = "لاحقا"; + +/* Mark popup menu */ +"As Read" = "مقروء"; +"Thread As Read" = "الموضوع مقروء"; +"As Read By Date..." = "كما يقرأ من التاريخ"; +"All Read" = "الكل مقروء"; +"Flag" = "علم"; +"As Junk" = "غير هام"; +"As Not Junk" = "ليس غير هام"; +"Run Junk Mail Controls" = "تشغيل عناصر تحكم البريد غير المرغوب فيه"; + +/* Folder operations */ +"Name :" = "أسم:"; +"Enter the new name of your folder :" + = "أدخل اسم جديد للمجلد:"; +"Do you really want to move this folder into the trash ?" + = "هل تريد حقا نقل هذا المجلد إلى سلة المهملات؟"; +"Operation failed" = "فشلت عملية"; + +"Quota" = "مساحة تخزين:"; +"quotasFormat" = "%{0}% المستخدمة في %{1} ميغابايت"; + +"Please select a message." = "الرجاء اختيار رسالة."; +"Please select a message to print." = "الرجاء اختيار رسالة للطباعة."; +"Please select only one message to print." = "الرجاء اختيار رسالة واحدة فقط للطباعة."; +"The message you have selected doesn't exist anymore." = "الرسالة التي اخترتها لا وجود لها بعد الآن."; + +"The folder with name \"%{0}\" could not be created." += "المجلد الذي اسمه \"٪ {0}\" لا يمكن أن ينشأ."; +"This folder could not be renamed to \"%{0}\"." += "لا يمكن تغييراسم هذا المجلد إلى \"٪ {0}\"."; +"The folder could not be deleted." += "لا يمكن حذف المجلد."; +"The trash could not be emptied." += "لا يمكن تفريغ القمامة."; +"The folder functionality could not be changed." += "لا يمكن تغيير وظيفة المجلد ."; + +"You need to choose a non-virtual folder!" = "تحتاج إلى اختيار مجلد غير ظاهري!"; + +"Moving a message into its own folder is impossible!" += "لا يمكن نقل رسالة إلى المجلد الخاص بها!"; +"Copying a message into its own folder is impossible!" += "لا يمكن نسخ رسالة إلى المجلد الخاص بها !"; + +/* Message operations */ +"The messages could not be moved to the trash folder. Would you like to delete them immediately?" += "لا يمكن نقل الرسائل إلى مجلد سلة المهملات. هل ترغب في حذفها فورا؟"; + +/* Message editing */ +"error_missingsubject" = "الرسالة ليس بها موضوع. هل أنت متأكد من أنك تريد إرسالها؟"; +"error_missingrecipients" = "يرجى تحديد مستلم واحد على الأقل."; +"Send Anyway" = "إرسال على أي حال"; + +/* Message sending */ +"cannot send message: (smtp) all recipients discarded" = "لا يمكن إرسال الرسالة: جميع العناوين خاطئة."; +"cannot send message (smtp) - recipients discarded:" = "لا يمكن إرسال رسالة. العناوين التالية غير صالحة:"; +"cannot send message: (smtp) error when connecting" = "لا يمكن إرسال الرسالة: خطأ عند الاتصال إلى خادم SMTP."; + +/* Contacts list in mail editor */ +"Email" = "بريد إلكتروني"; +"Name" = "الاسم"; diff --git a/UI/MailerUI/GNUmakefile b/UI/MailerUI/GNUmakefile index dfce6342c..dc1fdb9cb 100644 --- a/UI/MailerUI/GNUmakefile +++ b/UI/MailerUI/GNUmakefile @@ -6,7 +6,7 @@ BUNDLE_NAME = MailerUI MailerUI_PRINCIPAL_CLASS = MailerUIProduct -MailerUI_LANGUAGES = BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh +MailerUI_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh MailerUI_OBJC_FILES += \ MailerUIProduct.m \ diff --git a/UI/MainUI/Arabic.lproj/Locale b/UI/MainUI/Arabic.lproj/Locale new file mode 100644 index 000000000..c6c3d8187 --- /dev/null +++ b/UI/MainUI/Arabic.lproj/Locale @@ -0,0 +1,35 @@ +/* Arabic */ +{ + NSLanguageName = "Arabic"; + NSFormalName = "العربية"; + NSLocaleCode = "ar"; /* ISO 639-1 */ + NSLanguageCode = "ara"; /* ISO 639-2 */ + NSParentContext = ""; + + NSAMPMDesignation = ("ص", "م"); + NSCurrencySymbol = "$"; + NSDateFormatString = "%A, %B %e, %Y"; + NSDateTimeOrdering = MDYH; + NSDecimalDigits = ("٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"); + NSDecimalSeparator = "."; + NSEarlierTimeDesignations = ("قبل", "آخر", "الماضي", "منذ"); + NSHourNameDesignations = ((0, "منتصف الليل"), (10, "صباحاُ"), (12, "ظهراُ", "الغداء"), (14, "عصراُ"), (19, "عشاءاُ")); + NSInternationalCurrencyString = EGP; /* ISO 4217 */ + NSLaterTimeDesignations = ("التالي"); + NSMonthNameArray = ("يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"); + NSNextDayDesignations = ("غدا"); + NSNextNextDayDesignations = ("اليوم التالي"); + NSPriorDayDesignations = ("أمس"); + NSShortDateFormatString = "%m/%e/%y"; + NSShortMonthNameArray = ("يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"); + NSShortTimeDateFormatString = "%m/%e/%y %I:%M %p"; + NSShortWeekDayNameArray = ("ح", "ن", "ث", "ر", "خ", "ج", "س"); + NSThisDayDesignations = ("اليوم", "الآن"); + NSThousandsSeparator = ","; + NSTimeDateFormatString = "%A, %B %e, %Y %I:%M:%S %p %Z"; + NSTimeFormatString = "%I:%M:%S %p"; + NSWeekDayNameArray = ("الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت"); + NSYearMonthWeekDesignations = ("سنة", "شهر", "أسبوع"); + NSPositiveCurrencyFormatString = "$9,999.00"; + NSNegativeCurrencyFormatString = "-$9,999.00"; +} diff --git a/UI/MainUI/Arabic.lproj/Localizable.strings b/UI/MainUI/Arabic.lproj/Localizable.strings new file mode 100644 index 000000000..bf38766c0 --- /dev/null +++ b/UI/MainUI/Arabic.lproj/Localizable.strings @@ -0,0 +1,78 @@ +/* this file is in UTF-8 format! */ + +"title" = "سوجو"; + +"Username:" = "اسم المستخدم:"; +"Password:" = "كلمة السر:"; +"Domain:" = "النطاق:"; +"Remember username" = "تذكر اسم المستخدم"; + +"Connect" = "اتصل"; + +"Wrong username or password." = "اسم المستخدم أو كلمة المرور خطأ."; +"cookiesNotEnabled" = "لا يمكنك الدخول لأنه تم تعطيل الكوكيز بالمتصفح الخاص بك . يرجى تمكين الكوكيز في إعدادات المتصفح الخاص بك وحاول مرة أخرى."; + +"browserNotCompatible" = "لقد اكتشفنا ان إصدار المتصفح الخاص بك غير معتمد على هذا الموقع. نحن نوصي بإستخدام فايرفوكس. انقر على الرابط أدناه لتحميل الإصدار الأحدث من هذا المتصفح."; +"alternativeBrowsers" = "بدلا من ذلك، يمكنك أيضا استخدام المتصفحات التالية المتوافقة"; +"alternativeBrowserSafari" = "بدلا من ذلك، يمكنك أيضا استخدام سفاري."; +"Download" = "نزِّل"; + +"Language:" = "اللغة:"; +"choose" = "إختار ..."; +"Arabic" = "العربية"; +"Catalan" = "Català"; +"Czech" = "Česky"; +"Danish" = "Dansk (Danmark)"; +"Dutch" = "Nederlands"; +"English" = "English"; +"Finnish" = "Suomi"; +"French" = "Français"; +"German" = "Deutsch"; +"Hungarian" = "Magyar"; +"Icelandic" = "Íslenska"; +"Italian" = "Italiano"; +"NorwegianBokmal" = "Norsk bokmål"; +"NorwegianNynorsk" = "Norsk nynorsk"; +"Polish" = "Polski"; +"BrazilianPortuguese" = "Português brasileiro"; +"Russian" = "Русский"; +"Slovak" = "Slovensky"; +"SpanishSpain" = "Español (España)"; +"SpanishArgentina" = "Español (Argentina)"; +"Swedish" = "Svenska"; +"Ukrainian" = "Українська"; +"Welsh" = "Cymraeg"; + +"About" = "حول"; +"AboutBox" = "قام بالبرمجة شركة إنفرز، سوجو هو برنامج خدمي كامل المزايا مع التركيز على التوسع والبساطة.
    ⏎\nسوجو يوفر واجهة غنية بتقنية AJAX ويدعم متصفحات متعددة من خلال استخدام البروتوكولات القياسية مثل اCalDAV وCardDAV.
    ⏎\nسوجو موزع بموجب
    GNU GPL النسخة 2 او الاحدث وبعض الاجزاء موزعة تحت GNU GPL النسخة 2. هذا البرنامج مجاني: أنت حر في تغييره وإعادة توزيعه. لا يوجد أي ضمان، إلى الحد الذي يسمح به القانون.
    ⏎\nانظر this page لخيارات الدعم المختلفة."; + +"Your account was locked due to too many failed attempts." = "تم وقف الدخول على حسابك بسبب الكثير من المحاولات الفاشلة."; +"Your account was locked due to an expired password." = "تم وقف الدخول على حسابك بسبب إنتهاء صلاحية كلمة السر."; +"Login failed due to unhandled error case: " = "فشل تسجيل الدخول بسبب حالة خطأ غير معروفة:"; +"Change your Password" = "تغيير كلمة السر الخاصة بك"; +"The password was changed successfully." = "تم تغيير كلمة المرور بنجاح."; +"Your password has expired, please enter a new one below:" = "كلمة السر الخاصة بك قد انتهت صلاحيتها، الرجاء إدخال واحدة جديدة فيما يلي:"; +"Password must not be empty." = "كلمة السر يجب ان لا تكون فارغة."; +"The passwords do not match. Please try again." = "كلمات المرور لا تتطابق. يرجى المحاولة مرة أخرى."; +"Password Grace Period" = "فترة السماح لكلمة السر "; +"You have %{0} logins remaining before your account is locked. Please change your password in the preference dialog." = "لديك عدد %{0} تسجيلات متبقية قبل وقف الدخول على حسابك. الرجاء تغيير كلمة السر في جزء الخيارات."; +"Password about to expire" = "صلاحية كلمة السر على وشك الانتهاء"; +"Your password is going to expire in %{0} %{1}." = "صلاحية كلمة السر الخاصة بك سوف تنتهي في %{0} %{1} ."; +"days" = "أيام"; +"hours" = "ساعات"; +"minutes" = "دقائق"; +"seconds" = "ثواني"; +"Password change failed" = "فشل تغيير كلمة المرور"; +"Password change failed - Permission denied" = "فشل تغيير كلمة المرور - تم رفض الإذن"; +"Password change failed - Insufficient password quality" = "فشل تغيير كلمة المرور - عدم كفاية جودة كلمة السر"; +"Password change failed - Password is too short" = "فشل تغيير كلمة المرور - كلمة قصيرة جدا"; +"Password change failed - Password is too young" = "فشل تغيير كلمة المرور - كلمة السر هي صغيرة جدا"; +"Password change failed - Password is in history" = "فشل تغيير كلمة المرور - كلمة السر مستخدمة سابقا"; +"Unhandled policy error: %{0}" = "Unhandled policy error: %{0}"; +"Unhandled error response" = "خطأ استجابة غير معالجة"; +"Password change is not supported." = "لا يتم اعتماد تغيير كلمة المرور."; +"Unhandled HTTP error code: %{0}" = "Unhandled HTTP error code: %{0}"; +"New password:" = "كلمة مرور جديدة:"; +"Confirmation:" = "تأكيد:"; +"Cancel" = "إلغاء"; +"Please wait..." = "يرجى الانتظار ..."; diff --git a/UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings b/UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings index 60e407d3d..4bc1a21ca 100644 --- a/UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Idioma:"; "choose" = "Escolha ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Catalan.lproj/Localizable.strings b/UI/MainUI/Catalan.lproj/Localizable.strings index 512b076ca..4a7817cec 100644 --- a/UI/MainUI/Catalan.lproj/Localizable.strings +++ b/UI/MainUI/Catalan.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Llengua:"; "choose" = "Triar ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Czech.lproj/Localizable.strings b/UI/MainUI/Czech.lproj/Localizable.strings index 647cce61e..b97493efe 100644 --- a/UI/MainUI/Czech.lproj/Localizable.strings +++ b/UI/MainUI/Czech.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Jazyk:"; "choose" = "Vybrat ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Danish.lproj/Localizable.strings b/UI/MainUI/Danish.lproj/Localizable.strings index 870ea6362..806108d4d 100644 --- a/UI/MainUI/Danish.lproj/Localizable.strings +++ b/UI/MainUI/Danish.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Sprog:"; "choose" = "Vælg ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Dutch.lproj/Localizable.strings b/UI/MainUI/Dutch.lproj/Localizable.strings index 9e442ad20..073cc9638 100644 --- a/UI/MainUI/Dutch.lproj/Localizable.strings +++ b/UI/MainUI/Dutch.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Taal:"; "choose" = "Kies..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/English.lproj/Localizable.strings b/UI/MainUI/English.lproj/Localizable.strings index 8a9e22a44..294a8d0d6 100644 --- a/UI/MainUI/English.lproj/Localizable.strings +++ b/UI/MainUI/English.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Language:"; "choose" = "Choose ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Finnish.lproj/Localizable.strings b/UI/MainUI/Finnish.lproj/Localizable.strings index 978b118da..0b3d54586 100644 --- a/UI/MainUI/Finnish.lproj/Localizable.strings +++ b/UI/MainUI/Finnish.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Kieli:"; "choose" = "Valitse ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/French.lproj/Localizable.strings b/UI/MainUI/French.lproj/Localizable.strings index 6d15c6097..b558427c1 100644 --- a/UI/MainUI/French.lproj/Localizable.strings +++ b/UI/MainUI/French.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Langue:"; "choose" = "Choisir ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/GNUmakefile b/UI/MainUI/GNUmakefile index 786f483e8..b2f8986c4 100644 --- a/UI/MainUI/GNUmakefile +++ b/UI/MainUI/GNUmakefile @@ -6,7 +6,7 @@ BUNDLE_NAME = MainUI MainUI_PRINCIPAL_CLASS = MainUIProduct -MainUI_LANGUAGES = BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh +MainUI_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh MainUI_OBJC_FILES += \ MainUIProduct.m \ diff --git a/UI/MainUI/German.lproj/Localizable.strings b/UI/MainUI/German.lproj/Localizable.strings index cb94f38c8..43d7cd413 100644 --- a/UI/MainUI/German.lproj/Localizable.strings +++ b/UI/MainUI/German.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Sprache:"; "choose" = "Auswählen"; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Hungarian.lproj/Localizable.strings b/UI/MainUI/Hungarian.lproj/Localizable.strings index 61355c91d..3f0759575 100644 --- a/UI/MainUI/Hungarian.lproj/Localizable.strings +++ b/UI/MainUI/Hungarian.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Nyelv:"; "choose" = "Válasszon ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Icelandic.lproj/Localizable.strings b/UI/MainUI/Icelandic.lproj/Localizable.strings index b0420b9a6..87a17a180 100644 --- a/UI/MainUI/Icelandic.lproj/Localizable.strings +++ b/UI/MainUI/Icelandic.lproj/Localizable.strings @@ -18,6 +18,7 @@ "Language:" = "Tungumál:"; "choose" = "Velja..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Italian.lproj/Localizable.strings b/UI/MainUI/Italian.lproj/Localizable.strings index d8f6ff792..3fc8fde10 100644 --- a/UI/MainUI/Italian.lproj/Localizable.strings +++ b/UI/MainUI/Italian.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Lingua:"; "choose" = "Scegli..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/NorwegianBokmal.lproj/Localizable.strings b/UI/MainUI/NorwegianBokmal.lproj/Localizable.strings index 03aeee3da..4d74d0970 100644 --- a/UI/MainUI/NorwegianBokmal.lproj/Localizable.strings +++ b/UI/MainUI/NorwegianBokmal.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Språk:"; "choose" = "Velg ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/NorwegianNynorsk.lproj/Localizable.strings b/UI/MainUI/NorwegianNynorsk.lproj/Localizable.strings index e462e771a..a8171823b 100644 --- a/UI/MainUI/NorwegianNynorsk.lproj/Localizable.strings +++ b/UI/MainUI/NorwegianNynorsk.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Språk:"; "choose" = "Velg ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Polish.lproj/Localizable.strings b/UI/MainUI/Polish.lproj/Localizable.strings index 37863c740..6e9db4694 100644 --- a/UI/MainUI/Polish.lproj/Localizable.strings +++ b/UI/MainUI/Polish.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Język:"; "choose" = "Wybierz ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Russian.lproj/Localizable.strings b/UI/MainUI/Russian.lproj/Localizable.strings index 53dbe6152..7769a8b9c 100644 --- a/UI/MainUI/Russian.lproj/Localizable.strings +++ b/UI/MainUI/Russian.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Язык:"; "choose" = "Выбрать ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/SpanishArgentina.lproj/Localizable.strings b/UI/MainUI/SpanishArgentina.lproj/Localizable.strings index 6287039db..99f0cdbee 100644 --- a/UI/MainUI/SpanishArgentina.lproj/Localizable.strings +++ b/UI/MainUI/SpanishArgentina.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Idioma:"; "choose" = "Elija ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/SpanishSpain.lproj/Localizable.strings b/UI/MainUI/SpanishSpain.lproj/Localizable.strings index 91030f880..25e9987fd 100644 --- a/UI/MainUI/SpanishSpain.lproj/Localizable.strings +++ b/UI/MainUI/SpanishSpain.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Idioma:"; "choose" = "Elija ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Swedish.lproj/Localizable.strings b/UI/MainUI/Swedish.lproj/Localizable.strings index 54f8aed1a..7a7189dc3 100644 --- a/UI/MainUI/Swedish.lproj/Localizable.strings +++ b/UI/MainUI/Swedish.lproj/Localizable.strings @@ -18,6 +18,7 @@ "Language:" = "Språk:"; "choose" = "Välj ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Ukrainian.lproj/Localizable.strings b/UI/MainUI/Ukrainian.lproj/Localizable.strings index 3096a86bd..2032809c1 100644 --- a/UI/MainUI/Ukrainian.lproj/Localizable.strings +++ b/UI/MainUI/Ukrainian.lproj/Localizable.strings @@ -19,6 +19,7 @@ "Language:" = "Мова:"; "choose" = "Вибрати ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/MainUI/Welsh.lproj/Localizable.strings b/UI/MainUI/Welsh.lproj/Localizable.strings index 0538cd395..e2873d63c 100644 --- a/UI/MainUI/Welsh.lproj/Localizable.strings +++ b/UI/MainUI/Welsh.lproj/Localizable.strings @@ -18,6 +18,7 @@ "Language:" = "Iaith:"; "choose" = "Dewis ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Arabic.lproj/Localizable.strings b/UI/PreferencesUI/Arabic.lproj/Localizable.strings new file mode 100644 index 000000000..5b27b560a --- /dev/null +++ b/UI/PreferencesUI/Arabic.lproj/Localizable.strings @@ -0,0 +1,309 @@ +/* toolbar */ +"Save and Close" = "حفظ وإغلاق"; +"Close" = "إغلاق"; + +/* tabs */ +"General" = "عام"; +"Calendar Options" = "خيارات التقويم"; +"Contacts Options" = "خيارات جهات الاتصال"; +"Mail Options" = "خيارات البريد"; +"IMAP Accounts" = "حسابات IMAP"; +"Vacation" = "عطلة"; +"Forward" = "ارسال الى"; +"Password" = "كلمة السر"; +"Categories" = "الفئات"; +"Name" = "اسم "; +"Color" = "اللون"; +"Add" = "إضافة"; +"Delete" = "مسح"; + +/* contacts categories */ +"contacts_category_labels" = "الزميل، المنافس، العملاء، الصديق، العائلة، شريك تجاري، مقدم خدمة ، الصحافة ،كبار الشخصيات"; + +/* vacation (auto-reply) */ +"Enable vacation auto reply" = "تمكين الرد التلقائي أثناء العطلة"; +"Auto reply message :" = "رسالة الرد التلقائي:"; +"Email addresses (separated by commas) :" = "عناوين البريد الإلكتروني (مفصولة بفواصل):"; +"Add default email addresses" = "إضافة عناوين البريد الإلكتروني الافتراضية"; +"Days between responses :" = "عدد الأيام بين الردود:"; +"Do not send responses to mailing lists" = "لا ترسل ردود الى القوائم البريدية"; +"Disable auto reply on" = "تعطيل الرد التلقائي في"; +"Please specify your message and your email addresses for which you want to enable auto reply." += "يرجى تحديد رسالتك وعناوين البريد الإلكتروني التي تريد تمكين الرد التلقائي لها."; +"Your vacation message must not end with a single dot on a line." = "يجب أن لا تنتهي رسالة العطلة بنقطة واحدة على السطر."; +"End date of your auto reply must be in the future." += "يجب أن يكون تاريخ نهاية الرد التلقائي الخاص بك في المستقبل."; + +/* forward messages */ +"Forward incoming messages" = "أعد توجيه الرسائل القادمة"; +"Keep a copy" = "احتفظ بنسخة"; +"Please specify an address to which you want to forward your messages." += "يرجى تحديد العنوان الذي تريد إعادة توجيه رسائلك له."; + +/* d & t */ +"Current Time Zone :" = "التوقيت الزمني الحالى:"; +"Short Date Format :" = "التاريخ بالصيغة المختصرة:"; +"Long Date Format :" = "التاريخ بالصيغة الكاملة:"; +"Time Format :" = "تنسيق الوقت:"; + +"default" = "الافتراضي"; + +"shortDateFmt_0" = "%d-%b-%y"; + +"shortDateFmt_1" = "%d-%m-%y"; +"shortDateFmt_2" = "%d/%m/%y"; +"shortDateFmt_3" = "%e/%m/%y"; + +"shortDateFmt_4" = "%d-%m-%Y"; +"shortDateFmt_5" = "%d/%m/%Y"; + +"shortDateFmt_6" = "%m-%d-%y"; +"shortDateFmt_7" = "%m/%d/%y"; +"shortDateFmt_8" = "%m/%e/%y"; + +"shortDateFmt_9" = "%y-%m-%d"; +"shortDateFmt_10" = "%y/%m/%d"; +"shortDateFmt_11" = "%y.%m.%d"; + +"shortDateFmt_12" = "%Y-%m-%d"; +"shortDateFmt_13" = "%Y/%m/%d"; +"shortDateFmt_14" = "%Y.%m.%d"; + +"shortDateFmt_15" = ""; + +"longDateFmt_0" = "%A, %B %d, %Y"; +"longDateFmt_1" = "%B %d, %Y"; +"longDateFmt_2" = "%A, %d %B, %Y"; +"longDateFmt_3" = "%d %B, %Y"; +"longDateFmt_4" = ""; +"longDateFmt_5" = ""; +"longDateFmt_6" = ""; +"longDateFmt_7" = ""; +"longDateFmt_8" = ""; +"longDateFmt_9" = ""; +"longDateFmt_10" = ""; + +"timeFmt_0" = "%I:%M %p"; +"timeFmt_1" = "%H:%M"; +"timeFmt_2" = ""; +"timeFmt_3" = ""; +"timeFmt_4" = ""; + +/* calendar */ +"Week begins on :" = "بداية الاسبوع:"; +"Day start time :" = "بداية يوم العمل:"; +"Day end time :" = "نهاية يوم العمل:"; +"Day start time must be prior to day end time." = "يجب أن يكون وقت بداية يوم العمل قبل وقت نهاية يوم العمل."; +"Show time as busy outside working hours" = "إظهار الوقت خارج ساعات العمل على أنه مشغول"; +"First week of year :" = "الأسبوع الأول من السنة:"; +"Enable reminders for Calendar items" = "تمكين التذكيرات لعناصر التقويم"; +"Play a sound when a reminder comes due" += "تشغيل صوت للتذكير بموعد اقترب وقته"; +"Default reminder :" = "التذكير الإفتراضي:"; + +"firstWeekOfYear_January1" = "يبدأ في 1 يناير"; +"firstWeekOfYear_First4DayWeek" = "أول 4 ايام في الاسبوع"; +"firstWeekOfYear_FirstFullWeek" = "أول اسبوع كامل"; + +/* Default Calendar */ +"Default calendar :" = "التقويم الإفتراضي:"; +"selectedCalendar" = "التقويم المحدد"; +"personalCalendar" = "التقويم الشخصي"; +"firstCalendar" = "أول تقويم ممكن"; + +"reminderTime_0000" = "0 دقيقة"; +"reminderTime_0005" = "5 دقائق"; +"reminderTime_0010" = "10 دقائق"; +"reminderTime_0015" = "15 دقيقة"; +"reminderTime_0030" = "30 دقيقة"; +"reminderTime_0100" = "1 ساعة"; +"reminderTime_0200" = "2 ساعة"; +"reminderTime_0400" = "4 ساعات"; +"reminderTime_0800" = "8 ساعات"; +"reminderTime_1200" = "1/2 يوم"; +"reminderTime_2400" = "1 يوم"; +"reminderTime_4800" = "2 يوم"; + +/* Mailer */ +"Show subscribed mailboxes only" = "عرض صناديق البريد المشترك بها فقط"; +"Sort messages by threads" = "رتب الرسائل حسب المواضيع"; +"Check for new mail:" = "تحقق من وجود بريد جديد:"; +"messagecheck_manually" = "يدوي"; +"messagecheck_every_minute" = "كل دقيقة"; +"messagecheck_every_2_minutes" = "كل 2 دقيقة"; +"messagecheck_every_5_minutes" = "كل 5 دقائق"; +"messagecheck_every_10_minutes" = "كل 10 دقائق"; +"messagecheck_every_20_minutes" = "كل 20 دقيقة"; +"messagecheck_every_30_minutes" = "كل 30 دقيقة"; +"messagecheck_once_per_hour" = "مرة كل ساعة"; + +"Forward messages:" = "أعد توجيه الرسائل:"; +"messageforward_inline" = "مضمنة"; +"messageforward_attached" = "كمرفق"; + +"When replying to a message:" = "متى يُرَدُّ على الرِّسالة:"; +"replyplacement_above" = "بدء الرد فوق الاقتباس"; +"replyplacement_below" = "بدء الرد تحت الاقتباس"; +"And place my signature" = "ووضع توقيعي"; +"signatureplacement_above" = "تحت الرد الخاص بي"; +"signatureplacement_below" = "تحت الإقتباس"; +"Compose messages in" = "إنشاء رسائل في"; +"composemessagestype_html" = "HTML"; +"composemessagestype_text" = "نص عادي"; +"Display remote inline images" = "اعرِض الصور المضمَّنة عن بُعد"; +"displayremoteinlineimages_never" = "أبدًا"; +"displayremoteinlineimages_always" = "دائمًا"; + +/* IMAP Accounts */ +"New Mail Account" = "حساب بريد إلكتروني جديد"; + +"Server Name:" = "أسم الخادم:"; +"Port:" = "مدخل:"; +"Encryption:" = "التشفير:"; +"None" = "بلا"; +"User Name:" = "اسم المستخدم:"; +"Password:" = "كلمة المرور:"; + +"Full Name:" = "الإسم الكامل:"; +"Email:" = "البريد الإلكتروني:"; +"Reply To Email:" = "الرد على البريد الإلكتروني:"; +"Signature:" = "التوقيع:"; +"(Click to create)" = "(انقر للصنع)"; + +"Signature" = "التوقيع"; +"Please enter your signature below:" = "من فضلك ادخل توقيعك أدناه:"; + +"Please specify a valid sender address." = "من فضلك حدِّد عنوان مرسل صالح."; +"Please specify a valid reply-to address." = "من فضلك حدِّد عنوان ردٍّ صالح"; + +/* Additional Parameters */ +"Additional Parameters" = "معلمات إضافية"; + +/* password */ +"New password:" = "كلمة مرور جديدة:"; +"Confirmation:" = "تأكيد:"; +"Change" = "لا شيء"; + +/* Event+task classifications */ +"Default events classification :" = "تصنيف الأحداث الافتراضية:"; +"Default tasks classification :" = "تصنيف المهام الافتراضية :"; +"PUBLIC_item" = "علني"; +"CONFIDENTIAL_item" = "سري"; +"PRIVATE_item" = "خاص"; + +/* Event+task categories */ +"category_none" = "لا شيء"; +"calendar_category_labels" = "ذكرى، عيد ميلاد، مكالمات عمل، عملاء ، منافس، عملاء، المفضلات، المتابعة، الهدايا، أيام العطل، الأفكار، الاجتماع، قضايا، متنوعات ، شخصية،مشاريع، عطلة عامة، الحالة، الموردين ، السفر، عطلة"; + +/* Default module */ +"Calendar" = "تقويم"; +"Contacts" = "دفتر العناوين"; +"Mail" = "بريد"; +"Last" = "أخر إستخدام"; +"Default module :" = "وحدة نمطية افتراضية :"; + +"Language :" = "اللغة:"; +"choose" = "اختيار ..."; +"Arabic" = "العربية"; +"Catalan" = "Català"; +"Czech" = "Česky"; +"Danish" = "Dansk (Danmark)"; +"Dutch" = "Nederlands"; +"English" = "English"; +"Finnish" = "Suomi"; +"French" = "Français"; +"German" = "Deutsch"; +"Hungarian" = "Magyar"; +"Icelandic" = "Íslenska"; +"Italian" = "Italiano"; +"NorwegianBokmal" = "Norsk bokmål"; +"NorwegianNynorsk" = "Norsk nynorsk"; +"Polish" = "Polski"; +"BrazilianPortuguese" = "Português brasileiro"; +"Russian" = "Русский"; +"Slovak" = "Slovensky"; +"SpanishSpain" = "Español (España)"; +"SpanishArgentina" = "Español (Argentina)"; +"Swedish" = "Svenska"; +"Ukrainian" = "Українська"; +"Welsh" = "Cymraeg"; + +/* Return receipts */ +"When I receive a request for a return receipt:" = "عندما اتلقى طلبا لإرسال ايصال استلام:"; +"Never send a return receipt" = "لا ترسل إيصال استلام"; +"Allow return receipts for some messages" = "السماح بإرسال إيصالات استلام مقابل بعض الرسائل الواردة"; +"If I'm not in the To or Cc of the message:" = "إذا لم أكن من ضمن المرسل لهم او المرسل لهم نسخة:"; +"If the sender is outside my domain:" = "إذا كان المرسل من خارج النطاق:"; +"In all other cases:" = "في جميع الحالات الأخرى:"; + +"Never send" = "لم يرسل"; +"Always send" = "إرسال دائما"; +"Ask me" = "أسألني"; + +/* Filters - UIxPreferences */ +"Filters" = "قواعد تصفية"; +"Active" = "نشط"; +"Move Up" = "تحريك لأعلى"; +"Move Down" = "تحريك لأسفل"; + +/* Filters - UIxFilterEditor */ +"Filter name:" = "أسم قاعدة التصفية:"; +"For incoming messages that" = "عن الرسائل الواردة التي"; +"match all of the following rules:" = "تطابق كافة القواعد التالية:"; +"match any of the following rules:" = "تتطابق مع أي من القواعد التالية:"; +"match all messages" = "تطابق جميع الرسائل"; +"Perform these actions:" = "تنفيذ هذه الإجراءات:"; +"Untitled Filter" = "مرشح غير معنون"; + +"Subject" = "موضوع"; +"From" = "من"; +"To" = "إلى"; +"Cc" = "نسخة "; +"To or Cc" = "إلى أو نسخة"; +"Size (Kb)" = "الحجم (كيلو بايت)"; +"Header" = "قمة"; +"Flag the message with:" = " وضع إشارة على الرسالة مع:"; +"Discard the message" = "رفض الرسالة"; +"File the message in:" = "تقديم الرسالة في:"; +"Keep the message" = "الحفاظ على رسالة"; +"Forward the message to:" = "إعادة توجيه الرسالة إلى:"; +"Send a reject message:" = "إرسال رسالة رفض:"; +"Send a vacation message" = "إرسال رسالة عطلة"; +"Stop processing filter rules" = "إيقاف معالجة قواعد التصفية"; + +"is under" = "هو تحت"; +"is over" = "هو فوق"; +"is" = "هو "; +"is not" = "هو لا"; +"contains" = "يحتوي"; +"does not contain" = "لا يحتوي"; +"matches" = "يطابق"; +"does not match" = "لا يطابق"; +"matches regex" = "يطابق رجإكس"; +"does not match regex" = "لا يطابق رجإكس"; + +"Seen" = "نظر"; +"Deleted" = "حذف"; +"Answered" = "اجاب"; +"Flagged" = "وضع علامة عليه"; +"Junk" = "غير مرغوب به"; +"Not Junk" = "مرغوب به"; +"Label 1" = "ملصق 1"; +"Label 2" = "ملصق 2"; +"Label 3" = "ملصق 3"; +"Label 4" = "ملصق 4"; +"Label 5" = "ملصق 5"; + +"The password was changed successfully." = "غُيِّرت كلمة السِّر بنجَاح."; +"Password must not be empty." = "كلمة السر يجب ان لا تكون فارغة."; +"The passwords do not match. Please try again." = "كلمات المرور لا تتطابق. يرجى المحاولة مرة أخرى."; +"Password change failed" = "فشل تغيير كلمة المرور"; +"Password change failed - Permission denied" = "فشل تغيير كلمة المرور - تم رفض الإذن"; +"Password change failed - Insufficient password quality" = "فشل تغيير كلمة المرور - جودة كلمة السر غير كافية"; +"Password change failed - Password is too short" = "فشل تغيير كلمة المرور - كلمة قصيرة جدا"; +"Password change failed - Password is too young" = "فشل تغيير كلمة المرور - كلمة السر هي صغيرة جدا"; +"Password change failed - Password is in history" = "فشل تغيير كلمة المرور - كلمة السر مستخدمة من قبل"; +"Unhandled policy error: %{0}" = "خطأ غير معالج: %{0}"; +"Unhandled error response" = "إستجابة خاطئة غير معروفة"; +"Password change is not supported." = "لا يتم اعتماد تغيير كلمة المرور."; +"Unhandled HTTP error code: %{0}" = "Unhandled HTTP error code: %{0}"; diff --git a/UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings b/UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings index 56f500dee..d5eaccafb 100644 --- a/UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Idioma :"; "choose" = "Escolha ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Catalan.lproj/Localizable.strings b/UI/PreferencesUI/Catalan.lproj/Localizable.strings index d7044d1f5..784b5b41c 100644 --- a/UI/PreferencesUI/Catalan.lproj/Localizable.strings +++ b/UI/PreferencesUI/Catalan.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Language :"; "choose" = "Choose ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Czech.lproj/Localizable.strings b/UI/PreferencesUI/Czech.lproj/Localizable.strings index 2616f662d..a0d3e9c2b 100644 --- a/UI/PreferencesUI/Czech.lproj/Localizable.strings +++ b/UI/PreferencesUI/Czech.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Jazyk :"; "choose" = "Vybrat ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Danish.lproj/Localizable.strings b/UI/PreferencesUI/Danish.lproj/Localizable.strings index ed03ceabb..761afcd81 100644 --- a/UI/PreferencesUI/Danish.lproj/Localizable.strings +++ b/UI/PreferencesUI/Danish.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Sprog:"; "choose" = "Vælg ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Dutch.lproj/Localizable.strings b/UI/PreferencesUI/Dutch.lproj/Localizable.strings index 7bcb3bb60..45c345516 100644 --- a/UI/PreferencesUI/Dutch.lproj/Localizable.strings +++ b/UI/PreferencesUI/Dutch.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Taal:"; "choose" = "Kies..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/English.lproj/Localizable.strings b/UI/PreferencesUI/English.lproj/Localizable.strings index 306e02b72..481ecfb7b 100644 --- a/UI/PreferencesUI/English.lproj/Localizable.strings +++ b/UI/PreferencesUI/English.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Language:"; "choose" = "Choose ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Finnish.lproj/Localizable.strings b/UI/PreferencesUI/Finnish.lproj/Localizable.strings index 72f6be784..b4a9a7261 100644 --- a/UI/PreferencesUI/Finnish.lproj/Localizable.strings +++ b/UI/PreferencesUI/Finnish.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Kieli:"; "choose" = "Valitse..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/French.lproj/Localizable.strings b/UI/PreferencesUI/French.lproj/Localizable.strings index 1c74c4bb7..73c301fea 100644 --- a/UI/PreferencesUI/French.lproj/Localizable.strings +++ b/UI/PreferencesUI/French.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Langue :"; "choose" = "Choisir ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/GNUmakefile b/UI/PreferencesUI/GNUmakefile index 4a8040b38..7aa0511d2 100644 --- a/UI/PreferencesUI/GNUmakefile +++ b/UI/PreferencesUI/GNUmakefile @@ -6,7 +6,7 @@ BUNDLE_NAME = PreferencesUI PreferencesUI_PRINCIPAL_CLASS = PreferencesUIProduct -PreferencesUI_LANGUAGES = BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh +PreferencesUI_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh PreferencesUI_OBJC_FILES = \ PreferencesUIProduct.m \ diff --git a/UI/PreferencesUI/German.lproj/Localizable.strings b/UI/PreferencesUI/German.lproj/Localizable.strings index c835433ea..4e6bd1618 100644 --- a/UI/PreferencesUI/German.lproj/Localizable.strings +++ b/UI/PreferencesUI/German.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Sprache :"; "choose" = "Auswählen"; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Hungarian.lproj/Localizable.strings b/UI/PreferencesUI/Hungarian.lproj/Localizable.strings index 3a6cd9ca3..26af9a277 100644 --- a/UI/PreferencesUI/Hungarian.lproj/Localizable.strings +++ b/UI/PreferencesUI/Hungarian.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Nyelv :"; "choose" = "Válasszon ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Icelandic.lproj/Localizable.strings b/UI/PreferencesUI/Icelandic.lproj/Localizable.strings index 56c58b2dc..bc9ff1330 100644 --- a/UI/PreferencesUI/Icelandic.lproj/Localizable.strings +++ b/UI/PreferencesUI/Icelandic.lproj/Localizable.strings @@ -174,6 +174,7 @@ "Language :" = "Tungumál :"; "choose" = "Velja..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Italian.lproj/Localizable.strings b/UI/PreferencesUI/Italian.lproj/Localizable.strings index 8228d54c7..d6daf9208 100644 --- a/UI/PreferencesUI/Italian.lproj/Localizable.strings +++ b/UI/PreferencesUI/Italian.lproj/Localizable.strings @@ -195,6 +195,7 @@ "Language :" = "Lingua :"; "choose" = "Scegli..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/NorwegianBokmal.lproj/Localizable.strings b/UI/PreferencesUI/NorwegianBokmal.lproj/Localizable.strings index 335470e5a..616b2fdf5 100644 --- a/UI/PreferencesUI/NorwegianBokmal.lproj/Localizable.strings +++ b/UI/PreferencesUI/NorwegianBokmal.lproj/Localizable.strings @@ -193,6 +193,7 @@ "Language :" = "Språk:"; "choose" = "Velg ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/NorwegianNynorsk.lproj/Localizable.strings b/UI/PreferencesUI/NorwegianNynorsk.lproj/Localizable.strings index 167a6a112..8e97a7694 100644 --- a/UI/PreferencesUI/NorwegianNynorsk.lproj/Localizable.strings +++ b/UI/PreferencesUI/NorwegianNynorsk.lproj/Localizable.strings @@ -181,6 +181,7 @@ "Language :" = "Språk:"; "choose" = "Velg ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Polish.lproj/Localizable.strings b/UI/PreferencesUI/Polish.lproj/Localizable.strings index 2b6f3e58b..0a6a8433f 100644 --- a/UI/PreferencesUI/Polish.lproj/Localizable.strings +++ b/UI/PreferencesUI/Polish.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Język:"; "choose" = "Wybierz"; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Russian.lproj/Localizable.strings b/UI/PreferencesUI/Russian.lproj/Localizable.strings index 772387fb3..e3700265a 100644 --- a/UI/PreferencesUI/Russian.lproj/Localizable.strings +++ b/UI/PreferencesUI/Russian.lproj/Localizable.strings @@ -198,6 +198,7 @@ "Language :" = "Язык :"; "choose" = "Выбрать ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Slovak.lproj/Localizable.strings b/UI/PreferencesUI/Slovak.lproj/Localizable.strings index 94eed87d5..65726f2df 100644 --- a/UI/PreferencesUI/Slovak.lproj/Localizable.strings +++ b/UI/PreferencesUI/Slovak.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Jazyk:"; "choose" = "Vyber..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/SpanishArgentina.lproj/Localizable.strings b/UI/PreferencesUI/SpanishArgentina.lproj/Localizable.strings index 0c9feedc5..fa67e8d55 100644 --- a/UI/PreferencesUI/SpanishArgentina.lproj/Localizable.strings +++ b/UI/PreferencesUI/SpanishArgentina.lproj/Localizable.strings @@ -198,6 +198,7 @@ "Language :" = "Idioma :"; "choose" = "Elija ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings b/UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings index 530b74095..1f42bb17c 100644 --- a/UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings +++ b/UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings @@ -204,6 +204,7 @@ "Language :" = "Idioma :"; "choose" = "Elija ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Swedish.lproj/Localizable.strings b/UI/PreferencesUI/Swedish.lproj/Localizable.strings index 3949abf32..c1e981dbe 100644 --- a/UI/PreferencesUI/Swedish.lproj/Localizable.strings +++ b/UI/PreferencesUI/Swedish.lproj/Localizable.strings @@ -183,6 +183,7 @@ Servernamn:"; "Language :" = "Språk:"; "choose" = "Välj ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Ukrainian.lproj/Localizable.strings b/UI/PreferencesUI/Ukrainian.lproj/Localizable.strings index ab6bb69cd..8a8ba55e5 100644 --- a/UI/PreferencesUI/Ukrainian.lproj/Localizable.strings +++ b/UI/PreferencesUI/Ukrainian.lproj/Localizable.strings @@ -193,6 +193,7 @@ "Language :" = "Мова :"; "choose" = "Choose ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/PreferencesUI/Welsh.lproj/Localizable.strings b/UI/PreferencesUI/Welsh.lproj/Localizable.strings index 7d4a35802..425195c15 100644 --- a/UI/PreferencesUI/Welsh.lproj/Localizable.strings +++ b/UI/PreferencesUI/Welsh.lproj/Localizable.strings @@ -181,6 +181,7 @@ "Language :" = "Iaith :"; "choose" = "Dewis ..."; +"Arabic" = "العربية"; "Catalan" = "Català"; "Czech" = "Česky"; "Danish" = "Dansk (Danmark)"; diff --git a/UI/Scheduler/Arabic.lproj/Localizable.strings b/UI/Scheduler/Arabic.lproj/Localizable.strings new file mode 100644 index 000000000..6fc599a80 --- /dev/null +++ b/UI/Scheduler/Arabic.lproj/Localizable.strings @@ -0,0 +1,536 @@ +/* this file is in UTF-8 format! */ + +/* Tooltips */ + +"Create a new event" = "إنشاء حدث جديد"; +"Create a new task" = "إنشاء مهمة جديدة"; +"Edit this event or task" = "تحرير هذا الحدث أو المهمة"; +"Delete this event or task" = "حذف هذا الحدث أو المهمة"; +"Go to today" = "انتقل إلى اليوم"; +"Switch to day view" = "التبديل إلى طريقة عرض اليوم"; +"Switch to week view" = "التبديل إلى طريقة عرض الأسبوع"; +"Switch to month view" = "التبديل إلى طريقة عرض الشهر"; +"Reload all calendars" = "تحديث جميع التقاويم"; + +/* Tabs */ +"Date" = "تاريخ"; +"Calendars" = "تقاويم"; + +/* Day */ + +"DayOfTheMonth" = "يوم من الشهر"; +"dayLabelFormat" = "%m/%d/%Y"; +"today" = "اليوم"; + +"Previous Day" = "اليوم السابق"; +"Next Day" = "اليوم اللاحق"; + +/* Week */ + +"Week" = "اسبوع"; +"this week" = "هذا الاسبوع"; + +"Week %d" = "أسبوع %d"; + +"Previous Week" = "الأسبوع السابق"; +"Next Week" = "الأسبوع القادم"; + +/* Month */ + +"this month" = "هذا الشهر"; + +"Previous Month" = "الشهر السابق"; +"Next Month" = "الشهر القادم"; + +/* Year */ + +"this year" = "هذه السنة"; + +/* Menu */ + +"Calendar" = "تقويم"; +"Contacts" = "جهة اتصال"; + +"New Calendar..." = "تقويم جديد..."; +"Delete Calendar" = "إلغاء تقويم..."; +"Unsubscribe Calendar" = "إلغاء مشاركة تقويم"; +"Sharing..." = "مشاركة..."; +"Export Calendar..." = "تصدير التقويم ..."; +"Import Events..." = "استيراد الأحداث ..."; +"Import Events" = "استيراد الأحداث"; +"Select an iCalendar file (.ics)." = "إختار ملف iCalendar file (.ics)."; +"Upload" = "تحميل"; +"Uploading" = "تحميل"; +"Publish Calendar..." = "نشر التقويم ..."; +"Reload Remote Calendars" = "تحديث التقويمات من خادم أخر"; +"Properties" = "خصائص"; +"Done" = "تم"; +"An error occurred while importing calendar." = "حدث خطأ أثناء استيراد تقويم."; +"No event was imported." = "لم يتم استيراد أي حدث."; +"A total of %{0} events were imported in the calendar." = "ما مجموعه%{0} من الأحداث تم استيرادها في التقويم."; + +"Compose E-Mail to All Attendees" = "إنشاء رسالة بريد إلكتروني لجميع الحاضرين"; +"Compose E-Mail to Undecided Attendees" = "إنشاء رسالة بريد إلكتروني الى الحضور الغير مؤكد حضورهم."; + +/* Folders */ +"Personal calendar" = "تقويم شخصي"; + +/* Misc */ + +"OpenGroupware.org" = "OpenGroupware.org"; +"Forbidden" = "ممنوع"; + +/* acls */ + +"Access rights to" = "صلاحية الدخول الى"; +"For user" = "للمستخدم"; + +"Any Authenticated User" = "أي مستخدم مسجل"; +"Public Access" = "وصول عام"; + +"label_Public" = "عام"; +"label_Private" = "خاص"; +"label_Confidential" = "سري"; + +"label_Viewer" = "عرض الكل"; +"label_DAndTViewer" = "عرض التاريخ والوقت"; +"label_Modifier" = "تعديل"; +"label_Responder" = "الاستجابة الى"; +"label_None" = "لا شئ"; + +"View All" = "عرض الكل"; +"View the Date & Time" = "عرض التاريخ والوقت"; +"Modify" = "تعديل"; +"Respond To" = "الاستجابة الى"; +"None" = "لا شئ"; + +"This person can create objects in my calendar." += "يمكن لهذا الشخص إنشاء الكائنات في تقويمي."; +"This person can erase objects from my calendar." += "يمكن لهذا الشخص مسح الكائنات في تقويمي."; + +/* Button Titles */ + +"Subscribe to a Calendar..." = "اشترك في تقويم"; +"Remove the selected Calendar" = "مسح التقويم المحدد"; + +"Name of the Calendar" = "اسم التقويم"; + +"new" = "جديد"; +"printview" = "معاينة قبل الطباعة"; +"edit" = "تعديل"; +"delete" = "مسح"; +"proposal" = "اقتراح"; +"Save and Close" = "حفظ وإغلاق"; +"Close" = "إغلاق"; +"Invite Attendees" = "دعوة لمشاركين"; +"Attach" = "إرفاق"; +"Update" = "تحديث"; +"Cancel" = "إلغاء"; +"show_rejected_apts" = "إظهار المواعيد المرفوضة"; +"hide_rejected_apts" = "إخفاء المواعيد المرفوضة"; + + +/* Schedule */ + +"Schedule" = "جدول"; +"No appointments found" = "لا يوجد مواعيد"; +"Meetings proposed by you" = "الاجتماعات التي اقترحتها"; +"Meetings proposed to you" = "الاجتماعات التي اقترحت لك"; +"sched_startDateFormat" = "%d/%m %H:%M"; +"action" = "تصرف"; +"accept" = "قبول"; +"decline" = "رفض"; +"more attendees" = "مزيد من الحضور"; +"Hide already accepted and rejected appointments" = "إخفاء المواعيد المقبولة والمرفوضة"; +"Show already accepted and rejected appointments" = "إظهار المواعيد المقبولة والمرفوضة"; + + +/* Appointments */ + +"Appointment viewer" = "عارض المواعيد"; +"Appointment editor" = "محرر المواعيد"; +"Appointment proposal" = "اقتراح المواعيد"; +"Appointment on" = "تشغيل المواعيد"; +"Start:" = "البدء:"; +"End:" = "النهاية:"; +"Due Date:" = "تاريخ الاستحقاق:"; +"Title:" = "العنوان:"; +"Calendar:" = "الحالة:"; +"Name" = "الاسم"; +"Email" = "البريد الإلكتروني"; +"Status:" = "الحالة:"; +"% complete" = "اكتمل %c"; +"Location:" = "المكان:"; +"Priority:" = "الأولوية:"; +"Privacy" = "الخصوصية"; +"Cycle" = "الدورة"; +"Cycle End" = "نهاية الدورة"; +"Categories" = "التصنيفات"; +"Classification" = "التصنيف"; +"Duration" = "المدة"; +"Attendees:" = "الحضور:"; +"Resources" = "الموارد"; +"Organizer:" = "المنظم:"; +"Description:" = "الوصف:"; +"Document:" = "المستند:"; +"Category:" = "التصنيف:"; +"Repeat:" = "التكرار:"; +"Reminder:" = "التنبيه:"; +"General:" = "العام:"; +"Reply:" = "الرد:"; + +"Target:" = "الهدف:"; + +"attributes" = "صفات"; +"attendees" = "حضور"; +"delegated from" = "مفوض من"; + +/* checkbox title */ +"is private" = "خاص؟"; +/* classification */ +"Public" = "عام"; +"Private" = "خاص"; +/* text used in overviews and tooltips */ +"empty title" = "عنوان فارغ"; +"private appointment" = "موعد خاص"; + +"Change..." = "غيِّر ..."; + +/* Appointments (participation state) */ + +"partStat_NEEDS-ACTION" = "سأؤكد الأمر لاحقًا"; +"partStat_ACCEPTED" = "سأحضُر"; +"partStat_DECLINED" = "لن أحضُر"; +"partStat_TENTATIVE" = "قد أحضُر"; +"partStat_DELEGATED" = "أفوِّض"; +"partStat_OTHER" = "أخرى"; + +/* Appointments (error messages) */ + +"Conflicts found!" = "هنالك تعارضات!"; +"Invalid iCal data!" = "بيانات iCal غير صالح!"; +"Could not create iCal data!" = "عاجِز عن إنشاء بيانات iCal!"; + +/* Searching */ + +"view_all" = "الكل"; +"view_today" = "اليوم"; +"view_next7" = "السبعة أيام القادمة"; +"view_next14" = "الأربعة عشر يومًا القادمة"; +"view_next31" = "الواحد وثلاثون يومًا القادمة"; +"view_thismonth" = "هذا الشهر"; +"view_future" = "جميع الأحداث المستقبلية"; +"view_selectedday" = "اليوم المحدد"; + +"View:" = "العرض:"; +"Title or Description" = "العنوان أو الوصف"; + +"Search" = "ابحث"; +"Search attendees" = "ابحث عن الحضور"; +"Search resources" = "ابحث عن الموارد"; +"Search appointments" = "ابحث عن المواعيد"; + +"All day Event" = "حدث طوال اليوم"; +"check for conflicts" = "افحص التعارضات"; + +"Browse URL" = "تصفح عنوان الويب"; + +"newAttendee" = "أضِف أحد الحضور"; + +/* calendar modes */ + +"Overview" = "رؤية عامة"; +"Chart" = "المخطط"; +"List" = "القائمة"; +"Columns" = "الأعمدة"; + +/* Priorities */ + +"prio_0" = "غير محدد"; +"prio_1" = "مرتفعة"; +"prio_2" = "مرتفعة"; +"prio_3" = "مرتفعة"; +"prio_4" = "مرتفعة"; +"prio_5" = "عادية"; +"prio_6" = "منخفضة"; +"prio_7" = "منخفضة"; +"prio_8" = "منخفضة"; +"prio_9" = "منخفضة"; + +/* access classes (privacy) */ +"PUBLIC_vevent" = "حدث عام"; +"CONFIDENTIAL_vevent" = "حدث سري"; +"PRIVATE_vevent" = "حدث خاص"; +"PUBLIC_vtodo" = "مهمة عامة"; +"CONFIDENTIAL_vtodo" = "مهمة سرية"; +"PRIVATE_vtodo" = "مهمة خاصة"; + +/* status type */ +"status_" = "غير محدد"; +"status_NOT-SPECIFIED" = "غير محدد"; +"status_TENTATIVE" = "مؤقت"; +"status_CONFIRMED" = "مؤكد"; +"status_CANCELLED" = "مُلغَى"; +"status_NEEDS-ACTION" = "يحتاجُ إجراءًا"; +"status_IN-PROCESS" = "يتم العمل فيه"; +"status_COMPLETED" = "اكتمل في"; + +/* Cycles */ + +"cycle_once" = "دورة واحدة"; +"cycle_daily" = "دورة يومية"; +"cycle_weekly" = "دورة أسبوعية"; +"cycle_2weeks" = "دورة كل أسبوعين"; +"cycle_4weeks" = "دورة كل 4 أسابيع"; +"cycle_monthly" = "دورة شهريّة"; +"cycle_weekday" = "دورة يومًا كل أسبوع"; +"cycle_yearly" = "دورة سنوية"; + +"cycle_end_never" = "دورة لا تنتهي"; +"cycle_end_until" = "دورة تنتهي في"; + +"Recurrence pattern" = "نمط التكرار"; +"Range of recurrence" = "نطاق التكرار"; + +"Repeat" = "التكرار"; +"Daily" = "يوميًا"; +"Weekly" = "أسبوعيًا"; +"Monthly" = "شهريًّا"; +"Yearly" = "سنويًّا"; +"Every" = "كل"; +"Days" = "أيام"; +"Week(s)" = "أسبوع (أسابيع)"; +"On" = "فعِّل"; +"Month(s)" = "شهر (شهور)"; +"The" = "الـ"; +"Recur on day(s)" = "يتكرر في يوم/أيام"; +"Year(s)" = "عام (أعوام)"; +"cycle_of" = "من"; +"No end date" = "لا يوجد تاريخ نهائي"; +"Create" = "أنشئ"; +"appointment(s)" = "موعد/مواعيد"; +"Repeat until" = "تكرار حتى"; + +"First" = "الأول"; +"Second" = "الثاني"; +"Third" = "الثالث"; +"Fourth" = "الرابع"; +"Fift" = "الخامس"; +"Last" = "الأخير"; + +/* Appointment categories */ + +"category_none" = "بلا"; +"category_labels" = "السنوية,يوم الميلاد,الأعمال,المكالمات,العملاء,المنافسة,العميل,المفضلات,المتابعة,الهدايا,العطلات،الأفكار,الاجتماع,المشاكل,منوعات,شخصي,المشاريع,العطلة العامة,الحالة,الموردون,السفر,الأجازة"; + +"repeat_NEVER" = "لا تكرِّر"; +"repeat_DAILY" = "يوميًا"; +"repeat_WEEKLY" = "أسبوعيًّا"; +"repeat_BI-WEEKLY" = "كل أسبوعين"; +"repeat_EVERY WEEKDAY" = "يوم كل أسبوع"; +"repeat_MONTHLY" = "شهريًّا"; +"repeat_YEARLY" = "سنويًّا"; +"repeat_CUSTOM" = "مخصص..."; + +"reminder_NONE" = "لا تنبيه"; +"reminder_5_MINUTES_BEFORE" = "5 دقائق قبل"; +"reminder_10_MINUTES_BEFORE" = "10 دقائق قبل"; +"reminder_15_MINUTES_BEFORE" = "15 دقيقة قبل"; +"reminder_30_MINUTES_BEFORE" = "30 دقيقة قبل"; +"reminder_45_MINUTES_BEFORE" = "45 دقيقة قبل"; +"reminder_1_HOUR_BEFORE" = "1 ساعة قبل"; +"reminder_2_HOURS_BEFORE" = "2 ساعتان قبل"; +"reminder_5_HOURS_BEFORE" = "5 ساعات قبل"; +"reminder_15_HOURS_BEFORE" = "15 ساعة قبل"; +"reminder_1_DAY_BEFORE" = "1 يوم قبل"; +"reminder_2_DAYS_BEFORE" = "2 يومان قبل"; +"reminder_1_WEEK_BEFORE" = "1 أسبوع قبل"; +"reminder_CUSTOM" = "مخصص..."; + +"reminder_MINUTES" = "دقائق"; +"reminder_HOURS" = "ساعات"; +"reminder_DAYS" = "أيام"; +"reminder_BEFORE" = "قبل"; +"reminder_AFTER" = "بعد"; +"reminder_START" = "يبدأ الحدث"; +"reminder_END" = "ينتهي الحدث"; +"Reminder Details" = "تفاصيل التنبيه"; + +"Choose a Reminder Action" = "اختر إجراءًا للتنبيه"; +"Show an Alert" = "اعرض تنبيهًا"; +"Send an E-mail" = "أرسِل رسالة إلكترونية"; +"Email Organizer" = "منظم البريد الإلكتروني"; +"Email Attendees" = "البريد الإلكتروني للحضور"; + +"zoom_400" = "400%"; +"zoom_200" = "200%"; +"zoom_100" = "100%"; +"zoom_50" = "50%"; +"zoom_25" = "25%"; + +/* transparency */ + +"Show Time as Free" = "اعرض الوقت كمتفرغ"; + +/* validation errors */ + +validate_notitle = "لم يضبط العنوان، استمرار؟"; +validate_invalid_startdate = "حقل تاريخ البدء غير صالح"; +validate_invalid_enddate = "حقل تاريخ الانتهاء غير صالح"; +validate_endbeforestart = "تاريخ الانتهاء الذي أدخلته يحدث قبل تاريخ البدء."; + +"Events" = "الأحداث"; +"Tasks" = "المهام"; +"Show completed tasks" = "اعرض المهام المكتملة"; + +/* tabs */ +"Task" = "المهمة"; +"Event" = "الحدث"; +"Recurrence" = "التكرار"; + +/* toolbar */ +"New Event" = "حدث جديد"; +"New Task" = "مهمة جديدة"; +"Edit" = "حرر"; +"Delete" = "احذف"; +"Go to Today" = "اذهب الي اليوم"; +"Day View" = "عرض اليوم"; +"Week View" = "عرض الاسبوع"; +"Month View" = "عرض الشهر"; +"Reload" = "تحديث"; + +"eventPartStatModificationError" = "حالة المشاركة الخاصة بك لا يمكن تعديلها."; + +/* menu */ +"New Event..." = "حدث جديد..."; +"New Task..." = "مهمة جديدة..."; +"Edit Selected Event..." = "حرر الحدث المحدد..."; +"Delete Selected Event" = "احذف الحدث المحدد"; +"Select All" = "اختر الكل"; +"Workweek days only" = "ايام العمل الأسبوعية فقط"; +"Tasks in View" = "المهمات في العرض"; + +"eventDeleteConfirmation" = "الحدث (الأحداث) الآتية ستُمحى: \n%{0}\nهل تريد المتابعة؟"; +"taskDeleteConfirmation" = "المهمة (المهام) التالية ستمحى: \n %{0}\n هل تريد المتابعة؟"; + +"You cannot remove nor unsubscribe from your personal calendar." += "لا يمكنك حذف أو إلغاء اشتراكك من تقويمك الشخصي."; +"Are you sure you want to delete the calendar \"%{0}\"?" += "هل انت متأكد من حذف التقويم \"%{0}\"؟"; + +/* Legend */ +"Participant" = "المشارك"; +"Optional Participant" = "المشارك الاختياري"; +"Non Participant" = "غير مشارك"; +"Chair" = "مقعد"; + +"Needs action" = "بحاجة إلى إجراء"; +"Accepted" = "مقبول"; +"Declined" = "مرفوض"; +"Tentative" = "مؤقت"; + +"Free" = "متاح"; +"Busy" = "مشغول"; +"Maybe busy" = "ربما يكون مشغولًا"; +"No free-busy information" = "لا معلومات عن حالة التوفر-الانشغال"; + +/* FreeBusy panel buttons and labels */ +"Suggest time slot:" = "اقترح فترة زمنية: "; +"Zoom:" = "تقريب:"; +"Previous slot" = "الفترة السابقة"; +"Next slot" = "الفترة التالية"; +"Previous hour" = "الساعة الماضية"; +"Next hour" = "الساعة التالية"; +"Work days only" = "أيام العمل فقط"; +"The whole day" = "اليوم المكتمل"; +"Between" = "بين"; +"and" = "و"; + +"A time conflict exists with one or more attendees.\nWould you like to keep the current settings anyway?" += "هنالك تعارض في الوقت مع أحد الحضور. \nهل تريد الابقاء على الإعدادات الحالية رغم ذلك؟"; + +/* apt list */ +"Title" = "العنوان"; +"Start" = "البداية"; +"End" = "النهاية"; +"Due Date" = "تاريخ الاستحقاق"; +"Location" = "المكان"; + +"(Private Event)" = "(الحدث الخاص)"; + +vevent_class0 = "(الحدث العام)"; +vevent_class1 = "(حدث خاص)"; +vevent_class2 = "(حدث سري)"; + +"Priority" = "الأولوية"; +"Category" = "التصنيفات"; + +vtodo_class0 = "(مهمة عامة)"; +vtodo_class1 = "(مهمة خاصة)"; +vtodo_class2 = "(مهمة سرية)"; + +"closeThisWindowMessage" = "شكرًا لك! يمكنك إغلاق هذه النافذة أو عرض الخاص بك"; +"Multicolumn Day View" = "عرض اليوم متعدد الأعمدة"; + +"Please select an event or a task." = "من فضلك اختر حدثًا أو مهمة."; + +"editRepeatingItem" = "العنصر الذي تُحرره هو عنصر متكرر. هل تريد تحرير جميع التكرارات أم هذا الحدث الواحد فقط؟"; +"button_thisOccurrenceOnly" = "هذا الحدث فقط"; +"button_allOccurrences" = "كل التكرارات"; + +/* Properties dialog */ +"Name:" = "الاسم:"; +"Color:" = "اللون:"; + +"Include in free-busy" = "ضمن حالة التوفر-الانشغال"; + +"Synchronization" = "المزامنة"; +"Synchronize" = "زامن"; +"Tag:" = "علامة:"; + +"Display" = "عرض"; +"Show alarms" = "إظهار الانذارات"; +"Show tasks" = "عرض المهام"; + +"Notifications" = "الإشعارات"; +"Receive a mail when I modify my calendar" = "تلقي البريد عندما أقوم بتعديل التقويم الخاص بي"; +"Receive a mail when someone else modifies my calendar" = "تلقي البريد عندما يقوم شخص آخر بتعديل التقويم الخاص بي"; +"When I modify my calendar, send a mail to:" = "عندما أقوم بتعديل التقويم الخاص بي، أرسل رسالة بريد إلكتروني إلى:"; + +"Links to this Calendar" = "روابط لهذا التقويم"; +"Authenticated User Access" = "مصادقة وصول المستخدم"; +"CalDAV URL" = "CalDAV URL"; +"WebDAV ICS URL" = "WebDAV ICS URL"; +"WebDAV XML URL" = "WebDAV XML URL"; + +/* Error messages */ +"dayFieldInvalid" = "يرجى تحديد قيمة رقمية في حقل الأيام أكبر من أو يساوي 1."; +"weekFieldInvalid" = "يرجى تحديد قيمة رقمية في حقل الأسبوع (الأسابيع) أكبر من أو يساوي 1."; +"monthFieldInvalid" = "يرجى تحديد قيمة رقمية في حقل الشهر (الشهور) أكبر من أو يساوي 1."; +"monthDayFieldInvalid" = "يرجى تحديد قيمة رقمية في حقل أيام الشهر أكبر من أو يساوي 1."; +"yearFieldInvalid" = "يرجى تحديد قيمة رقمية في حقل السنة (السنوات) أكبر من أو يساوي 1."; +"appointmentFieldInvalid" = "يرجى تحديد قيمة رقمية في مجال موعد (مواعيد) أكبر من أو يساوي 1."; +"recurrenceUnsupported" = "هذا النوع من التكرار غير معتمد."; +"Please specify a calendar name." = "الرجاء تحديد اسم التقويم."; +"tagNotDefined" = "يجب تحديد علامة إذا كنت تريد أن تزامن هذا التقويم."; +"tagAlreadyExists" = "العلامة التى حددتها يرتبط بالفعل بتقويم آخر."; +"tagHasChanged" = "إذا غيرت وسم تقويمك، ستحتاج إلى تحديث البيانات على هاتفك المحمول.\nهل تريد المتابعة؟"; +"tagWasAdded" = "إذا أردت مزامنة هذا التقويم، ستحتاج إلى تحديث البيانات على جهازك المحمول. \nهل تريد المتابعة؟"; +"tagWasRemoved" = "إذا حذفت التقويم من المزامنة، ستحتاج إلى تحديث البيانات على هاتفك المحمول.\nهل تريد المتابعة؟"; +"DestinationCalendarError" = "التقويم المصدر والتقويم الهدف متطابقان. من فضلك حاول النسخ إلى تقويم مختلف."; +"EventCopyError" = "فشل النسخ. من فضلك حاول النسخ من تقويم مختلف."; + +"Open Task..." = "افتح مهمة..."; +"Mark Completed" = "علم كمكتمل"; +"Delete Task" = "احذف المهمة"; +"Delete Event" = "احذف الحدث"; +"Copy event to my calendar" = "انسخ إلى تقويمي"; +"View Raw Source" = "عرض المصدر الخام"; + +"Subscribe to a web calendar..." = "اشترك في تقويم شابكة..."; +"URL of the Calendar" = "عنوان موقع التقويم"; +"Web Calendar" = "تقويم الشابكة"; +"Reload on login" = "حدث عند تسجيل الدخول"; +"Invalid number." = "عدد غير صحيح."; +"Please identify yourself to %{0}" = "من فضلك عرف نفسك لـ %{0}"; diff --git a/UI/Scheduler/GNUmakefile b/UI/Scheduler/GNUmakefile index 6d58c48bd..2ade17522 100644 --- a/UI/Scheduler/GNUmakefile +++ b/UI/Scheduler/GNUmakefile @@ -6,7 +6,7 @@ BUNDLE_NAME = SchedulerUI SchedulerUI_PRINCIPAL_CLASS = SchedulerUIProduct -SchedulerUI_LANGUAGES = BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh +SchedulerUI_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh SchedulerUI_OBJC_FILES = \ SchedulerUIProduct.m \ diff --git a/UI/Templates/SOGoACLArabicAdditionAdvisory.wox b/UI/Templates/SOGoACLArabicAdditionAdvisory.wox new file mode 100644 index 000000000..ba141ab71 --- /dev/null +++ b/UI/Templates/SOGoACLArabicAdditionAdvisory.wox @@ -0,0 +1,28 @@ + + + + + + أضافك + + + + أضافك إلى قائمة الوصول لمجلد . + + + + diff --git a/UI/Templates/SOGoACLArabicModificationAdvisory.wox b/UI/Templates/SOGoACLArabicModificationAdvisory.wox new file mode 100644 index 000000000..0ad39888e --- /dev/null +++ b/UI/Templates/SOGoACLArabicModificationAdvisory.wox @@ -0,0 +1,28 @@ + + + + + + عدل تصاريح الوصول + + + + قام بتعديل تصاريح الوصول لمجلد folder. + + + + diff --git a/UI/Templates/SOGoACLArabicRemovalAdvisory.wox b/UI/Templates/SOGoACLArabicRemovalAdvisory.wox new file mode 100644 index 000000000..1439d5c47 --- /dev/null +++ b/UI/Templates/SOGoACLArabicRemovalAdvisory.wox @@ -0,0 +1,28 @@ + + + + + + ازالك + + + + ازالك من قائمة الوصول لمجلد . + + + + diff --git a/UI/Templates/SOGoFolderArabicAdditionAdvisory.wox b/UI/Templates/SOGoFolderArabicAdditionAdvisory.wox new file mode 100644 index 000000000..24ef681a8 --- /dev/null +++ b/UI/Templates/SOGoFolderArabicAdditionAdvisory.wox @@ -0,0 +1,23 @@ + + + + + + اُُنشِئ بنجاح + + + +The اُُنشِئ المجلد بنجاح. + + + + diff --git a/UI/Templates/SOGoFolderArabicRemovalAdvisory.wox b/UI/Templates/SOGoFolderArabicRemovalAdvisory.wox new file mode 100644 index 000000000..af580ede3 --- /dev/null +++ b/UI/Templates/SOGoFolderArabicRemovalAdvisory.wox @@ -0,0 +1,23 @@ + + + + + + حذف بنجاح + + + +The حذف المجلد بنجاح. + + + + From 84ba93fc0a5c5a650482d1afdee6f93fdd9ea277 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 8 Apr 2013 13:58:55 -0400 Subject: [PATCH 56/77] Now set ForceAuthn to false by default --- SoObjects/SOGo/SOGoSAML2Session.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/SOGo/SOGoSAML2Session.m b/SoObjects/SOGo/SOGoSAML2Session.m index 3576ee148..9fda46089 100644 --- a/SoObjects/SOGo/SOGoSAML2Session.m +++ b/SoObjects/SOGo/SOGoSAML2Session.m @@ -162,7 +162,7 @@ LassoServerInContext (WOContext *context) } request->NameIDPolicy->Format = g_strdup(LASSO_SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT); request->NameIDPolicy->AllowCreate = 1; - request->ForceAuthn = TRUE; + request->ForceAuthn = FALSE; request->IsPassive = FALSE; if (request->ProtocolBinding) { g_free (request->ProtocolBinding); From eec8c07d4f061a2006bd7ec9967a2b1c92e7618b Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 9 Apr 2013 11:35:53 -0400 Subject: [PATCH 57/77] Avoid appending the domain if already present. --- SoObjects/SOGo/SOGoWebAuthenticator.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/SOGo/SOGoWebAuthenticator.m b/SoObjects/SOGo/SOGoWebAuthenticator.m index bb35f2789..639ca4ec0 100644 --- a/SoObjects/SOGo/SOGoWebAuthenticator.m +++ b/SoObjects/SOGo/SOGoWebAuthenticator.m @@ -257,7 +257,7 @@ grace: &grace]) return nil; - if (domain) + if (domain && [login rangeOfString: @"@"].location == NSNotFound) login = [NSString stringWithFormat: @"%@@%@", login, domain]; return login; From 1b983ef691f55e3588cc9afcb9ba841ca472d3d7 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 10 Apr 2013 09:56:23 -0400 Subject: [PATCH 58/77] Fixed a potential timing issue with Dovecot when getting the modseq --- OpenChange/MAPIStoreMailVolatileMessage.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OpenChange/MAPIStoreMailVolatileMessage.m b/OpenChange/MAPIStoreMailVolatileMessage.m index c8044d65f..fb5defdae 100644 --- a/OpenChange/MAPIStoreMailVolatileMessage.m +++ b/OpenChange/MAPIStoreMailVolatileMessage.m @@ -943,7 +943,10 @@ MakeMessageBody (NSDictionary *mailProperties, NSDictionary *attachmentParts, NS [mapping registerURL: [self url] withID: mid]; /* synchronise the cache and update the change key with the one provided - by the client */ + by the client. Before doing this, lets issue a noop because of timing + issues with Dovecot. */ + [client noop]; + [(MAPIStoreMailFolder *) container synchroniseCache]; changeKey = [properties objectForKey: MAPIPropertyKey (PR_CHANGE_KEY)]; if (changeKey) From 33840c71cd38a22766f3e0463a17361e6fea8292 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 10 Apr 2013 10:48:25 -0400 Subject: [PATCH 59/77] Changed noop by unselect/select. --- OpenChange/MAPIStoreMailVolatileMessage.m | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/OpenChange/MAPIStoreMailVolatileMessage.m b/OpenChange/MAPIStoreMailVolatileMessage.m index fb5defdae..513b94f26 100644 --- a/OpenChange/MAPIStoreMailVolatileMessage.m +++ b/OpenChange/MAPIStoreMailVolatileMessage.m @@ -943,9 +943,13 @@ MakeMessageBody (NSDictionary *mailProperties, NSDictionary *attachmentParts, NS [mapping registerURL: [self url] withID: mid]; /* synchronise the cache and update the change key with the one provided - by the client. Before doing this, lets issue a noop because of timing - issues with Dovecot. */ - [client noop]; + by the client. Before doing this, lets issue a unselect/select combo + because of timing issues with Dovecot in obtaining the latest modseq. + Sometimes, Dovecot doesn't return the newly appended UID if we do + a "UID SORT (DATE) UTF-8 (MODSEQ XYZ) (NOT DELETED)" command (where + XYZ is the HIGHESTMODSEQ+1) immediately after IMAP APPEND */ + [client unselect]; + [client select: folderName]; [(MAPIStoreMailFolder *) container synchroniseCache]; changeKey = [properties objectForKey: MAPIPropertyKey (PR_CHANGE_KEY)]; From 4ca476db9e8a81b412a0b15525eeeaa76a78237a Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 10 Apr 2013 11:30:40 -0400 Subject: [PATCH 60/77] Updated NEWS file --- NEWS | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 9fb3b9862..99ab69ff4 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -2.0.5 (2013-03-dd) +2.0.5 (2013-04-dd) ------------------ New features @@ -8,12 +8,21 @@ New features Enhancements - added logging of the X-Forwarded-For HTTP header (#2229) + - initial Arabic translation + - now use BSON instead of GNUstep's binary format for serializing + Outlook related cache files + - updated Danish, Finnish, Polish and Slovak translations Bug fixes - don't use the cache for password lookups from login page (#2169) - fixed issue with exceptions in repeating events - avoid data truncation issue in OpenChange with mysql backend run sql-update-2.0.4b_to_2.0.5-mysql.sh to update existing tables + - avoid random crashes in OpenChange due to RTF conversion + - fixed issue when modifying/deleting exceptions of recurring events + - fixed major cache miss issue leading to slow Outlook + resynchronizations + - fixed major memory corruption issue when Outlook was saving "messages" 2.0.4b (2013-02-04) ------------------ From e23a7df125cd081c078f0baf5fd63acbe8b5f21a Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 10 Apr 2013 11:33:41 -0400 Subject: [PATCH 61/77] Update NEWS file --- NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 99ab69ff4..605a71b1e 100644 --- a/NEWS +++ b/NEWS @@ -8,10 +8,10 @@ New features Enhancements - added logging of the X-Forwarded-For HTTP header (#2229) - - initial Arabic translation - now use BSON instead of GNUstep's binary format for serializing Outlook related cache files - updated Danish, Finnish, Polish and Slovak translations + - added Arabic translation - thanks to Anass Ahmed Bug fixes - don't use the cache for password lookups from login page (#2169) From 1e33b4bf269d660c77fbc891adb4776a83d0b601 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 10 Apr 2013 12:05:44 -0400 Subject: [PATCH 62/77] Add notes regarding UIDField: value must be unique --- Documentation/SOGo Installation Guide.odt | Bin 154023 -> 158138 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Documentation/SOGo Installation Guide.odt b/Documentation/SOGo Installation Guide.odt index 21c7fa8bce188aa404e2a279252ade0530d57e76..2ed59a687325df5d23d31c70f055055e22edcc44 100644 GIT binary patch literal 158138 zcmaI71zgl!*ER|xAfOUb(%q$WcS<+XNHcVI2!be$q;yJmHwZ{~cXyZ6@cjqx`+3iK z&vQP0&cFa`@3pRVt+lSbM-*kA!C}I{Ai}_;_t=aL4FdxMeE{Erv9_=_adNja zF|@O@vM@4qvaq#bcCj&LvNd$HaAdNzGqEwYHFCB#v2kK@GI4WK{C_P5*#GAP5BN&d z*2dJr%-P{-8AldoM<+ukXUC6*4$Ob;5D^idocNCs@CDS7|7~YzWMpDx0xVCtF)9J3|{2tN+W6|1CbKlm7$uf7|W9 zSwVOEzgrRim*_044b4m(nMEv|tPSlP|CghpZrNoqBVBjpE4@3muJKmUD zg)lJK0T!a7iqfK@B#I8UrWRHvFfeYghgxQ;Sc7rJEs6b<+g`oGnb9#D$&S$^+~l}o zktETonTT{sXs{u4WF*3HV#1#igoIh>-oU_9$Y$AYX&?98v7g%(RX12(=kM+5T{~%{ zcwQm+wN6vg{6>X^IYC8y#WAiwWgDY#S3xdl}N_f*I3K6|IeJvEM zyG|DDh~AaEZH70VNrm}9Z9A>>>pu7!WL_5QCi~%!g5Mi35Lg-JqO6<2tRSYgzU$o=^*ZCsO%nXY#MGV&^Va)w4~DJ|pW%S) z&GR(AUu(f!3zHbBX}CTJFP;5mFqMHAxKPLl7Ep|L|

    %LrLSHLL9?Z|h=YFwU#Q3eu_f}tF*a{wv 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 z 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 literal 154023 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�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 From ff13c4954032566676b42a4cebd857de5644632a Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 10 Apr 2013 12:16:26 -0400 Subject: [PATCH 63/77] updated NEWS --- NEWS | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 605a71b1e..67da5553c 100644 --- a/NEWS +++ b/NEWS @@ -20,9 +20,11 @@ Bug fixes run sql-update-2.0.4b_to_2.0.5-mysql.sh to update existing tables - avoid random crashes in OpenChange due to RTF conversion - fixed issue when modifying/deleting exceptions of recurring events - - fixed major cache miss issue leading to slow Outlook - resynchronizations + - fixed major cache miss issue leading to slow Outlook resynchronizations - fixed major memory corruption issue when Outlook was saving "messages" + - fixed filtering of sql contact entries when using dynamic domains (#2269) + - sogo.conf can now be used by all tools (#2226) + 2.0.4b (2013-02-04) ------------------ From 9932d1413b23a50bfb0665af24acb17b59f5f55f Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 10 Apr 2013 12:29:48 -0400 Subject: [PATCH 64/77] update NEWS --- NEWS | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/NEWS b/NEWS index 67da5553c..4c394d428 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,11 @@ Bug fixes - fixed major memory corruption issue when Outlook was saving "messages" - fixed filtering of sql contact entries when using dynamic domains (#2269) - sogo.conf can now be used by all tools (#2226) + - SOPE: fixed handling of sieve capabilities after starttls (#2132) + - OpenChange: fixed 'stuck email' problem when sending a mail + - OpenChange NTLMAuthHandler: avoid tightloop when samba isn't available. + - OpenChange NTLMAuthHandler: avoid crash while parsing cookies + - OpenChange ocsmanager: a LOT of fixes, see git log 2.0.4b (2013-02-04) From dd9e51fd16822ac453b944b7e9a7efc3cd9caefa Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 10 Apr 2013 16:16:30 -0400 Subject: [PATCH 65/77] sogo.conf - new example configuration file --- Scripts/sogo.conf | 103 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 Scripts/sogo.conf diff --git a/Scripts/sogo.conf b/Scripts/sogo.conf new file mode 100644 index 000000000..c05ddf2cc --- /dev/null +++ b/Scripts/sogo.conf @@ -0,0 +1,103 @@ +{ + /* ******************** Main SOGo configuration file ******************** + * + * This is a dictionary in OpenStep property list format. + * See the Installation Guide for details on the format. + * + * C and C++ style comments are supported + * + * This example configuration contains only a subset of all available + * configuration parameters. Please see the installation guide more details. + * + */ + + /* Database configuration (mysql:// or postgresql://) */ + //SOGoProfileURL = "postgresql://sogo:sogo@localhost:5432/sogo/sogo_user_profile"; + //OCSFolderInfoURL = "postgresql://sogo:sogo@localhost:5432/sogo/sogo_folder_info"; + //OCSSessionsFolderURL = "postgresql://sogo:sogo@localhost:5432/sogo/sogo_sessions_folder"; + + /* Mail */ + //SOGoDraftsFolderName = Drafts; + //SOGoSentFolderName = Sent; + //SOGoTrashFolderName = Trash; + //SOGoIMAPServer = localhost; + //SOGoSieveServer = sieve://127.0.0.1:4190; + //SOGoSMTPServer = 127.0.0.1; + //SOGoMailDomain = acme.com; + //SOGoMailingMechanism = smtp; + //SOGoForceExternalLoginWithEmail = NO; + //SOGoMailSpoolPath = /var/spool/sogo; + //NGImap4ConnectionStringSeparator = "/"; + + //SOGoAppointmentSendEMailNotifications = NO; + //SOGoACLsSendEMailNotifications = NO; + + /* Authentication */ + //SOGoPasswordChangeEnabled = YES; + + /* LDAP authentication example */ + //SOGoUserSources = ( + // { + // type = ldap; + // CNFieldName = cn; + // IDFieldName = uid; + // UIDFieldName = uid; + // baseDN = "ou=users,dc=acme,dc=com"; + // bindDN = "uid=sogo,ou=users,dc=acme,dc=com"; + // bindPassword = qwerty; + // canAuthenticate = YES; + // displayName = "Shared Addresses"; + // hostname = ldap://127.0.0.1:389; + // id = public; + // isAddressBook = YES; + // } + //); + + /* SQL authentication example */ + /* These database columns MUST be present in the view/table: + * c_uid - will be used for authentication - it's the username or username@domain.tld) + * c_name - which can be identical to c_uid - will be used to uniquely identify entries + * c_password - password of the user, plain-text, md5 or sha encoded for now + * c_cn - the user's common name - such as "John Doe" + * mail - the user's mail address + * See the installation guide for more details + */ + //SOGoUserSources = + // ( + // { + // type = sql; + // id = directory; + // viewURL = "postgresql://sogo:sogo@127.0.0.1:5432/sogo/sogo_view"; + // canAuthenticate = YES; + // isAddressBook = YES; + // userPasswordAlgorithm = md5; + // } + // ); + + /* Web Interface */ + //SOGoPageTitle = SOGo; + //SOGoVacationEnabled = YES; + //SOGoForwardEnabled = YES; + //SOGoSieveScriptsEnabled = YES; + + /* General */ + //SOGoLanguage = English; + //SOGoTimeZone = America/Montreal; + //SOGoCalendarDefaultRoles = ( + // PublicDAndTViewer, + // ConfidentialDAndTViewer + //); + //SOGoSuperUsernames = (sogo1, sogo2); //This is an array - keep the parens! + + /* Debug */ + //SoDebugBaseURL = YES; + //ImapDebugEnabled = YES; + //LDAPDebugEnabled = YES; + //SOGoDebugRequests = YES; + //PGDebugEnabled = YES; + //MySQL4DebugEnabled = YES; + //SOGoUIxDebugEnabled = YES; + //WODontZipResponse = YES; + //WOLogFile = /var/log/sogo/sogo.log; + +} From e24eb10c4fa9ce6b53021ef04a23254ad7fb7cab Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 10 Apr 2013 16:20:16 -0400 Subject: [PATCH 66/77] rpm: install a sample sogo.conf in /etc/sogo --- packaging/rhel/sogo.spec | 50 ++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 92eda7faa..9e8842534 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -5,12 +5,14 @@ %{!?python_sys_pyver: %global python_sys_pyver %(/usr/bin/python -c "import sys; print sys.hexversion")} +%define sogo_user "sogo" + Summary: SOGo Name: sogo Version: %{sogo_version} Release: %{dist_suffix}%{?dist} Vendor: http://www.inverse.ca/ -Packager: Wolfgang Sourdeau +Packager: Wolfgang Sourdeau License: GPL URL: http://www.inverse.ca/contributions/sogo.html Group: Productivity/Groupware @@ -188,17 +190,19 @@ make DESTDIR=${RPM_BUILD_ROOT} \ GNUSTEP_INSTALLATION_DOMAIN=SYSTEM \ CC="$cc" LDFLAGS="$ldflags" \ install -mkdir -p ${RPM_BUILD_ROOT}/etc/init.d -mkdir -p ${RPM_BUILD_ROOT}/etc/cron.d -mkdir -p ${RPM_BUILD_ROOT}/etc/cron.daily -mkdir -p ${RPM_BUILD_ROOT}/etc/logrotate.d -mkdir -p ${RPM_BUILD_ROOT}/etc/sysconfig -mkdir -p ${RPM_BUILD_ROOT}/etc/httpd/conf.d -mkdir -p ${RPM_BUILD_ROOT}/usr/sbin -mkdir -p ${RPM_BUILD_ROOT}/var/lib/sogo -mkdir -p ${RPM_BUILD_ROOT}/var/log/sogo -mkdir -p ${RPM_BUILD_ROOT}/var/run/sogo -mkdir -p ${RPM_BUILD_ROOT}/var/spool/sogo +install -d ${RPM_BUILD_ROOT}/etc/init.d +install -d ${RPM_BUILD_ROOT}/etc/cron.d +install -d ${RPM_BUILD_ROOT}/etc/cron.daily +install -d ${RPM_BUILD_ROOT}/etc/logrotate.d +install -d ${RPM_BUILD_ROOT}/etc/sysconfig +install -d ${RPM_BUILD_ROOT}/etc/httpd/conf.d +install -d ${RPM_BUILD_ROOT}/usr/sbin +install -d ${RPM_BUILD_ROOT}/var/lib/sogo +install -d ${RPM_BUILD_ROOT}/var/log/sogo +install -d ${RPM_BUILD_ROOT}/var/run/sogo +install -d ${RPM_BUILD_ROOT}/var/spool/sogo +install -d -m 750 -o %sogo_user -g %sogo_user ${RPM_BUILD_ROOT}/etc/sogo +install -m 640 -o %sogo_user -g %sogo_user Scripts/sogo.conf ${RPM_BUILD_ROOT}/etc/sogo/ cat Apache/SOGo.conf | sed -e "s@/lib/@/%{_lib}/@g" > ${RPM_BUILD_ROOT}/etc/httpd/conf.d/SOGo.conf install -m 600 Scripts/sogo.cron ${RPM_BUILD_ROOT}/etc/cron.d/sogo cp Scripts/tmpwatch ${RPM_BUILD_ROOT}/etc/cron.daily/sogo-tmpwatch @@ -229,10 +233,11 @@ rm -fr ${RPM_BUILD_ROOT} /etc/init.d/sogod /etc/cron.daily/sogo-tmpwatch -%dir %attr(0700, sogo, sogo) %{_var}/lib/sogo -%dir %attr(0700, sogo, sogo) %{_var}/log/sogo -%dir %attr(0755, sogo, sogo) %{_var}/run/sogo -%dir %attr(0700, sogo, sogo) %{_var}/spool/sogo +%dir %attr(0700, %sogo_user, %sogo_user) %{_var}/lib/sogo +%dir %attr(0700, %sogo_user, %sogo_user) %{_var}/log/sogo +%dir %attr(0755, %sogo_user, %sogo_user) %{_var}/run/sogo +%dir %attr(0700, %sogo_user, %sogo_user) %{_var}/spool/sogo +%dir %attr(0750, root, %sogo_user) %{_sysconfdir}/sogo %{_sbindir}/sogod %{_libdir}/libSOGo.so.* %{_libdir}/libSOGoUI.so.* @@ -248,6 +253,7 @@ rm -fr ${RPM_BUILD_ROOT} %{_libdir}/GNUstep/OCSTypeModels %{_libdir}/GNUstep/WOxElemBuilders-* +%config(noreplace) %attr(0640, root, %sogo_user) %{_sysconfdir}/sogo/sogo.conf %config(noreplace) %{_sysconfdir}/logrotate.d/sogo %config(noreplace) %{_sysconfdir}/cron.d/sogo %config(noreplace) %{_sysconfdir}/httpd/conf.d/SOGo.conf @@ -302,8 +308,8 @@ rm -fr ${RPM_BUILD_ROOT} # **************************** pkgscripts ***************************** %pre -if ! id sogo >& /dev/null; then - /usr/sbin/useradd -d %{_var}/lib/sogo -c "SOGo daemon" -s /sbin/nologin -M -r sogo +if ! id %sogo_user >& /dev/null; then + /usr/sbin/useradd -d %{_var}/lib/sogo -c "SOGo daemon" -s /sbin/nologin -M -r %sogo_user fi %post @@ -322,8 +328,8 @@ fi %postun if test "$1" = "0" then - /usr/sbin/userdel sogo - /usr/sbin/groupdel sogo > /dev/null 2>&1 + /usr/sbin/userdel %sogo_user + /usr/sbin/groupdel %sogo_user > /dev/null 2>&1 /bin/rm -rf %{_var}/run/sogo /bin/rm -rf %{_var}/spool/sogo # not removing /var/lib/sogo to keep .GNUstepDefaults @@ -331,6 +337,10 @@ fi # ********************************* changelog ************************* %changelog +* Wed Apr 10 2013 Jean Raby +- use %sogo_user instead of 'sogo' +- install a sample sogo.conf in /etc/sogo + * Tue Jan 22 2013 Jean Raby - Create the sogo user as a system user - Use %attr() to set directory permissions instead of chown/chmod From 4da1e41d936fb0fc3bc24be5a104f0c4339fcd68 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 10 Apr 2013 16:20:47 -0400 Subject: [PATCH 67/77] deb: install a sample sogo.conf in /etc/sogo While there, replace mkdir + cp combo with 'install' --- packaging/debian-multiarch/rules | 11 +++++------ packaging/debian-multiarch/sogo.install | 3 ++- packaging/debian-multiarch/sogo.postinst | 6 ++++++ packaging/debian-multiarch/sogo.preinst | 2 +- packaging/debian/rules | 11 +++++------ packaging/debian/sogo.install | 3 ++- packaging/debian/sogo.postinst | 6 ++++++ packaging/debian/sogo.preinst | 2 +- 8 files changed, 28 insertions(+), 16 deletions(-) diff --git a/packaging/debian-multiarch/rules b/packaging/debian-multiarch/rules index 120a7a3b7..e764955a6 100755 --- a/packaging/debian-multiarch/rules +++ b/packaging/debian-multiarch/rules @@ -73,14 +73,13 @@ install-arch: build-arch $(DESTDIR)/usr/lib/$(DEB_HOST_MULTIARCH)/mapistore_backends/SOGo.so; \ fi - mkdir -p debian/tmp/etc/default - cp Scripts/sogo-default debian/tmp/etc/default/sogo - mkdir -p debian/tmp/usr/share/lintian/overrides - cp debian/sogo.overrides debian/tmp/usr/share/lintian/overrides/sogo - mkdir -p debian/tmp/etc/apache2/conf.d - cp Apache/SOGo.conf debian/tmp/etc/apache2/conf.d/SOGo.conf + install -D Scripts/sogo-default debian/tmp/etc/default/sogo + install -D debian/sogo.overrides debian/tmp/usr/share/lintian/overrides/sogo + install -D Apache/SOGo.conf debian/tmp/etc/apache2/conf.d/SOGo.conf install -D -m 644 Scripts/sogo.cron debian/tmp/etc/cron.d/sogo install -D -m 644 Scripts/logrotate debian/tmp/etc/logrotate.d/sogo + install -d -m 750 debian/tmp/etc/ + install -D -m 640 Scripts/sogo.conf debian/tmp/etc/sogo.conf # Build architecture dependant packages using the common target. binary-arch: build-arch install-arch diff --git a/packaging/debian-multiarch/sogo.install b/packaging/debian-multiarch/sogo.install index 44d947d4f..5f22f31bc 100644 --- a/packaging/debian-multiarch/sogo.install +++ b/packaging/debian-multiarch/sogo.install @@ -1,7 +1,8 @@ -etc/default/sogo etc/apache2/conf.d/SOGo.conf etc/cron.d/sogo +etc/default/sogo etc/logrotate.d/sogo +etc/sogo/sogo.conf usr/sbin/* usr/lib/GNUstep/Frameworks/* usr/lib/GNUstep/Libraries/* diff --git a/packaging/debian-multiarch/sogo.postinst b/packaging/debian-multiarch/sogo.postinst index c4a7272fd..212de1139 100644 --- a/packaging/debian-multiarch/sogo.postinst +++ b/packaging/debian-multiarch/sogo.postinst @@ -20,6 +20,12 @@ case "$1" in configure) # update timestamp on imgs,css,js to let apache know the files changed find /usr/lib/GNUstep/SOGo/WebServerResources -exec touch {} \; + + # Enforce owner+mode on configuration + chmod 750 /etc/sogo + chown root:sogo /etc/sogo + chmod 640 /etc/sogo/sogo.conf + chown root:sogo /etc/sogo.conf ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/packaging/debian-multiarch/sogo.preinst b/packaging/debian-multiarch/sogo.preinst index fc2d475bf..552628002 100644 --- a/packaging/debian-multiarch/sogo.preinst +++ b/packaging/debian-multiarch/sogo.preinst @@ -18,7 +18,7 @@ if [ "$1" == "install" ] || [ "$1" == "upgrade" ]; then useradd -d /var/lib/sogo -g sogo -c "SOGo daemon" -s /usr/sbin/nologin -M -r sogo fi - # create mandatory dirs and enforce owner/perms + # create mandatory dirs and enforce owner+mode for dir in lib log run spool; do install -m 750 -o sogo -g sogo -d /var/$dir/sogo done diff --git a/packaging/debian/rules b/packaging/debian/rules index eac3a5a02..9f8549b80 100755 --- a/packaging/debian/rules +++ b/packaging/debian/rules @@ -77,14 +77,13 @@ install-arch: build-arch $(DESTDIR)/usr/lib/mapistore_backends/SOGo.so; \ fi - mkdir -p debian/tmp/etc/default - cp Scripts/sogo-default debian/tmp/etc/default/sogo - mkdir -p debian/tmp/usr/share/lintian/overrides - cp debian/sogo.overrides debian/tmp/usr/share/lintian/overrides/sogo - mkdir -p debian/tmp/etc/apache2/conf.d - cp Apache/SOGo.conf debian/tmp/etc/apache2/conf.d/SOGo.conf + install -D Scripts/sogo-default debian/tmp/etc/default/sogo + install -D debian/sogo.overrides debian/tmp/usr/share/lintian/overrides/sogo + install -D Apache/SOGo.conf debian/tmp/etc/apache2/conf.d/SOGo.conf install -D -m 644 Scripts/sogo.cron debian/tmp/etc/cron.d/sogo install -D -m 644 Scripts/logrotate debian/tmp/etc/logrotate.d/sogo + install -d -m 750 debian/tmp/etc/ + install -D -m 640 Scripts/sogo.conf debian/tmp/etc/sogo.conf # Build architecture dependant packages using the common target. binary-arch: build-arch install-arch diff --git a/packaging/debian/sogo.install b/packaging/debian/sogo.install index 44d947d4f..5f22f31bc 100644 --- a/packaging/debian/sogo.install +++ b/packaging/debian/sogo.install @@ -1,7 +1,8 @@ -etc/default/sogo etc/apache2/conf.d/SOGo.conf etc/cron.d/sogo +etc/default/sogo etc/logrotate.d/sogo +etc/sogo/sogo.conf usr/sbin/* usr/lib/GNUstep/Frameworks/* usr/lib/GNUstep/Libraries/* diff --git a/packaging/debian/sogo.postinst b/packaging/debian/sogo.postinst index c4a7272fd..212de1139 100644 --- a/packaging/debian/sogo.postinst +++ b/packaging/debian/sogo.postinst @@ -20,6 +20,12 @@ case "$1" in configure) # update timestamp on imgs,css,js to let apache know the files changed find /usr/lib/GNUstep/SOGo/WebServerResources -exec touch {} \; + + # Enforce owner+mode on configuration + chmod 750 /etc/sogo + chown root:sogo /etc/sogo + chmod 640 /etc/sogo/sogo.conf + chown root:sogo /etc/sogo.conf ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/packaging/debian/sogo.preinst b/packaging/debian/sogo.preinst index fc2d475bf..552628002 100644 --- a/packaging/debian/sogo.preinst +++ b/packaging/debian/sogo.preinst @@ -18,7 +18,7 @@ if [ "$1" == "install" ] || [ "$1" == "upgrade" ]; then useradd -d /var/lib/sogo -g sogo -c "SOGo daemon" -s /usr/sbin/nologin -M -r sogo fi - # create mandatory dirs and enforce owner/perms + # create mandatory dirs and enforce owner+mode for dir in lib log run spool; do install -m 750 -o sogo -g sogo -d /var/$dir/sogo done From cc125d2192a8b1fb84c7d239c708735d18c33772 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 10 Apr 2013 16:27:03 -0400 Subject: [PATCH 68/77] directory fixup --- packaging/debian-multiarch/rules | 4 ++-- packaging/debian/rules | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packaging/debian-multiarch/rules b/packaging/debian-multiarch/rules index e764955a6..e19250d41 100755 --- a/packaging/debian-multiarch/rules +++ b/packaging/debian-multiarch/rules @@ -78,8 +78,8 @@ install-arch: build-arch install -D Apache/SOGo.conf debian/tmp/etc/apache2/conf.d/SOGo.conf install -D -m 644 Scripts/sogo.cron debian/tmp/etc/cron.d/sogo install -D -m 644 Scripts/logrotate debian/tmp/etc/logrotate.d/sogo - install -d -m 750 debian/tmp/etc/ - install -D -m 640 Scripts/sogo.conf debian/tmp/etc/sogo.conf + install -d -m 750 debian/tmp/etc/sogo/ + install -D -m 640 Scripts/sogo.conf debian/tmp/etc/sogo/sogo.conf # Build architecture dependant packages using the common target. binary-arch: build-arch install-arch diff --git a/packaging/debian/rules b/packaging/debian/rules index 9f8549b80..60ee25136 100755 --- a/packaging/debian/rules +++ b/packaging/debian/rules @@ -82,8 +82,8 @@ install-arch: build-arch install -D Apache/SOGo.conf debian/tmp/etc/apache2/conf.d/SOGo.conf install -D -m 644 Scripts/sogo.cron debian/tmp/etc/cron.d/sogo install -D -m 644 Scripts/logrotate debian/tmp/etc/logrotate.d/sogo - install -d -m 750 debian/tmp/etc/ - install -D -m 640 Scripts/sogo.conf debian/tmp/etc/sogo.conf + install -d -m 750 debian/tmp/etc/sogo + install -D -m 640 Scripts/sogo.conf debian/tmp/etc/sogo/sogo.conf # Build architecture dependant packages using the common target. binary-arch: build-arch install-arch From d2dda86529b3fe6a1d383522640f4898c00b5f25 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 10 Apr 2013 16:30:16 -0400 Subject: [PATCH 69/77] ... dir fixup again --- packaging/debian-multiarch/sogo.postinst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/debian-multiarch/sogo.postinst b/packaging/debian-multiarch/sogo.postinst index 212de1139..82cfa7d4e 100644 --- a/packaging/debian-multiarch/sogo.postinst +++ b/packaging/debian-multiarch/sogo.postinst @@ -25,7 +25,7 @@ case "$1" in chmod 750 /etc/sogo chown root:sogo /etc/sogo chmod 640 /etc/sogo/sogo.conf - chown root:sogo /etc/sogo.conf + chown root:sogo /etc/sogo/sogo.conf ;; abort-upgrade|abort-remove|abort-deconfigure) From 3a61a2566bf2c6e95b665f2474350c8e1c59328b Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 10 Apr 2013 18:24:03 -0400 Subject: [PATCH 70/77] Updated installation guide: version 2.0.5 --- Documentation/SOGo Installation Guide.odt | Bin 158138 -> 153776 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Documentation/SOGo Installation Guide.odt b/Documentation/SOGo Installation Guide.odt index 2ed59a687325df5d23d31c70f055055e22edcc44..f13ec98791e3438e826f817313a6fc0a6d73793e 100644 GIT binary patch literal 153776 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�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 literal 158138 zcmaI71zgl!*ER|xAfOUb(%q$WcS<+XNHcVI2!be$q;yJmHwZ{~cXyZ6@cjqx`+3iK z&vQP0&cFa`@3pRVt+lSbM-*kA!C}I{Ai}_;_t=aL4FdxMeE{Erv9_=_adNja zF|@O@vM@4qvaq#bcCj&LvNd$HaAdNzGqEwYHFCB#v2kK@GI4WK{C_P5*#GAP5BN&d z*2dJr%-P{-8AldoM<+ukXUC6*4$Ob;5D^idocNCs@CDS7|7~YzWMpDx0xVCtF)9J3|{2tN+W6|1CbKlm7$uf7|W9 zSwVOEzgrRim*_044b4m(nMEv|tPSlP|CghpZrNoqBVBjpE4@3muJKmUD zg)lJK0T!a7iqfK@B#I8UrWRHvFfeYghgxQ;Sc7rJEs6b<+g`oGnb9#D$&S$^+~l}o zktETonTT{sXs{u4WF*3HV#1#igoIh>-oU_9$Y$AYX&?98v7g%(RX12(=kM+5T{~%{ zcwQm+wN6vg{6>X^IYC8y#WAiwWgDY#S3xdl}N_f*I3K6|IeJvEM zyG|DDh~AaEZH70VNrm}9Z9A>>>pu7!WL_5QCi~%!g5Mi35Lg-JqO6<2tRSYgzU$o=^*ZCsO%nXY#MGV&^Va)w4~DJ|pW%S) z&GR(AUu(f!3zHbBX}CTJFP;5mFqMHAxKPLl7Ep|L|

    %LrLSHLL9?Z|h=YFwU#Q3eu_f}tF*a{wv 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 z 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 From 01f20a42ad55356c772ca2a4a758d5421e986987 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Thu, 11 Apr 2013 09:18:43 -0400 Subject: [PATCH 71/77] packaging fixups --- packaging/debian/sogo.postinst | 2 +- packaging/rhel/sogo.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/debian/sogo.postinst b/packaging/debian/sogo.postinst index 212de1139..82cfa7d4e 100644 --- a/packaging/debian/sogo.postinst +++ b/packaging/debian/sogo.postinst @@ -25,7 +25,7 @@ case "$1" in chmod 750 /etc/sogo chown root:sogo /etc/sogo chmod 640 /etc/sogo/sogo.conf - chown root:sogo /etc/sogo.conf + chown root:sogo /etc/sogo/sogo.conf ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 9e8842534..8cb0000f0 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -5,7 +5,7 @@ %{!?python_sys_pyver: %global python_sys_pyver %(/usr/bin/python -c "import sys; print sys.hexversion")} -%define sogo_user "sogo" +%define sogo_user sogo Summary: SOGo Name: sogo From 0a08285facce833fecba8319c4f0b2bdf641746e Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Thu, 11 Apr 2013 10:09:02 -0400 Subject: [PATCH 72/77] Add note regarding precedence of .GNUstepDefaults --- Scripts/sogo.conf | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/Scripts/sogo.conf b/Scripts/sogo.conf index c05ddf2cc..caff050a6 100644 --- a/Scripts/sogo.conf +++ b/Scripts/sogo.conf @@ -1,15 +1,19 @@ { - /* ******************** Main SOGo configuration file ******************** - * - * This is a dictionary in OpenStep property list format. - * See the Installation Guide for details on the format. - * - * C and C++ style comments are supported - * - * This example configuration contains only a subset of all available - * configuration parameters. Please see the installation guide more details. - * - */ + /* ********************* Main SOGo configuration file ********************** + * * + * Since the content of this file is a dictionary in OpenStep plist format, * + * the curly braces enclosing the body of the configuration are mandatory. * + * See the Installation Guide for details on the format. * + * * + * C and C++ style comments are supported. * + * * + * This example configuration contains only a subset of all available * + * configuration parameters. Please see the installation guide more details. * + * * + * ~sogo/GNUstep/Defaults/.GNUstepDefaults has precedence over this file, * + * make sure to move it away to avoid unwanted parameter overrides. * + * * + * **************************************************************************/ /* Database configuration (mysql:// or postgresql://) */ //SOGoProfileURL = "postgresql://sogo:sogo@localhost:5432/sogo/sogo_user_profile"; @@ -54,13 +58,13 @@ //); /* SQL authentication example */ - /* These database columns MUST be present in the view/table: - * c_uid - will be used for authentication - it's the username or username@domain.tld) - * c_name - which can be identical to c_uid - will be used to uniquely identify entries - * c_password - password of the user, plain-text, md5 or sha encoded for now - * c_cn - the user's common name - such as "John Doe" - * mail - the user's mail address - * See the installation guide for more details + /* These database columns MUST be present in the view/table: + * c_uid - will be used for authentication - it's the username or username@domain.tld) + * c_name - which can be identical to c_uid - will be used to uniquely identify entries + * c_password - password of the user, plain-text, md5 or sha encoded for now + * c_cn - the user's common name - such as "John Doe" + * mail - the user's mail address + * See the installation guide for more details */ //SOGoUserSources = // ( @@ -99,5 +103,4 @@ //SOGoUIxDebugEnabled = YES; //WODontZipResponse = YES; //WOLogFile = /var/log/sogo/sogo.log; - } From 29e05c7c81b1a92d4b6bbc9be96d40f8ae3f2482 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 11 Apr 2013 10:20:10 -0400 Subject: [PATCH 73/77] Bump version to 2.0.5 --- Documentation/SOGo Installation Guide.odt | Bin 153776 -> 153786 bytes .../SOGo Mobile Devices Configuration.odt | Bin 21147 -> 20552 bytes ...SOGo Mozilla Thunderbird Configuration.odt | Bin 21677 -> 21077 bytes ...Native Microsoft Outlook Configuration.odt | Bin 31003 -> 31007 bytes NEWS | 2 +- Version | 2 +- 6 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/SOGo Installation Guide.odt b/Documentation/SOGo Installation Guide.odt index f13ec98791e3438e826f817313a6fc0a6d73793e..5b70938004f70e17f534093636dd291fbe4aaec1 100644 GIT binary patch delta 50789 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 z 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 A(*OVf delta 51002 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�(iZ44h949uwG-M3HQEU~lLh6BEU&V3 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�WU!eP)JR_QHT#C&+>9U=!-eqT9S?YpY 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 E04DA!pa1{> diff --git a/Documentation/SOGo Mobile Devices Configuration.odt b/Documentation/SOGo Mobile Devices Configuration.odt index 9949dbed035490696aa4e76b09a56977c1feb630..8ae5ac6b92c475c33ef62f873ddb86f9997f968b 100644 GIT binary patch delta 16910 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 Xf(Gj3z#wTR39rd{LF#NB-XKi??~SRM delta 17575 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 diff --git a/Documentation/SOGo Mozilla Thunderbird Configuration.odt b/Documentation/SOGo Mozilla Thunderbird Configuration.odt index 2f8c2d101f399c34f25bb758ce475c12d323725a..5d4f5bdfaafe5c3233d0ec7f427a731fc543ddae 100644 GIT binary patch delta 18279 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 LlE>1K^wa+Vc8e@! delta 19033 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�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 PP<+;FMN?VAw!wG3ZGUZx=>&`MWT?{tt+&}bnN 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 literal 31003 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 YWs{c?2YdTN4Dt0<__}kc+x Date: Thu, 11 Apr 2013 10:22:28 -0400 Subject: [PATCH 74/77] remove unrtf leftovers --- OpenChange/GNUmakefile | 7 +------ OpenChange/GNUmakefile.unrtf | 34 -------------------------------- packaging/debian-multiarch/rules | 2 -- packaging/debian/rules | 2 -- 4 files changed, 1 insertion(+), 44 deletions(-) delete mode 100644 OpenChange/GNUmakefile.unrtf diff --git a/OpenChange/GNUmakefile b/OpenChange/GNUmakefile index df3f5f116..3d9fa5b9f 100644 --- a/OpenChange/GNUmakefile +++ b/OpenChange/GNUmakefile @@ -7,8 +7,6 @@ include ../Version BACKEND_VERSION = 1.0.0 -UNRTF_VERSION = 0.21.2 - ### bootstrap library MAPISTORESOGO = MAPIStoreSOGo LIBRARY_NAME = $(MAPISTORESOGO) @@ -136,9 +134,7 @@ $(SOGOBACKEND)_OBJC_FILES += \ $(SOGOBACKEND)_RESOURCE_FILES += \ - product.plist \ - $(UNRTF_DIR)/charmaps/SYMBOL.charmap \ - $(UNRTF_DIR)/outputs/html.conf + product.plist ### pl reader PLREADER_TOOL = plreader @@ -190,7 +186,6 @@ ADDITIONAL_INCLUDE_DIRS += \ -DSAMBA_PRIVATE_DIR=@"\"$(SAMBA_PRIVATE_DIR)\"" \ $(LIBMAPI_CFLAGS) \ $(LIBMAPISTORE_CFLAGS) \ - -I$(UNRTF_DIR)/src \ -I../SoObjects -I../SOPE \ -DBACKEND_BUNDLE_NAME="@\"$(BUNDLE_NAME)$(BUNDLE_EXTENSION)\"" \ -DSOGO_BUNDLES_DIR="@\"$(BUNDLE_INSTALL_DIR)\"" diff --git a/OpenChange/GNUmakefile.unrtf b/OpenChange/GNUmakefile.unrtf deleted file mode 100644 index eaac4764a..000000000 --- a/OpenChange/GNUmakefile.unrtf +++ /dev/null @@ -1,34 +0,0 @@ -# -*-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 --git a/packaging/debian-multiarch/rules b/packaging/debian-multiarch/rules index e19250d41..688c6d399 100755 --- a/packaging/debian-multiarch/rules +++ b/packaging/debian-multiarch/rules @@ -41,8 +41,6 @@ clean: make clean; \ fi -rm -f OpenChange/MAPIStorePropertySelectors.* - -find OpenChange -type d -name "unrtf-*" -exec rm -rf {} \; - -rm -f OpenChange/unrtf*-stamp -rm -f config.make dh_clean diff --git a/packaging/debian/rules b/packaging/debian/rules index 60ee25136..dc38073a1 100755 --- a/packaging/debian/rules +++ b/packaging/debian/rules @@ -45,8 +45,6 @@ clean: make clean; \ fi -rm -f OpenChange/MAPIStorePropertySelectors.* - -find OpenChange -type d -name "unrtf-*" -exec rm -rf {} \; - -rm -f OpenChange/unrtf*-stamp -rm -f config.make dh_clean From dfb8788270ff3b30133417a52c9052fafea19ae2 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Thu, 11 Apr 2013 10:37:34 -0400 Subject: [PATCH 75/77] don't build SAML support on debian yet --- packaging/debian/control-squeeze | 4 ++-- packaging/debian/rules | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packaging/debian/control-squeeze b/packaging/debian/control-squeeze index b09355940..0f5963934 100644 --- a/packaging/debian/control-squeeze +++ b/packaging/debian/control-squeeze @@ -1,14 +1,14 @@ Source: sogo Priority: optional Maintainer: Inverse Support -Build-Depends: debhelper (>= 7.0.15), gobjc | objc-compiler, libgnustep-base-dev, libsope-appserver4.9-dev, libsope-core4.9-dev, libsope-gdl1-4.9-dev, libsope-ldap4.9-dev, libsope-mime4.9-dev, libsope-xml4.9-dev, libmemcached-dev, libxml2-dev, libsbjson-dev, libssl-dev, libcurl4-openssl-dev | libcurl4-gnutls-dev, libmapi-dev, libmapistore-dev, libmapiproxy-dev, liblasso3-dev (>= 2.3.5) +Build-Depends: debhelper (>= 7.0.15), gobjc | objc-compiler, libgnustep-base-dev, libsope-appserver4.9-dev, libsope-core4.9-dev, libsope-gdl1-4.9-dev, libsope-ldap4.9-dev, libsope-mime4.9-dev, libsope-xml4.9-dev, libmemcached-dev, libxml2-dev, libsbjson-dev, libssl-dev, libcurl4-openssl-dev | libcurl4-gnutls-dev, libmapi-dev, libmapistore-dev, libmapiproxy-dev Section: web Standards-Version: 3.9.1 Package: sogo Section: web Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, tmpreaper, sope4.9-libxmlsaxdriver, sope4.9-db-connector, gnustep-make, libcurl3, liblasso3 (>= 2.3.5) +Depends: ${shlibs:Depends}, ${misc:Depends}, tmpreaper, sope4.9-libxmlsaxdriver, sope4.9-db-connector, gnustep-make, libcurl3 Recommends: memcached Suggests: nginx Description: a modern and scalable groupware diff --git a/packaging/debian/rules b/packaging/debian/rules index dc38073a1..3fe7bd0c3 100755 --- a/packaging/debian/rules +++ b/packaging/debian/rules @@ -6,9 +6,10 @@ export DH_VERBOSE=1 DESTDIR=$(CURDIR)/debian/tmp DIST_CODENAME=$(shell lsb_release -cs) -ifeq ($(DIST_CODENAME), squeeze) - SAML2_CONFIG=--enable-saml2 -endif +# NOTYET +#ifeq ($(DIST_CODENAME), squeeze) +# SAML2_CONFIG=--enable-saml2 +#endif include /etc/GNUstep/GNUstep.conf include /usr/share/GNUstep/Makefiles/common.make From 30f10ee8f06157b1222d68b0502c80162fcbb277 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 11 Apr 2013 11:30:23 -0400 Subject: [PATCH 76/77] Update translations --- .../Appointments/Russian.lproj/Localizable.strings | 4 ++++ .../BrazilianPortuguese.lproj/Localizable.strings | 1 + UI/Common/Russian.lproj/Localizable.strings | 1 + UI/Contacts/Polish.lproj/Localizable.strings | 2 +- .../BrazilianPortuguese.lproj/Localizable.strings | 4 ++-- UI/MailerUI/Czech.lproj/Localizable.strings | 4 ++-- UI/MailerUI/Dutch.lproj/Localizable.strings | 4 ++-- UI/MailerUI/French.lproj/Localizable.strings | 4 ++-- UI/MailerUI/German.lproj/Localizable.strings | 6 +++--- UI/MailerUI/Hungarian.lproj/Localizable.strings | 4 ++-- UI/MailerUI/Polish.lproj/Localizable.strings | 4 ++-- UI/MailerUI/Russian.lproj/Localizable.strings | 4 ++-- UI/MailerUI/Slovak.lproj/Localizable.strings | 4 ++-- UI/MailerUI/SpanishArgentina.lproj/Localizable.strings | 4 ++-- UI/MailerUI/SpanishSpain.lproj/Localizable.strings | 4 ++-- .../BrazilianPortuguese.lproj/Localizable.strings | 1 + UI/Scheduler/Czech.lproj/Localizable.strings | 1 + UI/Scheduler/Dutch.lproj/Localizable.strings | 1 + UI/Scheduler/Finnish.lproj/Localizable.strings | 1 + UI/Scheduler/French.lproj/Localizable.strings | 1 + UI/Scheduler/German.lproj/Localizable.strings | 1 + UI/Scheduler/Hungarian.lproj/Localizable.strings | 1 + UI/Scheduler/Polish.lproj/Localizable.strings | 1 + UI/Scheduler/Russian.lproj/Localizable.strings | 10 +++++++--- UI/Scheduler/Slovak.lproj/Localizable.strings | 1 + .../SpanishArgentina.lproj/Localizable.strings | 1 + UI/Scheduler/SpanishSpain.lproj/Localizable.strings | 1 + 27 files changed, 48 insertions(+), 27 deletions(-) diff --git a/SoObjects/Appointments/Russian.lproj/Localizable.strings b/SoObjects/Appointments/Russian.lproj/Localizable.strings index ec30c6c7c..67539d7ab 100644 --- a/SoObjects/Appointments/Russian.lproj/Localizable.strings +++ b/SoObjects/Appointments/Russian.lproj/Localizable.strings @@ -48,6 +48,10 @@ vtodo_class2 = "(Конфиденциальная задача)"; = "Пожалуйста подтвердите или отмените эти изменения."; /* Reply */ +"Accepted invitation: \"%{Summary}\"" = "Принятое приглашение: \"%{Summary}\""; +"Declined invitation: \"%{Summary}\"" = "Отклонённое приглашение: \"%{Summary}\""; +"Delegated invitation: \"%{Summary}\"" = "Делегированное приглашение: \"%{Summary}\""; +"Not yet decided on invitation: \"%{Summary}\"" = "Пока нет решения по приглашению: \"%{Summary}\""; "%{Attendee} %{SentByText}has accepted your event invitation." = "%{Attendee} %{SentByText}согласился участвовать в запланированном мероприятии."; "%{Attendee} %{SentByText}has declined your event invitation." diff --git a/UI/Common/BrazilianPortuguese.lproj/Localizable.strings b/UI/Common/BrazilianPortuguese.lproj/Localizable.strings index c2079131f..47c6c9901 100644 --- a/UI/Common/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/Common/BrazilianPortuguese.lproj/Localizable.strings @@ -16,6 +16,7 @@ "Log Console (dev.)" = "Log Console (dev.)"; "User" = "Usuário"; +"Vacation message is enabled" = "Mensagem de ausência está ativa"; "Help" = "Ajuda"; diff --git a/UI/Common/Russian.lproj/Localizable.strings b/UI/Common/Russian.lproj/Localizable.strings index 180f6bdc8..aca037cee 100644 --- a/UI/Common/Russian.lproj/Localizable.strings +++ b/UI/Common/Russian.lproj/Localizable.strings @@ -16,6 +16,7 @@ "Log Console (dev.)" = "Вход Console (dev.)"; "User" = "Пользователь"; +"Vacation message is enabled" = "Сообщение об отпуске включено"; "Help" = "Помощь"; diff --git a/UI/Contacts/Polish.lproj/Localizable.strings b/UI/Contacts/Polish.lproj/Localizable.strings index 46c61ce70..d8ec02965 100644 --- a/UI/Contacts/Polish.lproj/Localizable.strings +++ b/UI/Contacts/Polish.lproj/Localizable.strings @@ -127,7 +127,7 @@ "Add as..." = "Dodaj jako"; "Recipient" = "Odbiorca"; "Carbon Copy" = "Do wiadomości"; -"Blind Carbon Copy" = "Ukryte do wiadomości"; +"Blind Carbon Copy" = "Ukryte DW"; "New Addressbook..." = "Nowa książka adresowa"; "Subscribe to an Addressbook..." = "Subskrybuj książkę adresową"; diff --git a/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings b/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings index 825436cf4..4cccf3143 100644 --- a/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Por favor, selecione somente uma mensagem para imprimir."; "The message you have selected doesn't exist anymore." = "A mensagem que você selecionou não existe mais."; - "The folder with name \"%{0}\" could not be created." = "A pasta com o nome \"%{0}\" não pode ser criada."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "Não é possível enviar a mensagem. Os seguintes endereços estão inválidos:"; "cannot send message: (smtp) error when connecting" = "Não é possível enviar a mensagem: erro ao conectar ao servidor SMTP."; -"Name" = "Nome"; +/* Contacts list in mail editor */ "Email" = "Email"; +"Name" = "Nome"; diff --git a/UI/MailerUI/Czech.lproj/Localizable.strings b/UI/MailerUI/Czech.lproj/Localizable.strings index 7e55a6dd9..212baea30 100644 --- a/UI/MailerUI/Czech.lproj/Localizable.strings +++ b/UI/MailerUI/Czech.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Zvolte pouze jednu zprávu, kterou chcete tisknout."; "The message you have selected doesn't exist anymore." = "Zpráva, kterou jste zvolili, již neexistuje."; - "The folder with name \"%{0}\" could not be created." = "Složka s názvem \"%{0}\" nemohla být vytvořena."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "Zprávu nelze odeslat: následující adresy jsou neplatné:"; "cannot send message: (smtp) error when connecting" = "Zprávu nelze odeslat: při spojení se SMTP serverem došlo k chybě."; -"Name" = "Jméno"; +/* Contacts list in mail editor */ "Email" = "E-mail"; +"Name" = "Jméno"; diff --git a/UI/MailerUI/Dutch.lproj/Localizable.strings b/UI/MailerUI/Dutch.lproj/Localizable.strings index 9b18ae348..87f98b0b4 100644 --- a/UI/MailerUI/Dutch.lproj/Localizable.strings +++ b/UI/MailerUI/Dutch.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Selecteer een enkel bericht om af te drukken."; "The message you have selected doesn't exist anymore." = "Het bericht dat u selecteerde bestaat niet meer."; - "The folder with name \"%{0}\" could not be created." = "De map met naam \"%{0}\" kan niet gemaakt worden."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "Kan bericht niet sturen: de volgende adressen zijn ongeldig:"; "cannot send message: (smtp) error when connecting" = "Kan bericht niet sturen: fout bij verbinden met de SMTP server."; -"Name" = "Naam"; +/* Contacts list in mail editor */ "Email" = "E-mail"; +"Name" = "Naam"; diff --git a/UI/MailerUI/French.lproj/Localizable.strings b/UI/MailerUI/French.lproj/Localizable.strings index abe35598f..e761a1a08 100644 --- a/UI/MailerUI/French.lproj/Localizable.strings +++ b/UI/MailerUI/French.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Veuillez ne sélectionner qu'un seul message à imprimer."; "The message you have selected doesn't exist anymore." = "Le message que vous avez selectionné n'existe plus."; - "The folder with name \"%{0}\" could not be created." = "Le dossier intitulé \"%{0}\" n'a pas pu être créé."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "Le message n'a pas pu être envoyé car les adresses suivantes sont invalides :"; "cannot send message: (smtp) error when connecting" = "Le message n'a pas pu être envoyé: une erreur est survenue en tentant de rejoindre le serveur SMTP."; -"Name" = "Identité"; +/* Contacts list in mail editor */ "Email" = "Adresse électronique"; +"Name" = "Identité"; diff --git a/UI/MailerUI/German.lproj/Localizable.strings b/UI/MailerUI/German.lproj/Localizable.strings index c5bbc1a4a..18accabf7 100644 --- a/UI/MailerUI/German.lproj/Localizable.strings +++ b/UI/MailerUI/German.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Bitte wählen Sie nur eine Nachricht zum Drucken aus."; "The message you have selected doesn't exist anymore." = "Die gewählte Nachricht existiert nicht mehr."; - "The folder with name \"%{0}\" could not be created." = "Der Ordner mit dem Namen \"%{0}\" konnte nicht erzeugt werden."; "This folder could not be renamed to \"%{0}\"." @@ -283,7 +282,7 @@ = "Die Nachricht(en) können nicht in den Papierkorb verschoben werden. Wollen Sie diese endgültig löschen?"; /* Message editing */ -"error_missingsubject" = "Der Betreff fehlt"; +"error_missingsubject" = "Der Betreff fehlt. Sind Sie sicher, dass Sie dies so senden möchten?"; "error_missingrecipients" = "Der Empfänger fehlt"; "Send Anyway" = "Trotzdem versenden"; @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "Kann Nachricht nicht versenden: Die folgenden Addressen sind ungültig:"; "cannot send message: (smtp) error when connecting" = "Kann Nachricht nicht versenden: Fehler beim Verbinden mit dem SMTP-Server."; -"Name" = "Name"; +/* Contacts list in mail editor */ "Email" = "E-Mail"; +"Name" = "Name"; diff --git a/UI/MailerUI/Hungarian.lproj/Localizable.strings b/UI/MailerUI/Hungarian.lproj/Localizable.strings index 0211ad020..9bd0d51c4 100644 --- a/UI/MailerUI/Hungarian.lproj/Localizable.strings +++ b/UI/MailerUI/Hungarian.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Kérem csak egy üzenetet válasszon a nyomtatáshoz."; "The message you have selected doesn't exist anymore." = "A kijelölt üzenet már nem létezik."; - "The folder with name \"%{0}\" could not be created." = "\"%{0}\" néven nem hozható létre a mappa."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "Az üzenetet nem lehetett elküldeni: az alábbi címzettek érvénytelenek:"; "cannot send message: (smtp) error when connecting" = "Az üzenetet nem lehetett elküldeni: hiba az SMTP kiszolgálóhoz történő csatlakozáskor."; -"Name" = "Név"; +/* Contacts list in mail editor */ "Email" = "Email"; +"Name" = "Név"; diff --git a/UI/MailerUI/Polish.lproj/Localizable.strings b/UI/MailerUI/Polish.lproj/Localizable.strings index ea67784b8..973baee49 100644 --- a/UI/MailerUI/Polish.lproj/Localizable.strings +++ b/UI/MailerUI/Polish.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Zaznacz tylko jedną wiadomość do drukowania."; "The message you have selected doesn't exist anymore." = "Zaznaczona wiadomość już nie istnieje."; - "The folder with name \"%{0}\" could not be created." = "Nie można było utworzyć folderu o nazwie \"%{0}\"."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "Nie można wysłać wiadomości - poniźsi odbiorcy zostali odrzuceni:"; "cannot send message: (smtp) error when connecting" = "Nie można wysłać wiadomości - błąd połączenia z serwerem SMTP"; -"Name" = "Nazwa"; +/* Contacts list in mail editor */ "Email" = "E-mail"; +"Name" = "Nazwa"; diff --git a/UI/MailerUI/Russian.lproj/Localizable.strings b/UI/MailerUI/Russian.lproj/Localizable.strings index 52629d204..935200461 100644 --- a/UI/MailerUI/Russian.lproj/Localizable.strings +++ b/UI/MailerUI/Russian.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Пожалуйста выберите только одно сообщение для печати."; "The message you have selected doesn't exist anymore." = "Сообщение, которое вы выбрали, не существует больше."; - "The folder with name \"%{0}\" could not be created." = "Не могу создать папку с именем \"%{0}\"."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "Не удается отправить сообщение. Следующие адреса неверны:"; "cannot send message: (smtp) error when connecting" = "Не удается отправить сообщение: ошибка при соединении с сервером SMTP."; -"Name" = "ПолноеИмя"; +/* Contacts list in mail editor */ "Email" = "Email"; +"Name" = "ПолноеИмя"; diff --git a/UI/MailerUI/Slovak.lproj/Localizable.strings b/UI/MailerUI/Slovak.lproj/Localizable.strings index 44fc1bbd4..7bae452d5 100644 --- a/UI/MailerUI/Slovak.lproj/Localizable.strings +++ b/UI/MailerUI/Slovak.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Prosím vyberte iba jednu správu ktorú chcete tlačiť."; "The message you have selected doesn't exist anymore." = "Správa ktorú ste vybrali už neexistuje."; - "The folder with name \"%{0}\" could not be created." = "Priečinok s menom \"%{0}\" nemôže byť vytvorení."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "Správa sa nedá odoslať: Nasledujúci príjemcovia nemajú platnú adresu:"; "cannot send message: (smtp) error when connecting" = "Správa sa nedá odoslať: chyba pri pripájaní na SMTP server."; -"Name" = "Meno"; +/* Contacts list in mail editor */ "Email" = "Email"; +"Name" = "Meno"; diff --git a/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings b/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings index 9455bced7..f8e9c707a 100644 --- a/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings +++ b/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Para imprimir, seleccione sólo un mensaje."; "The message you have selected doesn't exist anymore." = "El mensaje seleccionado ya no existe."; - "The folder with name \"%{0}\" could not be created." = "La carpeta llamada \"%{0}\" no puede ser creada."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "No se puede enviar el mensaje: (smtp) destinatarios descartados:"; "cannot send message: (smtp) error when connecting" = "No se puede enviar el mensaje: (smtp) error de conexión"; -"Name" = "Nombre Completo"; +/* Contacts list in mail editor */ "Email" = "Correo"; +"Name" = "Nombre Completo"; diff --git a/UI/MailerUI/SpanishSpain.lproj/Localizable.strings b/UI/MailerUI/SpanishSpain.lproj/Localizable.strings index 0df416d9c..a70f71412 100644 --- a/UI/MailerUI/SpanishSpain.lproj/Localizable.strings +++ b/UI/MailerUI/SpanishSpain.lproj/Localizable.strings @@ -259,7 +259,6 @@ "Please select only one message to print." = "Para imprimir, seleccione sólo un mensaje."; "The message you have selected doesn't exist anymore." = "El mensaje seleccionado ya no existe."; - "The folder with name \"%{0}\" could not be created." = "La carpeta llamada \"%{0}\" no puede ser creada."; "This folder could not be renamed to \"%{0}\"." @@ -292,5 +291,6 @@ "cannot send message (smtp) - recipients discarded:" = "No se puede enviar el mensaje: (smtp) destinatarios descartados:"; "cannot send message: (smtp) error when connecting" = "No se puede enviar el mensaje: (smtp) error de conexión"; -"Name" = "Nombre Completo"; +/* Contacts list in mail editor */ "Email" = "Correo"; +"Name" = "Nombre Completo"; diff --git a/UI/Scheduler/BrazilianPortuguese.lproj/Localizable.strings b/UI/Scheduler/BrazilianPortuguese.lproj/Localizable.strings index 70e8115cd..4570f0b29 100644 --- a/UI/Scheduler/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/Scheduler/BrazilianPortuguese.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Tarefa Confidencial)"; "Web Calendar" = "Calendário Web"; "Reload on login" = "Recarregar no login"; "Invalid number." = "Número inválido."; +"Please identify yourself to %{0}" = "Por favor, identifique-se para %{0}"; diff --git a/UI/Scheduler/Czech.lproj/Localizable.strings b/UI/Scheduler/Czech.lproj/Localizable.strings index d931c361b..4a0d83b91 100644 --- a/UI/Scheduler/Czech.lproj/Localizable.strings +++ b/UI/Scheduler/Czech.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Důvěrný úkol)"; "Web Calendar" = "Vzdálený kalendář na webu"; "Reload on login" = "Aktualizovat při přihlášení"; "Invalid number." = "Invalid number."; +"Please identify yourself to %{0}" = "Identifikujte se na %{0}"; diff --git a/UI/Scheduler/Dutch.lproj/Localizable.strings b/UI/Scheduler/Dutch.lproj/Localizable.strings index 04d2f20fe..bfdaff361 100644 --- a/UI/Scheduler/Dutch.lproj/Localizable.strings +++ b/UI/Scheduler/Dutch.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Vertrouwelijke taak)"; "Web Calendar" = "Web Agenda"; "Reload on login" = "Herladen bij inloggen"; "Invalid number." = "Ongeldig nummer."; +"Please identify yourself to %{0}" = "Identificeer u alstublieft tegenover %{0}"; diff --git a/UI/Scheduler/Finnish.lproj/Localizable.strings b/UI/Scheduler/Finnish.lproj/Localizable.strings index c71440258..41c47154f 100644 --- a/UI/Scheduler/Finnish.lproj/Localizable.strings +++ b/UI/Scheduler/Finnish.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Luottamuksellinen tehtävä)"; "Web Calendar" = "Web kalenteri"; "Reload on login" = "Päivitä kirjauduttaessa"; "Invalid number." = "Virheellinen numero."; +"Please identify yourself to %{0}" = "Ole hyvä ja tunnistaudu kohteeseen %{0}"; diff --git a/UI/Scheduler/French.lproj/Localizable.strings b/UI/Scheduler/French.lproj/Localizable.strings index f6fcbe825..6414e1f80 100644 --- a/UI/Scheduler/French.lproj/Localizable.strings +++ b/UI/Scheduler/French.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Tâche confidentielle)"; "Web Calendar" = "Calendrier web"; "Reload on login" = "Rafraîchir à la connexion"; "Invalid number." = "Nombre invalide."; +"Please identify yourself to %{0}" = "Veuillez vous authentifier à %{0}"; diff --git a/UI/Scheduler/German.lproj/Localizable.strings b/UI/Scheduler/German.lproj/Localizable.strings index 5398716d2..4db805264 100644 --- a/UI/Scheduler/German.lproj/Localizable.strings +++ b/UI/Scheduler/German.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Vertrauliche Aufgabe)"; "Web Calendar" = "Webkalender"; "Reload on login" = "Neu laden beim Anmelden"; "Invalid number." = "Ungültige Nummer."; +"Please identify yourself to %{0}" = "Bitte identifizieren Sie sich gegenüber %{0}"; diff --git a/UI/Scheduler/Hungarian.lproj/Localizable.strings b/UI/Scheduler/Hungarian.lproj/Localizable.strings index 0aaf22a76..ac80ad6b5 100644 --- a/UI/Scheduler/Hungarian.lproj/Localizable.strings +++ b/UI/Scheduler/Hungarian.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Bizalmas feladat)"; "Web Calendar" = "Internetes naptár"; "Reload on login" = "Frissítés bejelentkezéskor"; "Invalid number." = "Érvénytelen szám"; +"Please identify yourself to %{0}" = "A %{0} kérésére adja meg azonosító adatait"; diff --git a/UI/Scheduler/Polish.lproj/Localizable.strings b/UI/Scheduler/Polish.lproj/Localizable.strings index e1af7dc11..3ebae4b95 100644 --- a/UI/Scheduler/Polish.lproj/Localizable.strings +++ b/UI/Scheduler/Polish.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Zadanie poufne)"; "Web Calendar" = "Kalendarz sieciowy"; "Reload on login" = "Przeładuj przy logowaniu"; "Invalid number." = "Błędna liczba."; +"Please identify yourself to %{0}" = "Zaloguj się w %{0}"; diff --git a/UI/Scheduler/Russian.lproj/Localizable.strings b/UI/Scheduler/Russian.lproj/Localizable.strings index fb59cd83f..a3375a778 100644 --- a/UI/Scheduler/Russian.lproj/Localizable.strings +++ b/UI/Scheduler/Russian.lproj/Localizable.strings @@ -380,6 +380,7 @@ validate_invalid_startdate = "Неверное дата начала!"; validate_invalid_enddate = "Неверная дата конца!"; validate_endbeforestart = "Дата начала позже даты конца"; +"Events" = "События"; "Tasks" = "Задачи"; "Show completed tasks" = "Показать выполненные задачи"; @@ -455,12 +456,16 @@ validate_endbeforestart = "Дата начала позже даты конц "End" = "Конец"; "Due Date" = "К дате"; "Location" = "Место"; + "(Private Event)" = "(Приватное событие)"; vevent_class0 = "(Публичное событие)"; vevent_class1 = "(Приватное событие)"; vevent_class2 = "(Конфиденциальное событие)"; +"Priority" = "Важность"; +"Category" = "Категория"; + vtodo_class0 = "(Публичное задание)"; vtodo_class1 = "(Приватное задание)"; vtodo_class2 = "(Конфиденциальное задание)"; @@ -488,6 +493,7 @@ vtodo_class2 = "(Конфиденциальное задание)"; "Show alarms" = "Показать сигналы"; "Show tasks" = "Показать задания"; +"Notifications" = "Напоминания"; "Receive a mail when I modify my calendar" = "Получать письмо в случае если я изменю свой календарь"; "Receive a mail when someone else modifies my calendar" = "Получать письмо если кто-то изменит мой календарь"; "When I modify my calendar, send a mail to:" = "Если я изменю свой календарь, отправить письмо на адрес: "; @@ -527,6 +533,4 @@ vtodo_class2 = "(Конфиденциальное задание)"; "Web Calendar" = "Web Calendar"; "Reload on login" = "Перезагружать при входе"; "Invalid number." = "Число неверно."; - -"Category" = "Категория"; -"Priority" = "Приоритет"; +"Please identify yourself to %{0}" = "Пожалуйста, представьте себя %{0}"; diff --git a/UI/Scheduler/Slovak.lproj/Localizable.strings b/UI/Scheduler/Slovak.lproj/Localizable.strings index a4d3501ec..e69e9b461 100644 --- a/UI/Scheduler/Slovak.lproj/Localizable.strings +++ b/UI/Scheduler/Slovak.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Dôverná úloha)"; "Web Calendar" = "Vzdialený kalendár na webe"; "Reload on login" = "Aktualizovať pri prihlásení"; "Invalid number." = "Neplatné číslo."; +"Please identify yourself to %{0}" = "Identifikujte sa na %{0}"; diff --git a/UI/Scheduler/SpanishArgentina.lproj/Localizable.strings b/UI/Scheduler/SpanishArgentina.lproj/Localizable.strings index 776c71ae6..8cd2657c9 100644 --- a/UI/Scheduler/SpanishArgentina.lproj/Localizable.strings +++ b/UI/Scheduler/SpanishArgentina.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Tarea confidencial)"; "Web Calendar" = "Calendario Web"; "Reload on login" = "Recargar al reconectar"; "Invalid number." = "Número invalido."; +"Please identify yourself to %{0}" = "Por favor autentíquese en %{0}"; diff --git a/UI/Scheduler/SpanishSpain.lproj/Localizable.strings b/UI/Scheduler/SpanishSpain.lproj/Localizable.strings index aa16c2d5f..a04ec37ee 100644 --- a/UI/Scheduler/SpanishSpain.lproj/Localizable.strings +++ b/UI/Scheduler/SpanishSpain.lproj/Localizable.strings @@ -533,3 +533,4 @@ vtodo_class2 = "(Tarea confidencial)"; "Web Calendar" = "Calendario Web"; "Reload on login" = "Recargar al reconectar"; "Invalid number." = "número invalido."; +"Please identify yourself to %{0}" = "Por favor, identificase con %{0}"; From 3739cb1536fcc8defaa0edb804fa5f5ffcaacf94 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 11 Apr 2013 12:55:11 -0400 Subject: [PATCH 77/77] Update ChangeLog --- ChangeLog | 936 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 936 insertions(+) diff --git a/ChangeLog b/ChangeLog index 578da8c9d..fb2384ae9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,912 @@ +commit 30f10ee8f06157b1222d68b0502c80162fcbb277 +Author: Francis Lachapelle +Date: Thu Apr 11 11:30:23 2013 -0400 + + Update translations + +M SoObjects/Appointments/Russian.lproj/Localizable.strings +M UI/Common/BrazilianPortuguese.lproj/Localizable.strings +M UI/Common/Russian.lproj/Localizable.strings +M UI/Contacts/Polish.lproj/Localizable.strings +M UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings +M UI/MailerUI/Czech.lproj/Localizable.strings +M UI/MailerUI/Dutch.lproj/Localizable.strings +M UI/MailerUI/French.lproj/Localizable.strings +M UI/MailerUI/German.lproj/Localizable.strings +M UI/MailerUI/Hungarian.lproj/Localizable.strings +M UI/MailerUI/Polish.lproj/Localizable.strings +M UI/MailerUI/Russian.lproj/Localizable.strings +M UI/MailerUI/Slovak.lproj/Localizable.strings +M UI/MailerUI/SpanishArgentina.lproj/Localizable.strings +M UI/MailerUI/SpanishSpain.lproj/Localizable.strings +M UI/Scheduler/BrazilianPortuguese.lproj/Localizable.strings +M UI/Scheduler/Czech.lproj/Localizable.strings +M UI/Scheduler/Dutch.lproj/Localizable.strings +M UI/Scheduler/Finnish.lproj/Localizable.strings +M UI/Scheduler/French.lproj/Localizable.strings +M UI/Scheduler/German.lproj/Localizable.strings +M UI/Scheduler/Hungarian.lproj/Localizable.strings +M UI/Scheduler/Polish.lproj/Localizable.strings +M UI/Scheduler/Russian.lproj/Localizable.strings +M UI/Scheduler/Slovak.lproj/Localizable.strings +M UI/Scheduler/SpanishArgentina.lproj/Localizable.strings +M UI/Scheduler/SpanishSpain.lproj/Localizable.strings + +commit dfb8788270ff3b30133417a52c9052fafea19ae2 +Author: Jean Raby +Date: Thu Apr 11 10:37:34 2013 -0400 + + don't build SAML support on debian yet + +M packaging/debian/control-squeeze +M packaging/debian/rules + +commit 3810833e1b5c1e02cdac731da15b68057e1176af +Author: Jean Raby +Date: Thu Apr 11 10:22:28 2013 -0400 + + remove unrtf leftovers + +M OpenChange/GNUmakefile +D OpenChange/GNUmakefile.unrtf +M packaging/debian-multiarch/rules +M packaging/debian/rules + +commit 29e05c7c81b1a92d4b6bbc9be96d40f8ae3f2482 +Author: Francis Lachapelle +Date: Thu Apr 11 10:20:10 2013 -0400 + + Bump version to 2.0.5 + +M Documentation/SOGo Installation Guide.odt +M Documentation/SOGo Mobile Devices Configuration.odt +M Documentation/SOGo Mozilla Thunderbird Configuration.odt +M Documentation/SOGo Native Microsoft Outlook Configuration.odt +M NEWS +M Version + +commit 0a08285facce833fecba8319c4f0b2bdf641746e +Author: Jean Raby +Date: Thu Apr 11 10:09:02 2013 -0400 + + Add note regarding precedence of .GNUstepDefaults + +M Scripts/sogo.conf + +commit 01f20a42ad55356c772ca2a4a758d5421e986987 +Author: Jean Raby +Date: Thu Apr 11 09:18:43 2013 -0400 + + packaging fixups + +M packaging/debian/sogo.postinst +M packaging/rhel/sogo.spec + +commit 3a61a2566bf2c6e95b665f2474350c8e1c59328b +Author: Francis Lachapelle +Date: Wed Apr 10 18:24:03 2013 -0400 + + Updated installation guide: version 2.0.5 + +M Documentation/SOGo Installation Guide.odt + +commit d2dda86529b3fe6a1d383522640f4898c00b5f25 +Author: Jean Raby +Date: Wed Apr 10 16:30:16 2013 -0400 + + ... dir fixup again + +M packaging/debian-multiarch/sogo.postinst + +commit cc125d2192a8b1fb84c7d239c708735d18c33772 +Author: Jean Raby +Date: Wed Apr 10 16:27:03 2013 -0400 + + directory fixup + +M packaging/debian-multiarch/rules +M packaging/debian/rules + +commit 4da1e41d936fb0fc3bc24be5a104f0c4339fcd68 +Author: Jean Raby +Date: Wed Apr 10 16:20:47 2013 -0400 + + deb: install a sample sogo.conf in /etc/sogo + + While there, replace mkdir + cp combo with 'install' + +M packaging/debian-multiarch/rules +M packaging/debian-multiarch/sogo.install +M packaging/debian-multiarch/sogo.postinst +M packaging/debian-multiarch/sogo.preinst +M packaging/debian/rules +M packaging/debian/sogo.install +M packaging/debian/sogo.postinst +M packaging/debian/sogo.preinst + +commit e24eb10c4fa9ce6b53021ef04a23254ad7fb7cab +Author: Jean Raby +Date: Wed Apr 10 16:20:16 2013 -0400 + + rpm: install a sample sogo.conf in /etc/sogo + +M packaging/rhel/sogo.spec + +commit dd9e51fd16822ac453b944b7e9a7efc3cd9caefa +Author: Jean Raby +Date: Wed Apr 10 16:16:30 2013 -0400 + + sogo.conf - new example configuration file + +A Scripts/sogo.conf + +commit 9932d1413b23a50bfb0665af24acb17b59f5f55f +Author: Jean Raby +Date: Wed Apr 10 12:29:48 2013 -0400 + + update NEWS + +M NEWS + +commit ff13c4954032566676b42a4cebd857de5644632a +Author: Jean Raby +Date: Wed Apr 10 12:16:26 2013 -0400 + + updated NEWS + +M NEWS + +commit 1e33b4bf269d660c77fbc891adb4776a83d0b601 +Author: Jean Raby +Date: Wed Apr 10 12:05:44 2013 -0400 + + Add notes regarding UIDField: value must be unique + +M Documentation/SOGo Installation Guide.odt + +commit e23a7df125cd081c078f0baf5fd63acbe8b5f21a +Author: Francis Lachapelle +Date: Wed Apr 10 11:33:41 2013 -0400 + + Update NEWS file + +M NEWS + +commit 4ca476db9e8a81b412a0b15525eeeaa76a78237a +Author: Ludovic Marcotte +Date: Wed Apr 10 11:30:40 2013 -0400 + + Updated NEWS file + +M NEWS + +commit 33840c71cd38a22766f3e0463a17361e6fea8292 +Author: Ludovic Marcotte +Date: Wed Apr 10 10:48:25 2013 -0400 + + Changed noop by unselect/select. + +M OpenChange/MAPIStoreMailVolatileMessage.m + +commit 1b983ef691f55e3588cc9afcb9ba841ca472d3d7 +Author: Ludovic Marcotte +Date: Wed Apr 10 09:56:23 2013 -0400 + + Fixed a potential timing issue with Dovecot when getting the modseq + +M OpenChange/MAPIStoreMailVolatileMessage.m + +commit eec8c07d4f061a2006bd7ec9967a2b1c92e7618b +Author: Ludovic Marcotte +Date: Tue Apr 9 11:35:53 2013 -0400 + + Avoid appending the domain if already present. + +M SoObjects/SOGo/SOGoWebAuthenticator.m + +commit 84ba93fc0a5c5a650482d1afdee6f93fdd9ea277 +Author: Ludovic Marcotte +Date: Mon Apr 8 13:58:55 2013 -0400 + + Now set ForceAuthn to false by default + +M SoObjects/SOGo/SOGoSAML2Session.m + +commit 37a6f8265978b2a2ec019527b16b68ed10051cf3 +Author: Francis Lachapelle +Date: Mon Apr 8 11:05:45 2013 -0400 + + Initial Arabic translation + +M .tx/config +A SoObjects/Appointments/Arabic.lproj/Localizable.strings +M SoObjects/Appointments/GNUmakefile +A SoObjects/Contacts/Arabic.lproj/Localizable.strings +M SoObjects/Contacts/GNUmakefile +M SoObjects/Mailer/GNUmakefile +A SoObjects/Mailer/SOGoMailArabicForward.wo/SOGoMailArabicForward.html +A SoObjects/Mailer/SOGoMailArabicForward.wo/SOGoMailArabicForward.wod +A SoObjects/Mailer/SOGoMailArabicReply.wo/SOGoMailArabicReply.html +A SoObjects/Mailer/SOGoMailArabicReply.wo/SOGoMailArabicReply.wod +M SoObjects/Mailer/SOGoMailForward.h +M SoObjects/Mailer/SOGoMailForward.m +M SoObjects/Mailer/SOGoMailReply.h +M SoObjects/Mailer/SOGoMailReply.m +M SoObjects/SOGo/SOGoDefaults.plist +M Tests/Integration/preferences.py +A UI/AdministrationUI/Arabic.lproj/Localizable.strings +M UI/AdministrationUI/GNUmakefile +A UI/Common/Arabic.lproj/Localizable.strings +M UI/Common/GNUmakefile +A UI/Contacts/Arabic.lproj/Localizable.strings +M UI/Contacts/GNUmakefile +A UI/MailPartViewers/Arabic.lproj/Localizable.strings +M UI/MailPartViewers/GNUmakefile +A UI/MailerUI/Arabic.lproj/Localizable.strings +M UI/MailerUI/GNUmakefile +A UI/MainUI/Arabic.lproj/Locale +A UI/MainUI/Arabic.lproj/Localizable.strings +M UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings +M UI/MainUI/Catalan.lproj/Localizable.strings +M UI/MainUI/Czech.lproj/Localizable.strings +M UI/MainUI/Danish.lproj/Localizable.strings +M UI/MainUI/Dutch.lproj/Localizable.strings +M UI/MainUI/English.lproj/Localizable.strings +M UI/MainUI/Finnish.lproj/Localizable.strings +M UI/MainUI/French.lproj/Localizable.strings +M UI/MainUI/GNUmakefile +M UI/MainUI/German.lproj/Localizable.strings +M UI/MainUI/Hungarian.lproj/Localizable.strings +M UI/MainUI/Icelandic.lproj/Localizable.strings +M UI/MainUI/Italian.lproj/Localizable.strings +M UI/MainUI/NorwegianBokmal.lproj/Localizable.strings +M UI/MainUI/NorwegianNynorsk.lproj/Localizable.strings +M UI/MainUI/Polish.lproj/Localizable.strings +M UI/MainUI/Russian.lproj/Localizable.strings +M UI/MainUI/SpanishArgentina.lproj/Localizable.strings +M UI/MainUI/SpanishSpain.lproj/Localizable.strings +M UI/MainUI/Swedish.lproj/Localizable.strings +M UI/MainUI/Ukrainian.lproj/Localizable.strings +M UI/MainUI/Welsh.lproj/Localizable.strings +A UI/PreferencesUI/Arabic.lproj/Localizable.strings +M UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings +M UI/PreferencesUI/Catalan.lproj/Localizable.strings +M UI/PreferencesUI/Czech.lproj/Localizable.strings +M UI/PreferencesUI/Danish.lproj/Localizable.strings +M UI/PreferencesUI/Dutch.lproj/Localizable.strings +M UI/PreferencesUI/English.lproj/Localizable.strings +M UI/PreferencesUI/Finnish.lproj/Localizable.strings +M UI/PreferencesUI/French.lproj/Localizable.strings +M UI/PreferencesUI/GNUmakefile +M UI/PreferencesUI/German.lproj/Localizable.strings +M UI/PreferencesUI/Hungarian.lproj/Localizable.strings +M UI/PreferencesUI/Icelandic.lproj/Localizable.strings +M UI/PreferencesUI/Italian.lproj/Localizable.strings +M UI/PreferencesUI/NorwegianBokmal.lproj/Localizable.strings +M UI/PreferencesUI/NorwegianNynorsk.lproj/Localizable.strings +M UI/PreferencesUI/Polish.lproj/Localizable.strings +M UI/PreferencesUI/Russian.lproj/Localizable.strings +M UI/PreferencesUI/Slovak.lproj/Localizable.strings +M UI/PreferencesUI/SpanishArgentina.lproj/Localizable.strings +M UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings +M UI/PreferencesUI/Swedish.lproj/Localizable.strings +M UI/PreferencesUI/Ukrainian.lproj/Localizable.strings +M UI/PreferencesUI/Welsh.lproj/Localizable.strings +A UI/Scheduler/Arabic.lproj/Localizable.strings +M UI/Scheduler/GNUmakefile +A UI/Templates/SOGoACLArabicAdditionAdvisory.wox +A UI/Templates/SOGoACLArabicModificationAdvisory.wox +A UI/Templates/SOGoACLArabicRemovalAdvisory.wox +A UI/Templates/SOGoFolderArabicAdditionAdvisory.wox +A UI/Templates/SOGoFolderArabicRemovalAdvisory.wox + +commit b4aaa68d85edbaee9f555efef3f82f64598c050f +Author: Ludovic Marcotte +Date: Fri Apr 5 10:26:17 2013 -0400 + + Also consider the "mail" attribute in order to get the user's login + +M SoObjects/SOGo/SOGoSAML2Session.m + +commit 5487f34b9ee9b9639e3f1d4a7abf4fad2d240d66 +Author: Ludovic Marcotte +Date: Fri Apr 5 08:57:47 2013 -0400 + + Disable hint verification for now. + +M SoObjects/SOGo/SOGoSAML2Session.m + +commit e07734fa5f57325a92ea70bcb4410b73340aa026 +Author: Jean Raby +Date: Fri Mar 29 10:38:52 2013 -0400 + + Filter sql source entries based on the user domain + + When using dynamic domains with SQL sources (DomainFieldName), + let WebUI and dav lookups return entries from current domain + and other domains visible from the originating domain. + + Fixes #2269 + + SQLSource.m: _visibleDomainsQualifierFromDomain: + returns a EOQualifier OR'ing all visible domains from specified domain + (including specified domain) + + SQLSource.m: allEntryIDsVisibleFromDomain + Replacement for allEntryIDs. + Instead of returning all entries from the sql source, + only return the entries visible from the specified domain. + + SoObjects/SOGo/SQLSource.m: allEntryIDs + Changed to call allEntryIDsVisibleFromDomain with an empty domain. + + SQLSource.m fetchContactsMatching:inDomain: + Use _visibleDomainsQualifierFromDomain to filter entries + + LDAPSource.m: allEntryIDsVisibleFromDomain + Simply call allEntryIDs, discarding the domain. + LDAP does need to do the extra domain filtering + + SOGoContactSourceFolder.m: toOneRelationshipKeys + Call new method: allEntryIDsVisibleFromDomain + +M SoObjects/Contacts/SOGoContactSourceFolder.m +M SoObjects/SOGo/LDAPSource.m +M SoObjects/SOGo/SOGoSource.h +M SoObjects/SOGo/SQLSource.m + +commit 6a8e6cd762c51514224eb3cf24ae08c8a2a08d23 +Author: Ludovic Marcotte +Date: Thu Mar 28 08:32:00 2013 -0400 + + Fixed the GNUmakfile and const's for charset tables. + +M OpenChange/GNUmakefile +M OpenChange/RTFHandler.m + +commit 663351029ac49e1c9802e07d1c874a872f147ca3 +Author: Ludovic Marcotte +Date: Tue Mar 26 19:32:08 2013 -0400 + + Replaced unrtf by our own RTF to HTML converter. + + Faster, thread safe, a hell lot cleaner. + +M OpenChange/GNUmakefile +M OpenChange/MAPIStoreMessage.m +A OpenChange/RTFHandler.h +A OpenChange/RTFHandler.m +D OpenChange/unrtf-0.21.2.diff +D OpenChange/unrtf-0.21.2.tar.gz +D OpenChange/unrtf_config_h + +commit c26e5fa7fed83bae25529679fead923e8a8fe1f2 +Author: Jean Raby +Date: Tue Mar 26 14:01:04 2013 -0400 + + semi-colon + +M OpenChange/gen-charset-table.py + +commit 74c01dc44841c696ed322c9b0bff542e7f2b4115 +Author: Jean Raby +Date: Tue Mar 26 13:42:22 2013 -0400 + + gen-charset-table.py: script to import ms charmaps + + For example: http://msdn.microsoft.com/en-us/goglobal/cc305147 + +A OpenChange/gen-charset-table.py + +commit a009c71034826e3755a987a0f5730724dfc9f063 +Author: Ludovic Marcotte +Date: Mon Mar 25 15:58:36 2013 -0400 + + Fixed table initialization. + +M SoObjects/SOGo/SOGoSAML2Session.m + +commit b4ebc90dd0b452dfe134efc137de2f62b8ece59e +Author: Jean Raby +Date: Mon Mar 25 14:12:12 2013 -0400 + + replace subprocess.check_output with Popen magic + + check_output isn't available in py 2.6... + +M Scripts/openchange_cleanup.py + +commit 95dc134ca618a47be6e2eafca71e6c7f9c9cbccc +Author: Jean Raby +Date: Fri Mar 22 15:13:39 2013 -0400 + + Revamped openchange_cleanup.py + + This is now usable again. + + - Don't delete password files in mapistoreCleanup() + - reworked the ldb cleanup and enabled it + - sql cleanup should now be able to figure out the db info from the config + regardless of the format used (xml, plist, sogo.conf or GNUstepDefaults) + (We really need a python plist parser.. the current solution is not elegant) + - Inform user of missing python packages + +M Scripts/openchange_cleanup.py + +commit 9c4b7d848141166eb9742e080831b017d660ec78 +Author: Jean Raby +Date: Thu Mar 21 15:39:02 2013 -0400 + + Add notes regarding html mails and mod_reqtimeout + +M Documentation/SOGo Native Microsoft Outlook Configuration.odt + +commit 9fb9f2cae667aa966e285216846a6b688418f753 +Author: Jean Raby +Date: Wed Mar 20 11:51:37 2013 -0400 + + Enable saml2 support on squeeze (temporary fix) + +M packaging/debian/control-squeeze +M packaging/debian/rules + +commit 15f9b7d22e6a5937224570b580dee31e391789dd +Author: Francis Lachapelle +Date: Fri Mar 15 11:23:27 2013 -0400 + + Fix comments in UIxContactFolderActions.* + +M UI/Contacts/UIxContactFolderActions.h +M UI/Contacts/UIxContactFolderActions.m + +commit 5f179ed6b0726504bbe7f300df3a8cbaa5d3c9a6 +Author: Francis Lachapelle +Date: Fri Mar 15 11:06:26 2013 -0400 + + Activate the menu option "Mark Folder Read" + + Fixes #1473 + +M NEWS +M UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings +M UI/MailerUI/Catalan.lproj/Localizable.strings +M UI/MailerUI/Czech.lproj/Localizable.strings +M UI/MailerUI/Danish.lproj/Localizable.strings +M UI/MailerUI/Dutch.lproj/Localizable.strings +M UI/MailerUI/English.lproj/Localizable.strings +M UI/MailerUI/Finnish.lproj/Localizable.strings +M UI/MailerUI/French.lproj/Localizable.strings +M UI/MailerUI/German.lproj/Localizable.strings +M UI/MailerUI/Hungarian.lproj/Localizable.strings +M UI/MailerUI/Icelandic.lproj/Localizable.strings +M UI/MailerUI/Italian.lproj/Localizable.strings +M UI/MailerUI/NorwegianBokmal.lproj/Localizable.strings +M UI/MailerUI/NorwegianNynorsk.lproj/Localizable.strings +M UI/MailerUI/Polish.lproj/Localizable.strings +M UI/MailerUI/Russian.lproj/Localizable.strings +M UI/MailerUI/Slovak.lproj/Localizable.strings +M UI/MailerUI/SpanishArgentina.lproj/Localizable.strings +M UI/MailerUI/SpanishSpain.lproj/Localizable.strings +M UI/MailerUI/Swedish.lproj/Localizable.strings +M UI/MailerUI/UIxMailFolderActions.m +M UI/MailerUI/Ukrainian.lproj/Localizable.strings +M UI/MailerUI/Welsh.lproj/Localizable.strings +M UI/MailerUI/product.plist +M UI/Templates/MailerUI/UIxMailMainFrame.wox +M UI/WebServerResources/MailerUI.js + +commit 93f9a7273e96970106259e4902cf378a425d1322 +Author: Ludovic Marcotte +Date: Wed Mar 13 15:04:11 2013 -0400 + + Now handle mem context when saving messages and removed useless debugging. + +M OpenChange/EOQualifier+MAPI.m +M OpenChange/MAPIStoreCalendarEmbeddedMessage.m +M OpenChange/MAPIStoreCalendarFolder.m +M OpenChange/MAPIStoreCalendarMessage.m +M OpenChange/MAPIStoreContext.m +M OpenChange/MAPIStoreDBFolder.m +M OpenChange/MAPIStoreDBMessage.m +M OpenChange/MAPIStoreDBMessageTable.m +M OpenChange/MAPIStoreEmbeddedMessage.m +M OpenChange/MAPIStoreFAIMessage.m +M OpenChange/MAPIStoreFolder.m +M OpenChange/MAPIStoreGCSMessageTable.m +M OpenChange/MAPIStoreMailFolder.m +M OpenChange/MAPIStoreMailMessage.m +M OpenChange/MAPIStoreMailMessageTable.m +M OpenChange/MAPIStoreMailVolatileMessage.m +M OpenChange/MAPIStoreMessage.h +M OpenChange/MAPIStoreMessage.m +M OpenChange/MAPIStoreSOGo.m +M OpenChange/MAPIStoreTable.m +M OpenChange/MAPIStoreTypes.m +M OpenChange/NSObject+MAPIStore.m +M OpenChange/SOGoMAPIDBObject.m +M OpenChange/iCalEvent+MAPIStore.h +M OpenChange/iCalEvent+MAPIStore.m + +commit 15e082896ce62665ca7b655521a1b43505fd9401 +Author: Jean Raby +Date: Tue Mar 12 09:08:19 2013 -0400 + + Update sogo-tool expire-autoreply syntax in cron + +M Scripts/sogo.cron + +commit 63ff9751d78d271aba7a1148cf8c1f98003fa543 +Author: Jean Raby +Date: Mon Mar 11 11:37:59 2013 -0400 + + Add ics_compare and use it in _testRespondTo() + + This new class uses vobject.ics_diff() to compare 2 VCALENDAR components. + We should use this instead of textually comparing events for equality + in future tests. + +M Tests/Integration/test-davacl.py +M Tests/Integration/utilities.py + +commit d12c651d59cb6891ce21e21aa8d56f349c75cc2d +Author: Francis Lachapelle +Date: Mon Mar 11 09:34:36 2013 -0400 + + New system default SOGoEncryptionKey + + To be used to encrypt the passwords of remote Web calendars when + SOGoTrustProxyAuthentication is enabled. + +M NEWS +M SoObjects/Appointments/SOGoWebAppointmentFolder.m +M SoObjects/SOGo/SOGoDefaults.plist +M SoObjects/SOGo/SOGoSystemDefaults.h +M SoObjects/SOGo/SOGoSystemDefaults.m + +commit 41a6c02aa31b5bfb3b9ec0337eb31d22ef1d7e8e +Author: Jean Raby +Date: Fri Mar 8 16:20:27 2013 -0500 + + Rework web services section + + State that HTTPS is mandatory for autodiscovery services. + Add example named config for SRV record. + +M Documentation/SOGo Native Microsoft Outlook Configuration.odt + +commit a026e75c0e383db73c4096e23bb0370380e914be +Author: Jean Raby +Date: Fri Mar 8 15:57:10 2013 -0500 + + Removed note about linefeed in password files + + This is handled by the code now + +M Documentation/SOGo Native Microsoft Outlook Configuration.odt + +commit 46815042c94dc79cbf93aafeaae91e382be79c1c +Author: Ludovic Marcotte +Date: Thu Mar 7 09:29:56 2013 -0500 + + Fixed bug when modifying/deleting exceptions of recurring events. + +M SoObjects/Appointments/SOGoAppointmentObject.m + +commit c79af52b67cdfe76d250e5607e2243b446df26a8 +Author: Jean Raby +Date: Wed Mar 6 11:03:19 2013 -0500 + + Fix BSONCodec.m includes + + include objc.h instead of runtime.h so that it works on older gcc objc runtime + +M OpenChange/BSONCodec.m + +commit e882dedac9e25320c2190fbce0654697e19586ec +Author: Jean Raby +Date: Tue Mar 5 11:01:51 2013 -0500 + + Update News + +M NEWS +M Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh + +commit 13277bbdb955a18200b26919c14171e7f391bc65 +Author: Jean Raby +Date: Tue Mar 5 10:47:09 2013 -0500 + + c_content TEXT to LONGTEXT for OpenChange tables + + Add an script to update existing tables. + Note that if a row already have 65535 char in it, + the data is most likely broken. + +M OpenChange/GCSSpecialQueries+OpenChange.m +A Scripts/sql-update-2.0.4b_to_2.0.5-mysql.sh + +commit 7e8a83aefb5bd1e89225dd2bd6be847bcbb39470 +Author: Francis Lachapelle +Date: Tue Mar 5 10:22:20 2013 -0500 + + Fix Slovak templates for mail reply/forward + +M SoObjects/Mailer/GNUmakefile +M SoObjects/Mailer/SOGoMailForward.h +M SoObjects/Mailer/SOGoMailForward.m +M SoObjects/Mailer/SOGoMailReply.h +M SoObjects/Mailer/SOGoMailReply.m + +commit f1846191d5d47717e7c5dff710e265e21c8f0fe2 +Author: Jean Raby +Date: Fri Mar 1 16:24:16 2013 -0500 + + Use an autorelease pool in member expansion + + Otherwise, we would hold one ldap connection for each member of a group. + And close them all later. With large groups, we could hit the open file limit + (or the open file limit of the ldap server). + + Fixes #2256 + +M SoObjects/SOGo/SOGoGroup.m + +commit a7c3f33447a3e0c6902913013574052763c36eaa +Author: Jean Raby +Date: Fri Mar 1 01:26:15 2013 -0500 + + Whitespace + +M SoObjects/SOGo/SOGoGroup.m + +commit 89766b2e7e037be88d1460520c762c77d66f302e +Author: Ludovic Marcotte +Date: Wed Feb 20 12:10:34 2013 -0500 + + Temporary fix for unsigned long long values. + +M OpenChange/BSONCodec.m + +commit 7d65d808f6ff80a2a5bac2a8c55ad218ba44aaa6 +Author: Jean Raby +Date: Wed Feb 20 10:50:58 2013 -0500 + + Strip newline characters from user password files + + Makes it easier to create those files with a regular editor. + +M OpenChange/MAPIStoreUserContext.m + +commit fa5e99d58dd9a70602e47481bd02e70c76e2727f +Author: Ludovic Marcotte +Date: Tue Feb 19 15:54:52 2013 -0500 + + Much better fix over previous commit. + +M OpenChange/BSONCodec.m +M OpenChange/NSString+MAPIStore.m + +commit 67c2d508ea2d0b6007d110d67383c7030711e0b9 +Author: Ludovic Marcotte +Date: Tue Feb 19 15:42:05 2013 -0500 + + Added rationale around previous commit. + +M OpenChange/NSString+MAPIStore.m + +commit 19923d10dbcba8598f4b2ed3aec86b2fe508a68f +Author: Ludovic Marcotte +Date: Tue Feb 19 15:30:29 2013 -0500 + + Also handle date-strings as date objects. + Dates are stored as string in BSON - might change in the future. + +M OpenChange/NSString+MAPIStore.m + +commit e57b6835e63f4a888edfdee4c382a6c9c1d6c872 +Author: Ludovic Marcotte +Date: Mon Feb 18 16:50:54 2013 -0500 + + Fix for objective-c runtimes. + +M OpenChange/BSONCodec.m + +commit bcab7e7dc9eb664ece3f4bf9301e5c2acd8036b1 +Author: Ludovic Marcotte +Date: Mon Feb 18 16:42:59 2013 -0500 + + C99 style fixes. + +M OpenChange/BSONCodec.m + +commit 2572eedd8988f8a3d3e3d819c27ad070aa250c0b +Author: Ludovic Marcotte +Date: Mon Feb 18 16:28:06 2013 -0500 + + Added BSON encoder/decoder for Outlook cache files. + +A OpenChange/BSONCodec.h +A OpenChange/BSONCodec.m +M OpenChange/GNUmakefile +M OpenChange/MAPIStoreTypes.h +M OpenChange/NSObject+PropertyList.m +M OpenChange/SOGoMAPIDBObject.m + +commit efb45bfba69ca5dac10f9de5cb59f353e2bd0a34 +Author: Francis Lachapelle +Date: Fri Feb 15 15:17:08 2013 -0500 + + Fix issue with exceptions in repeating events + + Fixed the display of an exception when its recurrence id is outside the + current view. + +M NEWS +M SoObjects/Appointments/SOGoAppointmentFolder.m + +commit 4f38b5cf3f3118784125b495167923a9027d243a +Author: Ludovic Marcotte +Date: Thu Feb 14 15:59:19 2013 -0500 + + Alse use hex-formatted keys for deleted mails. + +M OpenChange/MAPIStoreMailFolder.m + +commit 71b9772546b83df5bd671ad46a9d10155da596af +Author: Ludovic Marcotte +Date: Thu Feb 14 15:22:48 2013 -0500 + + Ensure we hit the cache with hex-formatted keys. + +M OpenChange/MAPIStoreMailMessageTable.m +M OpenChange/MAPIStoreSOGo.m + +commit c13c389ae5f55b89f78db4f114e7fb413eb1e201 +Author: Francis Lachapelle +Date: Tue Feb 12 08:42:47 2013 -0500 + + Update Danish translation + +M SoObjects/Appointments/Danish.lproj/Localizable.strings +M UI/Common/Danish.lproj/Localizable.strings +M UI/Contacts/Danish.lproj/Localizable.strings +M UI/MailerUI/Danish.lproj/Localizable.strings +M UI/PreferencesUI/Danish.lproj/Localizable.strings +M UI/Scheduler/Danish.lproj/Localizable.strings + +commit caf6f0ec6cdc0a43a7026036b26b54ab944ceafc +Author: Jean Raby +Date: Mon Feb 11 10:41:50 2013 -0500 + + Add example apache configuration for apple AB + +A Apache/SOGo-apple-ab.conf +M packaging/debian-multiarch/sogo.docs +M packaging/debian/sogo.docs +M packaging/rhel/sogo.spec + +commit 4952ff7914dd0f3aa5c9c2bf5e04e29bf4317836 +Author: Jean Raby +Date: Fri Feb 8 16:22:14 2013 -0500 + + Use SOGoSystemDefaults in all tools + + sogo-ealarms-notify and sogo-slapd-sockd will now be able to use sogo.conf + Fixes #2226 + +M Tools/sogo-ealarms-notify.m +M Tools/sogo-slapd-sockd.m + +commit 8981dcd64503f1fa907e98593a76b6bff9cbb02d +Author: Francis Lachapelle +Date: Fri Feb 8 09:42:31 2013 -0500 + + Fix segfault in SOGoSieveManager.m + +M SoObjects/SOGo/SOGoSieveManager.m + +commit 470a53a548c46af72d8956475fdacba045458d10 +Author: Jean Raby +Date: Thu Feb 7 13:00:27 2013 -0500 + + Add example configuration for fail2ban + + From Arnd Brandes. (#2229) + +A Scripts/fail2ban/sogo-filter.conf +A Scripts/fail2ban/sogo-jail.local + +commit 7b65b7400e269bdc8d020d29bd8cf0b33aea09e1 +Author: Francis Lachapelle +Date: Thu Feb 7 09:00:16 2013 -0500 + + Update Finnish translation + +M UI/MailerUI/Finnish.lproj/Localizable.strings + +commit 90c61abdb654e00ad172ab88cc75059c3d45bd6d +Author: Francis Lachapelle +Date: Wed Feb 6 15:16:09 2013 -0500 + + Update Polish translation + +M SoObjects/Mailer/SOGoMailPolishReply.wo/SOGoMailPolishReply.html + +commit f8387b90ffd3f016f4a4de88577b1280a84aefc8 +Author: Jean Raby +Date: Wed Feb 6 09:23:47 2013 -0500 + + Log x-webobjects-remote-host in login process + + Most of the time, the remote-host will contain data from the x-forwarded-for header. + Which could have more than one ip in it if the request went through multiple proxies. + eg. x-forwarded-for: real.client.ip, load.balancer.ip + +M UI/MainUI/SOGoRootPage.m + +commit feb02c54b918154919c224e257b79765c0770649 +Author: Francis Lachapelle +Date: Tue Feb 5 16:13:18 2013 -0500 + + Add missing localizable string + +M UI/Scheduler/English.lproj/Localizable.strings +M UI/WebServerResources/SchedulerUI.js + +commit 49a22994148d25d0f22464f5de69d45112475c95 +Author: Ludovic Marcotte +Date: Tue Feb 5 16:11:37 2013 -0500 + + Avoid going out of bounds for special URL chars ending mail contents. + +M SoObjects/SOGo/NSString+Utilities.m + +commit 43044bf88fdbfe630572ad89a32ef9b2f155ea6d +Author: Jean Raby +Date: Tue Feb 5 15:09:55 2013 -0500 + + Plug sieve connection leak + + Fixes #2228 + Fix from 'bofhus' + +M SoObjects/SOGo/SOGoSieveManager.m + +commit 0532d331a3497d97b91d59fdf3670dc4a21e8b0a +Author: Jean Raby +Date: Tue Feb 5 15:09:20 2013 -0500 + + whitespace (tabkill) + +M SoObjects/SOGo/SOGoSieveManager.m + +commit 70fc05091f2f3cdbac1c66291a940a8223e46876 +Author: Jean Raby +Date: Tue Feb 5 14:27:16 2013 -0500 + + Remove x-webobjects-remote-host from apache conf + + SOPE now handles this on its own by setting x-webobjects-remote-host + to the content of the x-forward or x-forwarded-for headers if it wasn't defined + +M Apache/SOGo.conf +M NEWS + +commit 469e5c647e74a53fc03d22c35b6da22fcbf1922d +Author: Jean Raby +Date: Tue Feb 5 11:52:26 2013 -0500 + + Updated NEWS + +M NEWS + +commit 3daa7e55b74890a1c03a37290826759f5d0ec05a +Author: Francis Lachapelle +Date: Mon Feb 4 14:24:03 2013 -0500 + + Update ChangeLog + +M ChangeLog + commit 6913502810ec21479889c4ecf0a393de5ede2635 Author: Francis Lachapelle Date: Mon Feb 4 14:22:37 2013 -0500 @@ -77,6 +986,33 @@ Date: Sun Feb 3 20:40:06 2013 -0500 M UI/WebServerResources/UIxPreferences.js +commit 7b5da8a2c9a30d36969fa6aa09b8e168f3e6e243 +Author: Jean Raby +Date: Fri Feb 1 19:58:25 2013 -0500 + + don't use cache for login page + +M UI/MainUI/SOGoRootPage.m + +commit 451c82c8154b4e2bd4fb4cee5bded7109a1e1942 +Author: Jean Raby +Date: Fri Feb 1 18:35:10 2013 -0500 + + Don't use user/password cache from the login page + + The idea is to always use memcached for credentials to avoid hitting + the authentication backend on every click but to check with the auth backend + for every login requests. + + This should fix #2169 + + While there, fix whitespace (killtab) + +M SoObjects/SOGo/SOGoUserManager.h +M SoObjects/SOGo/SOGoUserManager.m +M SoObjects/SOGo/SOGoWebAuthenticator.h +M SoObjects/SOGo/SOGoWebAuthenticator.m + commit a4bd966cc0c3429261747384dc746ec5f71423de Author: Jean Raby Date: Fri Feb 1 16:26:01 2013 -0500