コード例 #1
0
ファイル: lib.c プロジェクト: Spiderhex/C-function-lib
char *num_to_s(int num) //prend un nombre et le transforme en string
{
	int original_num=num;
	char *s;
	int i;
	int count;
	int sign=0;
	for(count=0;num!=0;count++)
	{
		num=num/10;
	}
	num=original_num;
	if (num<0)
	{
		sign=1;
		count++;
		num=num*-1;
	}
	//la count = le nombre de "caractère" dans notre nombre
	s=prep_str(count);
	for(i=0;i<count;i++)
	{
		s[count-i-1]=num%10+'0';
		num=num/10;
	}
	if (sign)
	{
		s[0]='-';
	}
	return s;
}
コード例 #2
0
ファイル: deepfat.c プロジェクト: 16Bitt/virtix
fs_node_t* parse_dir(char* dir){
	fs_node_t* node = mk_empty_dnode();
	fs_node_t* parent = node;
	char* fat_buff = (char*) fat_load_full(dir);

	char* str = prep_str(fat_buff);

	ASSERT(strcmp(str, "DEEPFAT") == 0);
	str = next_str(str);
	ASSERT(strcmp(str, "DEEPDIR") == 0);
	str = next_str(str);

	while(strcmp(str, "ENDDIR") != 0){
		char* ent = str;
		str = next_str(ent);
		fs_node_t* sub;
		
		/*
		vga_puts("\t* creating '");
		vga_puts(str);
		vga_puts("'\n");
		*/

		if(strcmp(ent, "DIR") == 0){
			char* name = str;
			str = next_str(str);
			sub = parse_dir(fat_name_conv(str));
			
			strmov(sub->name, name);
			strmov(sub->dos_name, str);
			fat_dir_t* file = fat_dir_search(fat_name_conv(str));
			sub->inode	= file->cluster_low;
			sub->length	= file->bytes;
			sub->flags	= FS_DIRECTORY;

			//Callbacks for basic VFS manipulation
			sub->open	= df_open;
			sub->close	= df_close;
			sub->readdir	= readdir_generic;
			sub->finddir	= df_finddir;
		}

		else if(strcmp(ent, "FIL") == 0){
			char* name = str;
			str = next_str(str);
			sub = mk_empty_fnode();
			
			strmov(sub->dos_name, str);
			fat_dir_t* file = fat_dir_search(fat_name_conv(str));
			
			strmov(sub->name, name);
			sub->inode	= file->cluster_low;
			sub->length	= file->bytes;
		}

		else{
			PANIC("bad deepFAT directory entry");
		}

		str = ent;
		str = next_str(str);
		str = next_str(str);
		str = next_str(str);
	
		if(parent->holds == NULL){
			parent->holds = sub;
			node = sub;
		}

		else{
			node->link = sub;
			node = sub;
		}
	}
	
	kfree(fat_buff);
	return parent;
}