Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(431)

Side by Side Diff: webrtc/base/unixfilesystem.cc

Issue 2887093002: Delete FilesystemInterface::DeleteFolderAndContents and related methods. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/base/unixfilesystem.h ('k') | webrtc/base/win32filesystem.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 return true; 209 return true;
210 } 210 }
211 211
212 bool UnixFilesystem::IsFolder(const Pathname &path) { 212 bool UnixFilesystem::IsFolder(const Pathname &path) {
213 struct stat st; 213 struct stat st;
214 if (stat(path.pathname().c_str(), &st) < 0) 214 if (stat(path.pathname().c_str(), &st) < 0)
215 return false; 215 return false;
216 return S_ISDIR(st.st_mode); 216 return S_ISDIR(st.st_mode);
217 } 217 }
218 218
219 bool UnixFilesystem::IsTemporaryPath(const Pathname& pathname) {
220 #if defined(WEBRTC_ANDROID) || defined(WEBRTC_MAC)
221 RTC_DCHECK(provided_app_temp_folder_ != nullptr);
222 #endif
223
224 const char* const kTempPrefixes[] = {
225 #if defined(WEBRTC_ANDROID) || defined(WEBRTC_MAC)
226 provided_app_temp_folder_,
227 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
228 "/private/tmp/", "/private/var/tmp/", "/private/var/folders/",
229 #endif // WEBRTC_MAC && !defined(WEBRTC_IOS)
230 #else
231 "/tmp/", "/var/tmp/",
232 #endif // WEBRTC_ANDROID || WEBRTC_IOS
233 };
234 for (size_t i = 0; i < arraysize(kTempPrefixes); ++i) {
235 if (0 == strncmp(pathname.pathname().c_str(), kTempPrefixes[i],
236 strlen(kTempPrefixes[i])))
237 return true;
238 }
239 return false;
240 }
241
242 bool UnixFilesystem::IsFile(const Pathname& pathname) { 219 bool UnixFilesystem::IsFile(const Pathname& pathname) {
243 struct stat st; 220 struct stat st;
244 int res = ::stat(pathname.pathname().c_str(), &st); 221 int res = ::stat(pathname.pathname().c_str(), &st);
245 // Treat symlinks, named pipes, etc. all as files. 222 // Treat symlinks, named pipes, etc. all as files.
246 return res == 0 && !S_ISDIR(st.st_mode); 223 return res == 0 && !S_ISDIR(st.st_mode);
247 } 224 }
248 225
249 bool UnixFilesystem::IsAbsent(const Pathname& pathname) { 226 bool UnixFilesystem::IsAbsent(const Pathname& pathname) {
250 struct stat st; 227 struct stat st;
251 int res = ::stat(pathname.pathname().c_str(), &st); 228 int res = ::stat(pathname.pathname().c_str(), &st);
(...skipping 24 matching lines...) Expand all
276 break; 253 break;
277 case FTT_ACCESSED: 254 case FTT_ACCESSED:
278 *time = st.st_atime; 255 *time = st.st_atime;
279 break; 256 break;
280 default: 257 default:
281 return false; 258 return false;
282 } 259 }
283 return true; 260 return true;
284 } 261 }
285 262
286 bool UnixFilesystem::GetAppTempFolder(Pathname* path) {
287 #if defined(WEBRTC_ANDROID) || defined(WEBRTC_MAC)
288 RTC_DCHECK(provided_app_temp_folder_ != nullptr);
289 path->SetPathname(provided_app_temp_folder_);
290 return true;
291 #else
292 RTC_DCHECK(!application_name_.empty());
293 // TODO: Consider whether we are worried about thread safety.
294 if (app_temp_path_ != nullptr && strlen(app_temp_path_) > 0) {
295 path->SetPathname(app_temp_path_);
296 return true;
297 }
298
299 // Create a random directory as /tmp/<appname>-<pid>-<timestamp>
300 char buffer[128];
301 sprintfn(buffer, arraysize(buffer), "-%d-%d",
302 static_cast<int>(getpid()),
303 static_cast<int>(time(0)));
304 std::string folder(application_name_);
305 folder.append(buffer);
306 if (!GetTemporaryFolder(*path, true, &folder))
307 return false;
308
309 delete [] app_temp_path_;
310 app_temp_path_ = CopyString(path->pathname());
311 // TODO: atexit(DeleteFolderAndContents(app_temp_path_));
312 return true;
313 #endif
314 }
315
316 char* UnixFilesystem::CopyString(const std::string& str) { 263 char* UnixFilesystem::CopyString(const std::string& str) {
317 size_t size = str.length() + 1; 264 size_t size = str.length() + 1;
318 265
319 char* buf = new char[size]; 266 char* buf = new char[size];
320 if (!buf) { 267 if (!buf) {
321 return nullptr; 268 return nullptr;
322 } 269 }
323 270
324 strcpyn(buf, size, str.c_str()); 271 strcpyn(buf, size, str.c_str());
325 return buf; 272 return buf;
326 } 273 }
327 274
328 } // namespace rtc 275 } // namespace rtc
329 276
330 #if defined(__native_client__) 277 #if defined(__native_client__)
331 extern "C" int __attribute__((weak)) 278 extern "C" int __attribute__((weak))
332 link(const char* oldpath, const char* newpath) { 279 link(const char* oldpath, const char* newpath) {
333 errno = EACCES; 280 errno = EACCES;
334 return -1; 281 return -1;
335 } 282 }
336 #endif 283 #endif
OLDNEW
« no previous file with comments | « webrtc/base/unixfilesystem.h ('k') | webrtc/base/win32filesystem.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698