/* A. Fenyo - 2005 */ #include #include #include #include #include #include #include void usage(char *str) { fprintf(stderr, "usage: %s /dev/cua* value\n", str); } int opendev(char *devname) { int fd, ret; struct termios tios; fd = open(devname, O_RDWR); if (fd < 0) { perror("open"); exit(1); } bzero(&tios, sizeof tios); ret = tcgetattr(fd, &tios); if (ret < 0) { perror("tcgetattr"); exit(1); } cfmakeraw(&tios); cfsetospeed(&tios, B57600); cfsetispeed(&tios, B57600); ret = tcsetattr(fd, TCSANOW, &tios); if (ret < 0) { perror("tcsetattr"); exit(1); } return fd; } u_char readdev(int fd) { int ret; u_char c; ret = read(fd, &c, 1); if (ret < 0) { perror("read"); exit(1); } if (!ret) { fprintf(stderr, "EOF\n"); exit(1); } return c; } void writedev(int fd, u_char c) { int ret; ret = write(fd, &c, 1); if (ret < 0) { perror("write"); exit(1); } } int main(int ac, char **av) { int fd, ret; u_char c; if (ac != 3) { fprintf(stderr, "invalid number of arguments\n"); usage(av[0]); exit(1); } c = atoi(av[2]); fd = opendev(av[1]); if (fd < 0) { perror("opendev"); exit(1); } ret = write(fd, &c, 1); if (ret < 0) { perror("write"); exit(1); } if (!ret) { fprintf(stderr, "\nEOF\n"); exit(1); } return 0; }