f18c764ffa
Monotone-Revision: 9054022ef1ca8aeba6e34842d27d9b94ce002b89 Monotone-Author: dev-unix.inverse.qc.ca Monotone-Date: 2006-06-15T19:34:10 Monotone-Branch: ca.inverse.sogo
135 lines
3.5 KiB
Objective-C
135 lines
3.5 KiB
Objective-C
/*
|
|
Copyright (C) 2005 SKYRIX Software AG
|
|
|
|
This file is part of OpenGroupware.org.
|
|
|
|
OGo 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.
|
|
|
|
OGo 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 "AgenorUserManager.h"
|
|
#include "common.h"
|
|
|
|
static void usage(NSArray *args) {
|
|
fprintf(stderr, "usage: %s <uid> read|write|info [<key>] [<value>]\n",
|
|
[[args objectAtIndex:0] cString]);
|
|
}
|
|
|
|
static void doInfo(NSUserDefaults *defaults) {
|
|
printf("defaults for: '%s'\n", [[defaults valueForKey:@"uid"] cString]);
|
|
printf(" profile table: '%s'\n",
|
|
[[[defaults valueForKey:@"tableURL"] absoluteString] cString]);
|
|
}
|
|
|
|
static void doRead(NSUserDefaults *defaults, NSString *key) {
|
|
id value;
|
|
|
|
if (key == nil) {
|
|
NSArray *defNames;
|
|
unsigned i, count;
|
|
|
|
defNames = [defaults valueForKey:@"primaryDefaultNames"];
|
|
if ((count = [defNames count]) == 0) {
|
|
fprintf(stderr, "There are no keys in the Agenor profile!\n");
|
|
return;
|
|
}
|
|
|
|
for (i = 0; i < count; i++) {
|
|
printf("%s: %s\n",
|
|
[[defNames objectAtIndex:i] cString],
|
|
[[[defaults objectForKey:[defNames objectAtIndex:i]]
|
|
description] cString]);
|
|
}
|
|
}
|
|
else if ((value = [defaults objectForKey:key]) == nil) {
|
|
fprintf(stderr, "There is no key '%s' in the Agenor profile!\n",
|
|
[key cString]);
|
|
}
|
|
else
|
|
printf("%s\n", [[value description] cString]);
|
|
}
|
|
|
|
static void doWrite(NSUserDefaults *defaults, NSString *key, NSString *value) {
|
|
[defaults setObject:value forKey:key];
|
|
|
|
if (![defaults synchronize]) {
|
|
fprintf(stderr, "Failed to synchronize defaults with profile!\n");
|
|
return;
|
|
}
|
|
}
|
|
|
|
static void doIt(NSArray *args) {
|
|
AgenorUserManager *userManager;
|
|
NSUserDefaults *defaults;
|
|
NSString *uid, *op, *key, *value;
|
|
|
|
/* extract arguments */
|
|
|
|
if ([args count] < 3) {
|
|
usage(args);
|
|
return;
|
|
}
|
|
|
|
uid = [args objectAtIndex:1];
|
|
op = [args objectAtIndex:2];
|
|
key = nil;
|
|
value = nil;
|
|
|
|
if ([args count] > 3)
|
|
key = [args objectAtIndex:3];
|
|
|
|
if ([op isEqualToString:@"write"]) {
|
|
if ([args count] < 5) {
|
|
usage(args);
|
|
return;
|
|
}
|
|
value = [args objectAtIndex:4];
|
|
}
|
|
|
|
/* run */
|
|
|
|
userManager = [AgenorUserManager sharedUserManager];
|
|
defaults = [userManager getUserDefaultsForUID:uid];
|
|
|
|
if (![defaults isNotNull]) {
|
|
fprintf(stderr, "Error: found no userdefaults for UID: '%s'\n",
|
|
[uid cString]);
|
|
exit(1);
|
|
}
|
|
|
|
if ([op isEqualToString:@"read"])
|
|
doRead(defaults, key);
|
|
else if ([op isEqualToString:@"write"])
|
|
doWrite(defaults, key, value);
|
|
else if ([op isEqualToString:@"info"])
|
|
doInfo(defaults);
|
|
else
|
|
usage(args);
|
|
}
|
|
|
|
int main(int argc, char **argv, char **env) {
|
|
NSAutoreleasePool *pool;
|
|
|
|
pool = [[NSAutoreleasePool alloc] init];
|
|
#if LIB_FOUNDATION_LIBRARY
|
|
[NSProcessInfo initializeWithArguments:argv count:argc environment:env];
|
|
#endif
|
|
|
|
doIt([[NSProcessInfo processInfo] argumentsWithoutDefaults]);
|
|
|
|
[pool release];
|
|
return 0;
|
|
}
|