diff options
| author | Sam Varshavchik | 2013-08-19 16:39:41 -0400 |
|---|---|---|
| committer | Sam Varshavchik | 2013-08-25 14:43:51 -0400 |
| commit | 9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch) | |
| tree | 7a81a04cb51efb078ee350859a64be2ebc6b8813 /libmail/smapstore.C | |
| parent | a9520698b770168d1f33d6301463bb70a19655ec (diff) | |
| download | courier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2 | |
Initial checkin
Imported from subversion report, converted to git. Updated all paths in
scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'libmail/smapstore.C')
| -rw-r--r-- | libmail/smapstore.C | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/libmail/smapstore.C b/libmail/smapstore.C new file mode 100644 index 0000000..614af12 --- /dev/null +++ b/libmail/smapstore.C @@ -0,0 +1,79 @@ +/* +** Copyright 2003, Double Precision Inc. +** +** See COPYING for distribution information. +*/ + +#include "smapstore.H" +#include <sstream> + +using namespace std; + +const char *mail::smapSTORE::getName() +{ + return "STORE"; +} + +mail::smapSTORE::smapSTORE(size_t messageNumArg, + string propsArg, + imap &imapAccount, + mail::callback &callback) + : uidSet(imapAccount, vector<size_t>(&messageNumArg, + &messageNumArg+1)), + props(propsArg) +{ + defaultCB= &callback; +} + +mail::smapSTORE::smapSTORE(const vector<size_t> &messages, + string propsArg, + imap &imapAccount, + mail::callback &callback) + : uidSet(imapAccount, messages), props(propsArg) +{ + defaultCB= &callback; +} + +mail::smapSTORE::~smapSTORE() +{ +} + +void mail::smapSTORE::installed(imap &imapAccount) +{ + msgRange.init(imapAccount, uidSet); + + uidSet.clear(); + + if (go()) + return; + + ok("OK"); + imapAccount.uninstallHandler(this); +} + +bool mail::smapSTORE::ok(std::string msg) +{ + if (go()) + { + doDestroy=false; + return true; + } + return smapHandler::ok(msg); +} + +bool mail::smapSTORE::go() +{ + std::ostringstream o; + + o << "STORE"; + + if (!myimap->currentFolder || + myimap->currentFolder->closeInProgress || + !(msgRange >> o)) + return false; + + o << " " << props << "\n"; + + myimap->imapcmd("", o.str()); + return true; +} |
