update

Committer:
kwengryn3
Date:
Thu Apr 08 16:43:07 2021 +0000
Revision:
0:bfff72fb3650
update;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kwengryn3 0:bfff72fb3650 1 /* mbed Microcontroller Library
kwengryn3 0:bfff72fb3650 2 * Copyright (c) 2006-2013 ARM Limited
kwengryn3 0:bfff72fb3650 3 * SPDX-License-Identifier: Apache-2.0
kwengryn3 0:bfff72fb3650 4 *
kwengryn3 0:bfff72fb3650 5 * Licensed under the Apache License, Version 2.0 (the "License");
kwengryn3 0:bfff72fb3650 6 * you may not use this file except in compliance with the License.
kwengryn3 0:bfff72fb3650 7 * You may obtain a copy of the License at
kwengryn3 0:bfff72fb3650 8 *
kwengryn3 0:bfff72fb3650 9 * http://www.apache.org/licenses/LICENSE-2.0
kwengryn3 0:bfff72fb3650 10 *
kwengryn3 0:bfff72fb3650 11 * Unless required by applicable law or agreed to in writing, software
kwengryn3 0:bfff72fb3650 12 * distributed under the License is distributed on an "AS IS" BASIS,
kwengryn3 0:bfff72fb3650 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kwengryn3 0:bfff72fb3650 14 * See the License for the specific language governing permissions and
kwengryn3 0:bfff72fb3650 15 * limitations under the License.
kwengryn3 0:bfff72fb3650 16 */
kwengryn3 0:bfff72fb3650 17 #ifndef MBED_FILESYSTEMHANDLE_H
kwengryn3 0:bfff72fb3650 18 #define MBED_FILESYSTEMHANDLE_H
kwengryn3 0:bfff72fb3650 19
kwengryn3 0:bfff72fb3650 20 #include "platform/platform.h"
kwengryn3 0:bfff72fb3650 21
kwengryn3 0:bfff72fb3650 22 #include "platform/FileBase.h"
kwengryn3 0:bfff72fb3650 23 #include "platform/FileHandle.h"
kwengryn3 0:bfff72fb3650 24 #include "platform/DirHandle.h"
kwengryn3 0:bfff72fb3650 25 #include "platform/NonCopyable.h"
kwengryn3 0:bfff72fb3650 26
kwengryn3 0:bfff72fb3650 27 namespace mbed {
kwengryn3 0:bfff72fb3650 28 /** \addtogroup platform */
kwengryn3 0:bfff72fb3650 29 /** @{*/
kwengryn3 0:bfff72fb3650 30 /**
kwengryn3 0:bfff72fb3650 31 * \defgroup platform_FileSystemHandle FileSystemHandle functions
kwengryn3 0:bfff72fb3650 32 * @{
kwengryn3 0:bfff72fb3650 33 */
kwengryn3 0:bfff72fb3650 34
kwengryn3 0:bfff72fb3650 35
kwengryn3 0:bfff72fb3650 36 /** A filesystem-like object is one that can be used to open file-like
kwengryn3 0:bfff72fb3650 37 * objects though it by fopen("/name/filename", mode)
kwengryn3 0:bfff72fb3650 38 *
kwengryn3 0:bfff72fb3650 39 * Implementations must define at least open (the default definitions
kwengryn3 0:bfff72fb3650 40 * of the rest of the functions just return error values).
kwengryn3 0:bfff72fb3650 41 *
kwengryn3 0:bfff72fb3650 42 * @note Synchronization level: Set by subclass
kwengryn3 0:bfff72fb3650 43 */
kwengryn3 0:bfff72fb3650 44 class FileSystemHandle : private NonCopyable<FileSystemHandle> {
kwengryn3 0:bfff72fb3650 45 public:
kwengryn3 0:bfff72fb3650 46 /** FileSystemHandle lifetime
kwengryn3 0:bfff72fb3650 47 */
kwengryn3 0:bfff72fb3650 48 virtual ~FileSystemHandle() {}
kwengryn3 0:bfff72fb3650 49
kwengryn3 0:bfff72fb3650 50 /** Open a file on the filesystem
kwengryn3 0:bfff72fb3650 51 *
kwengryn3 0:bfff72fb3650 52 * @param file Destination for the handle to a newly created file
kwengryn3 0:bfff72fb3650 53 * @param filename The name of the file to open
kwengryn3 0:bfff72fb3650 54 * @param flags The flags to open the file in, one of O_RDONLY, O_WRONLY, O_RDWR,
kwengryn3 0:bfff72fb3650 55 * bitwise or'd with one of O_CREAT, O_TRUNC, O_APPEND
kwengryn3 0:bfff72fb3650 56 * @return 0 on success, negative error code on failure
kwengryn3 0:bfff72fb3650 57 */
kwengryn3 0:bfff72fb3650 58 virtual int open(FileHandle **file, const char *filename, int flags) = 0;
kwengryn3 0:bfff72fb3650 59
kwengryn3 0:bfff72fb3650 60 /** Open a directory on the filesystem
kwengryn3 0:bfff72fb3650 61 *
kwengryn3 0:bfff72fb3650 62 * @param dir Destination for the handle to the directory
kwengryn3 0:bfff72fb3650 63 * @param path Name of the directory to open
kwengryn3 0:bfff72fb3650 64 * @return 0 on success, negative error code on failure
kwengryn3 0:bfff72fb3650 65 */
kwengryn3 0:bfff72fb3650 66 virtual int open(DirHandle **dir, const char *path);
kwengryn3 0:bfff72fb3650 67
kwengryn3 0:bfff72fb3650 68 /** Remove a file from the filesystem.
kwengryn3 0:bfff72fb3650 69 *
kwengryn3 0:bfff72fb3650 70 * @param path The name of the file to remove.
kwengryn3 0:bfff72fb3650 71 * @return 0 on success, negative error code on failure
kwengryn3 0:bfff72fb3650 72 */
kwengryn3 0:bfff72fb3650 73 virtual int remove(const char *path);
kwengryn3 0:bfff72fb3650 74
kwengryn3 0:bfff72fb3650 75 /** Rename a file in the filesystem.
kwengryn3 0:bfff72fb3650 76 *
kwengryn3 0:bfff72fb3650 77 * @param path The name of the file to rename.
kwengryn3 0:bfff72fb3650 78 * @param newpath The name to rename it to
kwengryn3 0:bfff72fb3650 79 * @return 0 on success, negative error code on failure
kwengryn3 0:bfff72fb3650 80 */
kwengryn3 0:bfff72fb3650 81 virtual int rename(const char *path, const char *newpath);
kwengryn3 0:bfff72fb3650 82
kwengryn3 0:bfff72fb3650 83 /** Store information about the file in a stat structure
kwengryn3 0:bfff72fb3650 84 *
kwengryn3 0:bfff72fb3650 85 * @param path The name of the file to find information about
kwengryn3 0:bfff72fb3650 86 * @param st The stat buffer to write to
kwengryn3 0:bfff72fb3650 87 * @return 0 on success, negative error code on failure
kwengryn3 0:bfff72fb3650 88 */
kwengryn3 0:bfff72fb3650 89 virtual int stat(const char *path, struct stat *st);
kwengryn3 0:bfff72fb3650 90
kwengryn3 0:bfff72fb3650 91 /** Create a directory in the filesystem.
kwengryn3 0:bfff72fb3650 92 *
kwengryn3 0:bfff72fb3650 93 * @param path The name of the directory to create.
kwengryn3 0:bfff72fb3650 94 * @param mode The permissions with which to create the directory
kwengryn3 0:bfff72fb3650 95 * @return 0 on success, negative error code on failure
kwengryn3 0:bfff72fb3650 96 */
kwengryn3 0:bfff72fb3650 97 virtual int mkdir(const char *path, mode_t mode);
kwengryn3 0:bfff72fb3650 98
kwengryn3 0:bfff72fb3650 99 /** Store information about the mounted filesystem in a statvfs structure
kwengryn3 0:bfff72fb3650 100 *
kwengryn3 0:bfff72fb3650 101 * @param path The name of the file to find information about
kwengryn3 0:bfff72fb3650 102 * @param buf The stat buffer to write to
kwengryn3 0:bfff72fb3650 103 * @return 0 on success, negative error code on failure
kwengryn3 0:bfff72fb3650 104 */
kwengryn3 0:bfff72fb3650 105 virtual int statvfs(const char *path, struct statvfs *buf);
kwengryn3 0:bfff72fb3650 106 };
kwengryn3 0:bfff72fb3650 107 /**@}*/
kwengryn3 0:bfff72fb3650 108
kwengryn3 0:bfff72fb3650 109 /**@}*/
kwengryn3 0:bfff72fb3650 110
kwengryn3 0:bfff72fb3650 111 } // namespace mbed
kwengryn3 0:bfff72fb3650 112
kwengryn3 0:bfff72fb3650 113 #endif