read.c 536 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /* $Source$
  2. * $State$
  3. * $Revision$
  4. */
  5. #include <stdlib.h>
  6. #include <errno.h>
  7. #include <unistd.h>
  8. #include <cpm.h>
  9. int read(int fd, void* buffer, size_t count)
  10. {
  11. char i;
  12. /* We're only allowed to read from fd 0, 1 or 2. */
  13. if ((fd < 0) || (fd > 2))
  14. {
  15. errno = EBADF;
  16. return -1;
  17. }
  18. /* Empty buffer? */
  19. if (count == 0)
  20. return 0;
  21. /* Read one byte. */
  22. cpm_bc_register = CPM_BDOS_CONSOLE_INPUT;
  23. cpm_bdos();
  24. if (cpm_a_register == '\r')
  25. cpm_a_register = '\n';
  26. *(char*)buffer = cpm_a_register;
  27. return 1;
  28. }