Skip to content

Commit

Permalink
Reformat sercat.c
Browse files Browse the repository at this point in the history
  • Loading branch information
ghaerr committed Sep 5, 2024
1 parent 01c5ad6 commit 471cf8d
Showing 1 changed file with 43 additions and 43 deletions.
86 changes: 43 additions & 43 deletions elkscmd/sys_utils/sercat.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
* sercat.c - serial cat (for testing)
*
* sercat [-v] [serial device] [> file]
* sercat [-v] [serial device] [> file]
*/
#include <stdio.h>
#include <stdlib.h>
Expand All @@ -14,7 +14,7 @@

#define DEFAULT_PORT "/dev/ttyS0"
#define BUF_SIZE 4096
#define CTRL_D 04
#define CTRL_D 04

#define errmsg(str) write(STDERR_FILENO, str, sizeof(str) - 1)
#define errstr(str) write(STDERR_FILENO, str, strlen(str))
Expand All @@ -26,71 +26,71 @@ struct termios org, new;

void sig_handler(int sig)
{
errmsg("Interrupt\n");
tcsetattr(fd, TCSAFLUSH, &org);
close(fd);
exit(1);
errmsg("Interrupt\n");
tcsetattr(fd, TCSAFLUSH, &org);
close(fd);
exit(1);
}

void copyfile(int ifd, int ofd)
{
int n;
int n;

while ((n = read(ifd, readbuf, BUF_SIZE)) > 0) {
if (n == 1 && readbuf[0] == CTRL_D)
return;
if (verbose) {
char *p = itoa(n);
errstr(p);
errmsg(" bytes read\n");
}
write(ofd, readbuf, n);
}
if (n < 0) perror("read");
while ((n = read(ifd, readbuf, BUF_SIZE)) > 0) {
if (n == 1 && readbuf[0] == CTRL_D)
return;
if (verbose) {
char *p = itoa(n);
errstr(p);
errmsg(" bytes read\n");
}
write(ofd, readbuf, n);
}
if (n < 0) perror("read");
}

int main(int argc, char **argv)
{
char *port = NULL;
char *tty;

if (argc > 1 && !strcmp(argv[1], "-v")) {
verbose = 1;
argc--;
argv++;
}
if (argc > 1)
if (argc > 1 && !strcmp(argv[1], "-v")) {
verbose = 1;
argc--;
argv++;
}
if (argc > 1)
port = argv[1];
else {
/* default to /dev/ttyS0 if not run from serial port and no argument */
if (strncmp(ttyname(STDIN_FILENO), "/dev/ttyS", 9) != 0)
port = "/dev/ttyS0";
}
if (port) {
if ((fd = open(port, O_RDONLY|O_EXCL)) < 0) {
perror(port);
return 1;
}
} else fd = STDIN_FILENO;
if ((fd = open(port, O_RDONLY|O_EXCL)) < 0) {
perror(port);
return 1;
}
} else fd = STDIN_FILENO;
tty = ttyname(fd);
errmsg("Reading from ");
errstr(tty);
errmsg("\n");

if (tcgetattr(fd, &org) >= 0) {
new = org;
new.c_lflag &= ~(ICANON | ISIG | ECHO | ECHOE | ECHONL);
new.c_iflag &= ~(ICRNL);
new.c_cflag |= CS8 | CREAD;
new.c_cc[VMIN] = 255; /* min bytes to read if VTIME = 0*/
new.c_cc[VTIME] = 1; /* intercharacter timeout if VMIN > 0, timeout if VMIN = 0*/
tcsetattr(fd, TCSAFLUSH, &new);
} else errmsg("Can't set termios\n");
signal(SIGINT, sig_handler);
if (tcgetattr(fd, &org) >= 0) {
new = org;
new.c_lflag &= ~(ICANON | ISIG | ECHO | ECHOE | ECHONL);
new.c_iflag &= ~(ICRNL);
new.c_cflag |= CS8 | CREAD;
new.c_cc[VMIN] = 255; /* min bytes to read if VTIME = 0*/
new.c_cc[VTIME] = 1; /* intercharacter timeout if VMIN > 0, timeout if VMIN = 0*/
tcsetattr(fd, TCSAFLUSH, &new);
} else errmsg("Can't set termios\n");
signal(SIGINT, sig_handler);

copyfile(fd, STDOUT_FILENO);
copyfile(fd, STDOUT_FILENO);

tcsetattr(fd, TCSAFLUSH, &org);
close(fd);
return 0;
tcsetattr(fd, TCSAFLUSH, &org);
close(fd);
return 0;
}

0 comments on commit 471cf8d

Please sign in to comment.