1308 if(errno == EINTR) |
1309 if(errno == EINTR) |
1309 continue; |
1310 continue; |
1310 eprint("select failed\n"); |
1311 eprint("select failed\n"); |
1311 } |
1312 } |
1312 if(FD_ISSET(STDIN_FILENO, &rd)) { |
1313 if(FD_ISSET(STDIN_FILENO, &rd)) { |
1313 switch((r = read(STDIN_FILENO, stext + offset, len - offset))) { |
1314 switch((r = read(STDIN_FILENO, buf + offset, len - offset))) { |
1314 case -1: |
1315 case -1: |
1315 strncpy(stext, strerror(errno), len); |
1316 strncpy(stext, strerror(errno), len); |
1316 readin = False; |
1317 readin = False; |
1317 break; |
1318 break; |
1318 case 0: |
1319 case 0: |
1319 strncpy(stext, "EOF", 4); |
1320 strncpy(stext, "EOF", 4); |
1320 readin = False; |
1321 readin = False; |
1321 break; |
1322 break; |
1322 default: |
1323 default: |
1323 stext[offset + r] = '\0'; |
1324 for(p = buf + offset; r > 0; p++, r--, offset++) |
1324 for(p = stext; *p && *p != '\n'; p++); |
1325 if(*p == '\n' || *p == '\0') { |
1325 if(*p == '\n') { |
1326 *p = '\0'; |
1326 *p = '\0'; |
1327 strncpy(stext, buf, len); |
1327 offset = 0; |
1328 p += r - 1; /* p is buf + offset + r - 1 */ |
1328 } |
1329 for(r = 0; *(p - r) && *(p - r) != '\n'; r++); |
1329 else |
1330 offset = r; |
1330 offset = (offset + r < len - 1) ? offset + r : 0; |
1331 if(r) |
|
1332 memmove(buf, p - r + 1, r); |
|
1333 break; |
|
1334 } |
|
1335 break; |
1331 } |
1336 } |
1332 drawbar(); |
1337 drawbar(); |
1333 } |
1338 } |
1334 while(XPending(dpy)) { |
1339 while(XPending(dpy)) { |
1335 XNextEvent(dpy, &ev); |
1340 XNextEvent(dpy, &ev); |