write.c 623 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* $Source$
  2. * $State$
  3. * $Revision$
  4. */
  5. #include <stdlib.h>
  6. #include <errno.h>
  7. #include <unistd.h>
  8. #include "libsys.h"
  9. void _sys_write_tty(char c)
  10. {
  11. _sys_rawwrite(c);
  12. #if 0
  13. if ((c == '\n') && !(_sys_ttyflags & RAW))
  14. _sys_rawwrite('\r');
  15. #endif
  16. if (c == '\n')
  17. _sys_rawwrite('\r');
  18. }
  19. int write(int fd, void* buffer, size_t count)
  20. {
  21. int i;
  22. char* p = buffer;
  23. /* We're only allowed to write to fd 0, 1 or 2. */
  24. if ((fd < 0) || (fd > 2))
  25. {
  26. errno = EBADF;
  27. return -1;
  28. }
  29. /* Write all data. */
  30. i = 0;
  31. while (i < count)
  32. {
  33. _sys_write_tty(*p++);
  34. i++;
  35. }
  36. /* No failures. */
  37. return count;
  38. }