コード例 #1
0
ファイル: file_enumerator.cpp プロジェクト: wbenny/mini-tor
file_iterator
file_enumerator::begin(
  void
  ) const
{
  return file_iterator(_path);
}
コード例 #2
0
void test_fstream_iterator() {
  ifstream in_file("in_test.txt");
  ofstream out_file("out_test.txt");

  if (! in_file || ! out_file) {
    cerr << "Cannot find input or ouput file.\n";
  }

  istream_iterator<string> file_iterator(in_file);
  istream_iterator<string> end_of_file;
  vector<string> text;

  copy(file_iterator, end_of_file, back_inserter(text));
  sort(text.begin(), text.end());
  ostream_iterator<string> out_file_iterator(out_file, " ");
  copy(text.begin(), text.end(), out_file_iterator);
}
コード例 #3
0
ファイル: syscall.c プロジェクト: Swelo0/prog_sys_le_retour
// System call handler: call the appropriate system call according to the nb argument.
// Called by the assembly code _syscall_handler
int syscall_handler(syscall_t nb, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t caller_tss_selector) {
	
	printf("task %d called syscall_handler\n", caller_tss_selector);
	
	// Offset for pointers to reach the real address (task thinks it indexes since 0x0 but it really doesn't)
	task_t* t = get_task(caller_tss_selector);
	uint32_t offset = FIRST_TASK + t.gdt_tss_sel * TASK_LIMIT;
	
	int ret = 0;
	switch (nb) {
		
		case SYSCALL_PUTC:
			UNUSED(arg2);
			UNUSED(arg3);
			UNUSED(arg4);
			print_char((char) arg1 + offset);
			break;
			
		case SYSCALL_PUTS:
			UNUSED(arg2);
			UNUSED(arg3);
			UNUSED(arg4);
			print_str((char*) arg1 + offset);
			break;
			
		case SYSCALL_EXEC:
			UNUSED(arg2);
			UNUSED(arg3);
			UNUSED(arg4);
			ret = exec((char*) arg1 + offset);
			break;
			
		case SYSCALL_GETC:
			UNUSED(arg1);
			UNUSED(arg2);
			UNUSED(arg3);
			UNUSED(arg4);
			ret = getc();
			break;
			
		case SYSCALL_FILE_STAT:
			UNUSED(arg3);
			UNUSED(arg4);
			ret = file_stat((char*) arg1 + offset, (stat_t*) arg2 + offset);
			break;
			
		case SYSCALL_FILE_READ:
			UNUSED(arg3);
			UNUSED(arg4);
			ret = file_read((char*) arg1 + offset, (void*) arg2 + offset);
			break;
			
		case SYSCALL_FILE_REMOVE:
			UNUSED(arg2);
			UNUSED(arg3);
			UNUSED(arg4);
			ret = file_remove((char*) arg1 + offset);
			break;
			
		case SYSCALL_FILE_ITERATOR:
			UNUSED(arg2);
			UNUSED(arg3);
			UNUSED(arg4);
			file_iterator_t it = file_iterator();
			arg1 = (uint32_t) &it + offset;
			break;
			
		case SYSCALL_FILE_NEXT:
			UNUSED(arg3);
			UNUSED(arg4);
			ret = file_next((char*) arg1 + offset, (file_iterator_t*) arg2 + offset);
			break;
			
		case SYSCALL_GET_TICKS:
			UNUSED(arg1);
			UNUSED(arg2);
			UNUSED(arg3);
			UNUSED(arg4);
			ret = get_ticks();
			break;
			
		default:
			UNUSED(nb);
			UNUSED(arg1);
			UNUSED(arg2);
			UNUSED(arg3);
			UNUSED(arg4);
			break;
		
	}
	
	// End of routine
	return ret;
	
}