#pragma pack(push, 1) typedef struct { char sec; char min; char hour; char rsv; }detime_t; typedef struct { char day; char month; short year; }dedate_t; typedef struct { unsigned attr; unsigned flags; union { detime_t ctime; unsigned cr_time; }; union { dedate_t cdate; unsigned cr_date; }; union { detime_t atime; unsigned acc_time; }; union { dedate_t adate; unsigned acc_date; }; union { detime_t mtime; unsigned mod_time; }; union { dedate_t mdate; unsigned mod_date; }; unsigned size; unsigned size_high; } FILEINFO; #pragma pack(pop) int get_fileinfo(const char *path,FILEINFO *info) { int retval; asm __volatile__ ( "pushl $0 \n\t" "pushl $0 \n\t" "movl %0, 1(%%esp) \n\t" "pushl %%ebx \n\t" "pushl $0 \n\t" "pushl $0 \n\t" "pushl $0 \n\t" "pushl $5 \n\t" "movl %%esp, %%ebx \n\t" "movl $70, %%eax \n\t" "int $0x40 \n\t" "addl $28, %%esp \n\t" :"=a" (retval) :"r" (path), "b" (info) ); return retval; };