#define UA_ADMINALLOWED 64 /* Aide or Room Aide rights exist here */
#define UA_DELETEALLOWED 128 /* User is allowed to delete messages from this room */
#define UA_REPLYALLOWED 256 /* User is allowed to reply to existing messages here */
+/* runtime flag extracted from goto reply; not db persistant, should be moved if new flags added */
+#define UA_ISTRASH 512 /* Only available in room view... */
#ifdef __cplusplus
}
long l_from;
long l_rcpt;
long l_cccc;
+long l_replyto;
long l_node;
long l_rfca;
+const char *ReplyToModeStrings [3] = {
+ "reply",
+ "replyalle",
+ "forward"
+};
+typedef enum _eReplyToNodes {
+ eReply,
+ eReplyAll,
+ eForward
+}eReplyToNodes;
+
/*
* display the message entry screen
*/
void display_enter(void)
{
+ const char *ReplyingModeStr;
+ eReplyToNodes ReplyMode = eReply;
StrBuf *Line;
long Result;
int rc;
}
+ ReplyingModeStr = bstr("replying_mode");
+ if (ReplyingModeStr != NULL) for (i = 0; i < 3; i++) {
+ if (strcmp(ReplyingModeStr, ReplyToModeStrings[i]) == 0) {
+ ReplyMode = (eReplyToNodes) i;
+ break;
+ }
+ }
+
+
/*
* If the "replying_to" variable is set, it refers to a message
* number from which we must extract some header fields...
StrBuf *rfca = NULL;
StrBuf *rcpt = NULL;
StrBuf *cccc = NULL;
+ StrBuf *replyto = NULL;
serv_printf("MSG0 %ld|1", replying_to);
StrBuf_ServGetln(Line);
StrBuf *subj = NewStrBuf();
StrBuf *FlatSubject;
- if (!strcasecmp(bstr("replying_mode"), "forward")) {
+ if (ReplyMode == eForward) {
if (strncasecmp(ChrPtr(Line) + 5, "Fw:", 3)) {
StrBufAppendBufPlain(subj, HKEY("Fw: "), 0);
}
else if (which == l_node) {
node = NewStrBufPlain(ChrPtr(Line) + 5, StrLength(Line) - 5);
}
-
+ else if (which == l_replyto) {
+ replyto = NewStrBufPlain(ChrPtr(Line) + 5, StrLength(Line) - 5);
+ }
else if (which == l_rfca) {
StrBuf *FlatRFCA;
rfca = NewStrBufPlain(ChrPtr(Line) + 5, StrLength(Line) - 5);
/*
* If this is a Reply or a ReplyAll, copy the sender's email into the To: field
*/
- if ( (!strcasecmp(bstr("replying_mode"), "reply"))
- || (!strcasecmp(bstr("replying_mode"), "replyall"))
- ) {
+ if ((ReplyMode == eReply) || (ReplyMode == eReplyAll))
+ {
StrBuf *to_rcpt;
- if (StrLength(rfca) > 0) {
+ if ((StrLength(replyto) > 0) && (ReplyMode == eReplyAll)) {
+ to_rcpt = NewStrBuf();
+ StrBufAppendBuf(to_rcpt, replyto, 0);
+ }
+ else if (StrLength(rfca) > 0) {
to_rcpt = NewStrBuf();
StrBufAppendBuf(to_rcpt, from, 0);
StrBufAppendBufPlain(to_rcpt, HKEY(" <"), 0);
/*
* Only if this is a ReplyAll, copy all recipients into the Cc: field
*/
- if ( (!strcasecmp(bstr("replying_mode"), "replyall"))
- ) {
+ if (ReplyMode == eReplyAll)
+ {
StrBuf *cc_rcpt = rcpt;
rcpt = NULL;
- if (StrLength(cccc) > 0) {
+ if ((StrLength(cccc) > 0) && (StrLength(replyto) == 0))
+ {
if (cc_rcpt != NULL) {
StrBufAppendPrintf(cc_rcpt, ", ");
StrBufAppendBuf(cc_rcpt, cccc, 0);
l_from = FourHash("from", 4);
l_rcpt = FourHash("rcpt", 4);
l_cccc = FourHash("cccc", 4);
+ l_replyto = FourHash("rep2", 4);
l_node = FourHash("node", 4);
l_rfca = FourHash("rfca", 4);
StrBuf *subj; /* the title / subject */
StrBuf *reply_inreplyto;
StrBuf *reply_references;
+ StrBuf *ReplyTo;
StrBuf *cccc;
StrBuf *hnod;
StrBuf *AllRcpt;
FreeStrBuf(&Msg->reply_inreplyto);
FreeStrBuf(&Msg->reply_references);
FreeStrBuf(&Msg->cccc);
+ FreeStrBuf(&Msg->ReplyTo);
FreeStrBuf(&Msg->hnod);
FreeStrBuf(&Msg->AllRcpt);
FreeStrBuf(&Msg->Room);
StrBufAppendTemplate(Target, TP, Msg->reply_references, 0);
}
+void examine_replyto(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
+{
+ wcsession *WCC = WC;
+
+ CheckConvertBufs(WCC);
+ FreeStrBuf(&Msg->ReplyTo);
+ Msg->ReplyTo = NewStrBufPlain(NULL, StrLength(HdrLine));
+ StrBuf_RFC822_2_Utf8(Msg->ReplyTo,
+ HdrLine,
+ WCC->DefaultCharset,
+ FoundCharset,
+ WCC->ConvertBuf1,
+ WCC->ConvertBuf2);
+ if (Msg->AllRcpt == NULL)
+ Msg->AllRcpt = NewStrBufPlain(NULL, StrLength(HdrLine));
+ if (StrLength(Msg->AllRcpt) > 0) {
+ StrBufAppendBufPlain(Msg->AllRcpt, HKEY(", "), 0);
+ }
+ StrBufAppendBuf(Msg->AllRcpt, Msg->ReplyTo, 0);
+}
+void tmplput_MAIL_SUMM_REPLYTO(StrBuf *Target, WCTemplputParams *TP)
+{
+ message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
+ StrBufAppendTemplate(Target, TP, Msg->ReplyTo, 0);
+}
void examine_cccc(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
{
message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
return StrLength(Msg->cccc) > 0;
}
+int Conditional_MAIL_SUMM_REPLYTO(StrBuf *Target, WCTemplputParams *TP)
+{
+ message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
+ return StrLength(Msg->ReplyTo) > 0;
+}
void examine_node(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
{
RegisterNamespace("MAIL:SUMM:SUBJECT", 0, 4, tmplput_MAIL_SUMM_SUBJECT, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:SUMM:NTATACH", 0, 0, tmplput_MAIL_SUMM_NATTACH, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:SUMM:CCCC", 0, 2, tmplput_MAIL_SUMM_CCCC, NULL, CTX_MAILSUM);
+ RegisterNamespace("MAIL:SUMM:REPLYTO", 0, 2, tmplput_MAIL_SUMM_REPLYTO, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:SUMM:H_NODE", 0, 2, tmplput_MAIL_SUMM_H_NODE, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:SUMM:ALLRCPT", 0, 2, tmplput_MAIL_SUMM_ALLRCPT, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:SUMM:ORGROOM", 0, 2, tmplput_MAIL_SUMM_ORGROOM, NULL, CTX_MAILSUM);
RegisterNamespace("MAIL:EDITWIKI", 1, 2, tmplput_EDIT_WIKI_BODY, NULL, CTX_NONE);
RegisterConditional(HKEY("COND:MAIL:SUMM:RFCA"), 0, Conditional_MAIL_SUMM_RFCA, CTX_MAILSUM);
RegisterConditional(HKEY("COND:MAIL:SUMM:CCCC"), 0, Conditional_MAIL_SUMM_CCCC, CTX_MAILSUM);
+ RegisterConditional(HKEY("COND:MAIL:SUMM:REPLYTO"), 0, Conditional_MAIL_SUMM_REPLYTO, CTX_MAILSUM);
RegisterConditional(HKEY("COND:MAIL:SUMM:UNREAD"), 0, Conditional_MAIL_SUMM_UNREAD, CTX_MAILSUM);
RegisterConditional(HKEY("COND:MAIL:SUMM:H_NODE"), 0, Conditional_MAIL_SUMM_H_NODE, CTX_MAILSUM);
RegisterConditional(HKEY("COND:MAIL:SUMM:OTHERNODE"), 0, Conditional_MAIL_SUMM_OTHERNODE, CTX_MAILSUM);
RegisterMsgHdr(HKEY("msgn"), examine_msgn, 0);
RegisterMsgHdr(HKEY("wefw"), examine_wefw, 0);
RegisterMsgHdr(HKEY("cccc"), examine_cccc, 0);
+ RegisterMsgHdr(HKEY("rep2"), examine_replyto, 0);
RegisterMsgHdr(HKEY("hnod"), examine_hnod, 0);
RegisterMsgHdr(HKEY("room"), examine_room, 0);
RegisterMsgHdr(HKEY("rfca"), examine_rfca, 0);
REGISTERTokenParamDefine(UA_POSTALLOWED);
REGISTERTokenParamDefine(UA_ADMINALLOWED);
REGISTERTokenParamDefine(UA_DELETEALLOWED);
+ REGISTERTokenParamDefine(UA_REPLYALLOWED);
REGISTERTokenParamDefine(UA_ISTRASH);
REGISTERTokenParamDefine(US_NEEDVALID);
RegisterConditional(HKEY("COND:ROOM:TYPE_IS"), 0, ConditionalIsRoomtype, CTX_NONE);
RegisterConditional(HKEY("COND:THISROOM:HAVE_VIEW"), 0, ConditionalThisRoomHaveView, CTX_NONE);
- RegisterConditional(HKEY("COND:ROOM:dav_CONTENT"), 0, ConditionalRoomHasGroupdavContent, CTX_ROOMS);
+ RegisterConditional(HKEY("COND:ROOM:DAV_CONTENT"), 0, ConditionalRoomHasGroupdavContent, CTX_ROOMS);
RegisterConditional(HKEY("COND:THISROOM:CURR_VIEW"), 0, ConditionalThisRoomCurrView, CTX_NONE);
RegisterNamespace("ROOM:INFO:VIEW", 0, 1, tmplput_ROOM_VIEW, NULL, CTX_ROOMS);
--- /dev/null
+.blog_post {
+ padding-top: 0.5em;
+ margin: 0.5em;
+ width: 38em;
+ border-top: 1px solid #5C646B;
+}
+
+
+.blog_post_title a {
+ font-size: large;
+ color: #5C646B;
+}
+
+.blog_post_header a, .blog_comment_header a {
+ font-style: italic;
+ color: #000;
+ }
+
+.blog_post_header, .blog_comment_header {
+ margin: 0.3em 0.5em;
+ font-size: smaller;
+}
+
+.blog_post_content {
+ font-family: serif;
+ font-size: small;
+}
+
+.blog_comment {
+ margin: 0.5em;
+ width: 30em;
+}
+
@import url("message.css");
@import url("modal.css");
@import url("service.css");
+@import url("blog.css")
@media print {
input#toggler, .toolbar { display: none }
-<??("COND:ROOM:GROUPDAV_CONTENT", 1)><??("COND:ROOM:REST:ISSUBROOM", 2)><response>
-<href><?DAV:HOSTNAME>/groupdav/<?ROOM:INFO:FLOOR:NAME("X")>/<?ROOM:INFO:NAME("X")>/</href>
+<??("COND:ROOM:DAV_CONTENT", 1)><??("COND:ROOM:REST:ISSUBROOM", 2)><response>
+<href><?DAV:HOSTNAME>/groupdav/<?ROOM:INFO:FLOOR:NAME("X")>/<?THISROOM:NAME("X")>/</href>
<propstat>
<status>HTTP/1.1 200 OK</status>
<prop>
-<displayname><?ROOM:INFO:PRINT_NAME></displayname>
+<displayname><?THISROOM:NAME></displayname>
<resourcetype><collection/><G:vtodo<?ROOM:INFO:COLLECTIONTYPE>-collection /></resourcetype>
<getlastmodified><?ROOM:INFO:LASTCHANGE></getlastmodified>
</prop>
<input type="hidden" name="postseq" value="<?DATE:NOW:NO>">
<input type="hidden" name="return_to" value="<?BSTR("return_to")>">
<input type="hidden" name="nonce" value="<?NONCE>">
-<input type="hidden" name="force_room" value="<?ROOMNAME("X")>">
+<input type="hidden" name="force_room" value="<?THISROOM:NAME("X")>">
<input type="hidden" name="references" value="<?BSTR("references")>">
<input type="hidden" name="page" value="<?BSTR("page")>">
<input type="hidden" name="submit_action" value="">
</select>
<?!("X", 4)>
- <i><?_("in")></i> <?ROOMNAME></td></tr>
+ <i><?_("in")></i> <?THISROOM:NAME></td></tr>
<?!("COND:BSTR", 5, "__RCPTREQUIRED")>
<tr>
<?=("head")>
<?%("COND:LOGGEDIN", 1, 1, 1, "", ="paging")>
<div id="banner">
- <h1><?_("Files available for download in")> <?ROOMNAME></h1>
+ <h1><?_("Files available for download in")> <?THISROOM:NAME></h1>
<?!("COND:THISROOM:FLAG:QR", 2, #"QR_UPLOAD")>
<br>
<form enctype="multipart/form-data" method="POST" accept-charset="UTF-8" action="upload_file" name="upload_file_form">
<form enctype="multipart/form-data" action='<?BSTR("__UPLURL")>' method="post" name="graphicsupload">
<input type="hidden" name="nonce" value="<?NONCE>">
-<input type="hidden" name="which_room" value="<?ROOMNAME("U")>"><?_("You can upload an image directly from your computer")>
+<input type="hidden" name="which_room" value="<?THISROOM:NAME("U")>"><?_("You can upload an image directly from your computer")>
<br><br>
<?_("Please select a file to upload:")>
<input type="file" name="filename" size="35">
<?=("head")>
<?%("COND:LOGGEDIN", 1, 1, 1, "", ="paging")>
-<div id="banner"><h1><?_("Pictures in")> <?ROOM:NAME></h1></div>
+<div id="banner"><h1><?_("Pictures in")> <?THISROOM:NAME></h1></div>
<div id="content" class="service">
<table class="downloads_background">
<tr><td>
<?!("COND:THISROOM:CURR_VIEW", 80, #"VIEW_WIKI")>
<??("COND:WIKI:PAGE", 81, "home")>
<li class="readallmess">
- <a href="wiki?page=home?go=<?ROOM:INFO:PRINT_NAME("U")>">
+ <a href="wiki?page=home?go=<?THISROOM:NAME("U")>">
<img src="static/webcit_icons/essen/16x16/readallmsg.png" alt="" width="16" height="16">
<span class="navbar_link"><?_("Wiki home")></span>
</a>
<?!("COND:THISROOM:HAVE_PIC", 1)>
-<img height="64px" alt="<?_("Room Logo")>" src="image?name=_roompic_?room=<?ROOMNAME("U")>">
+<img height="64px" alt="<?_("Room Logo")>" src="image?name=_roompic_?room=<?THISROOM:NAME("U")>">
<?!("X", 1)><??("COND:THISROOM:HAVE_PIC", 2)>
<?!("COND:ROOM:TYPE_IS", 3, #"VIEW_ADDRESSBOOK")>
<img class="roompic" alt="" src="static/webcit_icons/essen/32x32/contact.png">
</div>
<div id="content" class="service">
<?_("If you select this option,")>
-<em><?ROOM:INFO:PRINT_NAME("X")></em>
+<em><?THISROOM:NAME("X")></em>
<?_("will disappear from your room list. Is this what you wish to do?")>
<br>
<input type="submit" NAME="ok_button" VALUE="<?_("Zap this room")>">
<input type="submit" NAME="cancel_button" VALUE="<?_("Cancel")>">
</form>
-<?=("trailing")>
\ No newline at end of file
+<?=("trailing")>
+++ /dev/null
-<?XML_HEAD>
-<?XML_STYLE>
-<rss version="2.0">
- <channel>
- <title><?ROOM> - <?NODE></title>
- <link><?ROOM_LINK></link>
- <description><?ROOM_DESCRIPTION></description>
- <pubDate><?822_PUB_DATE></pubDate>
- <generator><?GENERATOR></generator>
- <docs>http://blogs.law.harvard.edu/tech/rss</docs>
- <ttl>30</ttl>
-
-
+++ /dev/null
-<item>
-<title><?SUBJ> <?IN_ROOM> <?NODE></title>
-<pubDate><?822_PUB_DATE></pubDate>
-<guid isPermaLink="false"><?GUID></guid>
-<description><![CDATA[
-
+++ /dev/null
-]]></description>
-</item>
<h1><?_("Add or delete scripts")></h1>
</div>
<div id="content" class="service">
- <?SIEVE:MESSAGE>
-
<table border=0 cellspacing=10><tr valign=top><td>
<?=("box_begin_1")><?_("Add a new script")><?=("box_begin_2")>
<?_("To create a new script, enter the desired script name in the box below and click 'Create'.")>
method="POST" action="post" onSubmit="submit_comment();">
<input type="hidden" name="postseq" value="<?DATE:NOW:NO>">
<input type="hidden" name="nonce" value="<?NONCE>">
-<input type="hidden" name="force_room" value="<?ROOMNAME("X")>">
+<input type="hidden" name="force_room" value="<?THISROOM:NAME("X")>">
<input type="hidden" name="references" id="comment_form_references" /><br>
<textarea name="msgtext" id="comment_form_msgtext" cols=80 rows=10 style="width:98%"
<?!("COND:LOGGEDIN",1)>
<div class="blog_post">
-<div class="blog_post_title">
-<?!("COND:MAIL:SUBJ", 7)><a href="<?BLOG:PERMALINK>"><?MAIL:SUMM:SUBJECT("X")></a><??("X", 7)>
+ <div class="blog_post_title">
+ <?!("COND:MAIL:SUBJ", 7)><a href="<?BLOG:PERMALINK>"><?MAIL:SUMM:SUBJECT("X")></a><??("X", 7)>
+ </div>
+ <div class="blog_post_header">
+ <span><??("COND:MAIL:ANON",1)>
+ <?!("COND:MAIL:SUMM:RFCA", 2)>
+ <a href="showuser?who=<?MAIL:SUMM:FROM("Q")>">
+ "<?MAIL:SUMM:FROM("X")>" <<?MAIL:SUMM:RFCA>>
+ </a>
+ <?!("X", 2)>
+ <??("COND:MAIL:SUMM:RFCA", 3)>
+ <a href="showuser?who=<?MAIL:SUMM:FROM("Q")>">
+ <?MAIL:SUMM:FROM("X")>
+ </a>
+ <??("X", 3)>
+ <?!("COND:MAIL:SUMM:OTHERNODE",4)> @ <?MAIL:SUMM:H_NODE><??("X",4)>
+ <??("X", 1)></span>
+ <span><?MAIL:SUMM:DATEFULL></span>
+ <?!("COND:ROOM:EDITACCESS", 16)>
+ <a href="delete_msg?msgid=<?MAIL:SUMM:N>" onclick="return confirm('<?_("Delete this message?")>');">
+ <span>[</span><?_("Delete")><span>]</span>
+ </a>
+ <??("X", 16)>
+ </div>
+ <div class="blog_post_content">
+ <div>
+ <?MAIL:BODY>
+ <?!("COND:MAIL:MIME:ATTACH:SUBMESSAGES", 10)>
+ <?ITERATE("MAIL:MIME:ATTACH:SUBMESSAGES", ="view_message_inline_attach")>
+ <?!("X", 10)>
+ <?!("COND:MAIL:MIME:ATTACH:LINKS", 11)>
+ <?ITERATE("MAIL:MIME:ATTACH:LINKS", ="view_message_list_attach")>
+ <?!("X", 11)>
+ </div>
+ </div>
+ <div id="comment_replyto" style="display:none"><?MAIL:SUMM:INREPLYTO("X")></div>
</div>
-<div class="blog_post_header">
-<span>
- <??("COND:MAIL:ANON",1)>
- <?!("COND:MAIL:SUMM:RFCA", 2)><a href="do_template?temlpate=user_show?who=<?MAIL:SUMM:FROM("Q")>">"<?MAIL:SUMM:FROM("X")>" <<?MAIL:SUMM:RFCA>></a><?!("X", 2)>
- <??("COND:MAIL:SUMM:RFCA", 3)><a href="do_template?temlpate=user_show?who=<?MAIL:SUMM:FROM("Q")>"><?MAIL:SUMM:FROM("X")></a>
- <??("X", 3)><?!("COND:MAIL:SUMM:OTHERNODE",4)> @ <?MAIL:SUMM:H_NODE><??("X",4)>
- <??("X", 1)>
-</span>
- <span><?MAIL:SUMM:DATEFULL></span>
-<?!("COND:ROOM:EDITACCESS", 16)>
- <a href="delete_msg?msgid=<?MAIL:SUMM:N>" onclick="return confirm('<?_("Delete this message?")>');"><span>[</span><?_("Delete")><span>]</span> </a>
-<??("X", 16)>
-</div>
-<div class="blog_post_content"><div>
-<?MAIL:BODY>
-<?!("COND:MAIL:MIME:ATTACH:SUBMESSAGES", 10)>
-<?ITERATE("MAIL:MIME:ATTACH:SUBMESSAGES", ="view_message_inline_attach")>
-<?!("X", 10)>
-<?!("COND:MAIL:MIME:ATTACH:LINKS", 11)>
-<?ITERATE("MAIL:MIME:ATTACH:LINKS", ="view_message_list_attach")>
-<?!("X", 11)>
-</div>
-</div>
-<div id="comment_replyto" style="display:none"><?MAIL:SUMM:INREPLYTO("X")></div>
if (Handler->PreEvalFunc != NULL)
Handler->PreEvalFunc(NewToken);
}
+ } else {
+ LogTemplateError(
+ NULL, "Token ", ERR_NAME, &TP,
+ " isn't known to us.",
+ NULL);
}
break;
case SV_GETTEXT:
#endif
-/*
- * Room flags (from Citadel)
- *
- * bucket one...
- */
-#define QR_PERMANENT 1 /* Room does not purge */
-#define QR_INUSE 2 /* Set if in use, clear if avail */
-#define QR_PRIVATE 4 /* Set for any type of private room */
-#define QR_PASSWORDED 8 /* Set if there's a password too */
-#define QR_GUESSNAME 16 /* Set if it's a guessname room */
-#define QR_DIRECTORY 32 /* Directory room */
-#define QR_UPLOAD 64 /* Allowed to upload */
-#define QR_DOWNLOAD 128 /* Allowed to download */
-#define QR_VISDIR 256 /* Visible directory */
-#define QR_ANONONLY 512 /* Anonymous-Only room */
-#define QR_ANONOPT 1024 /* Anonymous-Option room */
-#define QR_NETWORK 2048 /* Shared network room */
-#define QR_PREFONLY 4096 /* Preferred status needed to enter */
-#define QR_READONLY 8192 /* Aide status required to post */
-#define QR_MAILBOX 16384 /* Set if this is a private mailbox */
-
-/*
- * bucket two...
- */
-#define QR2_SYSTEM 1 /* System room; hide by default */
-#define QR2_SELFLIST 2 /* Self-service mailing list mgmt */
-#define QR2_COLLABDEL 4 /* Anyone who can post can also delete */
-#define QR2_SUBJECTREQ 8 /* Subject strongly recommended */
-#define QR2_SMTP_PUBLIC 16 /* smtp public postable room */
-#define QR2_MODERATED 32 /* Listservice aide has to permit posts */
-
-/*
- * user/room access
- */
-#define UA_KNOWN 2
-#define UA_GOTOALLOWED 4
-#define UA_HASNEWMSGS 8
-#define UA_ZAPPED 16
-#define UA_POSTALLOWED 32
-#define UA_ADMINALLOWED 64
-#define UA_DELETEALLOWED 128
-#define UA_ISTRASH 256 /* Only available in room view... */
-
-
-/*
- * User flags (from Citadel)
- */
-#define US_NEEDVALID 1 /* User needs to be validated */
-#define US_PERM 4 /* Permanent user */
-#define US_LASTOLD 16 /* Print last old message with new */
-#define US_EXPERT 32 /* Experienced user */
-#define US_UNLISTED 64 /* Unlisted userlog entry */
-#define US_NOPROMPT 128 /* Don't prompt after each message */
-#define US_PROMPTCTL 256 /* <N>ext & <S>top work at prompt */
-#define US_DISAPPEAR 512 /* Use "disappearing msg prompts" */
-#define US_REGIS 1024 /* Registered user */
-#define US_PAGINATOR 2048 /* Pause after each screen of text */
-#define US_INTERNET 4096 /* Internet mail privileges */
-#define US_FLOORS 8192 /* User wants to see floors */
-#define US_COLOR 16384 /* User wants ANSI color support */
-#define US_USER_SET (US_LASTOLD | US_EXPERT | US_UNLISTED | \
- US_NOPROMPT | US_DISAPPEAR | US_PAGINATOR | \
- US_FLOORS | US_COLOR | US_PROMPTCTL )
-
#define SRV_STATUS_MSG(ServerLineBuf) (ChrPtr(ServerLineBuf) + 4), (StrLength(ServerLineBuf) - 4)