int get_appointments(const char *file_name, Appointment_t appointments[], 
					 int max_size)
{
	
	int year,month,day,hour,min,tc1,tc2;
	TCId_no_t tc;	
	Time_t time;
	Date_t date;
	char dead;
	int i=0;
	int status;
	int flag=1;
	FILE* inp;
	
	inp=fopen(file_name,"r");
	
	do{
		status=fscanf(inp,"%6d%5d %d %d %d %2d%c%2d ",&tc1,&tc2,&year,&month,&day,&hour,&dead,&min);
		if(status == EOF || i == max_size)
			flag=0;
		else 
		{
			time=get_time(hour,min);
			date=get_date(year,month,day,time);
			tc=get_tc(tc1,tc2);
			appointments[i].date=date;
			appointments[i].people.id_no=tc;
			++i;
		}
	}while(flag);

	fclose(inp);

	return i;
}
int get_people(const char *file_name, People_t people[], int max_size)
{
	int tc1,tc2;
	int i=0;
	int flag=1;
	int status;
	char name[30],surname[30];
	gender_t gender;
	char gndr;
	TCId_no_t id;
	
	FILE* inp;
	
	inp=fopen(file_name,"r");
	
	do{
		status=fscanf(inp,"%6d%5d %s %s %c\n",&tc1,&tc2,name,surname,&gndr);
		
		switch (gndr){
			case 'M' : gender = MALE;
				break;
			case 'F' : gender = FEMALE;
				break;
		
		}
		
		if(status == EOF || i == max_size)
			flag=0;
		else 
		{
			id=get_tc(tc1,tc2);
			people[i].id_no=id;
			strcpy(people[i].name,name);
			strcpy(people[i].surname,surname);
			people[i].gender=gender;	
			++i;
		}
	}while(flag);
	
	fclose(inp);
	
	return  i;
}
示例#3
0
文件: stage2.c 项目: HTshandou/newos
int _start(char *boot_args, char *monitor)
{
	unsigned int bootdir_pages;

	memset(&ka, 0, sizeof(ka));

	init_nextmon(monitor);
	dprintf("\nNewOS stage2: args '%s', monitor %p\n", boot_args, monitor);

	probe_memory(&ka);

	dprintf("tc 0x%x\n", get_tc());
	dprintf("urp 0x%x\n", get_urp());
	dprintf("srp 0x%x\n", get_srp());

	// calculate how big the bootdir is
	{
		int entry;
		bootdir_pages = 0;
		for (entry = 0; entry < BOOTDIR_MAX_ENTRIES; entry++) {
			if (bootdir[entry].be_type == BE_TYPE_NONE)
				break;

			bootdir_pages += bootdir[entry].be_size;
		}
		ka.bootdir_addr.start = (unsigned long)bootdir;
		ka.bootdir_addr.size = bootdir_pages * PAGE_SIZE;
		dprintf("bootdir: start %p, size 0x%x\n", (char *)ka.bootdir_addr.start, ka.bootdir_addr.size);
	}

	// begin to set up the physical page allocation range data structures
	ka.num_phys_alloc_ranges = 1;
	ka.phys_alloc_range[0].start = ka.bootdir_addr.start;
	ka.phys_alloc_range[0].size = ka.bootdir_addr.size;

	// allocate a stack for the kernel when we jump into it
	ka.cpu_kstack[0].start = allocate_page(&ka);
	ka.cpu_kstack[0].size = PAGE_SIZE;

	ka.num_cpus = 1;

	return 0;
}