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

Side by Side Diff: native_client_sdk/src/libraries/nacl_io/httpfs/http_fs.cc

Issue 547053002: [NaCl SDK] nacl_io: Remove Node::Access method. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@http_fs_root
Patch Set: Created 6 years, 3 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "nacl_io/httpfs/http_fs.h" 5 #include "nacl_io/httpfs/http_fs.h"
6 6
7 #include <assert.h> 7 #include <assert.h>
8 #include <ctype.h> 8 #include <ctype.h>
9 #include <errno.h> 9 #include <errno.h>
10 #include <fcntl.h> 10 #include <fcntl.h>
(...skipping 23 matching lines...) Expand all
34 bool upper = true; 34 bool upper = true;
35 for (size_t i = 0; i < s.length(); ++i) { 35 for (size_t i = 0; i < s.length(); ++i) {
36 char c = s[i]; 36 char c = s[i];
37 result += upper ? toupper(c) : tolower(c); 37 result += upper ? toupper(c) : tolower(c);
38 upper = c == '-'; 38 upper = c == '-';
39 } 39 }
40 40
41 return result; 41 return result;
42 } 42 }
43 43
44 Error HttpFs::Access(const Path& path, int a_mode) {
45 ScopedNode node;
46 NodeMap_t::iterator iter = node_cache_.find(path.Join());
47 if (iter == node_cache_.end()) {
48 // If we can't find the node in the cache, fetch it
49 std::string url = MakeUrl(path);
50 node.reset(new HttpFsNode(this, url, cache_content_));
51 Error error = node->Init(0);
52 if (error)
53 return error;
54
55 error = node->GetStat(NULL);
56 if (error)
57 return error;
58 } else {
59 node = iter->second;
60 }
61
62 int obj_mode = node->GetMode();
63 if (((a_mode & R_OK) && !(obj_mode & S_IREAD)) ||
64 ((a_mode & W_OK) && !(obj_mode & S_IWRITE)) ||
65 ((a_mode & X_OK) && !(obj_mode & S_IEXEC))) {
66 return EACCES;
67 }
68
69 return 0;
70 }
71
72 Error HttpFs::Open(const Path& path, int open_flags, ScopedNode* out_node) { 44 Error HttpFs::Open(const Path& path, int open_flags, ScopedNode* out_node) {
73 out_node->reset(NULL); 45 out_node->reset(NULL);
74 46
75 NodeMap_t::iterator iter = node_cache_.find(path.Join()); 47 NodeMap_t::iterator iter = node_cache_.find(path.Join());
76 if (iter != node_cache_.end()) { 48 if (iter != node_cache_.end()) {
77 *out_node = iter->second; 49 *out_node = iter->second;
78 return 0; 50 return 0;
79 } 51 }
80 52
81 // If we can't find the node in the cache, create it 53 // If we can't find the node in the cache, create it
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 *out_manifest = text; 406 *out_manifest = text;
435 return 0; 407 return 0;
436 } 408 }
437 409
438 std::string HttpFs::MakeUrl(const Path& path) { 410 std::string HttpFs::MakeUrl(const Path& path) {
439 return url_root_ + 411 return url_root_ +
440 (path.IsAbsolute() ? path.Range(1, path.Size()) : path.Join()); 412 (path.IsAbsolute() ? path.Range(1, path.Size()) : path.Join());
441 } 413 }
442 414
443 } // namespace nacl_io 415 } // namespace nacl_io
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698