summary refs log tree commit diff
path: root/arch
diff options
context:
space:
mode:
authorDaniel Verkamp <dverkamp@chromium.org>2020-03-25 14:38:17 -0700
committerCommit Bot <commit-bot@chromium.org>2020-04-23 07:17:57 +0000
commite538d5216fe1ec0f9755e1550cd7e67304653982 (patch)
tree0e6358db3f0b5db574ca89bc9530271b90f2ac85 /arch
parentfbd6122f0b722f40bb14f0c3a26342fa46d5a89d (diff)
downloadcrosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar
crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar.gz
crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar.bz2
crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar.lz
crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar.xz
crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar.zst
crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.zip
arch: serial: simplify device creation
Factor out the call to Serial::new so it isn't repeated for each output
type.

BUG=chromium:1059924
TEST=cargo build

Change-Id: Ie0ad65b4315173a3f2a7c2bf04f041ad3b2157f1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2127320
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/src/serial.rs27
1 files changed, 12 insertions, 15 deletions
diff --git a/arch/src/serial.rs b/arch/src/serial.rs
index 58947b5..c0e27dc 100644
--- a/arch/src/serial.rs
+++ b/arch/src/serial.rs
@@ -122,33 +122,30 @@ impl SerialParameters {
         } else {
             None
         };
-        match self.type_ {
+        let output: Option<Box<dyn io::Write + Send>> = match self.type_ {
             SerialType::Stdout => {
                 keep_fds.push(stdout().as_raw_fd());
-                Ok(Serial::new(evt_fd, input, Some(Box::new(stdout()))))
+                Some(Box::new(stdout()))
             }
-            SerialType::Sink => Ok(Serial::new(evt_fd, input, None)),
+            SerialType::Sink => None,
             SerialType::Syslog => {
                 syslog::push_fds(keep_fds);
-                Ok(Serial::new(
-                    evt_fd,
-                    input,
-                    Some(Box::new(syslog::Syslogger::new(
-                        syslog::Priority::Info,
-                        syslog::Facility::Daemon,
-                    ))),
-                ))
+                Some(Box::new(syslog::Syslogger::new(
+                    syslog::Priority::Info,
+                    syslog::Facility::Daemon,
+                )))
             }
             SerialType::File => match &self.path {
                 Some(path) => {
                     let file = File::create(path.as_path()).map_err(Error::FileError)?;
                     keep_fds.push(file.as_raw_fd());
-                    Ok(Serial::new(evt_fd, input, Some(Box::new(file))))
+                    Some(Box::new(file))
                 }
-                _ => Err(Error::PathRequired),
+                None => return Err(Error::PathRequired),
             },
-            SerialType::UnixSocket => Err(Error::Unimplemented(SerialType::UnixSocket)),
-        }
+            SerialType::UnixSocket => return Err(Error::Unimplemented(SerialType::UnixSocket)),
+        };
+        Ok(Serial::new(evt_fd, input, output))
     }
 }