Monotone-Parent: 4b7309393c3e0f0f0211dde1161875de6f69a117

Monotone-Revision: 6531438126de81058d8ee9b15839235efce21dc6

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2008-12-15T22:24:09
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2008-12-15 22:24:09 +00:00
parent 7bad646b76
commit 40aab6f8ca
1 changed files with 12 additions and 51 deletions

View File

@ -49,6 +49,7 @@
{ {
if (content) if (content)
free (content); free (content);
[self reset];
[cards release]; [cards release];
[currentGroup release]; [currentGroup release];
[super dealloc]; [super dealloc];
@ -71,7 +72,9 @@
content = NULL; content = NULL;
} }
vcs.isInVCardSet = 0; vcs.isInVCardSet = 0;
vcs.isInVCard = 0;
vcs.isInGroup = 0;
vcs.collectContent = 0; vcs.collectContent = 0;
} }
@ -86,7 +89,7 @@
- (void) startDocument - (void) startDocument
{ {
if (!cards) if (!cards)
cards = [[NSMutableArray alloc] initWithCapacity:16]; cards = [[NSMutableArray alloc] initWithCapacity: 16];
[self reset]; [self reset];
} }
@ -95,56 +98,12 @@
[self resetExceptResult]; [self resetExceptResult];
} }
/* common tags */
- (void) startValueTag: (NSString *) _tag
attributes: (id<SaxAttributes>) _attrs
{
/* a tag with types and attributes */
unsigned i, count;
[types removeAllObjects];
[args removeAllObjects];
for (i = 0, count = [_attrs count]; i < count; i++) {
NSString *n, *v;
n = [_attrs nameAtIndex:i];
v = [_attrs valueAtIndex:i];
if ([n hasSuffix:@".type"] || [n isEqualToString:@"TYPE"]) {
/*
Note: types cannot be separated by comma! Its indeed always a space,eg
"work pref voice"
If you find commas, usually the vCard is broken.
*/
NSEnumerator *e;
NSString *k;
e = [[v componentsSeparatedByString:@" "] objectEnumerator];
while ((k = [e nextObject]) != nil) {
k = [k uppercaseString];
if ([types containsObject:k]) continue;
[types addObject:k];
}
}
else
[args setObject:v forKey:n];
}
}
- (void) endValueTag
{
[types removeAllObjects];
[args removeAllObjects];
}
/* handle elements */ /* handle elements */
- (void) startGroup: (NSString *)_name - (void) startGroup: (NSString *)_name
{ {
vcs.isInGroup = 1; vcs.isInGroup = 1;
ASSIGNCOPY(currentGroup, _name); ASSIGNCOPY (currentGroup, _name);
} }
- (void) endGroup - (void) endGroup
@ -229,10 +188,12 @@
- (void) startCollectingContent - (void) startCollectingContent
{ {
if (content) { if (content)
free (content); {
content = NULL; free (content);
} content = NULL;
}
vcs.collectContent = 1; vcs.collectContent = 1;
} }