/* 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 read|write|info [] []\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; }