Subversion Repositories Kolibri OS

Rev

Rev 8777 | Rev 9354 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. #include <_ansi.h>
  2. #include <stdio.h>
  3. #include <sys/unistd.h>
  4. #include "io.h"
  5. #include <string.h>
  6.  
  7.  
  8. void load_libconsole();
  9. void     __stdcall con_init(unsigned w_w, unsigned w_h, unsigned s_w, unsigned s_h, const char* t);
  10. void     __stdcall con_exit(char bCloseWindow);
  11. unsigned __stdcall con_get_flags(void);
  12. unsigned __stdcall con_set_flags(unsigned new_flags);
  13. void     __stdcall con_cls(void);
  14. void     __stdcall con_write_string(const char* string, unsigned length);
  15. short    __stdcall con_getch2(void);
  16. char*    __stdcall con_gets(char*, unsigned);
  17.  
  18. int __gui_mode;
  19.  
  20. void con_init_opt(unsigned w_w, unsigned w_h, unsigned s_w, unsigned s_h, const char* t){
  21.     con_init(w_w, w_h, s_w, s_h, t);
  22. }
  23.  
  24. static int console_read(const char *path, void *buff,
  25.            size_t offset, size_t count, size_t *done)
  26. {
  27.     char *p = buff;
  28.     /*int   cnt = 0;
  29.     short c;
  30.     char  ch;*/
  31.     con_gets(p, count+1);
  32.     *done = strlen(p);
  33.  
  34. //   __asm__ volatile("int3");
  35. /*
  36.     do
  37.     {
  38.         c = con_getch2();
  39.         printf("%d\n",(char)c);
  40.         ch = (char)c;
  41.         if(ch != 0)
  42.         {
  43.             p[cnt] = ch != 0x0D ? ch : 0x0A;
  44.             con_write_string(p+cnt, 1);
  45.             cnt++;
  46.         }
  47.     }while(ch != 0x0D);
  48.     *done = cnt;
  49. */
  50.     return 0;
  51. }
  52.  
  53. static int console_write(const char *path, const void *buff,
  54.                  size_t offset, size_t count, size_t *writes)
  55. {
  56.     con_write_string(buff, count);
  57.  
  58.     *writes = count;
  59.     return 0;
  60. };
  61.  
  62. void __init_conio()
  63. {
  64.     __io_handle *ioh;
  65.  
  66.     load_libconsole();
  67.     con_init(80, 25, 80, 500, "Console application");
  68.  
  69.     ioh = &__io_tab[STDIN_FILENO];
  70.     ioh->mode  = _READ|_ISTTY;
  71.     ioh->read  = &console_read;
  72.  
  73.     ioh = &__io_tab[STDOUT_FILENO];
  74.     ioh->mode  = _WRITE|_ISTTY;
  75.     ioh->write = &console_write;
  76. };
  77.  
  78. void __fini_conio()
  79. {
  80.     con_exit(0);
  81. }
  82.  
  83.  
  84.  
  85.  
  86.