comparison main.c @ 581:601842ee4484

applied Jukka's sizeof K&R compliance patch, applied Manuels' last-line printage proposal for stdin reading.
author arg@mig29
date Sun, 26 Nov 2006 14:26:53 +0100
parents e9001b0f53bc
children 70472540c443
comparison
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();