Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. typedef unsigned char byte;
  2. typedef unsigned short word;
  3. typedef unsigned int dword;
  4. typedef unsigned long long qword;
  5.  
  6. #pragma pack(push,1)
  7. typedef struct
  8. {
  9. unsigned        p00;
  10. unsigned        p04;
  11. unsigned        p08;
  12. unsigned        p12;
  13. unsigned        p16;
  14. char            p20;
  15. char            *p21;
  16. } FS_struct70;
  17. #pragma pack(pop)
  18.  
  19. #pragma pack(push,1)
  20. typedef struct
  21. {
  22.    byte d;
  23.    byte m;
  24.    word y;
  25. }date;
  26.  
  27.  
  28. #pragma pack(push,1)
  29. typedef struct
  30. {
  31.    byte s;
  32.    byte m;
  33.    byte h;
  34.    byte zero;
  35. }time;
  36.  
  37. #pragma pack(push,1)
  38. typedef struct
  39. {
  40. dword       attrib;
  41. byte        enc_name;
  42. byte        res[3];
  43. time        c_time;
  44. date        c_date;
  45. time        a_time;
  46. date        a_date;
  47. time        m_time;
  48. date        m_date;
  49. dword         size;
  50. byte     name[520];
  51. } FS_struct_BDVK;
  52. #pragma pack(pop)
  53.  
  54. static inline int FS_file_70(FS_struct70 *k)
  55. {
  56.         int err=0;
  57.         asm volatile ("int $0x40":"=a"(err):"a"(70), "b"(k));
  58.         return err;
  59. }
  60.  
  61. FS_struct_BDVK ret_struct;
  62.  
  63. static inline FS_struct_BDVK* get_bdvk(char *path)
  64. {
  65.         FS_struct70 file_read_struct;
  66.         file_read_struct.p00 = 5;
  67.         file_read_struct.p04 = 0;
  68.         file_read_struct.p08 = 0;
  69.         file_read_struct.p12 = 0;
  70.         file_read_struct.p16 = (unsigned)&ret_struct;
  71.         file_read_struct.p20 = 0;
  72.         file_read_struct.p21 = path;
  73.         if(!FS_file_70(&file_read_struct))
  74.         {
  75.             return (FS_struct_BDVK*)&ret_struct;
  76.         }
  77.         else
  78.         {
  79.             return NULL;
  80.         }
  81. }
  82.