Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 8621 → Rev 8622

/contrib/kolibri-libc/source/sys/closedir.c
0,0 → 1,14
/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */
 
#include <sys/dirent.h>
#include <stdlib.h>
 
int closedir(DIR *dir){
if(dir == NULL){
return -1;
}else{
free(dir->objs);
free(dir);
return 0;
}
}
/contrib/kolibri-libc/source/sys/opendir.c
0,0 → 1,53
/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */
 
#include <sys/dirent.h>
#include <ksys.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
 
#define CHECK_DIR_ERR() if(_ksys_work_files(&inf)){ \
free((void*)inf.p16); \
errno = ENOTDIR; \
return NULL; \
}
 
DIR* opendir(const char* path)
{
DIR* list = malloc(sizeof(DIR));
if(list==NULL){
errno = ENOMEM;
return NULL;
}
 
list->pos=0;
unsigned num_of_file=0;
ksys70_t inf;
 
inf.p00 = 1;
inf.p04 = 0;
inf.p12 = 2;
inf.p16 = (unsigned) malloc(32+inf.p12*560);
inf.p20 = 0;
inf.p21 = (char*)path;
CHECK_DIR_ERR();
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->objs = (struct dirent*)malloc(num_of_file*sizeof(struct dirent));
CHECK_DIR_ERR();
for(int i=0; i<num_of_file; i++){
list->objs[i].d_ino = i;
list->objs[i].d_type = *(unsigned*)(inf.p16+32+(264+40)*i);
strcpy(list->objs[i].d_name,(char*)(inf.p16+32+40+(264+40)*i));
}
list->num_objs = num_of_file;
return list;
}
 
 
/contrib/kolibri-libc/source/sys/readdir.c
0,0 → 1,14
/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */
 
#include <sys/dirent.h>
#include <stdlib.h>
 
struct dirent* readdir(DIR *dir)
{
if(dir->num_objs>dir->pos){
dir->pos++;
return &dir->objs[dir->pos-1];
}else{
return NULL;
}
}
/contrib/kolibri-libc/source/sys/rewinddir.c
0,0 → 1,9
/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */
 
#include <sys/dirent.h>
 
void rewinddir(DIR *dir){
if(dir!=NULL){
dir->pos=0;
}
}
/contrib/kolibri-libc/source/sys/seekdir.c
0,0 → 1,12
/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */
 
#include <sys/dirent.h>
 
void seekdir(DIR *dir, unsigned pos)
{
if(dir==NULL || pos>dir->num_objs){
return;
}
dir->pos=pos;
return;
}
/contrib/kolibri-libc/source/sys/telldir.c
0,0 → 1,12
/* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */
 
#include <sys/dirent.h>
 
unsigned telldir(DIR *dir)
{
if(dir!=NULL){
return dir->pos;
}else{
return 0;
}
}