Mercurial > aewl
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(); |