void CMakeMountPointDlg::OnOK() { UpdateData(TRUE); BOOL bRW = m_nType == 1; m_bMade = MakeMount(m_strDir, m_strVol, m_strCell, bRW); CDialog::OnOK(); }
int cd_opendevice (int unit, void *ioreq, uint32 flags) { struct FSReq *fsreq = ioreq; struct CDSB *cdsb; struct MountEnviron *me; struct BlkReq blkreq; KPRINTF ("cd_opendevice ()"); if ((cdsb = KMalloc (sizeof (struct CDSB))) != NULL) { me = fsreq->me; if (OpenDevice (me->device_name, me->device_unit, &blkreq, me->device_flags) == 0) { /* FIXME: Shouldn't need it (also in fat handler) */ MemSet (cdsb, 0, sizeof (struct CDSB)); /* Need it as cdsb->validated isn't initialized */ cdsb->device = blkreq.device; cdsb->unitp = blkreq.unitp; cdsb->me = fsreq->me; cdsb->reference_cnt = 0; LIST_INIT (&cdsb->node_list); LIST_INIT (&cdsb->active_filp_list); LIST_INIT (&cdsb->invalid_filp_list); cdsb->root_node.flags = ISO_DIRECTORY; cdsb->root_node.cdsb = cdsb; cdsb->root_node.reference_cnt = 0; if ((cdsb->buf = CreateBuf (cdsb->device, cdsb->unitp, me->buffer_cnt, me->block_size, me->partition_start, me->partition_end, me->writethru_critical, me->writeback_delay, me->max_transfer)) != NULL) { if (KSpawn (CDTask, cdsb, 10, "cd.handler") != -1) { KWait (SIGF_INIT); RWWriteLock (&mountlist_rwlock); cd_device.reference_cnt ++; cdsb->device_mount = MakeMount (cdsb->me, &cd_device, cdsb); AddMount (cdsb->device_mount); RWUnlock (&mountlist_rwlock); fsreq->unitp = cdsb; fsreq->error = 0; fsreq->rc = 0; return 0; } } CloseDevice (&blkreq); } KFree (cdsb); } fsreq->error = IOERR_OPENFAIL; fsreq->rc = -1; KPANIC ("CD OpenDevice FAIL"); return -1; }