Exemplo n.º 1
0
void Filesystem::folder_sysobj(TiObj& out, std::string url){
	out.clear();
	string descfile = path_add(url,".sysobj.ti");
	if ( this->exists(descfile) ){
		out.load(descfile);
	}
	if ( out.classe() == "" ){
		out.set("class", "Folder");
	} else if ( !out.is("Folder") ){
		out.set("class", "Folder:"+out.classe());
	}
}
Exemplo n.º 2
0
std::string Filesystem::folder_type(std::string url){
	string descfile = path_add(url,".sysobj.ti");
	if ( this->exists(descfile) ){
		TiObj meta;
		meta.load(descfile);
		return string("Folder:")+meta.classe();
	} else {
		return "Folder";
	}
}
Exemplo n.º 3
0
TiObj Filesystem::info(std::string url){
	TiObj out;
	struct stat buf;
	string file_url = this->path_set(url);
	if ( stat(file_url.c_str(), &buf) ){
		return this->error( strerror(errno), url );
	}

	// Set node variables
	struct tm* clock;
	char strbuf[1024];
	int permission = ((buf.st_mode & S_IRWXU) >> 6)*100 + ((buf.st_mode & S_IRWXG) >> 3)*10 + ((buf.st_mode & S_IRWXO));

	out.set("permission", (long int) permission );
	out.set("inode", (long int) buf.st_ino );
	out.set("name", path_last(file_url) );
	out.set("url", path_absolute(file_url) );
	out.set("uid", (long int) buf.st_uid );
	out.set("gid", (long int)buf.st_gid );
	out.set("size_bytes",  (long int)buf.st_size );
	out.set("size_blocks", (long int)buf.st_blocks );
	out.set("block_size",  (long int)buf.st_blksize );

	clock = gmtime(&(buf.st_atime));
	sprintf(strbuf,"%d/%d/%d,%d:%d:%d",clock->tm_year+1900,clock->tm_mon+1,clock->tm_mday,clock->tm_hour,clock->tm_min,clock->tm_sec);
	out.set("atime", strbuf);
	clock = gmtime(&(buf.st_mtime));
	sprintf(strbuf,"%d/%d/%d,%d:%d:%d",clock->tm_year+1900,clock->tm_mon+1,clock->tm_mday,clock->tm_hour,clock->tm_min,clock->tm_sec);
	out.set("mtime", strbuf);
	clock = gmtime(&(buf.st_ctime));
	sprintf(strbuf,"%d/%d/%d,%d:%d:%d",clock->tm_year+1900,clock->tm_mon+1,clock->tm_mday,clock->tm_hour,clock->tm_min,clock->tm_sec);
	out.set("ctime", strbuf);

	// Get node type
	if (S_ISREG (buf.st_mode)){
		out.classe() = this->file_type(file_url);
	} else if (S_ISLNK(buf.st_mode)){
		out.classe() = "Link";
	} else if (S_ISDIR (buf.st_mode)){
		out.classe() = this->folder_type(file_url);
	}
	return out;
}