~ubuntu-branches/ubuntu/trusty/gnustep-base/trusty

« back to all changes in this revision

Viewing changes to Source/Additions/NSURL+GNUstepBase.m

  • Committer: Package Import Robot
  • Author(s): Benjamin Drung
  • Date: 2012-11-21 13:56:22 UTC
  • mfrom: (8.1.5 experimental)
  • Revision ID: package-import@ubuntu.com-20121121135622-1w035dpxneardw8q
Tags: 1.24.0-1ubuntu1
Backport upstream fix for recent libxml2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 
24
24
*/
25
25
 
26
 
#ifndef GNUSTEP
27
 
 
28
26
#import "common.h"
 
27
#import "Foundation/NSValue.h"
29
28
#import "GNUstepBase/NSURL+GNUstepBase.h"
30
29
 
 
30
@implementation NSURL (GNUstepBaseAdditions)
 
31
 
 
32
- (id) initWithScheme: (NSString*)scheme
 
33
                 user: (NSString*)user
 
34
             password: (NSString*)password
 
35
                 host: (NSString*)host
 
36
                 port: (NSNumber*)port
 
37
             fullPath: (NSString*)fullPath
 
38
      parameterString: (NSString*)parameterString
 
39
                query: (NSString*)query
 
40
             fragment: (NSString*)fragment
 
41
{
 
42
  NSMutableString       *urlString;
 
43
  NSString              *s;
 
44
 
 
45
  urlString = [scheme mutableCopy];
 
46
  [urlString appendString: @"://"];
 
47
  if ([user length] > 0 || [password length] > 0)
 
48
    {
 
49
      if (nil == (s = user)) s = @"";
 
50
      [urlString appendString:
 
51
        [s stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
 
52
      [urlString appendString: @":"];
 
53
      if (nil == (s = password)) s = @"";
 
54
      [urlString appendString:
 
55
        [s stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
 
56
      [urlString appendString: @"@"];
 
57
    }
 
58
  if ([host length] > 0)
 
59
    {
 
60
      [urlString appendString:
 
61
        [host stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
 
62
    }
 
63
  if ([port intValue] > 0)
 
64
    {
 
65
      [urlString appendString: @":"];
 
66
      [urlString appendFormat: @"%u", [port intValue]];
 
67
    }
 
68
 
 
69
  if (nil == (s = fullPath)) s = @"";
 
70
  if ([s hasPrefix: @"/"] == NO)
 
71
    {
 
72
      [urlString appendString: @"/"];
 
73
    }
 
74
  [urlString appendString:
 
75
    [s stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
 
76
 
 
77
  if ([parameterString length] > 0)
 
78
    {
 
79
      [urlString appendString: @";"];
 
80
      [urlString appendString: parameterString];
 
81
    }
 
82
 
 
83
  if ([query length] > 0)
 
84
    {
 
85
      [urlString appendString: @"?"];
 
86
      [urlString appendString: query];
 
87
    }
 
88
 
 
89
  if ([fragment length] > 0)
 
90
    {
 
91
      [urlString appendString: @"#"];
 
92
      [urlString appendString: fragment];
 
93
    }
 
94
 
 
95
  self = [self initWithString: urlString];
 
96
  [urlString release];
 
97
  return self;
 
98
}
 
99
@end
 
100
 
 
101
#ifndef GNUSTEP
31
102
@implementation NSURL (GNUstepBase)
 
103
/* For efficiency this is built in to the main library.
 
104
 */
32
105
- (NSString*) fullPath
33
106
{
34
107
  NSRange       r;
50
123
  return s;
51
124
}
52
125
@end
53
 
 
54
126
#endif
55
127
 
 
128