- if (!strcmp(argv[2],"bidir")) {
- res = 1;
- } else if (!strcmp(argv[2],"-bidir")) {
- res = 0;
- } else {
- usage(argv[0]);
+ char *prg = argv[0];
+
+ res = dtrwait = -1;
+ while (argv[2] != NULL) {
+ if (!strcmp(argv[2],"bidir")) {
+ if (res >= 0)
+ usage(prg);
+ res = 1;
+ argv++;
+ } else if (!strcmp(argv[2],"-bidir")) {
+ if (res >= 0)
+ usage(prg);
+ res = 0;
+ argv++;
+ } else if (!strcmp(argv[2],"dtrwait")) {
+ if (dtrwait >= 0)
+ usage(prg);
+ if (argv[3] == NULL || !isdigit(argv[3][0]))
+ usage(prg);
+ dtrwait = atoi(argv[3]);
+ argv += 2;
+ } else {
+ usage(prg);
+ }
+ }
+ if (res >= 0) {
+ if (ioctl(fd, TIOCMSBIDIR, &res) < 0) {
+ perror("TIOCMSBIDIR");
+ exit(1);
+ }
+ }
+ if (dtrwait >= 0) {
+ if (ioctl(fd, TIOCMSDTRWAIT, &dtrwait) < 0) {
+ perror("TIOCMSDTRWAIT");
+ exit(1);
+ }