GPrefsMgr::~GPrefsMgr() { SetData(kGProgramVersionID, GMGetVersionNumberStr()); SaveToDisk(); }
GMApp::GMApp ( int* argc, char* argv[], JBoolean* displayAbout, JString* prevVersStr ) : JXApplication(argc, argv, kAppSignature, kGMDefaultStringData), itsTableDirs(NULL), itsHasFileDirectory(kJFalse), itsOpenPrefsAfterAbout(kJFalse), itsPrefsNew(kJFalse), itsAboutDialog(NULL) { *displayAbout = GMCreateGlobals(this); if (!*displayAbout) { *prevVersStr = (GGetPrefsMgr())->GetArrowVersionStr(); if (*prevVersStr == GMGetVersionNumberStr()) { prevVersStr->Clear(); } else { *displayAbout = kJTrue; if (prevVersStr->BeginsWith("1") || prevVersStr->BeginsWith("0") || prevVersStr->BeginsWith("2.0b")) { itsOpenPrefsAfterAbout = kJTrue; } } } else { itsPrefsNew = kJTrue; itsOpenPrefsAfterAbout = kJTrue; prevVersStr->Clear(); } GMMDIServer* mdi = new GMMDIServer(this); assert(mdi != NULL); itsTableDirs = new JPtrArray<GMessageTableDir>(JPtrArrayT::kForgetAll); assert(itsTableDirs != NULL); itsEditDirs = new JPtrArray<GMessageEditDir>(JPtrArrayT::kForgetAll); assert(itsEditDirs != NULL); itsLockTasks = new JPtrArray<GLockFileTask>(JPtrArrayT::kForgetAll); assert(itsLockTasks != NULL); if (*displayAbout) { if (!(JGetUserNotification())->AcceptLicense()) { exit(0); } } JString home; if (JGetHomeDirectory(&home)) { JAppendDirSeparator(&home); home += kArrowFilesDir; if (!JDirectoryExists(home)) { JError err = JCreateDirectory(home); if (err.OK()) { itsFileDirectory = home; itsHasFileDirectory = kJTrue; } } else { if (JKillDirectory(home)) { JCreateDirectory(home); } if (JDirectoryExists(home)) { itsFileDirectory = home; itsHasFileDirectory = kJTrue; } } } JBoolean ok = OpenSession(); if (*argc > 1) { mdi->HandleCmdLineOptions(*argc, argv); } else if (!ok) { OpenSystemMailbox(); } OpenMailboxWindowIfNeeded(); ListenTo(GGetPrefsMgr()); /* JString test("pulp"); JPtrArray<JString> names; GParseNameList(test, names); JPtrArray<JString> aliases; aliases.SetCompareFunction(JCompareStringsCaseSensitive); JSize i = 1; while (i <= names.GetElementCount()) { JString& name = *(names.NthElement(i)); JString alias; JString fcc; if (GGetAddressBookMgr()->NameIsAlias(name, alias, fcc)) { JIndex findex; if (!aliases.SearchSorted(&name, JOrderedSetT::kAnyMatch, &findex)) { GParseNameList(alias, names); aliases.InsertSorted(names.NthElement(i)); names.RemoveElement(i); } else { names.DeleteElement(i); } } else { i++; } } aliases.DeleteAll(); const JSize count = names.GetElementCount(); for (JIndex i = 1; i <= count; i++) { cout << *(names.NthElement(i)) << endl; }*/ }
void SMTPMessage::SendNextData() { if (itsCurrentMode == kHello) { JCharacter hostname[255]; gethostname(hostname, 255); JString senddata = "HELO "; senddata += hostname; SendLine(senddata); senddata += "\n"; GMGetSMTPDebugDir()->AddText(senddata); } else if (itsCurrentMode == kFrom) { JString senddata = "MAIL FROM: " + *itsFrom; SendLine(senddata); senddata += "\n"; GMGetSMTPDebugDir()->AddText(senddata); } else if (itsCurrentMode == kTo) { assert(itsCurrentIndex <= itsToNames->GetElementCount()); JString senddata; JString name = *(itsToNames->NthElement(itsCurrentIndex)); senddata = "RCPT TO: " + name; SendLine(senddata); senddata += "\n"; GMGetSMTPDebugDir()->AddText(senddata); } else if (itsCurrentMode == kCc) { assert(itsCurrentIndex <= itsCcNames->GetElementCount()); JString senddata; JString name = *(itsCcNames->NthElement(itsCurrentIndex)); senddata = "RCPT TO: " + name; SendLine(senddata); senddata += "\n"; GMGetSMTPDebugDir()->AddText(senddata); } else if (itsCurrentMode == kBcc) { assert(itsCurrentIndex <= itsBccNames->GetElementCount()); JString senddata; JString name = *(itsBccNames->NthElement(itsCurrentIndex)); senddata = "RCPT TO: " + name; SendLine(senddata); senddata += "\n"; GMGetSMTPDebugDir()->AddText(senddata); } else if (itsCurrentMode == kDataHeader) { JString senddata = "DATA"; SendLine(senddata); senddata += "\n"; GMGetSMTPDebugDir()->AddText(senddata); } else if (itsCurrentMode == kData) { JString from = itsFullName + " <" + itsSMTPUser + ">"; if (!from.IsEmpty()) { JString senddata = "From: " + from; SendLine(senddata); senddata += "\n"; GMGetSMTPDebugDir()->AddText(senddata); AppendToOutbox("From: "); AppendToOutbox(from); AppendToOutbox("\n"); } struct utsname buf; uname(&buf); JString senddata = "X-Mailer: Arrow "; senddata += GMGetVersionNumberStr(); senddata += JString(" (X11; ") + buf.sysname + JString(" ") + + JString(buf.release); senddata += JString("; ") + buf.machine + JString(")"); SendLine(senddata); AppendToOutbox(senddata); AppendToOutbox("\n"); GMGetSMTPDebugDir()->AddText(senddata); senddata = "To: "; assert(itsToNames->GetElementCount() > 0); senddata += *(itsToNames->NthElement(1)); for (JSize i = 2; i <= itsToNames->GetElementCount(); i++) { senddata += ",\n\t" + *(itsToNames->NthElement(i)); } SendLine(senddata); AppendToOutbox(senddata); AppendToOutbox("\n"); GMGetSMTPDebugDir()->AddText(senddata); if (!itsReplyTo->IsEmpty()) { senddata = "Reply-To: " + *itsReplyTo; SendLine(senddata); GMGetSMTPDebugDir()->AddText(senddata); } if (itsCcNames->GetElementCount() != 0) { JSize count = itsCcNames->GetElementCount(); senddata = "Cc: "; senddata += *(itsCcNames->NthElement(1)); for (JSize i = 2; i <= count; i++) { senddata += ",\n\t" + *(itsCcNames->NthElement(i)); } SendLine(senddata); AppendToOutbox(senddata); AppendToOutbox("\n"); GMGetSMTPDebugDir()->AddText(senddata); } if (!itsSubject->IsEmpty()) { senddata = "Subject: " + *itsSubject; SendLine(senddata); AppendToOutbox("Subject: "); AppendToOutbox(*itsSubject); AppendToOutbox("\n"); GMGetSMTPDebugDir()->AddText(senddata); } if (!itsAddedHeaders->IsEmpty()) { SendMultiLine(itsAddedHeaders); } SendLine(""); AppendToOutbox("\n"); GMGetSMTPDebugDir()->AddText("\nData not shown ...\n"); AppendToOutbox(*itsData); SendData(); AppendToOutbox("\n"); AppendToOutbox("\n"); SendLine(""); SendLine("."); SendLine("QUIT"); WriteToOutbox(); } }