Overview
Comment: | OFMutableURL: Add -[standardizePath] |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
555e18ace0ce9864532223c6b7ec6b7d |
User & Date: | js on 2019-02-24 16:28:52 |
Other Links: | manifest | tags |
Context
2019-03-03
| ||
12:40 | OFHTTPServer: Support for using multiple threads check-in: 607cd05ad7 user: js tags: trunk | |
2019-02-24
| ||
16:28 | OFMutableURL: Add -[standardizePath] check-in: 555e18ace0 user: js tags: trunk | |
14:12 | OFURL: Fix missing copy in -[mutableCopy] check-in: f89f6d5887 user: js tags: trunk | |
Changes
Modified src/OFMutableURL.h from [89fff6c2f1] to [3836efd792].
︙ | ︙ | |||
139 140 141 142 143 144 145 146 147 148 149 150 151 152 | /*! * @brief Creates a new mutable URL. * * @return A new, autoreleased OFMutableURL */ + (instancetype)URL; /*! * @brief Converts the mutable URL to an immutable URL. */ - (void)makeImmutable; @end OF_ASSUME_NONNULL_END | > > > > > | 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | /*! * @brief Creates a new mutable URL. * * @return A new, autoreleased OFMutableURL */ + (instancetype)URL; /*! * @brief Resolves relative sub paths. */ - (void)standardizePath; /*! * @brief Converts the mutable URL to an immutable URL. */ - (void)makeImmutable; @end OF_ASSUME_NONNULL_END |
Modified src/OFMutableURL.m from [7fa8500363] to [281bdc699b].
︙ | ︙ | |||
251 252 253 254 255 256 257 258 259 260 261 262 263 | { OFMutableURL *copy = [self mutableCopy]; [copy makeImmutable]; return copy; } - (void)makeImmutable { object_setClass(self, [OFURL class]); } @end | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 | { OFMutableURL *copy = [self mutableCopy]; [copy makeImmutable]; return copy; } - (void)standardizePath { void *pool; OFMutableArray OF_GENERIC(OFString *) *array; bool done = false, endsWithEmpty; OFString *path; if (_URLEncodedPath == nil) return; pool = objc_autoreleasePoolPush(); array = [[[_URLEncodedPath componentsSeparatedByString: @"/"] mutableCopy] autorelease]; if ([[array firstObject] length] != 0) @throw [OFInvalidFormatException exception]; endsWithEmpty = ([[array lastObject] length] == 0); while (!done) { size_t length = [array count]; done = true; for (size_t i = 0; i < length; i++) { id object = [array objectAtIndex: i]; id parent = (i > 0 ? [array objectAtIndex: i - 1] : nil); if ([object isEqual: @"."] || [object length] == 0) { [array removeObjectAtIndex: i]; done = false; break; } if ([object isEqual: @".."] && parent != nil && ![parent isEqual: @".."]) { [array removeObjectsInRange: of_range(i - 1, 2)]; done = false; break; } } } [array insertObject: @"" atIndex: 0]; if (endsWithEmpty) [array addObject: @""]; path = [array componentsJoinedByString: @"/"]; if ([path length] == 0) path = @"/"; [self setURLEncodedPath: path]; objc_autoreleasePoolPop(pool); } - (void)makeImmutable { object_setClass(self, [OFURL class]); } @end |
Modified src/OFURL.m from [eff399e1fa] to [614bfb9897].
︙ | ︙ | |||
1137 1138 1139 1140 1141 1142 1143 | [ret makeImmutable]; return ret; } - (OFURL *)URLByStandardizingPath { | < < < < | < < | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | | 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 | [ret makeImmutable]; return ret; } - (OFURL *)URLByStandardizingPath { OFMutableURL *URL = [[self mutableCopy] autorelease]; [URL standardizePath]; [URL makeImmutable]; return URL; } - (OFString *)description { return [OFString stringWithFormat: @"<%@: %@>", [self class], [self string]]; } |
︙ | ︙ |