* lang is a two-letter code according to ISO-639-1 (or three-letter
* code according to ISO-639-2 for languages not in ISO-639-1), and
* COUNTRY is the ISO 3166 country code in all upper case.
- *
+ *
* See also:
* http://www.loc.gov/standards/iso639-2/
* http://www.loc.gov/standards/iso639-2/langhome.html
#endif
}
message_source = src;
- if (!(msg_type & 4) && !(format = handle_find_message(handle, format)))
+ if (!(msg_type & MSG_TYPE_NOXLATE)
+ && !(format = handle_find_message(handle, format)))
return 0;
/* fill in a buffer with the string */
input.used = 0;
size = sizeof(line);
use_color = 1;
}
- if (!size)
+ if (!size || !(msg_type & MSG_TYPE_MULTILINE))
size = DEFAULT_LINE_SIZE;
switch (msg_type & 3) {
case 0:
case 'H':
value = handle ? handle->handle : "Account";
break;
-#define SEND_LINE() do { line[pos] = 0; if (pos > 0) irc_send(src, dest, line); chars_sent += pos; pos = 0; newline_ipos = ipos; } while (0)
+#define SEND_LINE(TRUNCED) do { \
+ line[pos] = 0; \
+ if (pos > 0) { \
+ if (!(msg_type & MSG_TYPE_MULTILINE) && (pos > 1) && TRUNCED) \
+ line[pos-2] = line[pos-1] = '.'; \
+ irc_send(src, dest, line); \
+ } \
+ chars_sent += pos; \
+ pos = 0; \
+ newline_ipos = ipos; \
+ if (!(msg_type & MSG_TYPE_MULTILINE)) return chars_sent; \
+} while (0)
/* Custom expansion handled by helpfile-specific function. */
case '{':
case '(': {
break;
case HF_TABLE:
/* Must send current line, then emit table. */
- SEND_LINE();
+ SEND_LINE(0);
table_send(src, (message_dest ? message_dest->nick : dest), 0, irc_send, exp.value.table);
value = "";
break;
/* word to send is too big to send now.. what to do? */
if (pos > 0) {
/* try to put it on a separate line */
- SEND_LINE();
+ SEND_LINE(1);
} else {
/* already at start of line; only send part of it */
strncpy(line, value, avail);
}
/* if we're looking at a newline, send the accumulated text */
if (*value == '\n') {
- SEND_LINE();
+ SEND_LINE(0);
value++;
}
}
send_line:
expand_pos = pos;
expand_ipos = ipos;
- SEND_LINE();
+ SEND_LINE(0);
#undef SEND_LINE
}
return chars_sent;
va_list ap;
va_start(ap, format);
- res = vsend_message(dest->nick, src, dest->handle_info, 4, expand, format, ap);
+ res = vsend_message(dest->nick, src, dest->handle_info, 12, expand, format, ap);
va_end(ap);
return res;
}
*end = start + 5;
return 0;
} else {
- log_module(MAIN_LOG, LOG_FATAL, "Unexpected helpfile identifier '%.*s'.", *end-start, start);
+ log_module(MAIN_LOG, LOG_FATAL, "Unexpected helpfile identifier '%.*s'.", (int)(*end-start), start);
return -1;
}
}
while (isspace(*sep) && (sep < *end))
sep++;
if ((sep == *end) || (sep[0] != ')')) {
- log_module(MAIN_LOG, LOG_FATAL, "Expected close parenthesis at '%.*s'.", *end-sep, sep);
+ log_module(MAIN_LOG, LOG_FATAL, "Expected close parenthesis at '%.*s'.", (int)(*end-sep), sep);
return -1;
}
sep += len;
}
if (op == OP_INVALID) {
- log_module(MAIN_LOG, LOG_FATAL, "Unrecognized helpfile operator at '%.*s'.", *end-sep, sep);
+ log_module(MAIN_LOG, LOG_FATAL, "Unrecognized helpfile operator at '%.*s'.", (int)(*end-sep), sep);
return -1;
}
while (isspace(*sep2) && (sep2 < *end))
sep2++;
if (sep2 != *end) {
- log_module(MAIN_LOG, LOG_FATAL, "Trailing garbage in helpfile expression: '%.*s'.", *end-sep2, sep2);
+ log_module(MAIN_LOG, LOG_FATAL, "Trailing garbage in helpfile expression: '%.*s'.", (int)(*end-sep2), sep2);
return -1;
}
for (term = start; isalnum(*term) && (term < *end); ++term) ;
if (term != start) {
if ((term + 2 >= *end) || (term[0] != ':') || (term[1] != ' ')) {
- log_module(MAIN_LOG, LOG_FATAL, "In helpfile condition '%.*s' expected prefix to end with ': '.", *end-start, start);
+ log_module(MAIN_LOG, LOG_FATAL, "In helpfile condition '%.*s' expected prefix to end with ': '.", (int)(*end-start), start);
return -1;
}
start = term + 2;