main.c
changeset 581 601842ee4484
parent 580 e9001b0f53bc
child 582 70472540c443
equal deleted inserted replaced
580:e9001b0f53bc 581:601842ee4484
   225 	return xerrorxlib(dpy, ee); /* may call exit */
   225 	return xerrorxlib(dpy, ee); /* may call exit */
   226 }
   226 }
   227 
   227 
   228 int
   228 int
   229 main(int argc, char *argv[]) {
   229 main(int argc, char *argv[]) {
       
   230 	char *p;
   230 	int r, xfd;
   231 	int r, xfd;
   231 	fd_set rd;
   232 	fd_set rd;
   232 
   233 
   233 	if(argc == 2 && !strncmp("-v", argv[1], 3)) {
   234 	if(argc == 2 && !strncmp("-v", argv[1], 3)) {
   234 		fputs("dwm-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout);
   235 		fputs("dwm-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout);
   268 			FD_SET(STDIN_FILENO, &rd);
   269 			FD_SET(STDIN_FILENO, &rd);
   269 		FD_SET(xfd, &rd);
   270 		FD_SET(xfd, &rd);
   270 		if(select(xfd + 1, &rd, NULL, NULL, NULL) == -1) {
   271 		if(select(xfd + 1, &rd, NULL, NULL, NULL) == -1) {
   271 			if(errno == EINTR)
   272 			if(errno == EINTR)
   272 				continue;
   273 				continue;
   273 			else
   274 			eprint("select failed\n");
   274 				eprint("select failed\n");
       
   275 		}
   275 		}
   276 		if(FD_ISSET(STDIN_FILENO, &rd)) {
   276 		if(FD_ISSET(STDIN_FILENO, &rd)) {
   277 			switch(r = read(STDIN_FILENO, stext, sizeof(stext) - 1)) {
   277 			switch(r = read(STDIN_FILENO, stext, sizeof stext - 1)) {
   278 			case -1:
   278 			case -1:
   279 				strncpy(stext, strerror(errno), sizeof(stext));
   279 				strncpy(stext, strerror(errno), sizeof stext - 1);
   280 				stext[sizeof(stext) - 1] = '\0';
       
   281 				readin = False;
   280 				readin = False;
   282 				break;
   281 				break;
   283 			case 0:
   282 			case 0:
   284 				strncpy(stext, "EOF", sizeof(stext));
   283 				strncpy(stext, "EOF", sizeof stext);
   285 				readin = False;
   284 				readin = False;
   286 				break;
   285 				break;
   287 			default:
   286 			default:
   288 				stext[r - (stext[r - 1] == '\n' ? 1 : 0)] = '\0';
   287 				stext[r - (stext[r - 1] == '\n' ? 1 : 0)] = '\0';
       
   288 				for(p = stext + strlen(stext) - 1; p > stext && *p != '\n'; --p);
       
   289 				if(p > stext)
       
   290 					strncpy(stext, p + 1, sizeof stext);
   289 			}
   291 			}
   290 			drawstatus();
   292 			drawstatus();
   291 		}
   293 		}
   292 		if(FD_ISSET(xfd, &rd))
   294 		if(FD_ISSET(xfd, &rd))
   293 			procevent();
   295 			procevent();