@jani I’ve been doing ZMODEM that was also a thing in the 90s :-) https://github.com/jarkkojs/zmodem2
I guess this is sort of retro modern project :-)
Just want to sort out the issue of difficult file transfers when you have only a serial cable access and get a basic serial terminal with nothing special except file transfers of which progress you can see and also cancel them. It is 2023 and we still have to curse lrzsz
so it is better to fix that issue…
I mean I had a decent experience with ZMODEM last time when using MS-DOS and software such as Telemate and Telex.
I have also TUI client in progress but had to halt that because could not find an appropriate crate with decent quality.
generated documentation starts to look a bit like actual documentation after fixing all the clippy::pedantic
errors.i was not aware of this flag until some sent a PR fixing a few of these. not that experienced with the language yet..
only thing that is left is two integration tests for examples in order call this 0.1, i.e. test_sz_to_rzm
and test_rz_szm
but I need a. stable and idiomatic way to point out to the executables. I guess I could make this happen by injecting stuff through build.rs
, right?
after that is sorted out it is good for what i needed it originally for (my serial terminal), i’ll set up github runner for CI (tests + clippy), make the crate release and call it a day. after that not going to do proactively do anything to it except review and merge pull requests.
So you mean like (words can mix up stuff):
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
int main(int argc, char **argv)
{
char *line = NULL;
struct stat sb;
size_t len;
int fds[2];
pid_t pid;
ssize_t n;
if (pipe(fds) < 0) {
perror("pipe");
exit(1);
}
pid = fork();
if (pid < 0) {
perror("fork");
exit(1);
}
if (pid == 0) {
dup2(fds[1], STDOUT_FILENO);
close(fds[0]);
close(fds[1]);
if (fstat(STDOUT_FILENO, &sb) < 0) {
perror("fstat");
exit(1);
}
printf("child: st_dev=%u, st_ino=%llu\n", sb.st_dev, sb.st_ino);
} else {
dup2(fds[0], STDIN_FILENO);
if (fstat(fds[1], &sb) < 0) {
perror("fstat");
exit(1);
}
printf("parent: st_dev=%u, st_ino=%llu\n", sb.st_dev, sb.st_ino);
close(fds[0]);
close(fds[1]);
n = getline(&line, &len, stdin);
if (n < 0) {
fprintf(stderr, "Unexpected EOF\n");
exit(1);
}
fwrite(line, n, 1, stdout);
free(line);
wait(&pid);
}
exit(0);
}
? With M1 generation MacBook Pro I get:
$ ./test
parent: st_dev=0, st_ino=9204210306621897207
child: st_dev=0, st_ino=9204210306621897207
well, returned back safe #neovim. i did like experimenting with #helix tho and am going change my neovim configuration based on that. I’ve used vim for 25 years so pretty hard to get out of old habbits.
Some glitches that would need to be fixed before I would try it again:
set ts=2 sw=2 et
. Creating a .helix
directory for upstream projects in not always even an option.gq
) email paragraphs when responding with aerc
.tmux
. I usually open my files from command-line, not from the editor.In producing code it is not very important how fast you can write the code because 95% of time goes to QA anyway and making first functional version to actually work with real workloads. So personally I think that new editors optimize a local maximum that does not help to deliver all that much as you might first think.
@harrysintonen For uneducated person on these attacks like me, the best protection has been to stick to text based email clients :-) Haven’t had an issue to separate a phishing email from legit when I read all my email previously with mutt
and these days with aerc
.
I would have no chance to survive from these or notice them if I used Outlook/Thunderbird or similar :-)