Date: Wed, 21 Jun 2006 10:38:05 -0800 From: Andrew Swartz <awswartz@acsalaska.net> To: freebsd-questions@freebsd.org Subject: Sendmail + Cyrus + Procmail(?) + SpamAssassin Message-ID: <4499920D.8060802@acsalaska.net>
next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------020003030105060108060207
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
I don't know if anyone is still interested, but I found a solution to
this problem. My mail goes Sendmail-->Procmail-->CyrusIMAP.
There are numerous discussions of how to configure the
Sendmail-->Procmail portion, so I'll skip that.
The problem lies in the Procmail-->Cyrus part. Sendmail and/or Procmail
insists on adding a "From" line to the top of the message, and this
causes an error when trying to pass the message from the procmailrc file
to /usr/lib/cyrus-imapd/deliver. So I wrote a little C-program that the
email can be piped through (removing the "From" line); the resulting
message is passed to /usr/lib/cyrus-imapd/deliver.
Here is my ~/.promailrc file. Note that all mail is first delivered to
the user's CyrusIMAP box, then it goes through the procmail checks.
This is because if I don't do this, then all mail that fails all the
conditions (recipes) gets shoved into /usr/local/mail/~, which is
basically a black hole if you are using Cyrus.
# This file is: ~/.procmailrc
#
# REQUIREMENTS:
# 1) cyrus-imap (specifically, "/usr/lib/cyrus-imapd/deliver").
# 2) the C-program "rmfromln" in a reachable place (like
/usr/local/bin).
# rmfromln: the email argument is piped in; if the email
message
# has been appended with starting "From" line, then this line is
# removed, otherwise the message remains unchanged.
LOGFILE=/home/r2/procmail.log
###############################################################################
# This is the default action; it delivers the email to the imap mailbox,
# and thus this happens regardless of the success|failure of the
recipes.
# RATIONAL: every email MUST have a "To" field, otherwise sendmail would
# not have passed it to us!?
:0 c
* ^To:.
| rmfromln | /usr/lib/cyrus-imapd/deliver $LOGNAME
###############################################################################
:0
* ^Subject:.*(callalert|CALLALERT)
* ^Subject:.*(on|ON)
| /root/scripts/callalert on
:0
* ^Subject:.*(callalert|CALLALERT)
* ^Subject:.*(off|OFF)
| /root/scripts/callalert off
ALSO: I've attached the C-program "rmfromln" (and it's source code)
which removes the "From" line (if it is present).
-Andy Swartz
--------------020003030105060108060207
Content-Type: application/octet-stream;
name="rmfromln"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="rmfromln"
f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAsIQECDQAAAAkIQAAAAAAADQAIAAGACgAIgAfAAYA
AAA0AAAANIAECDSABAjAAAAAwAAAAAUAAAAEAAAAAwAAAPQAAAD0gAQI9IAECBMAAAATAAAA
BAAAAAEAAAABAAAAAAAAAACABAgAgAQI2AcAANgHAAAFAAAAABAAAAEAAADYBwAA2JcECNiX
BAgkAQAAMAEAAAYAAAAAEAAAAgAAAOQHAADklwQI5JcECMgAAADIAAAABgAAAAQAAAAEAAAA
CAEAAAiBBAgIgQQIIAAAACAAAAAEAAAABAAAAC9saWIvbGQtbGludXguc28uMgAABAAAABAA
AAABAAAAR05VAAAAAAACAAAAAgAAAAUAAAADAAAAEAAAAA8AAAAMAAAADgAAAAAAAAAAAAAA
AQAAAAIAAAADAAAAAAAAAAAAAAAGAAAABwAAAAUAAAAJAAAACgAAAAsAAAAIAAAABAAAAA0A
AAAAAAAAAAAAAAAAAAAAAAAAMwAAAACEBAjmAAAAEgAAADsAAAAQhAQI4QAAABIAAAAaAAAA
IIQECG0AAAASAAAAEgAAADCEBAioAAAAEgAAAEcAAABAhAQI4QAAABIAAAALAAAA/JgECAQA
AAARABYALAAAAFCEBAjUAAAAEgAAAEEAAABghAQI8QAAABIAAABiAAAAcIQECPsAAAASAAAA
TgAAAICEBAjZAAAAEgAAAB8AAACQhAQI3wIAABIAAAB0AAAAoIQECLkAAAASAAAAJgAAAACZ
BAgEAAAAEQAWAFMAAADIhwQIBAAAABEADgB5AAAAAAAAAAAAAAAgAAAAAGxpYmMuc28uNgBz
dGRvdXQAdG1wZmlsZQBmZW9mAGNhbGxvYwBzdGRpbgBzdHJzdHIAZ2V0Y2hhcgBmZ2V0YwBm
cHV0YwByZXdpbmQAZXhpdABfSU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbgBmcmVl
AF9fZ21vbl9zdGFydF9fAEdMSUJDXzIuMQBHTElCQ18yLjAAAAACAAIAAgADAAIAAgACAAIA
AgACAAIAAgACAAEAAAABAAIAAQAAABAAAAAAAAAAEWlpDQAAAwCIAAAAEAAAABBpaQ0AAAIA
kgAAAAAAAAD4mAQIBg8AAPyYBAgFBgAAAJkECAUNAADMmAQIBwEAANCYBAgHAgAA1JgECAcD
AADYmAQIBwQAANyYBAgHBQAA4JgECAcHAADkmAQIBwgAAOiYBAgHCQAA7JgECAcKAADwmAQI
BwsAAPSYBAgHDAAAVYnlg+wI6PEAAADoTAEAAOiXAwAAycMA/zXEmAQI/yXImAQIAAAAAP8l
zJgECGgAAAAA6eD/////JdCYBAhoCAAAAOnQ/////yXUmAQIaBAAAADpwP////8l2JgECGgY
AAAA6bD/////JdyYBAhoIAAAAOmg/////yXgmAQIaCgAAADpkP////8l5JgECGgwAAAA6YD/
////JeiYBAhoOAAAAOlw/////yXsmAQIaEAAAADpYP////8l8JgECGhIAAAA6VD/////JfSY
BAhoUAAAAOlA////Me1eieGD5PBQVFJoUIcECGgghwQIUVZoYIUECOif////9JCQVYnlU1Do
AAAAAFuBw+ITAACLgzgAAACFwHQC/9CLXfzJw5CQVYnlg+wIgD0EmQQIAHUpoeCXBAiLEIXS
dBeJ9oPABKPglwQI/9Kh4JcECIsQhdJ168YFBJkECAHJw4n2VYnlg+wIobyYBAiFwHQZuAAA
AACFwHQQg+wMaLyYBAjop3r794PEEMnDkJBVieVTg+wUg+TwuAAAAAApxOi6/v//iUXsx0X0
AAAAAIPsDP917Oi1/v//g8QQg+wM/zUAmQQI6HT+//+DxBCIRfuKRfuEwHQigH37CnUC6xqD
7Aj/dewPvkX7UOif/v//g8QQjUX0/wDrw4N99AB1CoPsDGoA6KX+//+D7Aj/dexqCuh4/v//
g8QQjUX0/wCD7AhqAf919OiT/v//g8QQiUXog+wM/3Xs6DL+//+DxBDHRfAAAAAAi0XwO0X0
fALrH4tF8Itd6AHDg+wM/3Xs6Nv9//+DxBCIA41F8P8A69eD7Az/NQCZBAjo0f3//4PEEIXA
dD3HRfAAAAAAi0XwO0X0fALrIoPsCP81/JgECItF8ANF6A++AFDo4f3//4PEEI1F8P8A69SD
7AxqAOjt/f//g+wIaMyHBAj/dejorf3//4PEEIXAdTPHRfAAAAAAi0XwO0X0fALrIoPsCP81
/JgECItF8ANF6A++AFDojf3//4PEEI1F8P8A69ToHv3//4hF+4B9+/91Ausgg+wI/zX8mAQI
D75F+1DoYP3//4PEEOj4/P//iEX769iD7Az/dejoiP3//4PEEItd/MnDVYnlVlPorvz//7jY
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
jSUAAAALBwUAAAKOAwEAAAtNBAAAAo+xBQAAC10AAAACkB4GAAALHgIAAAKRhQAAAAsLAAAA
ApIDAQAAC7EAAAACk4UAAAALZwQAAAKUAwEAAAstAAAAApZTAAAAC7YFAAAClwMBAAAL4wIA
AAKYUwAAAAvrBQAAAptTAAAAC8MCAAACnlMAAAALZQEAAAKhAwEAAAtaAQAAAqYDAQAAC5cE
AAACpzoBAAALkwUAAAKqsQUAAAukBAAAAqseBgAACzYBAAACrrEFAAALSwEAAAKvHgYAAAsc
AQAAArRTAAAAC6sGAAACtRIBAAALvAQAAAK2kAcAAA8EJQYAAAuVBgAAArdsBAAAC1wEAAAC
ulMAAAALOwUAAAK9hQAAAAl/BAAABEUBAwEAAAt1BQAABR7IAAAAC3EBAAAFIwoBAAALIwUA
AAZh5AcAAA8E6gcAABAECAAAAVMAAAARYQQAABEECAAAEQ0EAAAADwQKCAAADwRhBAAAC9QD
AAAGZBsIAAAPBCEIAAAQNggAAAFTAAAAETYIAAARYQQAAAAPBOcDAAALfQEAAAaxRwgAAA8E
9AQAAAtSAAAABTVfBQAAC+UAAAAFN+AFAAALAAAAAAU4UwAAAAufBgAABTmUBQAAC6AFAAAF
OoUAAAAX3AQAAAEZlggAAAEFA8iHBAgTUwAAAAC2AAAAAgAYAQAABAE6AQAAL3Vzci9zcmMv
YnVpbGQvMzI0OTU0LWkzODYvQlVJTEQvZ2xpYmMtMi4zLjItMjAwMzA0MDIwNDMyL2J1aWxk
LWkzODYtbGludXgvY3N1L2NydGkuUwAvdXNyL3NyYy9idWlsZC8zMjQ5NTQtaTM4Ni9CVUlM
RC9nbGliYy0yLjMuMi0yMDAzMDQwMjA0MzIvY3N1AEdOVSBBUyAyLjEzLjkwLjAuMTgAAYC2
AAAAAgAoAQAABAHwAQAAL3Vzci9zcmMvYnVpbGQvMzI0OTU0LWkzODYvQlVJTEQvZ2xpYmMt
Mi4zLjItMjAwMzA0MDIwNDMyL2J1aWxkLWkzODYtbGludXgvY3N1L2NydG4uUwAvdXNyL3Ny
Yy9idWlsZC8zMjQ5NTQtaTM4Ni9CVUlMRC9nbGliYy0yLjMuMi0yMDAzMDQwMjA0MzIvY3N1
AEdOVSBBUyAyLjEzLjkwLjAuMTgAAYABEQAQBhEBEgEDCBsIJQgTBQAAAAERARAGEgERAQMO
Gw4lDhMLAAACEwEBEwsLOgs7CwAAAw0AAw46CzsLSRM4CgAABAEBARNJEwAABSEASRMvCwAA
BiQAAw4LCz4LAAAHJAADCAsLPgsAAAgXAQETCws6CzsLAAAJFgADDjoLOwVJEwAACg0AAw46
CzsLSRMAAAsWAAMOOgs7C0kTAAAMBAEBEwsLOgs7CwAADSgAAw4cCwAADhMBARMDDgsLOgs7
CwAADw8ACwtJEwAAEBUBARMnDEkTAAARBQBJEwAAEg8ACwsAABMmAEkTAAAUFQEBEycMAAAV
EwADDjwMAAAWIQBJEwAAFzQAAw46CzsLSRM/DAIKAAAAAREAEAYDCBsIJQgTBQAAAAERABAG
AwgbCCUIEwUAAABRAAAAAgAvAAAAAQH7DgoAAQEBAQAAAAEuLi9zeXNkZXBzL2kzODYvZWxm
AABzdGFydC5TAAEAAAAABQKwhAQIAy4BMB4xOiIfIVZXHh9ZVwIDAAEBFgAAAAIAEAAAAAEB
+w4KAAEBAQEAAAABAADHAAAAAgDBAAAAAQH7DgoAAQEBAQAAAAEuLi9zeXNkZXBzL2dlbmVy
aWMvYml0cwAuLi93Y3NtYnMAL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8z
LjIuMi9pbmNsdWRlAC4uL3N5c2RlcHMvZ251AC4uL2ljb252AABpbml0LmMAAAAAdHlwZXMu
aAABAAB3Y2hhci5oAAIAAHN0ZGRlZi5oAAMAAF9HX2NvbmZpZy5oAAQAAGdjb252LmgABQAA
ALIAAAACAGkAAAABAfsOCgABAQEBAAAAAS91c3Ivc3JjL2J1aWxkLzMyNDk1NC1pMzg2L0JV
SUxEL2dsaWJjLTIuMy4yLTIwMDMwNDAyMDQzMi9idWlsZC1pMzg2LWxpbnV4L2NzdQAAY3J0
aS5TAAEAAAAABQKohwQIAzIBHiweHlceAgkAAQEABQLYgwQIAyIBHiw6AgYAAQEABQLUhAQI
AwsBHiweHlceZGQsLC06HgICAAEBkAAAAAIAaQAAAAEB+w4KAAEBAQEAAAABL3Vzci9zcmMv
YnVpbGQvMzI0OTU0LWkzODYvQlVJTEQvZ2xpYmMtMi4zLjItMjAwMzA0MDIwNDMyL2J1aWxk
LWkzODYtbGludXgvY3N1AABjcnRuLlMAAQAAAAAFAr6HBAgDEgE6HgIBAAEBAAUC7YMECAMJ
AR4CAQABAQAAABAAAAD/////AQABfAgMBASIAQAAX0dfaW50MzJfdABfX3RpbWVfdABfX0dD
T05WX0lOQ09NUExFVEVfSU5QVVQAX19kYWRkcl90AF9faW50MzJfdABfX2djb252X2luaXRf
ZmN0AF9HX2ljb252X3QAX19ybGltNjRfdABfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUgBf
X2djb252X2luZm8Ac2hvcnQgdW5zaWduZWQgaW50AHVuc2lnbmVkIGNoYXIAX191c2Vjb25k
c190AF9fY291bnRlcgBfX2ZjdABfX3ZhbABfX3ZhbHVlAF9fbnN0ZXBzAF9HX2ludDE2X3QA
X19tYXhfbmVlZGVkX2Zyb20AX19nY29udl9idG93Y19mY3QAX19vZmZfdABfX3NzaXplX3QA
X19zdGF0ZXAAaW5pdC5jAF9fZnNmaWxjbnRfdABfX3N0ZXBzAF9fZnNmaWxjbnQ2NF90AF9f
YmxrY250X3QAX19ibGtzaXplX3QAX0dfZnBvczY0X3QAX19nY29udl90AF9fdHJhbnNfZW5k
X2ZjdABfX3VfaW50AC91c3Ivc3JjL2J1aWxkLzMyNDk1NC1pMzg2L0JVSUxEL2dsaWJjLTIu
My4yLTIwMDMwNDAyMDQzMi9jc3UAX19HQ09OVl9JTExFR0FMX0lOUFVUAF9fZ2NvbnZfbG9h
ZGVkX29iamVjdABfX3RvX25hbWUAX191aW50NjRfdABfX2lkX3QAX19HQ09OVl9FTVBUWV9J
TlBVVABfX2NkAF9faW5vX3QAX19HQ09OVl9OT0NPTlYAX19pbnZvY2F0aW9uX2NvdW50ZXIA
X19waWRfdABfX3Vfc2hvcnQAX19jb3VudABfX3F1YWRfdABfX3VfbG9uZwBfX2ZzaWRfdABf
X0dDT05WX0ZVTExfT1VUUFVUAF9fbWF4X25lZWRlZF90bwBfX3RpbWVyX3QAX19zdGF0ZWZ1
bABfX3VpbnQzMl90AF9fa2V5X3QAX191X2NoYXIAX19nY29udl9zdGVwAF9fc2hsaWJfaGFu
ZGxlAF9fbWluX25lZWRlZF90bwBzaG9ydCBpbnQAX19kZXZfdABsb25nIGxvbmcgaW50AF9f
Z2NvbnZfdHJhbnNfZGF0YQBfX291dGJ1ZgBsb25nIGxvbmcgdW5zaWduZWQgaW50AF9fdWlk
X3QAX193Y2hiAF9fdWludDE2X3QAd2ludF90AF9fdV9xdWFkX3QAX19nY29udl90cmFuc19l
bmRfZmN0AF9fZmxhZ3MAX19vdXRidWZlbmQAX19jb21iaW5lZABfX2djb252X3RyYW5zX2lu
aXRfZmN0AF9faW5pdF9mY3QAX19tb2RuYW1lAF9fdHJhbnNfY29udGV4dF9mY3QAR05VIEMg
My4yLjIgMjAwMzAyMjIgKFJlZCBIYXQgTGludXggMy4yLjItNSkAX190cmFuc19mY3QAX19y
bGltX3QAX193Y2gAX19pbnRwdHJfdABfX3N1c2Vjb25kc190AF9faW5vNjRfdAB3Y2hhcl90
AF9fR0NPTlZfSVNfTEFTVABfX2Jsa2NudDY0X3QAX19mc2Jsa2NudDY0X3QAX19tb2RlX3QA
X19xYWRkcl90AF9fcG9zAF9fZ2NvbnZfZW5kX2ZjdABfSU9fc3RkaW5fdXNlZABfX2ludGVy
bmFsX3VzZQBfX0dDT05WX05PREIAX19jbG9ja190AF9fZ2NvbnZfc3RlcF9kYXRhAF9fZ2Nv
bnZfdHJhbnNfcXVlcnlfZmN0AF9fc29ja2xlbl90AF9faW50NjRfdABfX0dDT05WX05PTUVN
AF9fb2ZmNjRfdABfX2J0b3djX2ZjdABfR19mcG9zX3QAX19pbnQ4X3QAX19HQ09OVl9PSwBf
X2ZzYmxrY250X3QAX0dfdWludDMyX3QAX19ubGlua190AF9fc3dibGtfdABfX0dDT05WX0lO
VEVSTkFMX0VSUk9SAF9fbWJzdGF0ZV90AF9fZ2lkX3QAX19jbG9ja2lkX3QAX19zdGF0ZQBf
X2djb252X3RyYW5zX2NvbnRleHRfZmN0AF9fbmV4dABfX0dDT05WX0lHTk9SRV9FUlJPUlMA
X19lbmRfZmN0AF9fdHJhbnMAX191aW50OF90AF9fZ2NvbnZfZmN0AF9fZnJvbV9uYW1lAF9f
bWluX25lZWRlZF9mcm9tAF9fZ2NvbnZfdHJhbnNfZmN0AF9fZGF0YQBfX2NhZGRyX3QAX0df
dWludDE2X3QAX19sb2ZmX3QAX19pbnQxNl90AAAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFi
AC5pbnRlcnAALm5vdGUuQUJJLXRhZwAuaGFzaAAuZHluc3ltAC5keW5zdHIALmdudS52ZXJz
aW9uAC5nbnUudmVyc2lvbl9yAC5yZWwuZHluAC5yZWwucGx0AC5pbml0AC50ZXh0AC5maW5p
AC5yb2RhdGEALmVoX2ZyYW1lAC5kYXRhAC5keW5hbWljAC5jdG9ycwAuZHRvcnMALmpjcgAu
Z290AC5ic3MALmNvbW1lbnQALmRlYnVnX2FyYW5nZXMALmRlYnVnX3B1Ym5hbWVzAC5kZWJ1
Z19pbmZvAC5kZWJ1Z19hYmJyZXYALmRlYnVnX2xpbmUALmRlYnVnX2ZyYW1lAC5kZWJ1Z19z
dHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAA
AgAAAPSABAj0AAAAEwAAAAAAAAAAAAAAAQAAAAAAAAAjAAAABwAAAAIAAAAIgQQICAEAACAA
AAAAAAAAAAAAAAQAAAAAAAAAMQAAAAUAAAACAAAAKIEECCgBAABUAAAABAAAAAAAAAAEAAAA
BAAAADcAAAALAAAAAgAAAHyBBAh8AQAAAAEAAAUAAAABAAAABAAAABAAAAA/AAAAAwAAAAIA
AAB8ggQIfAIAAJwAAAAAAAAAAAAAAAEAAAAAAAAARwAAAP///28CAAAAGIMECBgDAAAgAAAA
BAAAAAAAAAACAAAAAgAAAFQAAAD+//9vAgAAADiDBAg4AwAAMAAAAAUAAAABAAAABAAAAAAA
AABjAAAACQAAAAIAAABogwQIaAMAABgAAAAEAAAAAAAAAAQAAAAIAAAAbAAAAAkAAAACAAAA
gIMECIADAABYAAAABAAAAAsAAAAEAAAACAAAAHUAAAABAAAABgAAANiDBAjYAwAAFwAAAAAA
AAAAAAAABAAAAAAAAABwAAAAAQAAAAYAAADwgwQI8AMAAMAAAAAAAAAAAAAAAAQAAAAEAAAA
ewAAAAEAAAAGAAAAsIQECLAEAAD4AgAAAAAAAAAAAAAEAAAAAAAAAIEAAAABAAAABgAAAKiH
BAioBwAAGwAAAAAAAAAAAAAABAAAAAAAAACHAAAAAQAAAAIAAADEhwQIxAcAAA0AAAAAAAAA
AAAAAAQAAAAAAAAAjwAAAAEAAAACAAAA1IcECNQHAAAEAAAAAAAAAAAAAAAEAAAAAAAAAJkA
AAABAAAAAwAAANiXBAjYBwAADAAAAAAAAAAAAAAABAAAAAAAAACfAAAABgAAAAMAAADklwQI
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
hIcECAAAAAACAAwAZAIAAAAAAAAAAAAABADx/zABAAAAAAAAAAAAAAQA8f+GAQAAAAAAAAAA
AAAEAPH/ZAIAAAAAAAAAAAAABADx/wEAAAAAAAAAAAAAAAQA8f8QAAAAAAAAAAAAAAAEAPH/
AQAAAAAAAAAAAAAABADx/2QAAAAAAAAAAAAAAAQA8f9kAgAAAAAAAAAAAAAEAPH/ugIAAAAA
AAAAAAAABADx/8gCAAAAhAQI5gAAABIAAADbAgAAEIQECOEAAAASAAAA7AIAACCEBAhtAAAA
EgAAAPwCAADklwQIAAAAABEAEQAFAwAAxIcECAQAAAARAA4ADAMAADCEBAioAAAAEgAAAB8D
AADYlwQIAAAAABAA8f8wAwAA3JcECAAAAAARAhAAPQMAAFCHBAg0AAAAEgAMAE0DAABAhAQI
4QAAABIAAABfAwAA2IMECAAAAAASAAoAZQMAAPyYBAgEAAAAEQAWAHcDAACwhAQIAAAAABIA
DAB+AwAAUIQECNQAAAASAAAAkAMAANiXBAgAAAAAEADx/6MDAABghAQI8QAAABIAAAC0AwAA
IIcECDAAAAASAAwAxAMAAPyYBAgAAAAAEADx/9ADAABghQQIwAEAABIADADVAwAAcIQECPsA
AAASAAAA8gMAANiXBAgAAAAAEADx/wMEAADYlwQIAAAAACAAEAAOBAAAqIcECAAAAAASAA0A
FAQAAICEBAjZAAAAEgAAACQEAACQhAQI3wIAABIAAAA2BAAA/JgECAAAAAAQAPH/PQQAAMCY
BAgAAAAAEQAVAFMEAACghAQIuQAAABIAAABjBAAACJkECAAAAAAQAPH/aAQAAACZBAgEAAAA
EQAWAHkEAADYlwQIAAAAABAA8f+MBAAAyIcECAQAAAARAA4AmwQAANiXBAgAAAAAEAAQAKgE
AAAAAAAAAAAAACAAAAC8BAAAAAAAAAAAAAAgAAAAADxjb21tYW5kIGxpbmU+AC91c3Ivc3Jj
L2J1aWxkLzMyNDk1NC1pMzg2L0JVSUxEL2dsaWJjLTIuMy4yLTIwMDMwNDAyMDQzMi9idWls
ZC1pMzg2LWxpbnV4L2NvbmZpZy5oADxidWlsdC1pbj4AYWJpLW5vdGUuUwAvdXNyL3NyYy9i
dWlsZC8zMjQ5NTQtaTM4Ni9CVUlMRC9nbGliYy0yLjMuMi0yMDAzMDQwMjA0MzIvYnVpbGQt
aTM4Ni1saW51eC9jc3UvYWJpLXRhZy5oAGluaXQuYwAvdXNyL3NyYy9idWlsZC8zMjQ5NTQt
aTM4Ni9CVUlMRC9nbGliYy0yLjMuMi0yMDAzMDQwMjA0MzIvYnVpbGQtaTM4Ni1saW51eC9j
c3UvY3J0aS5TAC91c3Ivc3JjL2J1aWxkLzMyNDk1NC1pMzg2L0JVSUxEL2dsaWJjLTIuMy4y
LTIwMDMwNDAyMDQzMi9idWlsZC1pMzg2LWxpbnV4L2NzdS9kZWZzLmgAaW5pdGZpbmkuYwBj
YWxsX2dtb25fc3RhcnQAY3J0c3R1ZmYuYwBfX0NUT1JfTElTVF9fAF9fRFRPUl9MSVNUX18A
X19FSF9GUkFNRV9CRUdJTl9fAF9fSkNSX0xJU1RfXwBwLjAAY29tcGxldGVkLjEAX19kb19n
bG9iYWxfZHRvcnNfYXV4AGZyYW1lX2R1bW15AF9fQ1RPUl9FTkRfXwBfX0RUT1JfRU5EX18A
X19GUkFNRV9FTkRfXwBfX0pDUl9FTkRfXwBfX2RvX2dsb2JhbF9jdG9yc19hdXgAL3Vzci9z
cmMvYnVpbGQvMzI0OTU0LWkzODYvQlVJTEQvZ2xpYmMtMi4zLjItMjAwMzA0MDIwNDMyL2J1
aWxkLWkzODYtbGludXgvY3N1L2NydG4uUwBybWZyb21sbl92My5jAGdldGNoYXJAQEdMSUJD
XzIuMABmZ2V0Y0BAR0xJQkNfMi4wAGZlb2ZAQEdMSUJDXzIuMABfRFlOQU1JQwBfZnBfaHcA
dG1wZmlsZUBAR0xJQkNfMi4xAF9fZmluaV9hcnJheV9lbmQAX19kc29faGFuZGxlAF9fbGli
Y19jc3VfZmluaQByZXdpbmRAQEdMSUJDXzIuMABfaW5pdABzdGRvdXRAQEdMSUJDXzIuMABf
c3RhcnQAc3Ryc3RyQEBHTElCQ18yLjAAX19maW5pX2FycmF5X3N0YXJ0AGZwdXRjQEBHTElC
Q18yLjAAX19saWJjX2NzdV9pbml0AF9fYnNzX3N0YXJ0AG1haW4AX19saWJjX3N0YXJ0X21h
aW5AQEdMSUJDXzIuMABfX2luaXRfYXJyYXlfZW5kAGRhdGFfc3RhcnQAX2ZpbmkAZXhpdEBA
R0xJQkNfMi4wAGNhbGxvY0BAR0xJQkNfMi4wAF9lZGF0YQBfR0xPQkFMX09GRlNFVF9UQUJM
RV8AZnJlZUBAR0xJQkNfMi4wAF9lbmQAc3RkaW5AQEdMSUJDXzIuMABfX2luaXRfYXJyYXlf
c3RhcnQAX0lPX3N0ZGluX3VzZWQAX19kYXRhX3N0YXJ0AF9Kdl9SZWdpc3RlckNsYXNzZXMA
X19nbW9uX3N0YXJ0X18A
--------------020003030105060108060207
Content-Type: text/plain;
name="rmfromln_v3.c"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="rmfromln_v3.c"
/* NEW plan:
1) create a temp io-stream with tempfile()
2) read in from stdin and out to temp until EOL (or EOF)
3) dynamically create a string of the appropriate length
(i.e. the number of characters written to temp-stream)
4) copy temp-stream to the new string
5) search the string for "From"
6) if found, copy the string to stdout
7) copy the remaining stdin to stdout until EOF reached.
*/
#include "stdio.h"
#include "string.h"
#include "stddef.h"
#include "stdlib.h"
// ###############################################
#define EOL '\n'
// ###############################################
main () {
char c;
int length;
int j;
FILE *tempstream;
char *tempstring;
// Create the temp-stream
tempstream = tmpfile();
// Read from stdin into tempstream until EOF or EOL is encountered.
length = 0;
rewind(tempstream);
while ((c=fgetc(stdin)) && (c != EOL)) {
fputc(c,tempstream);
length++;
}
// if no input, then just exit and do nothing.
if (length == 0)
exit(0);
// the above code did not put the EOL in the temp-stream, so add it.
fputc(EOL,tempstream);
length++;
// create the tempSTRING and copy the tempstream into it.
// tempstring = new string[length];
tempstring = (char *) calloc(length,sizeof(char));
rewind(tempstream);
for(j=0;j<length;j++)
tempstring[j] = fgetc(tempstream);
/* If we are at EOF, then there was no EOL, and thus no search for "From" is indicated;
so simply write the temp-string to stdout and exit. */
if (feof(stdin)) {
for (j=0;j<length;j++)
fputc(tempstring[j],stdout);
exit(0);
}
// If we got to here, we need to search temp-string for "From".
if (strstr(tempstring,"From") == NULL) {
/* i.e. "From" was NOT in the 1st line, so this line needs to
be output before the remaining stdin is transferred to stdout */
for (j=0;j<length;j++)
fputc(tempstring[j],stdout);
}
// dynamically allocated string is done, so free up the memory.
free (tempstring);
// now just transfer the remaining stdin to stdout.
c = getchar();
while (c != EOF) {
fputc(c,stdout);
c = getchar();
}
} /* End of Main */
--------------020003030105060108060207--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4499920D.8060802>
