OLD | NEW |
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_path.h" | 5 #include "base/files/file_path.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 #include <algorithm> | 8 #include <algorithm> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 1153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1164 return (codepoint1 < codepoint2) ? -1 : 1; | 1164 return (codepoint1 < codepoint2) ? -1 : 1; |
1165 if (codepoint1 == 0) { | 1165 if (codepoint1 == 0) { |
1166 DCHECK_EQ(index1, length1); | 1166 DCHECK_EQ(index1, length1); |
1167 DCHECK_EQ(index2, length2); | 1167 DCHECK_EQ(index2, length2); |
1168 return 0; | 1168 return 0; |
1169 } | 1169 } |
1170 } | 1170 } |
1171 } | 1171 } |
1172 | 1172 |
1173 StringType FilePath::GetHFSDecomposedForm(const StringType& string) { | 1173 StringType FilePath::GetHFSDecomposedForm(const StringType& string) { |
1174 mac::ScopedCFTypeRef<CFStringRef> cfstring( | 1174 ScopedCFTypeRef<CFStringRef> cfstring( |
1175 CFStringCreateWithBytesNoCopy( | 1175 CFStringCreateWithBytesNoCopy( |
1176 NULL, | 1176 NULL, |
1177 reinterpret_cast<const UInt8*>(string.c_str()), | 1177 reinterpret_cast<const UInt8*>(string.c_str()), |
1178 string.length(), | 1178 string.length(), |
1179 kCFStringEncodingUTF8, | 1179 kCFStringEncodingUTF8, |
1180 false, | 1180 false, |
1181 kCFAllocatorNull)); | 1181 kCFAllocatorNull)); |
1182 // Query the maximum length needed to store the result. In most cases this | 1182 // Query the maximum length needed to store the result. In most cases this |
1183 // will overestimate the required space. The return value also already | 1183 // will overestimate the required space. The return value also already |
1184 // includes the space needed for a terminating 0. | 1184 // includes the space needed for a terminating 0. |
(...skipping 26 matching lines...) Expand all Loading... |
1211 return string2.empty() ? 0 : -1; | 1211 return string2.empty() ? 0 : -1; |
1212 if (string2.empty()) | 1212 if (string2.empty()) |
1213 return 1; | 1213 return 1; |
1214 | 1214 |
1215 StringType hfs1 = GetHFSDecomposedForm(string1); | 1215 StringType hfs1 = GetHFSDecomposedForm(string1); |
1216 StringType hfs2 = GetHFSDecomposedForm(string2); | 1216 StringType hfs2 = GetHFSDecomposedForm(string2); |
1217 | 1217 |
1218 // GetHFSDecomposedForm() returns an empty string in an error case. | 1218 // GetHFSDecomposedForm() returns an empty string in an error case. |
1219 if (hfs1.empty() || hfs2.empty()) { | 1219 if (hfs1.empty() || hfs2.empty()) { |
1220 NOTREACHED(); | 1220 NOTREACHED(); |
1221 mac::ScopedCFTypeRef<CFStringRef> cfstring1( | 1221 ScopedCFTypeRef<CFStringRef> cfstring1( |
1222 CFStringCreateWithBytesNoCopy( | 1222 CFStringCreateWithBytesNoCopy( |
1223 NULL, | 1223 NULL, |
1224 reinterpret_cast<const UInt8*>(string1.c_str()), | 1224 reinterpret_cast<const UInt8*>(string1.c_str()), |
1225 string1.length(), | 1225 string1.length(), |
1226 kCFStringEncodingUTF8, | 1226 kCFStringEncodingUTF8, |
1227 false, | 1227 false, |
1228 kCFAllocatorNull)); | 1228 kCFAllocatorNull)); |
1229 mac::ScopedCFTypeRef<CFStringRef> cfstring2( | 1229 ScopedCFTypeRef<CFStringRef> cfstring2( |
1230 CFStringCreateWithBytesNoCopy( | 1230 CFStringCreateWithBytesNoCopy( |
1231 NULL, | 1231 NULL, |
1232 reinterpret_cast<const UInt8*>(string2.c_str()), | 1232 reinterpret_cast<const UInt8*>(string2.c_str()), |
1233 string2.length(), | 1233 string2.length(), |
1234 kCFStringEncodingUTF8, | 1234 kCFStringEncodingUTF8, |
1235 false, | 1235 false, |
1236 kCFAllocatorNull)); | 1236 kCFAllocatorNull)); |
1237 return CFStringCompare(cfstring1, | 1237 return CFStringCompare(cfstring1, |
1238 cfstring2, | 1238 cfstring2, |
1239 kCFCompareCaseInsensitive); | 1239 kCFCompareCaseInsensitive); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1291 #else | 1291 #else |
1292 return *this; | 1292 return *this; |
1293 #endif | 1293 #endif |
1294 } | 1294 } |
1295 | 1295 |
1296 } // namespace base | 1296 } // namespace base |
1297 | 1297 |
1298 void PrintTo(const base::FilePath& path, std::ostream* out) { | 1298 void PrintTo(const base::FilePath& path, std::ostream* out) { |
1299 *out << path.value(); | 1299 *out << path.value(); |
1300 } | 1300 } |
OLD | NEW |