diff options
Diffstat (limited to 'std.c')
| -rw-r--r-- | std.c | 25 | 
1 files changed, 15 insertions, 10 deletions
@@ -3,6 +3,7 @@  #include <sys/types.h>  #include <sys/wait.h>  #include <ctype.h> +#include <err.h>  #include <signal.h>  #include <stdarg.h>  #include <stdio.h> @@ -73,7 +74,7 @@ getch() {  	if(rbuf.i++ >= rbuf.n) {  		rbuf.n = read(ptm, rbuf.data, LENGTH(rbuf.data));  		if(rbuf.n == -1) -			eprintn("error, cannot read from slave pty"); +			err(EXIT_FAILURE, "cannot read from slave pty");  		rbuf.i = 0;  	}  	return rbuf.data[rbuf.i]; @@ -113,7 +114,7 @@ parseesc(void) {  				qmark = 1;  			else if(c == ';') {  				if(!digit) -					eprint("syntax error\n"); +					errx(EXIT_FAILURE, "syntax error");  				digit = 0;  				j++;  			} @@ -216,7 +217,7 @@ shell(void) {  	pid = fork();  	switch(pid) {  	case -1: -		eprint("error, cannot fork\n"); +		err(EXIT_FAILURE, "cannot fork");  	case 0:  		setsid();  		dup2(pts, STDIN_FILENO); @@ -237,7 +238,7 @@ sigchld(int n) {  	int ret;  	if(waitpid(pid, &ret, 0) == -1) -		eprintn("error, waiting for child failed"); +		err(EXIT_FAILURE, "waiting for child failed");  	if(WIFEXITED(ret))  		exit(WEXITSTATUS(ret));  	else @@ -257,7 +258,7 @@ unbuffer(void) {  void  ungetch(int c) {  	if(rbuf.i + 1 >= rbuf.n) -		eprint("error, read buffer full\n"); +		errx(EXIT_FAILURE, "read buffer full");  	rbuf.data[rbuf.i++] = c;  } @@ -266,10 +267,14 @@ main(int argc, char *argv[]) {  	fd_set rfds;  	int r; -	if(argc == 2 && !strcmp("-v", argv[1])) -		eprint("std-"VERSION", © 2008 Matthias-Christian Ott\n"); -	else if(argc == 1) -		eprint("usage: st [-v]\n"); +	if(argc == 2 && !strcmp("-v", argv[1])) { +		fprintf(stderr, "std-"VERSION", © 2008 Matthias-Christian Ott\n"); +		exit(EXIT_SUCCESS); +	} +	else if(argc == 1) { +		fprintf(stderr, "usage: st [-v]\n"); +		exit(EXIT_FAILURE); +	}  	getpty();  	shell();  	FD_ZERO(&rfds); @@ -278,7 +283,7 @@ main(int argc, char *argv[]) {  	for(;;) {  		r = select(ptm + 1, &rfds, NULL, NULL, NULL);  		if(r == -1) -			eprintn("error, cannot select"); +			err(EXIT_FAILURE, "cannot select");  		if(FD_ISSET(ptm, &rfds)) {  			do {  				c = getch();  | 
