+ c2pstrcpy(pappname, appname);
+ c2pstrcpy(pkeytype, keytype);
+ c2pstrcpy(pfingerprint, fingerprint);
+
+ /*
+ * This function is horribly wrong. For one thing, the alert
+ * shouldn't be modal, it should be movable modal, or a sheet in
+ * Aqua. Also, PuTTY might be in the background, in which case we
+ * should use the Notification Manager to wake up the user. In
+ * any case, we shouldn't hold up processing of other connections'
+ * data just because this one's waiting for the user. Also see the
+ * note below about closing the connection. All in all, a bit of
+ * a mess really.
+ */
+
+ /* Verify the key against the cache */
+
+ ret = verify_host_key(host, port, keytype, keystr);
+
+ if (ret == 0) /* success - key matched OK */
+ return;
+ if (ret == 2) { /* key was different */
+ ParamText(pappname, pkeytype, pfingerprint, NULL);
+ alertret=CautionAlert(wWrong, NULL);
+ if (alertret == 8) {
+ /* Cancel */
+ goto cancel;
+ } else if (alertret == 9) {
+ /* Connect Just Once */
+ } else {
+ /* Update Key */
+ store_host_key(host, port, keytype, keystr);
+ }
+ }
+ if (ret == 1) { /* key was absent */
+ ParamText(pkeytype, pfingerprint, pappname, NULL);
+ alertret=CautionAlert(wAbsent, NULL);
+ if (alertret == 7) {
+ /* Cancel */
+ goto cancel;
+ } else if (alertret == 8) {
+ /* Connect Just Once */
+ } else {
+ /* Update Key */
+ store_host_key(host, port, keytype, keystr);
+ }
+ }
+
+ return;
+
+ cancel:
+ /*
+ * User chose "Cancel". Unfortunately, if I tear the
+ * connection down here, Bad Things happen when I return. I
+ * think this function should actually return something
+ * telling the SSH code to abandon the connection.
+ */
+ return;
+}
+
+void askalg(void *frontend, const char *algtype, const char *algname)
+{
+
+}
+
+void old_keyfile_warning(void)
+{
+
+}
+
+FontSpec platform_default_fontspec(char const *name)
+{
+ FontSpec ret;
+ long smfs;
+
+ if (!strcmp(name, "Font")) {
+ smfs = GetScriptVariable(smSystemScript, smScriptMonoFondSize);
+ if (smfs == 0)
+ smfs = GetScriptVariable(smRoman, smScriptMonoFondSize);
+ if (smfs != 0) {
+ GetFontName(HiWord(smfs), ret.name);
+ if (ret.name[0] == 0)
+ memcpy(ret.name, "\pMonaco", 7);
+ ret.size = LoWord(smfs);
+ } else {
+ memcpy(ret.name, "\pMonaco", 7);
+ ret.size = 9;
+ }
+ ret.face = 0;
+ } else {
+ ret.name[0] = 0;
+ }
+
+ return ret;
+}
+
+Filename platform_default_filename(const char *name)
+{
+ Filename ret;
+ if (!strcmp(name, "LogFileName"))
+ FSMakeFSSpec(0, 0, "\pputty.log", &ret.fss);
+ else
+ memset(&ret, 0, sizeof(ret));
+ return ret;
+}
+
+char *platform_default_s(char const *name)
+{
+ return NULL;