blob: 7ddbbd7e6c050ec80ff78b3009b2d66377a3909c [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:26 +00001/*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef _WEBRTC_BASE_WIN32FILESYSTEM_H__
12#define _WEBRTC_BASE_WIN32FILESYSTEM_H__
13
14#include "fileutils.h"
15
16namespace rtc {
17
18class Win32Filesystem : public FilesystemInterface {
19 public:
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000020 // This will attempt to delete the path located at filename.
21 // If the path points to a folder, it will fail with VERIFY
nissef52ef712017-06-13 00:10:07 -070022 bool DeleteFile(const Pathname& filename) override;
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000023
24 // Creates a directory. This will call itself recursively to create /foo/bar even if
25 // /foo does not exist.
26 // Returns TRUE if function succeeds
nissef52ef712017-06-13 00:10:07 -070027 bool CreateFolder(const Pathname& pathname) override;
28
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000029 // This moves a file from old_path to new_path. If the new path is on a
30 // different volume than the old, it will attempt to copy and then delete
31 // the folder
32 // Returns true if the file is successfully moved
nissef52ef712017-06-13 00:10:07 -070033 bool MoveFile(const Pathname& old_path, const Pathname& new_path) override;
34
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000035 // Returns true if a pathname is a directory
nissef52ef712017-06-13 00:10:07 -070036 bool IsFolder(const Pathname& pathname) override;
37
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000038 // Returns true if a file exists at path
nissef52ef712017-06-13 00:10:07 -070039 bool IsFile(const Pathname& path) override;
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000040
41 // Returns true if pathname refers to no filesystem object, every parent
42 // directory either exists, or is also absent.
nissef52ef712017-06-13 00:10:07 -070043 bool IsAbsent(const Pathname& pathname) override;
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000044
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000045 // All of the following functions set pathname and return true if successful.
46 // Returned paths always include a trailing backslash.
47 // If create is true, the path will be recursively created.
deadbeef37f5ecf2017-02-27 14:06:41 -080048 // If append is non-null, it will be appended (and possibly created).
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000049
nissef52ef712017-06-13 00:10:07 -070050 std::string TempFilename(const Pathname& dir,
51 const std::string& prefix) override;
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000052
nissef52ef712017-06-13 00:10:07 -070053 bool GetFileSize(const Pathname& path, size_t* size) override;
54 bool GetFileTime(const Pathname& path,
55 FileTimeType which,
56 time_t* time) override;
nisseda35f3e2016-10-27 04:44:39 -070057
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000058 // A folder appropriate for storing temporary files (Contents are
59 // automatically deleted when the program exists)
nissef52ef712017-06-13 00:10:07 -070060 bool GetTemporaryFolder(Pathname& path,
61 bool create,
62 const std::string* append) override;
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000063
nisseda35f3e2016-10-27 04:44:39 -070064 private:
65 // Returns the path to the running application.
66 bool GetAppPathname(Pathname* path);
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000067};
68
69} // namespace rtc
70
71#endif // WEBRTC_WINFILESYSTEM_H__