12fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa/* 22fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * Copyright (C) 2013, The Android Open Source Project 32fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * 42fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * Licensed under the Apache License, Version 2.0 (the "License"); 52fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * you may not use this file except in compliance with the License. 62fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * You may obtain a copy of the License at 72fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * 82fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * http://www.apache.org/licenses/LICENSE-2.0 92fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * 102fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * Unless required by applicable law or agreed to in writing, software 112fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * distributed under the License is distributed on an "AS IS" BASIS, 122fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * See the License for the specific language governing permissions and 142fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * limitations under the License. 152fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa */ 162fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 172fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa#ifndef LATINIME_FILE_UTILS_H 182fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa#define LATINIME_FILE_UTILS_H 192fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 202fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa#include "defines.h" 212fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 222fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasanamespace latinime { 232fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 242fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasaclass FileUtils { 252fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa public: 262fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa // Returns -1 on error. 272fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa static int getFileSize(const char *const filePath); 282fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 292fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa static bool existsDir(const char *const dirPath); 302fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 312fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa // Remove a directory and all files in the directory. 322fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa static bool removeDirAndFiles(const char *const dirPath); 332fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 342fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa static int getFilePathWithSuffixBufSize(const char *const filePath, const char *const suffix); 352fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 362fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa static void getFilePathWithSuffix(const char *const filePath, const char *const suffix, 372fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa const int filePathBufSize, char *const outFilePath); 382fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 392fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa static int getFilePathBufSize(const char *const dirPath, const char *const fileName); 402fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 412fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa static void getFilePath(const char *const dirPath, const char *const fileName, 422fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa const int filePathBufSize, char *const outFilePath); 432fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 442fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa // Returns whether the filePath have the suffix. 452fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa static bool getFilePathWithoutSuffix(const char *const filePath, const char *const suffix, 462fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa const int dirPathBufSize, char *const outDirPath); 472fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 482fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa static void getDirPath(const char *const filePath, const int dirPathBufSize, 492fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa char *const outDirPath); 502fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 512fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa static void getBasename(const char *const filePath, const int outNameBufSize, 522fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa char *const outName); 532fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 542fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa private: 552fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa DISALLOW_IMPLICIT_CONSTRUCTORS(FileUtils); 56a245d15da5d295af21ead9a01583c64796a31ad7Jean Chalard 57a245d15da5d295af21ead9a01583c64796a31ad7Jean Chalard static bool removeDirAndFiles(const char *const dirPath, const int maxTries); 582fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa}; 592fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa} // namespace latinime 602fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa#endif /* LATINIME_FILE_UTILS_H */ 61