void SystemCall(u32 id, void *param, void *result) { int i; struct dirent *node; switch (id) { case SYS_PUTS: tty_puts((char*)param); break; case SYS_EXEC: LoadProcess((char*)param); break; case 2: if (kbd_event) { kbd_event = false; *(bool*)result = true; } else { *(bool*)result = false; } break; case 3: *(int*)result = inb(*(int*)param); break; case 4: outb(*(int*)param, *(int*)result); break; case 5: // read dir i = *(int *)param; node = fs_readdir(ird_root, i); if (!node) { *(int *) result = 0; } else { *(char *)result = node->name; } break; case 6: tty_attr((int)param); break; case 7: *(int*)result = timer_ticks; break; default: break; } }
bool GMPParent::EnsureProcessLoaded() { if (mState == GMPStateLoaded) { return true; } if (mState == GMPStateClosing || mState == GMPStateUnloading) { return false; } nsresult rv = LoadProcess(); return NS_SUCCEEDED(rv); }
bool COptionsPageConnectionSFTP::LoadKeyFile(wxString& keyFile, bool silent, wxString& comment, wxString& data) { if (!LoadProcess()) return false; // Get keytype if (!Send(_T("file " + keyFile))) return false; wxString reply; enum ReplyCode code = GetReply(reply); if (code == failure) return false; if (code == error || (reply != _T("0") && reply != _T("1"))) { if (!silent) { const wxString msg = wxString::Format(_("The file '%s' could not be loaded or does not contain a private key."), keyFile.c_str()); wxMessageBox(msg, _("Could not load keyfile"), wxICON_EXCLAMATION); } return false; } bool needs_conversion; if (reply == _T("1")) { if (silent) return false; needs_conversion = true; } else needs_conversion = false; // Check if file is encrypted if (!Send(_T("encrypted"))) return false; code = GetReply(reply); if (code != success) { wxASSERT(code != error); return false; } bool encrypted; if (reply == _T("1")) { if (silent) return false; encrypted = true; } else encrypted = false; if (encrypted || needs_conversion) { wxASSERT(!silent); wxString msg; if (needs_conversion) { if (!encrypted) msg = wxString::Format(_("The file '%s' is not in a format supported by FileZilla.\nWould you like to convert it into a supported format?"), keyFile.c_str()); else msg = wxString::Format(_("The file '%s' is not in a format supported by FileZilla.\nThe file is also password protected. Password protected keyfiles are not supported by FileZilla yet.\nWould you like to convert it into a supported, unprotected format?"), keyFile.c_str()); } else if (encrypted) msg = wxString::Format(_("The file '%s' is password protected. Password protected keyfiles are not supported by FileZilla yet.\nWould you like to convert it into an unprotected file?"), keyFile.c_str()); int res = wxMessageBox(msg, _("Convert keyfile"), wxICON_QUESTION | wxYES_NO); if (res != wxYES) return false; if (encrypted) { wxString msg = wxString::Format(_("Enter the password for the file '%s'.\nPlease note that the converted file will not be password protected."), keyFile.c_str()); CInputDialog dlg; if (!dlg.Create(this, _("Password required"), msg)) return false; dlg.SetPasswordMode(true); if (dlg.ShowModal() != wxID_OK) return false; if (!Send(_T("password " + dlg.GetValue()))) return false; if (GetReply(reply) != success) return false; } if (!Send(_T("load"))) return false; code = GetReply(reply); if (code == failure) return false; if (code != success) { wxString msg = wxString::Format(_("Failed to load private key: %s"), reply.c_str()); wxMessageBox(msg, _("Could not load private key"), wxICON_EXCLAMATION); return false; } wxFileDialog dlg(this, _("Select filename for converted keyfile"), _T(""), _T(""), _T("PuTTY private key files (*.ppk)|*.ppk"), wxFD_SAVE | wxFD_OVERWRITE_PROMPT); if (dlg.ShowModal() != wxID_OK) return false; wxString newName = dlg.GetPath(); if (newName == _T("")) return false; if (newName == keyFile) { // Not actually a requirement by fzputtygen, but be on the safe side. We don't want the user to lose his keys. wxMessageBox(_("Source and target file may not be the same"), _("Could not convert private key"), wxICON_EXCLAMATION); return false; } Send(_T("write ") + newName); code = GetReply(reply); if (code == failure) return false; if (code != success) { wxMessageBox(wxString::Format(_("Could not write keyfile: %s"), reply.c_str()), _("Could not convert private key"), wxICON_EXCLAMATION); return false; } keyFile = newName; } else { if (!Send(_T("load"))) return false; code = GetReply(reply); if (code != success) return false; } Send(_T("comment")); code = GetReply(comment); if (code != success) return false; Send(_T("data")); code = GetReply(data); if (code != success) return false; return true; }