mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
Refactoring ScpFileTransfer::parse_ls_output
This commit is contained in:
@@ -36,10 +36,13 @@ use crate::utils::parser::parse_lstime;
|
|||||||
// Includes
|
// Includes
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use ssh2::{Channel, Session};
|
use ssh2::{Channel, Session};
|
||||||
use std::io::{BufReader, BufWriter, Read, Write};
|
|
||||||
use std::net::TcpStream;
|
use std::net::TcpStream;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::time::SystemTime;
|
use std::time::SystemTime;
|
||||||
|
use std::{
|
||||||
|
io::{BufReader, BufWriter, Read, Write},
|
||||||
|
ops::Range,
|
||||||
|
};
|
||||||
|
|
||||||
/// ## ScpFileTransfer
|
/// ## ScpFileTransfer
|
||||||
///
|
///
|
||||||
@@ -92,61 +95,28 @@ impl ScpFileTransfer {
|
|||||||
if metadata.get(2).unwrap().as_str().len() < 9 {
|
if metadata.get(2).unwrap().as_str().len() < 9 {
|
||||||
return Err(());
|
return Err(());
|
||||||
}
|
}
|
||||||
// Get unix pex
|
|
||||||
let unix_pex: (u8, u8, u8) = {
|
let pex = |range: Range<usize>| {
|
||||||
let owner_pex: u8 = {
|
let mut count: u8 = 0;
|
||||||
let mut count: u8 = 0;
|
for (i, c) in metadata.get(2).unwrap().as_str()[range].chars().enumerate() {
|
||||||
for (i, c) in metadata.get(2).unwrap().as_str()[0..3].chars().enumerate() {
|
match c {
|
||||||
match c {
|
'-' => {}
|
||||||
'-' => {}
|
_ => {
|
||||||
_ => {
|
count += match i {
|
||||||
count += match i {
|
0 => 4,
|
||||||
0 => 4,
|
1 => 2,
|
||||||
1 => 2,
|
2 => 1,
|
||||||
2 => 1,
|
_ => 0,
|
||||||
_ => 0,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
count
|
}
|
||||||
};
|
count
|
||||||
let group_pex: u8 = {
|
|
||||||
let mut count: u8 = 0;
|
|
||||||
for (i, c) in metadata.get(2).unwrap().as_str()[3..6].chars().enumerate() {
|
|
||||||
match c {
|
|
||||||
'-' => {}
|
|
||||||
_ => {
|
|
||||||
count += match i {
|
|
||||||
0 => 4,
|
|
||||||
1 => 2,
|
|
||||||
2 => 1,
|
|
||||||
_ => 0,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
count
|
|
||||||
};
|
|
||||||
let others_pex: u8 = {
|
|
||||||
let mut count: u8 = 0;
|
|
||||||
for (i, c) in metadata.get(2).unwrap().as_str()[6..9].chars().enumerate() {
|
|
||||||
match c {
|
|
||||||
'-' => {}
|
|
||||||
_ => {
|
|
||||||
count += match i {
|
|
||||||
0 => 4,
|
|
||||||
1 => 2,
|
|
||||||
2 => 1,
|
|
||||||
_ => 0,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
count
|
|
||||||
};
|
|
||||||
(owner_pex, group_pex, others_pex)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Get unix pex
|
||||||
|
let unix_pex = (pex(0..3), pex(3..6), pex(6..9));
|
||||||
|
|
||||||
// Parse mtime and convert to SystemTime
|
// Parse mtime and convert to SystemTime
|
||||||
let mtime: SystemTime = match parse_lstime(
|
let mtime: SystemTime = match parse_lstime(
|
||||||
metadata.get(7).unwrap().as_str(),
|
metadata.get(7).unwrap().as_str(),
|
||||||
|
|||||||
Reference in New Issue
Block a user