summaryrefslogtreecommitdiffstats
path: root/maildrop/messageinfo.C
diff options
context:
space:
mode:
authorSam Varshavchik2013-08-19 16:39:41 -0400
committerSam Varshavchik2013-08-25 14:43:51 -0400
commit9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch)
tree7a81a04cb51efb078ee350859a64be2ebc6b8813 /maildrop/messageinfo.C
parenta9520698b770168d1f33d6301463bb70a19655ec (diff)
downloadcourier-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 'maildrop/messageinfo.C')
-rw-r--r--maildrop/messageinfo.C45
1 files changed, 45 insertions, 0 deletions
diff --git a/maildrop/messageinfo.C b/maildrop/messageinfo.C
new file mode 100644
index 0000000..9f1b203
--- /dev/null
+++ b/maildrop/messageinfo.C
@@ -0,0 +1,45 @@
+#include "config.h"
+#include "messageinfo.h"
+#include "message.h"
+
+
+void MessageInfo::info(Message &msg)
+{
+Buffer buf;
+off_t msgstart=0;
+
+ msgoffset=0;
+ msg.Rewind();
+ fromname.reset();
+ for (;;)
+ {
+ msgstart=msg.tell();
+ buf.reset();
+ if (msg.appendline(buf) < 0) return;
+
+ int l=buf.Length();
+ const char *p=buf;
+
+ if (l && p[l-1] == '\n')
+ {
+ --l;
+ buf.Length(l);
+ }
+
+ if (l == 0) continue;
+
+ if (l < 5) break;
+ if (p[0] == 'F' && p[1] == 'r' && p[2] == 'o' && p[3] == 'm'
+ && p[4] == ' ')
+ {
+ int i;
+ for (i=5; i<l; i++)
+ if (p[i] == ' ') break;
+
+ fromname.reset();
+ fromname.append(p+5, i-5);
+ }
+ else break;
+ }
+ msgoffset=msgstart;
+}