]> err.no Git - scalable-opengroupware.org/blob - OGoContentStore/ocs_cat.m
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@83 d1b88da0-ebda-0310-925b-ed51d8...
[scalable-opengroupware.org] / OGoContentStore / ocs_cat.m
1 // $Id$
2
3 #import <Foundation/NSObject.h>
4
5 @class NSUserDefaults;
6 @class OCSFolderManager;
7
8 @interface Tool : NSObject
9 {
10   NSUserDefaults   *ud;
11   OCSFolderManager *folderManager;
12 }
13
14 + (int)run;
15
16 @end
17
18 #include <OGoContentStore/OCSFolder.h>
19 #include <OGoContentStore/OCSFolderManager.h>
20 #include "common.h"
21
22 @implementation Tool
23
24 - (id)init {
25   if ((self = [super init])) {
26     self->ud            = [[NSUserDefaults standardUserDefaults]   retain];
27     self->folderManager = [[OCSFolderManager defaultFolderManager] retain];
28   }
29   return self;
30 }
31 - (void)dealloc {
32   [self->ud            release];
33   [self->folderManager release];
34   [super dealloc];
35 }
36
37 /* operation */
38
39 - (int)runOnPath:(NSString *)_path {
40   OCSFolder   *folder;
41   NSString    *dirname, *filename;
42   NSString    *content;
43   
44   dirname  = [_path stringByDeletingLastPathComponent];
45   filename = [_path lastPathComponent];
46   
47   if ((folder = [self->folderManager folderAtPath:dirname]) == nil) {
48     [self logWithFormat:@"did not find folder for file: '%@'", dirname];
49     return 1;
50   }
51   
52   if ((content = [folder fetchContentWithName:filename]) == nil) {
53     [self logWithFormat:@"did not find file: '%@'", _path];
54     return 1;
55   }
56   
57   printf("%s\n", [content cString]);
58   
59   return 0;
60 }
61
62 - (int)run {
63   NSEnumerator *e;
64   NSString *path;
65   
66   [self logWithFormat:@"manager: %@", self->folderManager];
67   
68   if (![self->folderManager canConnect]) {
69     [self logWithFormat:@"cannot connect folder-info database!"];
70     return 1;
71   }
72   
73   e = [[[NSProcessInfo processInfo] argumentsWithoutDefaults] 
74                        objectEnumerator];
75   [e nextObject]; // skip tool name
76   
77   while ((path = [e nextObject]))
78     [self runOnPath:path];
79   
80   return 0;
81 }
82 + (int)run {
83   return [(Tool *)[[[self alloc] init] autorelease] run];
84 }
85
86 @end /* Tool */
87
88 int main(int argc, char **argv, char **env) {
89   NSAutoreleasePool *pool;
90   int rc;
91
92   pool = [[NSAutoreleasePool alloc] init];
93 #if LIB_FOUNDATION_LIBRARY  
94   [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
95 #endif
96
97   rc = [Tool run];
98   
99   [pool release];
100   return rc;
101 }