_sys_ioctl.c 732 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* $Source$
  2. * $State$
  3. */
  4. #include <stdlib.h>
  5. #include <errno.h>
  6. #include <sgtty.h>
  7. #include "libsys.h"
  8. int _sys_ttyflags = ECHO;
  9. extern struct
  10. {
  11. int fd;
  12. int request;
  13. void* argp;
  14. } _sys_params_in;
  15. extern struct
  16. {
  17. int result;
  18. } _sys_params_out;
  19. #define P _sys_params_in
  20. static int tiocgetp(void)
  21. {
  22. struct sgttyb* s = P.argp;
  23. s->sg_flags = _sys_ttyflags;
  24. return 0;
  25. }
  26. static int tiocsetp(void)
  27. {
  28. struct sgttyb* s = P.argp;
  29. _sys_ttyflags = s->sg_flags;
  30. return 0;
  31. }
  32. int _sys_ioctl(void)
  33. {
  34. switch (P.request)
  35. {
  36. case TIOCGETP:
  37. _sys_params_out.result = tiocgetp();
  38. return 0;
  39. case TIOCSETP:
  40. _sys_params_out.result = tiocsetp();
  41. return 0;
  42. }
  43. _sys_params_out.result = -1;
  44. errno = EINVAL;
  45. return 0;
  46. }