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

Side by Side Diff: services/files/directory_impl.cc

Issue 1539843004: Support some file operations in dart:io under mojo (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
viettrungluu 2015/12/18 22:10:38 This file lg to me. I'll leave it to zra to review
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 "services/files/directory_impl.h" 5 #include "services/files/directory_impl.h"
6 6
7 #include <dirent.h> 7 #include <dirent.h>
8 #include <errno.h> 8 #include <errno.h>
9 #include <fcntl.h> 9 #include <fcntl.h>
10 #include <stdio.h> 10 #include <stdio.h>
11 #include <sys/stat.h> 11 #include <sys/stat.h>
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 if (!(open_flags & kOpenFlagWrite)) { 255 if (!(open_flags & kOpenFlagWrite)) {
256 callback.Run(Error::UNIMPLEMENTED); 256 callback.Run(Error::UNIMPLEMENTED);
257 return; 257 return;
258 } 258 }
259 259
260 if ((open_flags & kOpenFlagCreate)) { 260 if ((open_flags & kOpenFlagCreate)) {
261 if (mkdirat(dir_fd_.get(), path.get().c_str(), 0700) != 0) { 261 if (mkdirat(dir_fd_.get(), path.get().c_str(), 0700) != 0) {
262 // Allow |EEXIST| if |kOpenFlagExclusive| is not set. Note, however, that 262 // Allow |EEXIST| if |kOpenFlagExclusive| is not set. Note, however, that
263 // it does not guarantee that |path| is a directory. 263 // it does not guarantee that |path| is a directory.
264 // TODO(vtl): Hrm, ponder if we should check that |path| is a directory. 264 // TODO(vtl): Hrm, ponder if we should check that |path| is a directory.
265 if (errno != EEXIST || !(open_flags & kOpenFlagExclusive)) { 265 if ((errno != EEXIST) || (open_flags & kOpenFlagExclusive)) {
viettrungluu 2015/12/18 22:10:38 D'oh. I guess I should write a test for this case.
266 callback.Run(ErrnoToError(errno)); 266 callback.Run(ErrnoToError(errno));
267 return; 267 return;
268 } 268 }
269 } 269 }
270 } 270 }
271 271
272 base::ScopedFD new_dir_fd( 272 base::ScopedFD new_dir_fd(
273 HANDLE_EINTR(openat(dir_fd_.get(), path.get().c_str(), O_DIRECTORY, 0))); 273 HANDLE_EINTR(openat(dir_fd_.get(), path.get().c_str(), O_DIRECTORY, 0)));
274 if (!new_dir_fd.is_valid()) { 274 if (!new_dir_fd.is_valid()) {
275 callback.Run(ErrnoToError(errno)); 275 callback.Run(ErrnoToError(errno));
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 if (unlinkat(dir_fd_.get(), path.get().c_str(), AT_REMOVEDIR) == 0) { 353 if (unlinkat(dir_fd_.get(), path.get().c_str(), AT_REMOVEDIR) == 0) {
354 callback.Run(Error::OK); 354 callback.Run(Error::OK);
355 return; 355 return;
356 } 356 }
357 357
358 callback.Run(ErrnoToError(errno)); 358 callback.Run(ErrnoToError(errno));
359 } 359 }
360 360
361 } // namespace files 361 } // namespace files
362 } // namespace mojo 362 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698