bool file::open (const open_spec& spec, wstring filename) { close(); filename.append (L'\0'); ratwin::types::HANDLE new_h= CreateFile (filename.get_buffer(), spec.access, spec.share, spec.how, spec.even_more_flags); if (new_h == 0) throw classics::exception ("Tomahawk", "That can't happen!", __FILE__, __LINE__); if (new_h == ratwin::types::HANDLE(0xffffffff)) { if (spec.CanFail) return false; else { Error X (__LINE__); wFmt(X) << L"Can't open file named \"" << filename << L"\"." << endl; throw X; } } H= new_h; return true; }