Go to most recent revision |
Blame |
Last modification |
View Log
| RSS feed
/*
*
*
*
*/
#include <kernel/func.h>
#include <kernel/model.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mount.h>
#include <dirent.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <semaphore.h>
#include <stdio.h>
#include "common.h"
#define FROMDIR "/TEMP"
char pathname
[8192];
int noscroll
=1;
static int counter
=0;
void viewdir
(int prof
)
{
struct dirent
*den
;
struct stat st
;
char *str
;
DIR
*d
;
int res
;
int x
;
//int i;
//static int flag=0;
str
=pathname
+(x
=strlen(pathname
));
d
=opendir
(pathname
);
if (d
==NULL
) {
cprintf
("ERR: can't open dir %s (errno: %i)\n",pathname
,errno
);
return;
}
while ((den
=readdir
(d
))!=NULL
) {
{
//int c='p';
//c = keyb_getchar();
//if (c=='z') inode_stats();
}
if (x
==1&&*pathname
=='/')
strcat(pathname
,den
->d_name
);
else
strcat(strcat(pathname
,"/"),den
->d_name
);
/*
if (!strcmp(den->d_name,"eport.ror")) {
if (flag==0) debug_info_show(1);
flag++;
// inode_stats();
}
*/
if (counter
==22100) noscroll
=0;
if (noscroll
) {
place
(0,10);
cprintf
(" ");
place
(0,10);
}
cprintf
("%05i %s\n",++counter
,pathname
);
//dcache_stats();
if (!strcmp(den
->d_name
,".")) goto SKIP
;
if (!strcmp(den
->d_name
,"..")) goto SKIP
;
//goto SKIP;
/*
if (!strcmp("MSINH.C",den->d_name)) {
//if (!strcmp("WDIN32.OBJ",den->d_name)) {
cprintf(">>>START SHOWING DEBUG INFO<<<\n");
noscroll=0;
//inode_stats();
debug_info_show(1);
}
*/
res
=stat
(pathname
,&st
);
if (res
!=0) {
cprintf
("can't stat %s\n",pathname
);
cprintf
("errno: %i '%s'\n",errno
,strerror(errno
));
sys_end
();
l1_exit
(0);
} else {
if (S_ISDIR
(st.
st_mode)) {
viewdir
(prof
+1);
}
}
SKIP
:
*str
='\0';
}
closedir
(d
);
}
int main
(int argc
,char *argv
[])
{
// int res;
//if (noscroll) clear();
//strcpy(pathname,"/");
//viewdir(0);
showmessage
("Try to show all filenames from a directory recursively\n"
"using one NRT task.\n");
noscroll
=0;
strcpy(pathname
,FROMDIR
);
viewdir
(0);
//dump_dentry_tree();
/*
*
*/
/*
res=umount(temp_device);
//dump_dentry_tree();
if (res!=0) {
cprintf("can't unmount XXX on /TEMP\n");
cprintf("errno: %i '%s'\n",errno,strerror(errno));
//sys_end();
return -1;
}
*/
//bdev_dump_status();
sys_end
();
return 0;
}