Subversion Repositories Kolibri OS

Rev

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

  1. struct f70{
  2.         dword   func;
  3.         dword   param1;
  4.         dword   param2;
  5.         dword   param3;
  6.         dword   param4;
  7.         char    rezerv;
  8.         dword   name;
  9. };
  10.  
  11. struct BDVK{
  12.         dword   attr;
  13.         byte    type_name;
  14.         byte    rez1, rez2, rez3;
  15.         dword   timecreate;
  16.         dword   datecreate;
  17.         dword   timelastaccess;
  18.         dword   datelastaccess;
  19.         dword   timelastedit;
  20.         dword   datelastedit;
  21.         dword   sizelo;
  22.         dword   sizehi;
  23.         char    name[518];
  24. };
  25.  
  26.  
  27. ///////////////////////////
  28. //   Çàïóñê ïðîãðàììû    //
  29. ///////////////////////////
  30. f70 run_file_70;
  31. signed int RunProgram(dword run_path, run_param)
  32. {      
  33.     run_file_70.func = 7;
  34.     run_file_70.param1 =
  35.     run_file_70.param3 =
  36.     run_file_70.param4 =
  37.     run_file_70.rezerv = 0;
  38.     run_file_70.param2 = run_param;
  39.     run_file_70.name = run_path;
  40.     $mov eax,70
  41.     $mov ebx,#run_file_70.func
  42.     $int 0x40
  43. }
  44.  
  45. ///////////////////////////
  46. //    Ñîçäàíèå ïàïêè     //
  47. ///////////////////////////
  48. f70 create_dir_70;
  49. :int CreateDir(dword new_folder_path)
  50. {
  51.         create_dir_70.func = 9;
  52.         create_dir_70.param1 =
  53.         create_dir_70.param2 =
  54.         create_dir_70.param3 =
  55.         create_dir_70.param4 =
  56.         create_dir_70.rezerv = 0;
  57.         create_dir_70.name = new_folder_path;
  58.         $mov eax,70
  59.         $mov ebx,#create_dir_70.func
  60.         $int 0x40
  61. }
  62.  
  63. ////////////////////////////
  64. //  Óäàëåíèå ôàéëà/ïàïêè  //
  65. ////////////////////////////
  66. f70 del_file_70;       
  67. :int DeleteFile(dword del_file_path)
  68. {    
  69.         del_file_70.func = 8;
  70.         del_file_70.param1 =
  71.         del_file_70.param2 =
  72.         del_file_70.param3 =
  73.         del_file_70.param4 =
  74.         del_file_70.rezerv = 0;
  75.         del_file_70.name = del_file_path;
  76.         $mov eax,70
  77.         $mov ebx,#del_file_70.func
  78.         $int 0x40
  79. }
  80.  
  81. ////////////////////////////
  82. //     Ïðî÷èòàòü ôàéë     //
  83. ////////////////////////////
  84. f70 read_file_70;
  85. :int ReadFile(dword read_pos, read_file_size, read_buffer, read_file_path)
  86. {
  87.         read_file_70.func = 0;
  88.         read_file_70.param1 = read_pos;
  89.         read_file_70.param2 = 0;
  90.         read_file_70.param3 = read_file_size;
  91.         read_file_70.param4 = read_buffer;
  92.         read_file_70.rezerv = 0;
  93.         read_file_70.name = read_file_path;
  94.         $mov eax,70
  95.         $mov ebx,#read_file_70.func
  96.         $int 0x40
  97. }
  98.  
  99. :int GetFile(dword buf, filesize, read_path)
  100. {
  101.         BDVK ReadFile_atr;
  102.         dword rBuf=0;
  103.         if (! GetFileInfo(read_path, #ReadFile_atr))
  104.         {
  105.                 rBuf = malloc(ReadFile_atr.sizelo);    
  106.                 if (! ReadFile(0, ReadFile_atr.sizelo, rBuf, read_path))
  107.                 {
  108.                         ESDWORD[buf] = rBuf;
  109.                         ESDWORD[filesize] = ReadFile_atr.sizelo;
  110.                         return 1;
  111.                 }
  112.         }
  113.         free(rBuf);
  114.         return 0;
  115. }
  116.  
  117. ////////////////////////////
  118. //     Çàïèñàòü ôàéë      //
  119. ////////////////////////////
  120. f70 write_file_70;
  121. :int WriteFile(dword write_file_size, write_buffer, write_file_path)
  122. {
  123.         write_file_70.func = 2;
  124.         write_file_70.param1 = 0;
  125.         write_file_70.param2 = 0;
  126.         write_file_70.param3 = write_file_size;
  127.         write_file_70.param4 = write_buffer;
  128.         write_file_70.rezerv = 0;
  129.         write_file_70.name = write_file_path;
  130.         $mov eax,70
  131.         $mov ebx,#write_file_70.func
  132.         $int 0x40
  133. }      
  134.  
  135. ///////////////////////////
  136. //    Ïðî÷èòàòü ïàïêó    //
  137. ///////////////////////////
  138. f70 read_dir_70;
  139. :int ReadDir(dword file_count, read_buffer, dir_path)
  140. {
  141.         read_dir_70.func = 1;
  142.         read_dir_70.param1 =
  143.         read_dir_70.param2 =
  144.         read_dir_70.rezerv = 0;
  145.         read_dir_70.param3 = file_count;
  146.         read_dir_70.param4 = read_buffer;
  147.         read_dir_70.name = dir_path;
  148.         $mov eax,70
  149.         $mov ebx,#read_dir_70.func
  150.         $int 0x40
  151. }
  152.  
  153.  
  154. :int GetDir(dword dir_buf, file_count, path)
  155. {
  156.         dword buf, fcount, error;
  157.         buf = malloc(32);
  158.         error = ReadDir(0, buf, path);
  159.         if (!error)
  160.         {
  161.                 fcount = ESDWORD[buf+8];
  162.                 buf = realloc(buf, fcount+1*304+32);
  163.                 ReadDir(fcount, buf, path);
  164.                 if (!strcmp(".",buf+72)) {fcount--; memmov(buf,buf+304,fcount*304);}
  165.                 if (!strcmp("..",buf+72)) {fcount--; memmov(buf,buf+304,fcount*304);}
  166.                 ESDWORD[dir_buf] = buf;
  167.                 ESDWORD[file_count] = fcount;
  168.         }
  169.         return error;
  170. }
  171.  
  172.  
  173. ///////////////////////////
  174. //   Ïàðàìåòðû ôàéëà    //
  175. ///////////////////////////
  176. f70 getinfo_file_70;
  177. :dword GetFileInfo(dword file_path, bdvk_struct)
  178. {    
  179.     getinfo_file_70.func = 5;
  180.     getinfo_file_70.param1 =
  181.     getinfo_file_70.param2 =
  182.     getinfo_file_70.param3 = 0;
  183.     getinfo_file_70.param4 = bdvk_struct;
  184.     getinfo_file_70.rezerv = 0;
  185.     getinfo_file_70.name = file_path;
  186.     $mov eax,70
  187.     $mov ebx,#getinfo_file_70.func
  188.     $int 0x40
  189. }
  190.  
  191.  
  192. ///////////////////////////
  193. //   Ñêîïèðîâàòü ôàéë    //
  194. ///////////////////////////
  195. :int CopyFile(dword copy_from, copy_in)
  196. {
  197.         BDVK CopyFile_atr;
  198.         dword cBufer=0;
  199.         char rezult = -1;
  200.         if (! GetFileInfo(copy_from, #CopyFile_atr))
  201.         {
  202.                 cBufer = malloc(CopyFile_atr.sizelo);  
  203.                 if (! ReadFile(0, CopyFile_atr.sizelo, cBufer, copy_from))
  204.                 {
  205.                         rezult = WriteFile(CopyFile_atr.sizelo, cBufer, copy_in);
  206.                 }
  207.         }
  208.         free(cBufer);
  209.         return rezult;
  210. }
  211.  
  212. inline fastcall void SetCurDir( ECX)
  213. {
  214.     $mov eax,30
  215.     $mov ebx,1
  216.     $int 0x40
  217. }
  218.  
  219. inline fastcall void GetCurDir( ECX, EDX)
  220. {
  221.     $mov eax,30
  222.     $mov ebx,2
  223.     $int 0x40
  224. }
  225.  
  226. void notify(dword notify_param)
  227. {
  228.         RunProgram("@notify", notify_param);
  229. }
  230.