15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef BASE_I18N_FILE_UTIL_ICU_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define BASE_I18N_FILE_UTIL_ICU_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// File utilities that use the ICU library go in this file. 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/i18n/base_i18n_export.h" 12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace base { 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace i18n { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns true if file_name does not have any illegal character. The input 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// param has the same restriction as that for ReplaceIllegalCharacters. 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)BASE_I18N_EXPORT bool IsFilenameLegal(const string16& file_name); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Replaces characters in 'file_name' that are illegal for file names with 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 'replace_char'. 'file_name' must not be a full or relative path, but just the 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// file name component (since slashes are considered illegal). Any leading or 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// trailing whitespace in 'file_name' is removed. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Example: 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// file_name == "bad:file*name?.txt", changed to: "bad-file-name-.txt" when 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 'replace_char' is '-'. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BASE_I18N_EXPORT void ReplaceIllegalCharactersInPath( 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) FilePath::StringType* file_name, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char replace_char); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Compares two filenames using the current locale information. This can be 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// used to sort directory listings. It behaves like "operator<" for use in 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// std::sort. 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)BASE_I18N_EXPORT bool LocaleAwareCompareFilenames(const FilePath& a, 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const FilePath& b); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Calculates the canonical file-system representation of |file_name| base name. 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Modifies |file_name| in place. No-op if not on ChromeOS. 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)BASE_I18N_EXPORT void NormalizeFileNameEncoding(FilePath* file_name); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace i18n 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace base 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // BASE_I18N_FILE_UTIL_ICU_H_ 46