MCPcopy Create free account
hub / github.com/Freax13/mushroom / queue_input_char

Method queue_input_char

tee/kernel/src/char_dev/char.rs:722–761  ·  view source on GitHub ↗
(&mut self, c: u8)

Source from the content-addressed store, hash-verified

720 }
721
722 fn queue_input_char(&mut self, c: u8) -> Result<()> {
723 if !self.termios.local_modes.contains(LocalMode::ICANON) {
724 if self.input_buffer.len() < self.input_buffer.capacity() - 2 {
725 self.input_buffer.push(c);
726 }
727 return Ok(());
728 }
729
730 assert_ne!(c, 0);
731
732 if self.is_line_end(c) {
733 self.input_buffer.try_push(c).map_err(|_| err!(Again))?;
734 self.slave_read_counter.inc();
735 return Ok(());
736 } else if c == self.termios.special_characters.erase {
737 todo!()
738 } else if c == self.termios.special_characters.intr {
739 todo!()
740 } else if c == self.termios.special_characters.kill {
741 todo!()
742 } else if c == self.termios.special_characters.lnext {
743 todo!()
744 } else if c == self.termios.special_characters.quit {
745 todo!()
746 } else if c == self.termios.special_characters.reprint {
747 todo!()
748 } else if c == self.termios.special_characters.start {
749 todo!()
750 } else if c == self.termios.special_characters.stop {
751 todo!()
752 } else if c == self.termios.special_characters.susp {
753 todo!()
754 } else if c == self.termios.special_characters.werase {
755 todo!()
756 } else if self.input_buffer.len() < self.input_buffer.capacity() - 2 {
757 self.input_buffer.push(c);
758 }
759
760 Ok(())
761 }
762
763 fn is_line_end(&self, c: u8) -> bool {
764 c == b'\n'

Callers 1

write_byte_to_inputMethod · 0.80

Calls 6

capacityMethod · 0.80
is_line_endMethod · 0.80
incMethod · 0.80
containsMethod · 0.45
lenMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected