aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2023-12-26 18:11:55 -0800
committerRose Hogenson <rosehogenson@posteo.net>2023-12-26 18:11:55 -0800
commit9f6447adb277ac7ea6332600d56b98666189168e (patch)
tree75a06e33220d93ea682d4c4904bb62e1e1d9c90a /src/main.rs
parentd321e38ffa410c7e2136e623245c04eebb842c1f (diff)
downloadeditor-9f6447adb277ac7ea6332600d56b98666189168e.tar.zst
Add function to get terminal size.
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/main.rs b/src/main.rs
index 5302d59..bb3797d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,22 +1,36 @@
mod rope;
+mod tiocgwinsz;
use rope::Rope;
-use std::ffi::OsString;
+use std::ffi::{OsStr, OsString};
use std::path::Path;
+fn edit(file: &OsStr) -> Result<(), String> {
+ let r = match Rope::open(Path::new(file)) {
+ Ok(r) => r,
+ Err(err) => {
+ return Err(format!("open file {}: {}", file.to_string_lossy(), err));
+ }
+ };
+ println!("{}", r);
+ let size = match tiocgwinsz::size() {
+ Some(size) => size,
+ None => {
+ return Err(String::from("cannot get terminal size"));
+ }
+ };
+ println!("{}, {}", size.ws_row, size.ws_col);
+ return Ok(());
+}
+
fn main() {
let args: Vec<OsString> = std::env::args_os().collect();
if args.len() != 2 {
println!("Usage: edit <filename>");
std::process::exit(1);
}
- let file = Path::new(&args[1]);
- let r = match Rope::open(file) {
- Ok(r) => r,
- Err(err) => {
- println!("FAIL: open file {}: {}", file.to_string_lossy(), err);
- std::process::exit(1);
- }
- };
- println!("{}", r);
+ if let Err(err) = edit(&args[0]) {
+ println!("FAIL: {}", err);
+ std::process::exit(1);
+ }
}