aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
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);
+ }
}