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

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

Issue 1405023016: Convert usage of ARRAY_SIZE to arraysize. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: static_cast<int> Created 5 years, 1 month 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/win32.cc ('k') | webrtc/base/win32regkey_unittest.cc » ('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
11 #include "webrtc/base/win32filesystem.h" 11 #include "webrtc/base/win32filesystem.h"
12 12
13 #include "webrtc/base/win32.h" 13 #include "webrtc/base/win32.h"
14 #include <shellapi.h> 14 #include <shellapi.h>
15 #include <shlobj.h> 15 #include <shlobj.h>
16 #include <tchar.h> 16 #include <tchar.h>
17 17
18 #include "webrtc/base/arraysize.h"
18 #include "webrtc/base/fileutils.h" 19 #include "webrtc/base/fileutils.h"
19 #include "webrtc/base/pathutils.h" 20 #include "webrtc/base/pathutils.h"
20 #include "webrtc/base/scoped_ptr.h" 21 #include "webrtc/base/scoped_ptr.h"
21 #include "webrtc/base/stream.h" 22 #include "webrtc/base/stream.h"
22 #include "webrtc/base/stringutils.h" 23 #include "webrtc/base/stringutils.h"
23 24
24 // In several places in this file, we test the integrity level of the process 25 // In several places in this file, we test the integrity level of the process
25 // before calling GetLongPathName. We do this because calling GetLongPathName 26 // before calling GetLongPathName. We do this because calling GetLongPathName
26 // when running under protected mode IE (a low integrity process) can result in 27 // when running under protected mode IE (a low integrity process) can result in
27 // a virtualized path being returned, which is wrong if you only plan to read. 28 // a virtualized path being returned, which is wrong if you only plan to read.
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 bool Win32Filesystem::DeleteEmptyFolder(const Pathname &folder) { 191 bool Win32Filesystem::DeleteEmptyFolder(const Pathname &folder) {
191 LOG(LS_INFO) << "Deleting folder " << folder.pathname(); 192 LOG(LS_INFO) << "Deleting folder " << folder.pathname();
192 193
193 std::string no_slash(folder.pathname(), 0, folder.pathname().length()-1); 194 std::string no_slash(folder.pathname(), 0, folder.pathname().length()-1);
194 return ::RemoveDirectory(ToUtf16(no_slash).c_str()) != 0; 195 return ::RemoveDirectory(ToUtf16(no_slash).c_str()) != 0;
195 } 196 }
196 197
197 bool Win32Filesystem::GetTemporaryFolder(Pathname &pathname, bool create, 198 bool Win32Filesystem::GetTemporaryFolder(Pathname &pathname, bool create,
198 const std::string *append) { 199 const std::string *append) {
199 wchar_t buffer[MAX_PATH + 1]; 200 wchar_t buffer[MAX_PATH + 1];
200 if (!::GetTempPath(ARRAY_SIZE(buffer), buffer)) 201 if (!::GetTempPath(arraysize(buffer), buffer))
201 return false; 202 return false;
202 if (!IsCurrentProcessLowIntegrity() && 203 if (!IsCurrentProcessLowIntegrity() &&
203 !::GetLongPathName(buffer, buffer, ARRAY_SIZE(buffer))) 204 !::GetLongPathName(buffer, buffer, arraysize(buffer)))
204 return false; 205 return false;
205 size_t len = strlen(buffer); 206 size_t len = strlen(buffer);
206 if ((len > 0) && (buffer[len-1] != '\\')) { 207 if ((len > 0) && (buffer[len-1] != '\\')) {
207 len += strcpyn(buffer + len, ARRAY_SIZE(buffer) - len, L"\\"); 208 len += strcpyn(buffer + len, arraysize(buffer) - len, L"\\");
208 } 209 }
209 if (len >= ARRAY_SIZE(buffer) - 1) 210 if (len >= arraysize(buffer) - 1)
210 return false; 211 return false;
211 pathname.clear(); 212 pathname.clear();
212 pathname.SetFolder(ToUtf8(buffer)); 213 pathname.SetFolder(ToUtf8(buffer));
213 if (append != NULL) { 214 if (append != NULL) {
214 ASSERT(!append->empty()); 215 ASSERT(!append->empty());
215 pathname.AppendFolder(*append); 216 pathname.AppendFolder(*append);
216 } 217 }
217 return !create || CreateFolder(pathname); 218 return !create || CreateFolder(pathname);
218 } 219 }
219 220
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 } 289 }
289 290
290 bool Win32Filesystem::CopyFile(const Pathname &old_path, 291 bool Win32Filesystem::CopyFile(const Pathname &old_path,
291 const Pathname &new_path) { 292 const Pathname &new_path) {
292 return ::CopyFile(ToUtf16(old_path.pathname()).c_str(), 293 return ::CopyFile(ToUtf16(old_path.pathname()).c_str(),
293 ToUtf16(new_path.pathname()).c_str(), TRUE) != 0; 294 ToUtf16(new_path.pathname()).c_str(), TRUE) != 0;
294 } 295 }
295 296
296 bool Win32Filesystem::IsTemporaryPath(const Pathname& pathname) { 297 bool Win32Filesystem::IsTemporaryPath(const Pathname& pathname) {
297 TCHAR buffer[MAX_PATH + 1]; 298 TCHAR buffer[MAX_PATH + 1];
298 if (!::GetTempPath(ARRAY_SIZE(buffer), buffer)) 299 if (!::GetTempPath(arraysize(buffer), buffer))
299 return false; 300 return false;
300 if (!IsCurrentProcessLowIntegrity() && 301 if (!IsCurrentProcessLowIntegrity() &&
301 !::GetLongPathName(buffer, buffer, ARRAY_SIZE(buffer))) 302 !::GetLongPathName(buffer, buffer, arraysize(buffer)))
302 return false; 303 return false;
303 return (::strnicmp(ToUtf16(pathname.pathname()).c_str(), 304 return (::strnicmp(ToUtf16(pathname.pathname()).c_str(),
304 buffer, strlen(buffer)) == 0); 305 buffer, strlen(buffer)) == 0);
305 } 306 }
306 307
307 bool Win32Filesystem::GetFileSize(const Pathname &pathname, size_t *size) { 308 bool Win32Filesystem::GetFileSize(const Pathname &pathname, size_t *size) {
308 WIN32_FILE_ATTRIBUTE_DATA data = {0}; 309 WIN32_FILE_ATTRIBUTE_DATA data = {0};
309 if (::GetFileAttributesEx(ToUtf16(pathname.pathname()).c_str(), 310 if (::GetFileAttributesEx(ToUtf16(pathname.pathname()).c_str(),
310 GetFileExInfoStandard, &data) == 0) 311 GetFileExInfoStandard, &data) == 0)
311 return false; 312 return false;
(...skipping 18 matching lines...) Expand all
330 FileTimeToUnixTime(data.ftLastAccessTime, time); 331 FileTimeToUnixTime(data.ftLastAccessTime, time);
331 break; 332 break;
332 default: 333 default:
333 return false; 334 return false;
334 } 335 }
335 return true; 336 return true;
336 } 337 }
337 338
338 bool Win32Filesystem::GetAppPathname(Pathname* path) { 339 bool Win32Filesystem::GetAppPathname(Pathname* path) {
339 TCHAR buffer[MAX_PATH + 1]; 340 TCHAR buffer[MAX_PATH + 1];
340 if (0 == ::GetModuleFileName(NULL, buffer, ARRAY_SIZE(buffer))) 341 if (0 == ::GetModuleFileName(NULL, buffer, arraysize(buffer)))
341 return false; 342 return false;
342 path->SetPathname(ToUtf8(buffer)); 343 path->SetPathname(ToUtf8(buffer));
343 return true; 344 return true;
344 } 345 }
345 346
346 bool Win32Filesystem::GetAppDataFolder(Pathname* path, bool per_user) { 347 bool Win32Filesystem::GetAppDataFolder(Pathname* path, bool per_user) {
347 ASSERT(!organization_name_.empty()); 348 ASSERT(!organization_name_.empty());
348 ASSERT(!application_name_.empty()); 349 ASSERT(!application_name_.empty());
349 TCHAR buffer[MAX_PATH + 1]; 350 TCHAR buffer[MAX_PATH + 1];
350 int csidl = per_user ? CSIDL_LOCAL_APPDATA : CSIDL_COMMON_APPDATA; 351 int csidl = per_user ? CSIDL_LOCAL_APPDATA : CSIDL_COMMON_APPDATA;
351 if (!::SHGetSpecialFolderPath(NULL, buffer, csidl, TRUE)) 352 if (!::SHGetSpecialFolderPath(NULL, buffer, csidl, TRUE))
352 return false; 353 return false;
353 if (!IsCurrentProcessLowIntegrity() && 354 if (!IsCurrentProcessLowIntegrity() &&
354 !::GetLongPathName(buffer, buffer, ARRAY_SIZE(buffer))) 355 !::GetLongPathName(buffer, buffer, arraysize(buffer)))
355 return false; 356 return false;
356 size_t len = strcatn(buffer, ARRAY_SIZE(buffer), __T("\\")); 357 size_t len = strcatn(buffer, arraysize(buffer), __T("\\"));
357 len += strcpyn(buffer + len, ARRAY_SIZE(buffer) - len, 358 len += strcpyn(buffer + len, arraysize(buffer) - len,
358 ToUtf16(organization_name_).c_str()); 359 ToUtf16(organization_name_).c_str());
359 if ((len > 0) && (buffer[len-1] != __T('\\'))) { 360 if ((len > 0) && (buffer[len-1] != __T('\\'))) {
360 len += strcpyn(buffer + len, ARRAY_SIZE(buffer) - len, __T("\\")); 361 len += strcpyn(buffer + len, arraysize(buffer) - len, __T("\\"));
361 } 362 }
362 len += strcpyn(buffer + len, ARRAY_SIZE(buffer) - len, 363 len += strcpyn(buffer + len, arraysize(buffer) - len,
363 ToUtf16(application_name_).c_str()); 364 ToUtf16(application_name_).c_str());
364 if ((len > 0) && (buffer[len-1] != __T('\\'))) { 365 if ((len > 0) && (buffer[len-1] != __T('\\'))) {
365 len += strcpyn(buffer + len, ARRAY_SIZE(buffer) - len, __T("\\")); 366 len += strcpyn(buffer + len, arraysize(buffer) - len, __T("\\"));
366 } 367 }
367 if (len >= ARRAY_SIZE(buffer) - 1) 368 if (len >= arraysize(buffer) - 1)
368 return false; 369 return false;
369 path->clear(); 370 path->clear();
370 path->SetFolder(ToUtf8(buffer)); 371 path->SetFolder(ToUtf8(buffer));
371 return CreateFolder(*path); 372 return CreateFolder(*path);
372 } 373 }
373 374
374 bool Win32Filesystem::GetAppTempFolder(Pathname* path) { 375 bool Win32Filesystem::GetAppTempFolder(Pathname* path) {
375 if (!GetAppPathname(path)) 376 if (!GetAppPathname(path))
376 return false; 377 return false;
377 std::string filename(path->filename()); 378 std::string filename(path->filename());
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 temp_path16.append(1, '\0'); 453 temp_path16.append(1, '\0');
453 454
454 SHFILEOPSTRUCT file_op = { 0 }; 455 SHFILEOPSTRUCT file_op = { 0 };
455 file_op.wFunc = FO_DELETE; 456 file_op.wFunc = FO_DELETE;
456 file_op.pFrom = temp_path16.c_str(); 457 file_op.pFrom = temp_path16.c_str();
457 file_op.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT; 458 file_op.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT;
458 return (0 == SHFileOperation(&file_op)); 459 return (0 == SHFileOperation(&file_op));
459 */ 460 */
460 461
461 } // namespace rtc 462 } // namespace rtc
OLDNEW
« no previous file with comments | « webrtc/base/win32.cc ('k') | webrtc/base/win32regkey_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698