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

Side by Side Diff: base/files/file_posix.cc

Issue 1467003002: Switch to static_assert in base/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: / 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 | « base/containers/stack_container.h ('k') | base/files/file_win.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 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/files/file.h" 5 #include "base/files/file.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #include <sys/stat.h> 9 #include <sys/stat.h>
10 #include <unistd.h> 10 #include <unistd.h>
11 11
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/metrics/sparse_histogram.h" 13 #include "base/metrics/sparse_histogram.h"
14 #include "base/posix/eintr_wrapper.h" 14 #include "base/posix/eintr_wrapper.h"
15 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "base/threading/thread_restrictions.h" 16 #include "base/threading/thread_restrictions.h"
17 17
18 #if defined(OS_ANDROID) 18 #if defined(OS_ANDROID)
19 #include "base/os_compat_android.h" 19 #include "base/os_compat_android.h"
20 #endif 20 #endif
21 21
22 namespace base { 22 namespace base {
23 23
24 // Make sure our Whence mappings match the system headers. 24 // Make sure our Whence mappings match the system headers.
25 COMPILE_ASSERT(File::FROM_BEGIN == SEEK_SET && 25 static_assert(File::FROM_BEGIN == SEEK_SET && File::FROM_CURRENT == SEEK_CUR &&
26 File::FROM_CURRENT == SEEK_CUR && 26 File::FROM_END == SEEK_END,
27 File::FROM_END == SEEK_END, whence_matches_system); 27 "whence mapping must match the system headers");
28 28
29 namespace { 29 namespace {
30 30
31 #if defined(OS_BSD) || defined(OS_MACOSX) || defined(OS_NACL) 31 #if defined(OS_BSD) || defined(OS_MACOSX) || defined(OS_NACL)
32 static int CallFstat(int fd, stat_wrapper_t *sb) { 32 static int CallFstat(int fd, stat_wrapper_t *sb) {
33 ThreadRestrictions::AssertIOAllowed(); 33 ThreadRestrictions::AssertIOAllowed();
34 return fstat(fd, sb); 34 return fstat(fd, sb);
35 } 35 }
36 #else 36 #else
37 static int CallFstat(int fd, stat_wrapper_t *sb) { 37 static int CallFstat(int fd, stat_wrapper_t *sb) {
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 file_.reset(); 177 file_.reset();
178 } 178 }
179 179
180 int64 File::Seek(Whence whence, int64 offset) { 180 int64 File::Seek(Whence whence, int64 offset) {
181 ThreadRestrictions::AssertIOAllowed(); 181 ThreadRestrictions::AssertIOAllowed();
182 DCHECK(IsValid()); 182 DCHECK(IsValid());
183 183
184 SCOPED_FILE_TRACE_WITH_SIZE("Seek", offset); 184 SCOPED_FILE_TRACE_WITH_SIZE("Seek", offset);
185 185
186 #if defined(OS_ANDROID) 186 #if defined(OS_ANDROID)
187 COMPILE_ASSERT(sizeof(int64) == sizeof(off64_t), off64_t_64_bit); 187 static_assert(sizeof(int64) == sizeof(off64_t), "off64_t must be 64 bits");
188 return lseek64(file_.get(), static_cast<off64_t>(offset), 188 return lseek64(file_.get(), static_cast<off64_t>(offset),
189 static_cast<int>(whence)); 189 static_cast<int>(whence));
190 #else 190 #else
191 COMPILE_ASSERT(sizeof(int64) == sizeof(off_t), off_t_64_bit); 191 static_assert(sizeof(int64) == sizeof(off_t), "off_t must be 64 bits");
192 return lseek(file_.get(), static_cast<off_t>(offset), 192 return lseek(file_.get(), static_cast<off_t>(offset),
193 static_cast<int>(whence)); 193 static_cast<int>(whence));
194 #endif 194 #endif
195 } 195 }
196 196
197 int File::Read(int64 offset, char* data, int size) { 197 int File::Read(int64 offset, char* data, int size) {
198 ThreadRestrictions::AssertIOAllowed(); 198 ThreadRestrictions::AssertIOAllowed();
199 DCHECK(IsValid()); 199 DCHECK(IsValid());
200 if (size < 0) 200 if (size < 0)
201 return -1; 201 return -1;
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 } 464 }
465 465
466 if (flags & FLAG_TERMINAL_DEVICE) 466 if (flags & FLAG_TERMINAL_DEVICE)
467 open_flags |= O_NOCTTY | O_NDELAY; 467 open_flags |= O_NOCTTY | O_NDELAY;
468 468
469 if (flags & FLAG_APPEND && flags & FLAG_READ) 469 if (flags & FLAG_APPEND && flags & FLAG_READ)
470 open_flags |= O_APPEND | O_RDWR; 470 open_flags |= O_APPEND | O_RDWR;
471 else if (flags & FLAG_APPEND) 471 else if (flags & FLAG_APPEND)
472 open_flags |= O_APPEND | O_WRONLY; 472 open_flags |= O_APPEND | O_WRONLY;
473 473
474 COMPILE_ASSERT(O_RDONLY == 0, O_RDONLY_must_equal_zero); 474 static_assert(O_RDONLY == 0, "O_RDONLY must equal zero");
475 475
476 int mode = S_IRUSR | S_IWUSR; 476 int mode = S_IRUSR | S_IWUSR;
477 #if defined(OS_CHROMEOS) 477 #if defined(OS_CHROMEOS)
478 mode |= S_IRGRP | S_IROTH; 478 mode |= S_IRGRP | S_IROTH;
479 #endif 479 #endif
480 480
481 int descriptor = HANDLE_EINTR(open(path.value().c_str(), open_flags, mode)); 481 int descriptor = HANDLE_EINTR(open(path.value().c_str(), open_flags, mode));
482 482
483 if (flags & FLAG_OPEN_ALWAYS) { 483 if (flags & FLAG_OPEN_ALWAYS) {
484 if (descriptor < 0) { 484 if (descriptor < 0) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 return !HANDLE_EINTR(fsync(file_.get())); 522 return !HANDLE_EINTR(fsync(file_.get()));
523 #endif 523 #endif
524 } 524 }
525 525
526 void File::SetPlatformFile(PlatformFile file) { 526 void File::SetPlatformFile(PlatformFile file) {
527 DCHECK(!file_.is_valid()); 527 DCHECK(!file_.is_valid());
528 file_.reset(file); 528 file_.reset(file);
529 } 529 }
530 530
531 } // namespace base 531 } // namespace base
OLDNEW
« no previous file with comments | « base/containers/stack_container.h ('k') | base/files/file_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698