Mime updates

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@15099 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
CaS 2002-11-25 18:00:55 +00:00
parent 6f3a6c273a
commit e7e4b4225c
2 changed files with 22 additions and 9 deletions

View file

@ -63,7 +63,7 @@
NSMutableDictionary *objects; NSMutableDictionary *objects;
NSMutableDictionary *params; NSMutableDictionary *params;
} }
+ (NSString*) makeQuoted: (NSString*)v; + (NSString*) makeQuoted: (NSString*)v always: (BOOL)flag;
+ (NSString*) makeToken: (NSString*)t; + (NSString*) makeToken: (NSString*)t;
- (id) initWithName: (NSString*)n - (id) initWithName: (NSString*)n
value: (NSString*)v; value: (NSString*)v;

View file

@ -2491,9 +2491,11 @@ static NSCharacterSet *tokenSet = nil;
} }
/** /**
* Makes the value into a quoted string if necessary. * Makes the value into a quoted string if necessary (ie if it contains
* any special / non-token characters). If flag is YES then the value
* is made into a quoted string even if it does not contain special characters.
*/ */
+ (NSString*) makeQuoted: (NSString*)v + (NSString*) makeQuoted: (NSString*)v always: (BOOL)flag
{ {
NSRange r; NSRange r;
unsigned pos = 0; unsigned pos = 0;
@ -2502,7 +2504,7 @@ static NSCharacterSet *tokenSet = nil;
r = [v rangeOfCharacterFromSet: nonToken r = [v rangeOfCharacterFromSet: nonToken
options: NSLiteralSearch options: NSLiteralSearch
range: NSMakeRange(pos, l - pos)]; range: NSMakeRange(pos, l - pos)];
if (r.length > 0) if (flag == YES || r.length > 0)
{ {
NSMutableString *m = [NSMutableString new]; NSMutableString *m = [NSMutableString new];
@ -2537,6 +2539,11 @@ static NSCharacterSet *tokenSet = nil;
options: NSLiteralSearch options: NSLiteralSearch
range: NSMakeRange(pos, l - pos)]; range: NSMakeRange(pos, l - pos)];
} }
if (l > pos)
{
[m appendString:
[v substringFromRange: NSMakeRange(pos, l - pos)]];
}
[m appendString: @"\""]; [m appendString: @"\""];
v = AUTORELEASE(m); v = AUTORELEASE(m);
} }
@ -2748,11 +2755,17 @@ static NSCharacterSet *tokenSet = nil;
while ((k = [e nextObject]) != nil) while ((k = [e nextObject]) != nil)
{ {
NSString *v = [GSMimeHeader makeQuoted: [params objectForKey: k]]; NSString *v;
NSData *kd = wordData(k); NSData *kd;
NSData *vd = wordData(v); NSData *vd;
unsigned kl = [kd length]; unsigned kl;
unsigned vl = [vd length]; unsigned vl;
v = [GSMimeHeader makeQuoted: [params objectForKey: k] always: NO];
kd = wordData(k);
vd = wordData(v);
kl = [kd length];
vl = [vd length];
if ((l + kl + vl + 3) > LIM) if ((l + kl + vl + 3) > LIM)
{ {