]> err.no Git - sope/blob - sope-mime/NGMime/NGMimeContentDispositionHeaderFieldParser.m
updated framework version
[sope] / sope-mime / NGMime / NGMimeContentDispositionHeaderFieldParser.m
1 /*
2   Copyright (C) 2000-2005 SKYRIX Software AG
3
4   This file is part of SOPE.
5
6   SOPE is free software; you can redistribute it and/or modify it under
7   the terms of the GNU Lesser General Public License as published by the
8   Free Software Foundation; either version 2, or (at your option) any
9   later version.
10
11   SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
12   WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14   License for more details.
15
16   You should have received a copy of the GNU Lesser General Public
17   License along with SOPE; see the file COPYING.  If not, write to the
18   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19   02111-1307, USA.
20 */
21
22 #include "NGMimeHeaderFieldParser.h"
23 #include "NGMimeHeaderFields.h"
24 #include "NGMimeUtilities.h"
25 #include "common.h"
26
27 @implementation NGMimeContentDispositionHeaderFieldParser
28
29 static BOOL StripLeadingSpaces = NO;
30 static BOOL MimeLogEnabled     = NO;
31
32 + (int)version {
33   return 2;
34 }
35 + (void)initialize {
36   StripLeadingSpaces = [self doesStripLeadingSpaces];
37   MimeLogEnabled     = [self isMIMELogEnabled];
38 }
39
40 - (id)parseValue:(id)_data ofHeaderField:(NSString *)_field {
41   unsigned   len = [_data length];
42   unichar    src[len + 1];
43   unsigned   cnt;
44   BOOL       didModify;
45   NSString   *str;
46   
47   didModify = NO;
48   cnt       = 0;
49
50   [_data getCharacters:src];
51   
52   /* strip leading spaces */
53   if (StripLeadingSpaces) {
54     while (isRfc822_LWSP(src[cnt]) && (len > 0)) {
55       cnt++;
56       len--;
57       didModify = YES;
58     }
59   }
60   /* strip trailing spaces */
61   while (len > 0) {
62     if (isRfc822_LWSP(src[len - 1])) {
63       len--;
64       didModify = YES;
65     }
66     else
67       break;
68   }
69   if (len == 0) {
70     if (MimeLogEnabled) 
71       [self logWithFormat:@"WARNING(%s): empty value for header field %@ ..",
72             __PRETTY_FUNCTION__, _field];
73     return nil;
74   }
75   str = nil;
76   
77   str = (didModify)
78     ? [NSString stringWithCharacters:(src + cnt) length:len]
79     : _data;
80   
81   return [[[NGMimeContentDispositionHeaderField alloc] initWithString:str]
82                                                 autorelease];
83 }
84
85 @end /* NGMimeContentDispositionHeaderFieldParser */