|
|
@ -498,10 +498,10 @@ pub unsafe extern "C" fn dial(
|
|
|
|
);
|
|
|
|
);
|
|
|
|
hints.ai_family = 0 as libc::c_int;
|
|
|
|
hints.ai_family = 0 as libc::c_int;
|
|
|
|
hints.ai_socktype = SOCK_STREAM as libc::c_int;
|
|
|
|
hints.ai_socktype = SOCK_STREAM as libc::c_int;
|
|
|
|
if getaddrinfo(host, port, &mut hints, &mut res) != 0 as libc::c_int {
|
|
|
|
if getaddrinfo(CString::new(host).unwrap().into_raw(), port, &mut hints, &mut res) != 0 as libc::c_int {
|
|
|
|
eprintln!(
|
|
|
|
eprintln!(
|
|
|
|
"error: cannot resolve hostname '{}:{}': {}",
|
|
|
|
"error: cannot resolve hostname '{}:{}': {}",
|
|
|
|
CStr::from_ptr(host).to_str().unwrap(),
|
|
|
|
host,
|
|
|
|
CStr::from_ptr(port).to_str().unwrap(),
|
|
|
|
CStr::from_ptr(port).to_str().unwrap(),
|
|
|
|
CStr::from_ptr(strerror(*__errno_location())).to_str().unwrap()
|
|
|
|
CStr::from_ptr(strerror(*__errno_location())).to_str().unwrap()
|
|
|
|
);
|
|
|
|
);
|
|
|
@ -579,7 +579,7 @@ pub unsafe extern "C" fn read_line(
|
|
|
|
return 1 as libc::c_int;
|
|
|
|
return 1 as libc::c_int;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pub unsafe extern "C" fn download_file(
|
|
|
|
pub unsafe extern "C" fn download_file(
|
|
|
|
mut host: *const libc::c_char,
|
|
|
|
mut host: &str,
|
|
|
|
mut port: *const libc::c_char,
|
|
|
|
mut port: *const libc::c_char,
|
|
|
|
mut selector: *const libc::c_char,
|
|
|
|
mut selector: *const libc::c_char,
|
|
|
|
mut fd: libc::c_int,
|
|
|
|
mut fd: libc::c_int,
|
|
|
@ -594,7 +594,7 @@ pub unsafe extern "C" fn download_file(
|
|
|
|
selector,
|
|
|
|
selector,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
srvfd = dial(host, port, selector);
|
|
|
|
srvfd = dial(&host, port, selector);
|
|
|
|
if srvfd == -(1 as libc::c_int) {
|
|
|
|
if srvfd == -(1 as libc::c_int) {
|
|
|
|
printf(
|
|
|
|
printf(
|
|
|
|
b"\x1b[2Kerror: downloading [%s] failed\n\x00" as *const u8
|
|
|
|
b"\x1b[2Kerror: downloading [%s] failed\n\x00" as *const u8
|
|
|
@ -634,7 +634,7 @@ pub unsafe extern "C" fn download_file(
|
|
|
|
return 1 as libc::c_int;
|
|
|
|
return 1 as libc::c_int;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pub unsafe extern "C" fn download_temp(
|
|
|
|
pub unsafe extern "C" fn download_temp(
|
|
|
|
mut host: *const libc::c_char,
|
|
|
|
mut host: &str,
|
|
|
|
mut port: *const libc::c_char,
|
|
|
|
mut port: *const libc::c_char,
|
|
|
|
mut selector: *const libc::c_char,
|
|
|
|
mut selector: *const libc::c_char,
|
|
|
|
) -> libc::c_int {
|
|
|
|
) -> libc::c_int {
|
|
|
@ -831,7 +831,7 @@ pub unsafe extern "C" fn is_valid_directory_entry(
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pub unsafe extern "C" fn view_directory(
|
|
|
|
pub unsafe extern "C" fn view_directory(
|
|
|
|
mut host: String,
|
|
|
|
mut host: &str,
|
|
|
|
mut port: *const libc::c_char,
|
|
|
|
mut port: *const libc::c_char,
|
|
|
|
mut selector: *const libc::c_char,
|
|
|
|
mut selector: *const libc::c_char,
|
|
|
|
mut make_current: libc::c_int,
|
|
|
|
mut make_current: libc::c_int,
|
|
|
@ -842,7 +842,7 @@ pub unsafe extern "C" fn view_directory(
|
|
|
|
let mut head_read: libc::c_int = 0;
|
|
|
|
let mut head_read: libc::c_int = 0;
|
|
|
|
let mut line: [libc::c_char; 1024] = [0; 1024];
|
|
|
|
let mut line: [libc::c_char; 1024] = [0; 1024];
|
|
|
|
let mut head: [[libc::c_char; 1024]; 5] = [[0; 1024]; 5];
|
|
|
|
let mut head: [[libc::c_char; 1024]; 5] = [[0; 1024]; 5];
|
|
|
|
srvfd = dial(host, port, selector);
|
|
|
|
srvfd = dial(&host, port, selector);
|
|
|
|
if srvfd != -(1 as libc::c_int) {
|
|
|
|
if srvfd != -(1 as libc::c_int) {
|
|
|
|
/* only adapt current prompt when successful */
|
|
|
|
/* only adapt current prompt when successful */
|
|
|
|
/* make history entry */
|
|
|
|
/* make history entry */
|
|
|
@ -850,7 +850,7 @@ pub unsafe extern "C" fn view_directory(
|
|
|
|
add_history();
|
|
|
|
add_history();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/* don't overwrite the current_* things... */
|
|
|
|
/* don't overwrite the current_* things... */
|
|
|
|
if host != current_host.as_mut_ptr() as *const libc::c_char {
|
|
|
|
if host != CString::new(current_host.iter().take_while(|x| **x != 0).map(|x| *x as u8).collect::<Vec<_>>()).unwrap().into_string().unwrap() {
|
|
|
|
snprintf(
|
|
|
|
snprintf(
|
|
|
|
current_host.as_mut_ptr(),
|
|
|
|
current_host.as_mut_ptr(),
|
|
|
|
mem::size_of::<[libc::c_char; 512]>() as libc::c_ulong,
|
|
|
|
mem::size_of::<[libc::c_char; 512]>() as libc::c_ulong,
|
|
|
@ -1145,7 +1145,7 @@ pub unsafe extern "C" fn view_history(mut key: libc::c_int) {
|
|
|
|
while let Some(l) = link {
|
|
|
|
while let Some(l) = link {
|
|
|
|
if history_key == key {
|
|
|
|
if history_key == key {
|
|
|
|
view_directory(
|
|
|
|
view_directory(
|
|
|
|
(*l).host,
|
|
|
|
&(*l).host,
|
|
|
|
(*l).port,
|
|
|
|
(*l).port,
|
|
|
|
(*l).selector,
|
|
|
|
(*l).selector,
|
|
|
|
0 as libc::c_int,
|
|
|
|
0 as libc::c_int,
|
|
|
@ -1196,7 +1196,7 @@ pub unsafe extern "C" fn view_bookmarks(mut key: libc::c_int) {
|
|
|
|
) != 0
|
|
|
|
) != 0
|
|
|
|
{
|
|
|
|
{
|
|
|
|
view_directory(
|
|
|
|
view_directory(
|
|
|
|
CString::from_raw(parsed_host).into_string().unwrap(),
|
|
|
|
&CString::new(parsed_host.iter().take_while(|x| **x != 0).map(|x| *x as u8).collect::<Vec<_>>()).unwrap().into_string().unwrap(),
|
|
|
|
parsed_port.as_mut_ptr(),
|
|
|
|
parsed_port.as_mut_ptr(),
|
|
|
|
parsed_selector.as_mut_ptr(),
|
|
|
|
parsed_selector.as_mut_ptr(),
|
|
|
|
0 as libc::c_int,
|
|
|
|
0 as libc::c_int,
|
|
|
@ -1221,7 +1221,7 @@ pub fn pop_history() {
|
|
|
|
Some(h) => {
|
|
|
|
Some(h) => {
|
|
|
|
/* reload page from history (and don't count as history) */
|
|
|
|
/* reload page from history (and don't count as history) */
|
|
|
|
unsafe { view_directory(
|
|
|
|
unsafe { view_directory(
|
|
|
|
(*h).host,
|
|
|
|
&(*h).host,
|
|
|
|
(*h).port,
|
|
|
|
(*h).port,
|
|
|
|
(*h).selector,
|
|
|
|
(*h).selector,
|
|
|
|
0 as libc::c_int,
|
|
|
|
0 as libc::c_int,
|
|
|
@ -1244,34 +1244,34 @@ pub unsafe extern "C" fn follow_link(mut key: libc::c_int) -> libc::c_int {
|
|
|
|
CString::new(config.cmd_text.clone())
|
|
|
|
CString::new(config.cmd_text.clone())
|
|
|
|
.unwrap()
|
|
|
|
.unwrap()
|
|
|
|
.into_raw(),
|
|
|
|
.into_raw(),
|
|
|
|
(*l).host,
|
|
|
|
&(*l).host,
|
|
|
|
(*l).port,
|
|
|
|
(*l).port,
|
|
|
|
(*l).selector,
|
|
|
|
(*l).selector,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
'1' => {
|
|
|
|
'1' => {
|
|
|
|
view_directory(
|
|
|
|
view_directory(
|
|
|
|
(*l).host,
|
|
|
|
&(*l).host,
|
|
|
|
(*l).port,
|
|
|
|
(*l).port,
|
|
|
|
(*l).selector,
|
|
|
|
(*l).selector,
|
|
|
|
1 as libc::c_int,
|
|
|
|
1 as libc::c_int,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
'7' => {
|
|
|
|
'7' => {
|
|
|
|
view_search((*l).host, (*l).port, (*l).selector);
|
|
|
|
view_search(&(*l).host, (*l).port, (*l).selector);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
'5' | '9' => {
|
|
|
|
'5' | '9' => {
|
|
|
|
view_download((*l).host, (*l).port, (*l).selector);
|
|
|
|
view_download(&(*l).host, (*l).port, (*l).selector);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
'8' => {
|
|
|
|
'8' => {
|
|
|
|
view_telnet((*l).host, (*l).port);
|
|
|
|
view_telnet(&(*l).host, (*l).port);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
'f' | 'I' | 'p' => {
|
|
|
|
'f' | 'I' | 'p' => {
|
|
|
|
view_file(
|
|
|
|
view_file(
|
|
|
|
CString::new(config.cmd_image.clone())
|
|
|
|
CString::new(config.cmd_image.clone())
|
|
|
|
.unwrap()
|
|
|
|
.unwrap()
|
|
|
|
.into_raw(),
|
|
|
|
.into_raw(),
|
|
|
|
(*l).host,
|
|
|
|
&(*l).host,
|
|
|
|
(*l).port,
|
|
|
|
(*l).port,
|
|
|
|
(*l).selector,
|
|
|
|
(*l).selector,
|
|
|
|
);
|
|
|
|
);
|
|
|
@ -1281,7 +1281,7 @@ pub unsafe extern "C" fn follow_link(mut key: libc::c_int) -> libc::c_int {
|
|
|
|
CString::new(config.cmd_browser.clone())
|
|
|
|
CString::new(config.cmd_browser.clone())
|
|
|
|
.unwrap()
|
|
|
|
.unwrap()
|
|
|
|
.into_raw(),
|
|
|
|
.into_raw(),
|
|
|
|
(*l).host,
|
|
|
|
&(*l).host,
|
|
|
|
(*l).port,
|
|
|
|
(*l).port,
|
|
|
|
(*l).selector,
|
|
|
|
(*l).selector,
|
|
|
|
);
|
|
|
|
);
|
|
|
@ -1291,7 +1291,7 @@ pub unsafe extern "C" fn follow_link(mut key: libc::c_int) -> libc::c_int {
|
|
|
|
CString::new(config.cmd_player.clone())
|
|
|
|
CString::new(config.cmd_player.clone())
|
|
|
|
.unwrap()
|
|
|
|
.unwrap()
|
|
|
|
.into_raw(),
|
|
|
|
.into_raw(),
|
|
|
|
(*l).host,
|
|
|
|
&(*l).host,
|
|
|
|
(*l).port,
|
|
|
|
(*l).port,
|
|
|
|
(*l).selector,
|
|
|
|
(*l).selector,
|
|
|
|
);
|
|
|
|
);
|
|
|
@ -1315,7 +1315,7 @@ pub unsafe extern "C" fn download_link(mut key: libc::c_int) {
|
|
|
|
if (*l).key as libc::c_int != key {
|
|
|
|
if (*l).key as libc::c_int != key {
|
|
|
|
link = (*l).next
|
|
|
|
link = (*l).next
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
view_download((*l).host, (*l).port, (*l).selector);
|
|
|
|
view_download(&(*l).host, (*l).port, (*l).selector);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1443,7 +1443,7 @@ unsafe fn main_0(mut argc: libc::c_int, mut argv: *mut *mut libc::c_char) -> lib
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/* main loop */
|
|
|
|
/* main loop */
|
|
|
|
view_directory(
|
|
|
|
view_directory(
|
|
|
|
parsed_host.as_mut_ptr(),
|
|
|
|
&CString::new(parsed_host.iter().take_while(|x| **x != 0).map(|x| *x as u8).collect::<Vec<_>>()).unwrap().into_string().unwrap(),
|
|
|
|
parsed_port.as_mut_ptr(),
|
|
|
|
parsed_port.as_mut_ptr(),
|
|
|
|
parsed_selector.as_mut_ptr(),
|
|
|
|
parsed_selector.as_mut_ptr(),
|
|
|
|
0 as libc::c_int,
|
|
|
|
0 as libc::c_int,
|
|
|
@ -1476,7 +1476,7 @@ unsafe fn main_0(mut argc: libc::c_int, mut argv: *mut *mut libc::c_char) -> lib
|
|
|
|
}
|
|
|
|
}
|
|
|
|
42 => {
|
|
|
|
42 => {
|
|
|
|
view_directory(
|
|
|
|
view_directory(
|
|
|
|
current_host.as_mut_ptr(),
|
|
|
|
&CString::new(current_host.iter().take_while(|x| **x != 0).map(|x| *x as u8).collect::<Vec<_>>()).unwrap().into_string().unwrap(),
|
|
|
|
current_port.as_mut_ptr(),
|
|
|
|
current_port.as_mut_ptr(),
|
|
|
|
current_selector.as_mut_ptr(),
|
|
|
|
current_selector.as_mut_ptr(),
|
|
|
|
0 as libc::c_int,
|
|
|
|
0 as libc::c_int,
|
|
|
@ -1504,7 +1504,7 @@ unsafe fn main_0(mut argc: libc::c_int, mut argv: *mut *mut libc::c_char) -> lib
|
|
|
|
!= 0
|
|
|
|
!= 0
|
|
|
|
{
|
|
|
|
{
|
|
|
|
view_directory(
|
|
|
|
view_directory(
|
|
|
|
parsed_host.as_mut_ptr(),
|
|
|
|
&CString::new(parsed_host.iter().take_while(|x| **x != 0).map(|x| *x as u8).collect::<Vec<_>>()).unwrap().into_string().unwrap(),
|
|
|
|
parsed_port.as_mut_ptr(),
|
|
|
|
parsed_port.as_mut_ptr(),
|
|
|
|
parsed_selector.as_mut_ptr(),
|
|
|
|
parsed_selector.as_mut_ptr(),
|
|
|
|
1 as libc::c_int,
|
|
|
|
1 as libc::c_int,
|
|
|
|