$Log$
+Revision 521.5 2004/06/12 04:26:38 ajc
+* Fixed some garbled output resulting from turning things that look like
+ links into links.
+
Revision 521.4 2004/06/11 16:09:36 ajc
* Moved the room graphic to the left of the room name in the banner, to
make it more consistent with the rest of the site.
1998-12-03 Nathan Bryant <bryant@cs.usm.maine.edu>
* webserver.c: warning fix
-
int output_length = 0;
char new_window[SIZ];
int brak = 0;
+ int alevel = 0;
int i;
int linklen;
"?force_room=_MAIL_&recp=");
output_length += 47;
ptr = &ptr[16];
- ++brak;
+ ++alevel;
}
/* Make links open in a separate window */
else if (!strncasecmp(ptr, "<A HREF=", 8)) {
sprintf(&converted_msg[output_length], new_window);
output_length += strlen(new_window);
ptr = &ptr[8];
- ++brak;
+ ++alevel;
}
/* Turn anything that looks like a URL into a real link, as long
* as it's not inside a tag already
*/
- else if ( (brak == 0)
+ else if ( (brak == 0) && (alevel == 0)
&& (!strncasecmp(ptr, "http://", 7))) {
linklen = 0;
/* Find the end of the link */
||(isspace(ptr[i]))
||(ptr[i]==10)
||(ptr[i]==13)
+ ||(ptr[i]=='(')
||(ptr[i]==')')
+ ||(ptr[i]=='<')
||(ptr[i]=='>')
+ ||(ptr[i]=='[')
||(ptr[i]==']')
) linklen = i;
if (linklen > 0) break;
*/
if (*ptr == '<') ++brak;
if (*ptr == '>') --brak;
+ if (!strncasecmp(ptr, "</A>", 3)) --alevel;
converted_msg[output_length] = *ptr++;
converted_msg[++output_length] = 0;
}