1422 } |
1422 } |
1423 } |
1423 } |
1424 return result; |
1424 return result; |
1425 } |
1425 } |
1426 |
1426 |
1427 // Read file line by line, if line is longer than bsize, |
|
1428 // skip rest of line. |
|
1429 int os::get_line_chars(int fd, char* buf, const size_t bsize){ |
|
1430 size_t sz, i = 0; |
|
1431 |
|
1432 // read until EOF, EOL or buf is full |
|
1433 while ((sz = (int) read(fd, &buf[i], 1)) == 1 && i < (bsize-2) && buf[i] != '\n') { |
|
1434 ++i; |
|
1435 } |
|
1436 |
|
1437 if (buf[i] == '\n') { |
|
1438 // EOL reached so ignore EOL character and return |
|
1439 |
|
1440 buf[i] = 0; |
|
1441 return (int) i; |
|
1442 } |
|
1443 |
|
1444 buf[i+1] = 0; |
|
1445 |
|
1446 if (sz != 1) { |
|
1447 // EOF reached. if we read chars before EOF return them and |
|
1448 // return EOF on next call otherwise return EOF |
|
1449 |
|
1450 return (i == 0) ? -1 : (int) i; |
|
1451 } |
|
1452 |
|
1453 // line is longer than size of buf, skip to EOL |
|
1454 char ch; |
|
1455 while (read(fd, &ch, 1) == 1 && ch != '\n') { |
|
1456 // Do nothing |
|
1457 } |
|
1458 |
|
1459 // return initial part of line that fits in buf. |
|
1460 // If we reached EOF, it will be returned on next call. |
|
1461 |
|
1462 return (int) i; |
|
1463 } |
|
1464 |
|
1465 void os::SuspendedThreadTask::run() { |
1427 void os::SuspendedThreadTask::run() { |
1466 assert(Threads_lock->owned_by_self() || (_thread == VMThread::vm_thread()), "must have threads lock to call this"); |
1428 assert(Threads_lock->owned_by_self() || (_thread == VMThread::vm_thread()), "must have threads lock to call this"); |
1467 internal_do_task(); |
1429 internal_do_task(); |
1468 _done = true; |
1430 _done = true; |
1469 } |
1431 } |