92 lines
1.6 KiB
Diff
92 lines
1.6 KiB
Diff
--- setserial.c
|
|
+++ setserial.c
|
|
@@ -412,7 +412,7 @@
|
|
}
|
|
#endif
|
|
|
|
-void get_serial(char *device)
|
|
+int get_serial(char *device)
|
|
{
|
|
struct serial_struct serinfo;
|
|
int fd;
|
|
@@ -420,13 +420,13 @@
|
|
|
|
if ((fd = open(device, O_RDWR|O_NONBLOCK)) < 0) {
|
|
perror(device);
|
|
- return;
|
|
+ return 1;
|
|
}
|
|
serinfo.reserved_char[0] = 0;
|
|
if (ioctl(fd, TIOCGSERIAL, &serinfo) < 0) {
|
|
perror("Cannot get serial info");
|
|
close(fd);
|
|
- return;
|
|
+ return 1;
|
|
}
|
|
if (serinfo.irq == 9)
|
|
serinfo.irq = 2; /* People understand 2 better than 9 */
|
|
@@ -472,16 +472,18 @@
|
|
printf("\n");
|
|
}
|
|
close(fd);
|
|
+
|
|
+ return 0;
|
|
}
|
|
|
|
-void set_serial(char *device, char ** arg)
|
|
+int set_serial(char *device, char ** arg)
|
|
{
|
|
struct serial_struct old_serinfo, new_serinfo;
|
|
struct flag_type_table *p;
|
|
int fd;
|
|
int do_invert = 0;
|
|
char *word;
|
|
-
|
|
+ int e = 0;
|
|
|
|
if ((fd = open(device, O_RDWR|O_NONBLOCK)) < 0) {
|
|
if (verbosity==0 && errno==ENOENT)
|
|
@@ -614,7 +616,9 @@
|
|
}
|
|
close(fd);
|
|
if (verbose_flag)
|
|
- get_serial(device);
|
|
+ e = get_serial(device);
|
|
+
|
|
+ return e;
|
|
}
|
|
|
|
void do_wild_intr(char *device)
|
|
@@ -718,6 +722,7 @@
|
|
{
|
|
int get_flag = 0, wild_intr_flag = 0;
|
|
int c;
|
|
+ int e = 0;
|
|
extern int optind;
|
|
extern char *optarg;
|
|
|
|
@@ -760,8 +765,8 @@
|
|
if (get_flag) {
|
|
argv += optind;
|
|
while (*argv)
|
|
- get_serial(*argv++);
|
|
- exit(0);
|
|
+ e |= get_serial(*argv++);
|
|
+ exit(e);
|
|
}
|
|
if (argc == optind)
|
|
usage();
|
|
@@ -770,9 +775,9 @@
|
|
exit(0);
|
|
}
|
|
if (argc-optind == 1)
|
|
- get_serial(argv[optind]);
|
|
+ e = get_serial(argv[optind]);
|
|
else
|
|
- set_serial(argv[optind], argv+optind+1);
|
|
- exit(0);
|
|
+ e = set_serial(argv[optind], argv+optind+1);
|
|
+ exit(e);
|
|
}
|
|
|