i = i << 1;
j++;
}
- syslog(9, "DBG: QR-Vec [%ld] [%s]\n", QR, ChrPtr(QRVec));
+ syslog(LOG_DEBUG, "DBG: QR-Vec [%ld] [%s]\n", QR, ChrPtr(QRVec));
FreeStrBuf(&QRVec);
}
i = i << 1;
j++;
}
- syslog(9, "DBG: QR2-Vec [%ld] [%s]\n", QR2, ChrPtr(QR2Vec));
+ syslog(LOG_DEBUG, "DBG: QR2-Vec [%ld] [%s]\n", QR2, ChrPtr(QR2Vec));
FreeStrBuf(&QR2Vec);
}
* goto next room
*/
void smart_goto(const StrBuf *next_room) {
- gotoroom(next_room);
- readloop(readnew, eUseDefault);
+ if (gotoroom(next_room) / 100 == 2)
+ readloop(readnew, eUseDefault);
+ else
+ do_404();
}
/*
long err = 0;
int room_name_supplied = 0;
int is_baseroom = 0;
+ int failvisibly;
+
+ /* on fail, should we fallback to _BASEROOM_? */
+ failvisibly = ibstr("failvisibly");
/* store ungoto information */
if (StrLength(gname) > 0) {
}
StrBuf_ServGetln(Buf);
if (GetServerStatus(Buf, &err) != 2) {
+ if (failvisibly) {
+ FreeStrBuf(&Buf);
+ return err;
+ }
serv_puts("GOTO _BASEROOM_");
StrBuf_ServGetln(Buf);
/*
int i, num_addrs;
StrBuf *Line;
StrBuf *TmpBuf;
+ int malias = 0;
+ int malias_set_default = 0;
+ char sepchar = '|';
int Done;
+ line[0] = '\0';
if (havebstr("force_room")) {
gotoroom(sbstr("force_room"));
}
strcat(line, bstr("line"));
strcat(line, bstr("suffix"));
}
+ else if (havebstr("alias")) {
+ const char *domain;
+ domain = bstr("aliasdomain");
+ if ((domain == NULL) || IsEmptyStr(domain))
+ {
+ malias_set_default = 1;
+ strcpy(line, bstr("prefix"));
+ strcat(line, bstr("default_aliasdomain"));
+ }
+ else
+ {
+ malias = 1;
+ sepchar = ',';
+ strcat(line, bstr("prefix"));
+ if (!IsEmptyStr(domain))
+ {
+ strcat(line, "@");
+ strcat(line, domain);
+ }
+ strcat(line, ",");
+ strcat(line, "room_");
+ strcat(line, ChrPtr(WC->CurRoom.name));
+ }
+ }
else {
output_headers(1, 1, 1, 0, 0, 0);
do_template("room_edit");
Line = NewStrBuf();
TmpBuf = NewStrBuf();
- serv_puts("GNET");
+ if (malias)
+ serv_puts("GNET "FILE_MAILALIAS);
+ else
+ serv_puts("GNET");
StrBuf_ServGetln(Line);
if (GetServerStatus(Line, NULL) != 1) {
AppendImportantMessage(SRV_STATUS_MSG(Line));
/** This loop works for add *or* remove. Spiffy, eh? */
Done = 0;
- extract_token(cmpb0, line, 0, '|', sizeof cmpb0);
- extract_token(cmpb1, line, 1, '|', sizeof cmpb1);
+ extract_token(cmpb0, line, 0, sepchar, sizeof cmpb0);
+ extract_token(cmpb1, line, 1, sepchar, sizeof cmpb1);
while (!Done && StrBuf_ServGetln(Line)>=0) {
if ( (StrLength(Line)==3) &&
!strcmp(ChrPtr(Line), "000"))
}
else
{
- extract_token(cmpa0, ChrPtr(Line), 0, '|', sizeof cmpa0);
- extract_token(cmpa1, ChrPtr(Line), 1, '|', sizeof cmpa1);
- if ( (strcasecmp(cmpa0, cmpb0))
- || (strcasecmp(cmpa1, cmpb1)) ) {
- StrBufAppendBufPlain(Line, HKEY("\n"), 0);
- StrBufAppendBuf(TmpBuf, Line, 0);
+ if (StrLength(Line) == 0)
+ continue;
+
+ if (malias_set_default)
+ {
+ if (strncasecmp(ChrPtr(Line), HKEY("roommailalias|")) != 0)
+ {
+ StrBufAppendBufPlain(Line, HKEY("\n"), 0);
+ StrBufAppendBuf(TmpBuf, Line, 0);
+ }
+ }
+ else
+ {
+ extract_token(cmpa0, ChrPtr(Line), 0, sepchar, sizeof cmpa0);
+ extract_token(cmpa1, ChrPtr(Line), 1, sepchar, sizeof cmpa1);
+ if ( (strcasecmp(cmpa0, cmpb0)) || (strcasecmp(cmpa1, cmpb1)) )
+ {
+ StrBufAppendBufPlain(Line, HKEY("\n"), 0);
+ StrBufAppendBuf(TmpBuf, Line, 0);
+ }
}
}
}
- serv_puts("SNET");
+ if (malias)
+ serv_puts("SNET "FILE_MAILALIAS);
+ else
+ serv_puts("SNET");
StrBuf_ServGetln(Line);
if (GetServerStatus(Line, NULL) != 4) {
REGISTERTokenParamDefine(VIEW_JOURNAL);
REGISTERTokenParamDefine(VIEW_BLOG);
REGISTERTokenParamDefine(VIEW_QUEUE);
+ REGISTERTokenParamDefine(VIEW_WIKIMD);
/* GNET types: */
/* server internal, we need to know but ignore them. */
}
REGISTERTokenParamDefine(rssclient);
REGISTERTokenParamDefine(participate);
+ REGISTERTokenParamDefine(roommailalias);