Beispiel #1
0
void callStat(char * name){    
    char help [512] = "./";
    unsigned long subsize;
    DIR * subdir;
    struct stat statBuf;
    struct dirent *entPtr;
    stat(name, &statBuf);
    if(S_ISDIR(statBuf.st_mode)){
	if(!strcmp(name, ".") ==0 && !strcmp(name, "..") ==0){
	    subsize = 0;
	    subdir = opendir(name);
	    subopen = 1;
	    chdir(name);
	    while ((entPtr = readdir(subdir))){
		strcat(help, entPtr->d_name);
		callStat(help);
	    }
	}
	if(!strcmp(name, ".") ==0 && !strcmp(name, "..") ==0){
	    if(subopen == 1){
		printf("%lu\t./%s\n", subsize,name);
	    }else{
		printf("%lu\t.%s\n", subsize,name);
	    }
	}
    }else{
	size +=statBuf.st_size;
    }
}
Beispiel #2
0
int
main(int argc, char ** argv){
    DIR *dirPtr;
    if(argc < 2){
	perror("You must provide a directory!");
    }else{
	callStat(argv[1]);
	dirPtr = opendir (argv[1]);
	while ((entryPtr = readdir (dirPtr))){
	    callStat(entryPtr->d_name);
	}
	printf("%lu\n", size);
	closedir (dirPtr); 
    }

return 1;
}
Beispiel #3
0
 virtual int access(const String& path, int mode) {
   Variant ret = callStat(path);
   if (ret.isBoolean()) {
     assert(!ret.toBoolean());
     return -1;
   }
   return 0;
 }
Beispiel #4
0
 int access(const String& path, int /*mode*/) override {
   Variant ret = callStat(path);
   if (ret.isBoolean()) {
     assert(!ret.toBoolean());
     return -1;
   }
   return 0;
 }
Beispiel #5
0
 virtual int stat(CStrRef path, struct stat* buf) {
   Variant ret = callStat(path);
   if (ret.isBoolean()) {
     assert(!ret.toBoolean());
     return -1;
   }
   CArrRef stat = ret.toArray();
   buf->st_size = stat[s_size].asInt64Val();
   buf->st_atime = stat[s_atime].asInt64Val();
   buf->st_mtime = stat[s_mtime].asInt64Val();
   buf->st_ctime = stat[s_ctime].asInt64Val();
   return 0;
 }
Beispiel #6
0
 int stat(const String& path, struct stat* buf) override {
   Variant ret = callStat(path);
   if (ret.isBoolean()) {
     assert(!ret.toBoolean());
     return -1;
   }
   const Array& stat = ret.toArray();
   buf->st_size = stat[s_size].asInt64Val();
   buf->st_atime = stat[s_atime].asInt64Val();
   buf->st_mtime = stat[s_mtime].asInt64Val();
   buf->st_ctime = stat[s_ctime].asInt64Val();
   buf->st_mode = stat[s_mode].asInt64Val();
   return 0;
 }