OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #if defined(WEBRTC_WIN) | 11 #if defined(WEBRTC_WIN) |
12 #include "webrtc/base/win32.h" | 12 #include "webrtc/base/win32.h" |
13 #include <shellapi.h> | 13 #include <shellapi.h> |
14 #include <shlobj.h> | 14 #include <shlobj.h> |
15 #include <tchar.h> | 15 #include <tchar.h> |
16 #endif // WEBRTC_WIN | 16 #endif // WEBRTC_WIN |
17 | 17 |
18 #include "webrtc/base/checks.h" | 18 #include "webrtc/base/checks.h" |
19 #include "webrtc/base/fileutils.h" | 19 #include "webrtc/base/fileutils.h" |
20 #include "webrtc/base/logging.h" | 20 #include "webrtc/base/logging.h" |
21 #include "webrtc/base/pathutils.h" | 21 #include "webrtc/base/pathutils.h" |
22 #include "webrtc/base/stringutils.h" | 22 #include "webrtc/base/stringutils.h" |
23 #include "webrtc/base/urlencode.h" | |
24 | 23 |
25 namespace rtc { | 24 namespace rtc { |
26 | 25 |
27 static const char EMPTY_STR[] = ""; | 26 static const char EMPTY_STR[] = ""; |
28 | 27 |
29 // EXT_DELIM separates a file basename from extension | 28 // EXT_DELIM separates a file basename from extension |
30 const char EXT_DELIM = '.'; | 29 const char EXT_DELIM = '.'; |
31 | 30 |
32 // FOLDER_DELIMS separate folder segments and the filename | 31 // FOLDER_DELIMS separate folder segments and the filename |
33 const char* const FOLDER_DELIMS = "/\\"; | 32 const char* const FOLDER_DELIMS = "/\\"; |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 pathname.append(basename_); | 98 pathname.append(basename_); |
100 pathname.append(extension_); | 99 pathname.append(extension_); |
101 if (pathname.empty()) { | 100 if (pathname.empty()) { |
102 // Instead of the empty pathname, return the current working directory. | 101 // Instead of the empty pathname, return the current working directory. |
103 pathname.push_back('.'); | 102 pathname.push_back('.'); |
104 pathname.push_back(folder_delimiter_); | 103 pathname.push_back(folder_delimiter_); |
105 } | 104 } |
106 return pathname; | 105 return pathname; |
107 } | 106 } |
108 | 107 |
109 std::string Pathname::url() const { | |
110 std::string s = "file:///"; | |
111 for (size_t i=0; i<folder_.length(); ++i) { | |
112 if (IsFolderDelimiter(folder_[i])) | |
113 s += '/'; | |
114 else | |
115 s += folder_[i]; | |
116 } | |
117 s += basename_; | |
118 s += extension_; | |
119 return UrlEncodeStringForOnlyUnsafeChars(s); | |
120 } | |
121 | |
122 void Pathname::SetPathname(const std::string& pathname) { | 108 void Pathname::SetPathname(const std::string& pathname) { |
123 std::string::size_type pos = pathname.find_last_of(FOLDER_DELIMS); | 109 std::string::size_type pos = pathname.find_last_of(FOLDER_DELIMS); |
124 if (pos != std::string::npos) { | 110 if (pos != std::string::npos) { |
125 SetFolder(pathname.substr(0, pos + 1)); | 111 SetFolder(pathname.substr(0, pos + 1)); |
126 SetFilename(pathname.substr(pos + 1)); | 112 SetFilename(pathname.substr(pos + 1)); |
127 } else { | 113 } else { |
128 SetFolder(EMPTY_STR); | 114 SetFolder(EMPTY_STR); |
129 SetFilename(pathname); | 115 SetFilename(pathname); |
130 } | 116 } |
131 } | 117 } |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 // sanity checking | 235 // sanity checking |
250 return (isalpha(drive[0]) && | 236 return (isalpha(drive[0]) && |
251 drive[1] == ':' && | 237 drive[1] == ':' && |
252 drive[2] == '\\'); | 238 drive[2] == '\\'); |
253 } | 239 } |
254 #endif | 240 #endif |
255 | 241 |
256 /////////////////////////////////////////////////////////////////////////////// | 242 /////////////////////////////////////////////////////////////////////////////// |
257 | 243 |
258 } // namespace rtc | 244 } // namespace rtc |
OLD | NEW |