X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Frtapelib.c;h=937fd70c605c862feb06ed20f4d856c37a4cb4f3;hb=0a42307c1d7a8764754d29d787a2c423eaf79225;hp=c9cd90e6010471966ad2e139478e5a703ff18383;hpb=1521a94b11b0b7a2fe2a8318207d7d6b4bdbf76b;p=chaz%2Ftar diff --git a/src/rtapelib.c b/src/rtapelib.c index c9cd90e..937fd70 100644 --- a/src/rtapelib.c +++ b/src/rtapelib.c @@ -144,7 +144,7 @@ get_status_string (int handle, char *command_buffer) counter < COMMAND_BUFFER_SIZE; counter++, cursor++) { - if (full_read (READ_SIDE (handle), cursor, 1) != 1) + if (safe_read (READ_SIDE (handle), cursor, 1) != 1) { _rmt_shutdown (handle, EIO); return 0; @@ -180,7 +180,7 @@ get_status_string (int handle, char *command_buffer) { char character; - while (full_read (READ_SIDE (handle), &character, 1) == 1) + while (safe_read (READ_SIDE (handle), &character, 1) == 1) if (character == '\n') break; } @@ -527,7 +527,7 @@ rmt_read__ (int handle, char *buffer, size_t length) for (counter = 0; counter < status; counter += rlen, buffer += rlen) { - rlen = full_read (READ_SIDE (handle), buffer, status - counter); + rlen = safe_read (READ_SIDE (handle), buffer, status - counter); if (rlen <= 0) { _rmt_shutdown (handle, EIO); @@ -586,6 +586,14 @@ rmt_lseek__ (int handle, off_t offset, int whence) if (offset < 0) *--p = '-'; + switch (whence) + { + case SEEK_SET: whence = 0; break; + case SEEK_CUR: whence = 1; break; + case SEEK_END: whence = 2; break; + default: abort (); + } + sprintf (command_buffer, "L%s\n%d\n", p, whence); if (do_command (handle, command_buffer) == -1) @@ -653,7 +661,7 @@ rmt_ioctl__ (int handle, int operation, char *argument) for (; status > 0; status -= counter, argument += counter) { - counter = full_read (READ_SIDE (handle), + counter = safe_read (READ_SIDE (handle), argument, (size_t) status); if (counter <= 0) {