| 925 | stream.tty.ops.fsync(stream.tty); |
| 926 | }, |
| 927 | read(stream, buffer, offset, length, pos /* ignored */) { |
| 928 | if (!stream.tty || !stream.tty.ops.get_char) { |
| 929 | throw new FS.ErrnoError(60); |
| 930 | } |
| 931 | var bytesRead = 0; |
| 932 | for (var i = 0; i < length; i++) { |
| 933 | var result; |
| 934 | try { |
| 935 | result = stream.tty.ops.get_char(stream.tty); |
| 936 | } catch (e) { |
| 937 | throw new FS.ErrnoError(29); |
| 938 | } |
| 939 | if (result === undefined && bytesRead === 0) { |
| 940 | throw new FS.ErrnoError(6); |
| 941 | } |
| 942 | if (result === null || result === undefined) break; |
| 943 | bytesRead++; |
| 944 | buffer[offset+i] = result; |
| 945 | } |
| 946 | if (bytesRead) { |
| 947 | stream.node.atime = Date.now(); |
| 948 | } |
| 949 | return bytesRead; |
| 950 | }, |
| 951 | write(stream, buffer, offset, length, pos) { |
| 952 | if (!stream.tty || !stream.tty.ops.put_char) { |
| 953 | throw new FS.ErrnoError(60); |