Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. /// ===========================================================
  3.  
  4. int script_check(char file[])
  5. {
  6.  
  7. kol_struct70    k70;
  8. char            buf[4];
  9.  
  10. k70.p00 = 0;
  11. k70.p04 = 0;
  12. k70.p08 = 0;
  13. k70.p12 = 4; // ÷èòàòü 4 áàéòà
  14. k70.p16 = buf;
  15. k70.p20 = 0;
  16. k70.p21 = file;
  17.  
  18. kol_file_70(&k70);
  19.  
  20. if ( !strcmp(buf, script_sign) )
  21.         return TRUE;
  22. else
  23.         return FALSE;
  24. }
  25.  
  26. /// ===========================================================
  27.  
  28. int script_run(char exec[], char args[])
  29. {
  30.  
  31. kol_struct70    k70;
  32. kol_struct_BDVK bdvk;
  33. unsigned        result, filesize, pos, i;
  34. char            *buf; //áóôåð, êóäà êîïèðóåòñÿ ñêðèïò
  35.  
  36. k70.p00 = 5;
  37. k70.p04 = k70.p08 = k70.p12 = 0;
  38. k70.p16 = &bdvk;
  39. k70.p20 = 0;
  40. k70.p21 = exec;
  41.  
  42. result = kol_file_70(&k70); // ïîëó÷àåì èíôîðìàöèþ î ôàéëå
  43. if ( 0 != result )
  44.         return FALSE;
  45.  
  46. filesize = bdvk.p32[0]; // ïîëó÷àåì ðàçìåð ôàéëà
  47.  
  48. buf = malloc(filesize+256);
  49. if (NULL == buf)
  50.         return FALSE;
  51.  
  52. buf[filesize]=0;
  53.  
  54. k70.p00 = 0;
  55. k70.p04 = k70.p08 = 0;
  56. k70.p12 = filesize;
  57. k70.p16 = buf;
  58. k70.p20 = 0;
  59. k70.p21 = exec;
  60.  
  61. result = kol_file_70(&k70); // ñ÷èòûâàåì ôàéë â áóôåð
  62. if ( 0 != result )
  63.         {
  64.         free(buf);
  65.         return FALSE;
  66.         }
  67.  
  68. pos = 0;
  69.  
  70. for (;;) // îáðàáîòêà ñêðèïòà
  71.         {
  72.  
  73.         if (pos > filesize)
  74.                 break;
  75.  
  76.         for (i=0;;i++) // ñ÷èòûâàíèå ñòðîêè
  77.                 {
  78.                 if ((0x0A == buf[pos])||(0x0D == buf[pos])||(0 == buf[pos]))
  79.                         {
  80.                         pos++;
  81.                         CMD[i] = '\0';
  82.                         break;
  83.                         }
  84.                 CMD[i] = buf[pos];
  85.                 pos++;
  86.                 }
  87.  
  88.         if ( 0 == strlen(CMD) ) // ïóñòàÿ ñòðîêà
  89.                 continue;
  90.  
  91.         if ('#' == CMD[0]) // êîììåíòàðèé
  92.                 continue;
  93.  
  94.         command_execute();
  95.  
  96.         }
  97.  
  98. free(buf);
  99. return TRUE;
  100. }
  101.  
  102. /// ===========================================================
  103.