13345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 53345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#ifndef BASE_I18N_FILE_UTIL_ICU_H_ 63345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#define BASE_I18N_FILE_UTIL_ICU_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 93345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// File utilities that use the ICU library go in this file. 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/file_path.h" 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/string16.h" 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace file_util { 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Returns true if file_name does not have any illegal character. The input 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// param has the same restriction as that for ReplaceIllegalCharacters. 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottbool IsFilenameLegal(const string16& file_name); 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Replaces characters in 'file_name' that are illegal for file names with 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// 'replace_char'. 'file_name' must not be a full or relative path, but just the 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// file name component (since slashes are considered illegal). Any leading or 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// trailing whitespace in 'file_name' is removed. 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Example: 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// file_name == "bad:file*name?.txt", changed to: "bad-file-name-.txt" when 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// 'replace_char' is '-'. 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid ReplaceIllegalCharactersInPath(FilePath::StringType* file_name, 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott char replace_char); 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Compares two filenames using the current locale information. This can be 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// used to sort directory listings. It behaves like "operator<" for use in 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// std::sort. 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottbool LocaleAwareCompareFilenames(const FilePath& a, const FilePath& b); 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} // namespace file_util 363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#endif // BASE_I18N_FILE_UTIL_ICU_H_ 38