Пример #1
0
void*
sdgetfspart(int i, char *s, int chatty)
{
	SDunit *unit;
	SDpart *p;
	Scsicrud *crud;

	if(cdmask&(1<<i)){
		if(strcmp(s, "cdboot") != 0)
			return nil;
	}else if(sdmask&(1<<i)){
		if(strcmp(s, "cdboot") == 0)
			return nil;
	}

	unit = sdindex2unit(i);
	if((p = sdfindpart(unit, s)) == nil){
		if(chatty)
			print("unknown partition %s!%s\n", unit->name, s);
		return nil;
	}
	if(p->crud == nil) {
		crud = malloc(sizeof(Scsicrud));
		crud->fs.dev = i;
		crud->fs.diskread = sdread;
		crud->fs.diskseek = sdseek;
	//	crud->start = 0;
		crud->unit = unit;
		crud->part = p;
		if(dosinit(&crud->fs) < 0 && dosinit(&crud->fs) < 0 && kfsinit(&crud->fs) < 0){
			if(chatty)
				print("partition %s!%s does not contain a DOS or KFS file system\n",
					unit->name, s);
			return nil;
		}
		p->crud = crud;
	}
	return p->crud;
}
Пример #2
0
void*
floppygetfspart(int i, char *name, int chatty)
{
    static Fs fs;

    if(strcmp(name, "dos") != 0) {
        if(chatty)
            print("unknown partition fd%d!%s (use fd%d!dos)\n", i, name, i);
        return nil;
    }

    fs.dev = i;
    fs.diskread = floppyread;
    fs.diskseek = floppyseek;

    /* sometimes we get spurious errors and doing it again works */
    if(dosinit(&fs) < 0 && dosinit(&fs) < 0) {
        if(chatty)
            print("fd%d!%s does not contain a FAT file system\n", i, name);
        return nil;
    }
    return &fs;
}