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_FILESYSTEMLIKE_H
kwengryn3 0:bfff72fb3650 18 #define MBED_FILESYSTEMLIKE_H
kwengryn3 0:bfff72fb3650 19
kwengryn3 0:bfff72fb3650 20 #include "platform/platform.h"
kwengryn3 0:bfff72fb3650 21
kwengryn3 0:bfff72fb3650 22 #include "platform/FileSystemHandle.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_FileSystemLike FileSystemLike 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 FileSystemLike : public FileSystemHandle, public FileBase, private NonCopyable<FileSystemLike> {
kwengryn3 0:bfff72fb3650 45 public:
kwengryn3 0:bfff72fb3650 46 /** FileSystemLike lifetime
kwengryn3 0:bfff72fb3650 47 */
kwengryn3 0:bfff72fb3650 48 FileSystemLike(const char *name = NULL) : FileBase(name, FileSystemPathType) {}
kwengryn3 0:bfff72fb3650 49 virtual ~FileSystemLike() {}
kwengryn3 0:bfff72fb3650 50
kwengryn3 0:bfff72fb3650 51 // Inherited functions with name conflicts
kwengryn3 0:bfff72fb3650 52 using FileSystemHandle::open;
kwengryn3 0:bfff72fb3650 53
kwengryn3 0:bfff72fb3650 54 /** Open a file on the filesystem
kwengryn3 0:bfff72fb3650 55 *
kwengryn3 0:bfff72fb3650 56 * @param path The name of the file to open
kwengryn3 0:bfff72fb3650 57 * @param flags The flags to open the file in, one of O_RDONLY, O_WRONLY, O_RDWR,
kwengryn3 0:bfff72fb3650 58 * bitwise or'd with one of O_CREAT, O_TRUNC, O_APPEND
kwengryn3 0:bfff72fb3650 59 * @return A file handle on success, NULL on failure
kwengryn3 0:bfff72fb3650 60 * @deprecated Replaced by `int open(FileHandle **, ...)` for propagating error codes
kwengryn3 0:bfff72fb3650 61 */
kwengryn3 0:bfff72fb3650 62 MBED_DEPRECATED_SINCE("mbed-os-5.5",
kwengryn3 0:bfff72fb3650 63 "Replaced by `int open(FileHandle **, ...)` for propagating error codes")
kwengryn3 0:bfff72fb3650 64 FileHandle *open(const char *path, int flags)
kwengryn3 0:bfff72fb3650 65 {
kwengryn3 0:bfff72fb3650 66 FileHandle *file;
kwengryn3 0:bfff72fb3650 67 int err = open(&file, path, flags);
kwengryn3 0:bfff72fb3650 68 return err ? NULL : file;
kwengryn3 0:bfff72fb3650 69 }
kwengryn3 0:bfff72fb3650 70
kwengryn3 0:bfff72fb3650 71 /** Open a directory on the filesystem
kwengryn3 0:bfff72fb3650 72 *
kwengryn3 0:bfff72fb3650 73 * @param path Name of the directory to open
kwengryn3 0:bfff72fb3650 74 * @return A directory handle on success, NULL on failure
kwengryn3 0:bfff72fb3650 75 * @deprecated Replaced by `int open(DirHandle **, ...)` for propagating error codes
kwengryn3 0:bfff72fb3650 76 */
kwengryn3 0:bfff72fb3650 77 MBED_DEPRECATED_SINCE("mbed-os-5.5",
kwengryn3 0:bfff72fb3650 78 "Replaced by `int open(DirHandle **, ...)` for propagating error codes")
kwengryn3 0:bfff72fb3650 79 DirHandle *opendir(const char *path)
kwengryn3 0:bfff72fb3650 80 {
kwengryn3 0:bfff72fb3650 81 DirHandle *dir;
kwengryn3 0:bfff72fb3650 82 int err = open(&dir, path);
kwengryn3 0:bfff72fb3650 83 return err ? NULL : dir;
kwengryn3 0:bfff72fb3650 84 }
kwengryn3 0:bfff72fb3650 85 };
kwengryn3 0:bfff72fb3650 86
kwengryn3 0:bfff72fb3650 87 /**@}*/
kwengryn3 0:bfff72fb3650 88
kwengryn3 0:bfff72fb3650 89 /**@}*/
kwengryn3 0:bfff72fb3650 90
kwengryn3 0:bfff72fb3650 91 } // namespace mbed
kwengryn3 0:bfff72fb3650 92
kwengryn3 0:bfff72fb3650 93 #endif