Subversion Repositories Kolibri OS

Rev

Rev 4106 | Rev 6826 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. #include "all.h"
  3.  
  4. /// ===========================================================
  5.  
  6. int dir_check(char dir[])
  7. {
  8. kol_struct70    k70;
  9. int             result;
  10.  
  11. k70.p00 = 1;
  12. k70.p04 = 0;
  13. k70.p08 = 0;
  14. k70.p12 = 2*1024*1024; // 2 MB
  15. k70.p16 = (unsigned) malloc(2*1024*1024);
  16. k70.p20 = 0;
  17. k70.p21 = dir;
  18.  
  19. result = kol_file_70(&k70);
  20.  
  21. free((void*)k70.p16);
  22.  
  23. if ( (0 == result)||(6 == result) )
  24.         return TRUE;
  25. else
  26.         return FALSE;
  27.  
  28. }
  29.  
  30. /// ===========================================================
  31.  
  32. void dir_truncate(char dir[])
  33. {
  34. int i;
  35. i = strlen(dir)-1;
  36. for (;;i--)
  37.         if ('/' == dir[i])
  38.                 {
  39.                 dir[i+1] = 0;
  40.                 break;
  41.                 }
  42. }
  43.  
  44. /// ===========================================================
  45.  
  46. int file_check(char file[])
  47. {
  48. kol_struct70    k70;
  49. int             result;
  50.  
  51. k70.p00 = 0;
  52. k70.p04 = 0;
  53. k70.p08 = 0;
  54. k70.p12 = 0;
  55. k70.p16 = 0;
  56. k70.p20 = 0;
  57. k70.p21 = file;
  58.  
  59. result = kol_file_70(&k70);
  60.  
  61. if (0 == result)
  62.         return TRUE;
  63. else
  64.         return FALSE;
  65. }
  66.  
  67. /// ===========================================================
  68.  
  69. void file_not_found(char file[])
  70. {
  71. #if LANG_ENG
  72.         printf ("  File '%s' not found.\n\r", file);
  73. #elif LANG_RUS
  74.         printf ("  ” ©« '%s' ­¥ ­ ©¤¥­.\n\r", file);
  75. #endif
  76. }
  77.  
  78. /// ===========================================================
  79.  
  80. int iswhite(char c)
  81. {
  82. return ((' ' == c) || ('\t' == c) || (13 == c) || (10 == c));
  83. }
  84.  
  85. /// ===========================================================
  86.  
  87. void trim(char string[])
  88. {
  89. int i, j;
  90.  
  91. for (i=0; ;i++)
  92.         if ( !iswhite(string[i]) )
  93.                 break;
  94. j = 0;
  95. for (;;i++, j++)
  96.         {
  97.         string[j] = string[i];
  98.         if ('\0' == string[i] )
  99.                 break;
  100.         }
  101.  
  102. for (i=0; ;i++)
  103.         if ('\0' == string[i])
  104.                 break;
  105. i--;
  106. for (;i>0;--i)
  107.         if ( iswhite(string[i]) )
  108.                 string[i] = '\0';
  109.         else
  110.                 break;
  111. }
  112.  
  113. /// ===========================================================
  114.  
  115. void kol_main()
  116. {
  117.  
  118. NUM_OF_CMD = sizeof(COMMANDS)/sizeof(COMMANDS[0]);
  119.  
  120. strcpy(title, "SHELL ");
  121. strcat(title, SHELL_VERSION);
  122. CONSOLE_INIT(title);
  123.  
  124. strcpy(cur_dir, PATH);
  125. dir_truncate(cur_dir);
  126.  
  127. con_set_cursor_height(con_get_font_height()-1);
  128.  
  129. ALIASES = malloc(128*1024);
  130.  
  131. if (PARAM[0] == 0)
  132. {
  133.    strcpy(CMD, cur_dir);
  134.    strcat(CMD, ".shell");
  135.    if ( !file_check(CMD) )
  136.        strcpy(CMD, "/sys/settings/.shell");
  137. }
  138. else
  139. {
  140.         if (PARAM[0] == '/')
  141.         {
  142.                 strcpy(cur_dir, PARAM);
  143.                 *(strrchr(cur_dir, '/')+1)=0;
  144.         }
  145.         strcpy(CMD, PARAM);
  146. }
  147.  
  148. command_execute();
  149.  
  150. for (;;)
  151.         {
  152.         printf ("# ");
  153.         command_get();
  154.         command_execute();
  155.         }
  156.  
  157. _exit(0);
  158. kol_exit();
  159. }
  160.  
  161. /// ===========================================================
  162.