35,11 → 35,53 |
} |
} |
|
int lsdir(const char* dir, short_file_info **list) |
{ |
int num_of_file=0; |
kol_struct70 inf; |
|
inf.p00 = 1; |
inf.p04 = 0; |
inf.p12 = 2; |
inf.p16 = (unsigned*) malloc(32+inf.p12*560); |
inf.p20 = 0; |
inf.p21 = dir; |
|
if(kol_file_70(&inf)) |
{ |
free((void*)inf.p16); |
return FS_ERROR; |
} |
|
num_of_file = *(unsigned*)(inf.p16+8); |
inf.p12 = num_of_file; |
free((void*)inf.p16); |
inf.p16 = (unsigned) malloc(32+inf.p12*560); |
*list = (short_file_info*)malloc(num_of_file*sizeof(short_file_info)); |
|
if(kol_file_70(&inf)) |
{ |
free((void*)inf.p16); |
return FS_ERROR; |
} |
|
for(int i=0; i<num_of_file; i++) |
{ |
(*list)[i].type = *(unsigned*)(inf.p16+32+(264+40)*i); |
(*list)[i].name =(char*)(inf.p16+32+40+(264+40)*i); |
} |
return num_of_file; |
} |
|
|
char *getcwd(char *buf, unsigned size) |
{ |
if(buf == NULL){ |
buf = malloc(size); |
if((buf = malloc(size))==NULL) |
{ |
return NULL; |
} |
} |
__asm__ __volatile__( |
"int $0x40" |
::"a"(30),"b"(2),"c"(buf), "d"(size)); |