From ba74b80963b5c0a67a31c012aabc03f487379404 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 13 Oct 2011 01:27:57 +0000 Subject: [PATCH] See ChangeLog. Monotone-Parent: 857772ec1aaf974c6de49756782191a9e65a3ee0 Monotone-Revision: dbc2fb47336e631355604e1c4273613997a2bb90 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2011-10-13T01:27:57 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 8 ++++++ Tools/SOGoToolUserPreferences.m | 48 ++++++++++++++++++++++++++------- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index df4e3f35d..851ae19f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2011-10-13 Francis Lachapelle + + * Tools/SOGoToolUserPreferences.m (-run): added possibility to + specify a file (-f filename) when setting a user + default/setting. Removed the constraint of specifying + administrative credentials of the SIeve server when not setting a + parameter related to Sieve. + 2011-10-09 Wolfgang Sourdeau * OpenChange/MAPIStoreMailFolder.m (-synchroniseCache): improved diff --git a/Tools/SOGoToolUserPreferences.m b/Tools/SOGoToolUserPreferences.m index dd85dfaa8..6a2e1db88 100644 --- a/Tools/SOGoToolUserPreferences.m +++ b/Tools/SOGoToolUserPreferences.m @@ -21,6 +21,7 @@ */ #import +#import #import #import @@ -61,8 +62,13 @@ typedef enum - (void) usage { - fprintf (stderr, "user-preferences get|set|unset defaults|settings user [authname:authpassword] key value\n\n" - " user the user of whom to set the defaults/settings key/value\n"); + fprintf (stderr, "user-preferences get|set|unset defaults|settings user [authname:authpassword] key [value|-f filename]\n\n" + " user the user of whom to set the defaults/settings key/value\n" + " value the JSON-formatted value of the key\n\n" + " Examples:\n" + " sogo-tool user-preferences get defaults janedoe SOGoLanguage\n" + " sogo-tool user-preferences unset settings janedoe Mail\n" + " sogo-tool user-preferences set defaults janedoe SOGoTimeFormat '{\"SOGoTimeFormat\":\"%%I:%%M %%p\"}'\n"); } // @@ -164,7 +170,9 @@ typedef enum else { NSString *authname, *authpwd, *value; - + NSData *data; + int i; + authname = @""; authpwd = @""; value = @""; @@ -172,12 +180,34 @@ typedef enum if (max > 4) { r = [[arguments objectAtIndex: 3] rangeOfString: @":"]; - authname = [[arguments objectAtIndex: 3] substringToIndex: r.location]; - authpwd = [[arguments objectAtIndex: 3] substringFromIndex: r.location+1]; - key = [arguments objectAtIndex: 4]; - - if (max > 5) - value = [arguments objectAtIndex: 5]; + if (r.location == NSNotFound) + { + i = 3; + } + else + { + authname = [[arguments objectAtIndex: 3] substringToIndex: r.location]; + authpwd = [[arguments objectAtIndex: 3] substringFromIndex: r.location+1]; + i = 4; + } + + key = [arguments objectAtIndex: i++]; + value = [arguments objectAtIndex: i++]; + + if (max > i) + { + if ([value caseInsensitiveCompare: @"-f"] == NSOrderedSame) + { + if (max > i) + { + data = [NSData dataWithContentsOfFile: [arguments objectAtIndex: i]]; + value = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; + [value autorelease]; + } + } + else + value = [arguments objectAtIndex: i]; + } } else {