blob: 5fc6d443523b83fef4a7bbdb1b7f7a6bb3cdd094 [file] [log] [blame]
François Degrosbf7bb592019-07-12 09:49:52 +10001// Copyright 2019 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "cros-disks/error_logger.h"
6
7#include <type_traits>
8
9namespace cros_disks {
10
François Degros92147062020-07-12 15:25:55 +100011#define CROS_DISKS_PRINT(X) \
12 case X: \
13 return out << #X;
14
François Degrosbf7bb592019-07-12 09:49:52 +100015std::ostream& operator<<(std::ostream& out, const FormatErrorType error) {
16 switch (error) {
François Degros92147062020-07-12 15:25:55 +100017 CROS_DISKS_PRINT(FORMAT_ERROR_NONE)
18 CROS_DISKS_PRINT(FORMAT_ERROR_UNKNOWN)
19 CROS_DISKS_PRINT(FORMAT_ERROR_INTERNAL)
20 CROS_DISKS_PRINT(FORMAT_ERROR_INVALID_DEVICE_PATH)
21 CROS_DISKS_PRINT(FORMAT_ERROR_DEVICE_BEING_FORMATTED)
22 CROS_DISKS_PRINT(FORMAT_ERROR_UNSUPPORTED_FILESYSTEM)
23 CROS_DISKS_PRINT(FORMAT_ERROR_FORMAT_PROGRAM_NOT_FOUND)
24 CROS_DISKS_PRINT(FORMAT_ERROR_FORMAT_PROGRAM_FAILED)
25 CROS_DISKS_PRINT(FORMAT_ERROR_DEVICE_NOT_ALLOWED)
26 CROS_DISKS_PRINT(FORMAT_ERROR_INVALID_OPTIONS)
27 CROS_DISKS_PRINT(FORMAT_ERROR_LONG_NAME)
28 CROS_DISKS_PRINT(FORMAT_ERROR_INVALID_CHARACTER)
François Degrosbf7bb592019-07-12 09:49:52 +100029 }
François Degros92147062020-07-12 15:25:55 +100030 return out << "FORMAT_ERROR_"
31 << static_cast<std::underlying_type_t<FormatErrorType>>(error);
François Degrosbf7bb592019-07-12 09:49:52 +100032}
33
34std::ostream& operator<<(std::ostream& out, const MountErrorType error) {
35 switch (error) {
François Degros92147062020-07-12 15:25:55 +100036 CROS_DISKS_PRINT(MOUNT_ERROR_NONE)
37 CROS_DISKS_PRINT(MOUNT_ERROR_UNKNOWN)
38 CROS_DISKS_PRINT(MOUNT_ERROR_INTERNAL)
39 CROS_DISKS_PRINT(MOUNT_ERROR_INVALID_ARGUMENT)
40 CROS_DISKS_PRINT(MOUNT_ERROR_INVALID_PATH)
41 CROS_DISKS_PRINT(MOUNT_ERROR_PATH_ALREADY_MOUNTED)
42 CROS_DISKS_PRINT(MOUNT_ERROR_PATH_NOT_MOUNTED)
43 CROS_DISKS_PRINT(MOUNT_ERROR_DIRECTORY_CREATION_FAILED)
44 CROS_DISKS_PRINT(MOUNT_ERROR_INVALID_MOUNT_OPTIONS)
45 CROS_DISKS_PRINT(MOUNT_ERROR_INVALID_UNMOUNT_OPTIONS)
46 CROS_DISKS_PRINT(MOUNT_ERROR_INSUFFICIENT_PERMISSIONS)
47 CROS_DISKS_PRINT(MOUNT_ERROR_MOUNT_PROGRAM_NOT_FOUND)
48 CROS_DISKS_PRINT(MOUNT_ERROR_MOUNT_PROGRAM_FAILED)
49 CROS_DISKS_PRINT(MOUNT_ERROR_NEED_PASSWORD)
50 CROS_DISKS_PRINT(MOUNT_ERROR_INVALID_DEVICE_PATH)
51 CROS_DISKS_PRINT(MOUNT_ERROR_UNKNOWN_FILESYSTEM)
52 CROS_DISKS_PRINT(MOUNT_ERROR_UNSUPPORTED_FILESYSTEM)
53 CROS_DISKS_PRINT(MOUNT_ERROR_INVALID_ARCHIVE)
54 CROS_DISKS_PRINT(MOUNT_ERROR_UNSUPPORTED_ARCHIVE)
François Degrosbf7bb592019-07-12 09:49:52 +100055 }
François Degros92147062020-07-12 15:25:55 +100056 return out << "MOUNT_ERROR_"
57 << static_cast<std::underlying_type_t<MountErrorType>>(error);
François Degrosbf7bb592019-07-12 09:49:52 +100058}
59
Omid Tourzan73547ea2020-08-28 13:00:39 +100060std::ostream& operator<<(std::ostream& out, const PartitionErrorType error) {
61 switch (error) {
62 CROS_DISKS_PRINT(PARTITION_ERROR_NONE)
63 CROS_DISKS_PRINT(PARTITION_ERROR_UNKNOWN)
64 CROS_DISKS_PRINT(PARTITION_ERROR_INTERNAL)
65 CROS_DISKS_PRINT(PARTITION_ERROR_INVALID_DEVICE_PATH)
66 CROS_DISKS_PRINT(PARTITION_ERROR_DEVICE_BEING_PARTITIONED)
67 CROS_DISKS_PRINT(PARTITION_ERROR_PROGRAM_NOT_FOUND)
68 CROS_DISKS_PRINT(PARTITION_ERROR_PROGRAM_FAILED)
69 CROS_DISKS_PRINT(PARTITION_ERROR_DEVICE_NOT_ALLOWED)
70 }
71 return out << "PARTITION_ERROR_"
72 << static_cast<std::underlying_type_t<PartitionErrorType>>(error);
73}
74
François Degrosbf7bb592019-07-12 09:49:52 +100075std::ostream& operator<<(std::ostream& out, const RenameErrorType error) {
76 switch (error) {
François Degros92147062020-07-12 15:25:55 +100077 CROS_DISKS_PRINT(RENAME_ERROR_NONE)
78 CROS_DISKS_PRINT(RENAME_ERROR_UNKNOWN)
79 CROS_DISKS_PRINT(RENAME_ERROR_INTERNAL)
80 CROS_DISKS_PRINT(RENAME_ERROR_INVALID_DEVICE_PATH)
81 CROS_DISKS_PRINT(RENAME_ERROR_DEVICE_BEING_RENAMED)
82 CROS_DISKS_PRINT(RENAME_ERROR_UNSUPPORTED_FILESYSTEM)
83 CROS_DISKS_PRINT(RENAME_ERROR_RENAME_PROGRAM_NOT_FOUND)
84 CROS_DISKS_PRINT(RENAME_ERROR_RENAME_PROGRAM_FAILED)
85 CROS_DISKS_PRINT(RENAME_ERROR_DEVICE_NOT_ALLOWED)
86 CROS_DISKS_PRINT(RENAME_ERROR_LONG_NAME)
87 CROS_DISKS_PRINT(RENAME_ERROR_INVALID_CHARACTER)
François Degrosbf7bb592019-07-12 09:49:52 +100088 }
François Degros92147062020-07-12 15:25:55 +100089 return out << "RENAME_ERROR_"
90 << static_cast<std::underlying_type_t<RenameErrorType>>(error);
François Degrosbf7bb592019-07-12 09:49:52 +100091}
92
93} // namespace cros_disks