System update to UTF-8
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
|
||||
int use_tran1 = FALSE; /* Translate stage 1 active */
|
||||
int use_tran2 = FALSE; /* Translate stage 2 active */
|
||||
int loglevel = '-'; /* Debug loglevel */
|
||||
iconv_t cd1; /* Conversion descriptor 1 */
|
||||
iconv_t cd2; /* Conversion descriptor 2 */
|
||||
|
||||
@@ -82,7 +83,7 @@ struct _charmap charmap[] = {
|
||||
{FTNC_CP850, (char *)"CP850 2", (char *)"iso-8859-1", (char *)"CP850", (char *)"ISO-8859-1", (char *)"en_US", (char *)"IBM codepage 850 (Latin-1)"},
|
||||
{FTNC_LATIN_2,(char *)"LATIN-2 2",(char *)"iso-8859-2", (char *)"LATIN2", (char *)"ISO-8859-2", (char *)"cs_CZ", (char *)"ISO 8859-2 (Eastern European)"},
|
||||
{FTNC_CP852, (char *)"CP852 2", (char *)"iso-8859-2", (char *)"CP852", (char *)"ISO-8859-2", (char *)"cs_CZ", (char *)"IBM codepage 852 (Czech, Latin-1)"},
|
||||
{FTNC_CP895, (char *)"CP895 2", (char *)"iso-8859-2", (char *)"CP895", (char *)"ISO-8859-2", (char *)"cs_CZ", (char *)"IBM codepage 895 (Czech, Kamenicky)"},
|
||||
{FTNC_CP895, (char *)"CP895 2", (char *)"iso-8859-2", (char *)"CP850", (char *)"ISO-8859-2", (char *)"cs_CZ", (char *)"IBM codepage 895 (Czech, Kamenicky)"},
|
||||
{FTNC_LATIN_5,(char *)"LATIN-5 2",(char *)"iso-8859-5", (char *)"LATIN5", (char *)"ISO-8859-5", (char *)"turks", (char *)"ISO 8859-5 (Turkish)"},
|
||||
{FTNC_CP866, (char *)"CP866 2", (char *)"iso-8859-5", (char *)"CP866", (char *)"ISO-8859-5", (char *)"ru_RU", (char *)"IBM codepage 866 (Russian)"},
|
||||
{FTNC_LATIN_9,(char *)"LATIN-9 2",(char *)"iso-8859-15",(char *)"LATIN-9", (char *)"ISO-8859-15",(char *)"en_US", (char *)"ISO 8859-1 (Western European EURO)"},
|
||||
@@ -104,7 +105,7 @@ int find_ftn_charset(char *ftnkludge)
|
||||
int j;
|
||||
char *ftn, *cmp;
|
||||
|
||||
Syslog('n', "find_ftn_charset(%s)", ftnkludge);
|
||||
Syslog(loglevel, "find_ftn_charset(%s)", ftnkludge);
|
||||
|
||||
ftn = calloc(80, sizeof(char));
|
||||
cmp = calloc(80, sizeof(char));
|
||||
@@ -123,7 +124,7 @@ int find_ftn_charset(char *ftnkludge)
|
||||
}
|
||||
|
||||
if (charalias[i].alias != NULL) {
|
||||
Syslog('n', "found alias %s", charalias[i].ftnkludge);
|
||||
Syslog(loglevel, "found alias %s", charalias[i].ftnkludge);
|
||||
snprintf(ftn, 80, "%s", charalias[i].ftnkludge);
|
||||
}
|
||||
|
||||
@@ -151,7 +152,7 @@ int find_ftn_charset(char *ftnkludge)
|
||||
return FTNC_ERROR;
|
||||
}
|
||||
|
||||
Syslog('n', "find_ftn_charset(%s) result %d", ftnkludge, i);
|
||||
Syslog(loglevel, "find_ftn_charset(%s) result %d", ftnkludge, i);
|
||||
return i;
|
||||
}
|
||||
|
||||
@@ -197,6 +198,46 @@ char *getrfcchrs(int val)
|
||||
|
||||
|
||||
|
||||
char *get_ic_ftn(int val)
|
||||
{
|
||||
int i;
|
||||
static char ic_ftnname[20];
|
||||
|
||||
for (i = 0; (charmap[i].ftncidx != FTNC_ERROR); i++) {
|
||||
if (val == charmap[i].ftncidx) {
|
||||
snprintf(ic_ftnname, 20, "%s", charmap[i].ic_ftn);
|
||||
return ic_ftnname;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Not found, return a default
|
||||
*/
|
||||
return (char *)"LATIN1";
|
||||
}
|
||||
|
||||
|
||||
|
||||
char *get_ic_rfc(int val)
|
||||
{
|
||||
int i;
|
||||
static char ic_rfcname[20];
|
||||
|
||||
for (i = 0; (charmap[i].ftncidx != FTNC_ERROR); i++) {
|
||||
if (val == charmap[i].ftncidx) {
|
||||
snprintf(ic_rfcname, 20, "%s", charmap[i].ic_rfc);
|
||||
return ic_rfcname;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Not found, return a default
|
||||
*/
|
||||
return (char *)"iso-8859-1";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Experimental table that should translate from the user selected
|
||||
* charset to a locale. This is not the right way to do, the best
|
||||
@@ -249,17 +290,19 @@ char *getchrsdesc(int val)
|
||||
* charactersets are given, the translation is off.
|
||||
* On success return 0, on error return -1 and write errorlog.
|
||||
*/
|
||||
int chartran_init(char *fromset, char *toset)
|
||||
int chartran_init(char *fromset, char *toset, int logl)
|
||||
{
|
||||
loglevel = logl;
|
||||
|
||||
if (use_tran1 || use_tran2) {
|
||||
WriteError("chartran_init() called while still open");
|
||||
chartran_close();
|
||||
}
|
||||
|
||||
Syslog('-', "chartran_init(%s, %s)", fromset, toset);
|
||||
Syslog(loglevel, "chartran_init(%s, %s)", fromset, toset);
|
||||
|
||||
if (strcmp(fromset, toset) == 0) {
|
||||
Syslog('-', "nothing to translate");
|
||||
Syslog(loglevel, "nothing to translate");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -273,10 +316,13 @@ int chartran_init(char *fromset, char *toset)
|
||||
}
|
||||
|
||||
if (strcmp(toset, (char *)"UTF-8")) {
|
||||
cd2 = iconv_open(toset, (char *)"UTF-8");
|
||||
if (cd2 != (iconv_t)-1) {
|
||||
WriteError("$chartran_init(%s, %s): iconv_open(%s, UTF-8s) error", fromset, toset, toset);
|
||||
chartran_close();
|
||||
cd2 = iconv_open(toset, "UTF-8");
|
||||
if (cd2 == (iconv_t)-1) {
|
||||
WriteError("$chartran_init(%s, %s): iconv_open(%s, UTF-8) error", fromset, toset, toset);
|
||||
if (use_tran1) {
|
||||
iconv_close(cd1);
|
||||
use_tran1 = FALSE;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
use_tran2 = TRUE;
|
||||
@@ -292,7 +338,7 @@ int chartran_init(char *fromset, char *toset)
|
||||
*/
|
||||
void chartran_close(void)
|
||||
{
|
||||
Syslog('-', "chartran_close()");
|
||||
Syslog(loglevel, "chartran_close()");
|
||||
if (use_tran1) {
|
||||
iconv_close(cd1);
|
||||
use_tran1 = FALSE;
|
||||
@@ -318,6 +364,7 @@ char *chartran(char *input)
|
||||
char *in, *out;
|
||||
|
||||
memset(&outbuf, 0, sizeof(outbuf));
|
||||
memset(&temp, 0, sizeof(temp));
|
||||
|
||||
/*
|
||||
* Transparant
|
||||
@@ -340,6 +387,10 @@ char *chartran(char *input)
|
||||
WriteError("$iconv(%s) cd1", printable(input, 0));
|
||||
strncpy(outbuf, input, sizeof(outbuf) -1);
|
||||
}
|
||||
if (strcmp(input, outbuf)) {
|
||||
Syslog(loglevel, "i %s", printable(input, 0));
|
||||
Syslog(loglevel, "u %s", printable(outbuf, 0));
|
||||
}
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
@@ -356,6 +407,10 @@ char *chartran(char *input)
|
||||
WriteError("$iconv(%s) cd2", printable(input, 0));
|
||||
strncpy(outbuf, input, sizeof(outbuf) -1);
|
||||
}
|
||||
if (strcmp(input, outbuf)) {
|
||||
Syslog(loglevel, "u %s", printable(input, 0));
|
||||
Syslog(loglevel, "o %s", printable(outbuf, 0));
|
||||
}
|
||||
return outbuf;
|
||||
}
|
||||
|
||||
@@ -372,6 +427,10 @@ char *chartran(char *input)
|
||||
strncpy(outbuf, input, sizeof(outbuf) -1);
|
||||
return outbuf;
|
||||
}
|
||||
if (strcmp(input, temp)) {
|
||||
Syslog(loglevel, "i %s", printable(input, 0));
|
||||
}
|
||||
|
||||
inSize = strlen(temp);
|
||||
outSize = sizeof(outbuf);
|
||||
in = temp;
|
||||
@@ -381,6 +440,12 @@ char *chartran(char *input)
|
||||
WriteError("$iconv(%s) cd2", printable(temp, 0));
|
||||
strncpy(outbuf, input, sizeof(outbuf) -1);
|
||||
}
|
||||
if (strcmp(input, temp) || strcmp(temp, outbuf)) {
|
||||
Syslog(loglevel, "u %s", printable(temp, 0));
|
||||
}
|
||||
if (strcmp(temp, outbuf)) {
|
||||
Syslog(loglevel, "o %s", printable(outbuf, 0));
|
||||
}
|
||||
|
||||
return outbuf;
|
||||
}
|
||||
|
@@ -255,6 +255,7 @@ void html_massage(char *inbuf, char *outbuf, size_t size)
|
||||
case '&': snprintf(outptr, size, "&"); break;
|
||||
case '<': snprintf(outptr, size, "<"); break;
|
||||
case '>': snprintf(outptr, size, ">"); break;
|
||||
/* Not needed for UTF-8 output.
|
||||
case 160: snprintf(outptr, size, " "); break;
|
||||
case 161: snprintf(outptr, size, "¡"); break;
|
||||
case 162: snprintf(outptr, size, "¢"); break;
|
||||
@@ -351,6 +352,7 @@ void html_massage(char *inbuf, char *outbuf, size_t size)
|
||||
case 253: snprintf(outptr, size, "ý"); break;
|
||||
case 254: snprintf(outptr, size, "þ"); break;
|
||||
case 255: snprintf(outptr, size, "ÿ"); break;
|
||||
*/
|
||||
default: *outptr++ = *inptr; *outptr = '\0'; break;
|
||||
}
|
||||
while (*outptr)
|
||||
@@ -410,6 +412,18 @@ FILE *OpenMacro(const char *filename, int Language, int htmlmode)
|
||||
if (fi == NULL)
|
||||
WriteError("OpenMacro(%s, %c): not found", filename, Language);
|
||||
else {
|
||||
/*
|
||||
* Check macro file for update correct charset.
|
||||
*/
|
||||
while (fgets(linebuf, sizeof(linebuf) -1, fi)) {
|
||||
if (strcasestr(linebuf, (char *)"text/html")) {
|
||||
if (! strcasestr(linebuf, (char *)"UTF-8")) {
|
||||
WriteError("Macro file %s doesn't define 'Content-Type' content='text/html; charset=UTF-8'", temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
rewind(fi);
|
||||
|
||||
snprintf(temp, PATH_MAX -1, "%s-%s", OsName(), OsCPU());
|
||||
if (CFG.aka[0].point)
|
||||
snprintf(aka, 80, "%d:%d/%d.%d@%s", CFG.aka[0].zone, CFG.aka[0].net, CFG.aka[0].node, CFG.aka[0].point, CFG.aka[0].domain);
|
||||
|
@@ -1039,7 +1039,7 @@ struct sysconfig {
|
||||
securityrec newuser_access; /* New Users Access level */
|
||||
int OLR_MaxMsgs; /* OLR Max nr Msgs download */
|
||||
unsigned iCapUserName : 1; /* Capitalize Username */
|
||||
unsigned iAnsi : 1; /* Ask Ansi */
|
||||
unsigned xiAnsi : 1;
|
||||
unsigned iSex : 1; /* Ask Sex */
|
||||
unsigned iDataPhone : 1; /* Ask Data Phone */
|
||||
unsigned iVoicePhone : 1; /* Ask Voice Phone */
|
||||
@@ -2604,7 +2604,9 @@ char *getftnchrs(int); /* Return FTN characterset name */
|
||||
char *getrfcchrs(int); /* Return RFC characterset name */
|
||||
char *getlocale(int); /* Return locale name */
|
||||
char *getchrsdesc(int); /* Return characterset description */
|
||||
int chartran_init(char *, char *); /* Initialize chartran */
|
||||
char *get_ic_ftn(int); /* Return iconv name FTN side */
|
||||
char *get_ic_rfc(int); /* Return iconv name RFC side */
|
||||
int chartran_init(char *, char *, int); /* Initialize chartran */
|
||||
void chartran_close(void); /* Deinit chartran */
|
||||
char *chartran(char *); /* Translate string */
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
* Purpose ...............: MBSE BBS Users Database structure
|
||||
*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1997-2005
|
||||
* Copyright (C) 1997-2007
|
||||
*
|
||||
* Michiel Broek FIDO: 2:280/2802
|
||||
* Beekmansbos 10
|
||||
@@ -96,7 +96,7 @@ struct userrec {
|
||||
|
||||
unsigned Hidden : 1; /* Hide User from Lists */
|
||||
unsigned HotKeys : 1; /* Hot-Keys ON/OFF */
|
||||
unsigned GraphMode : 1; /* ANSI Mode ON/OFF */
|
||||
unsigned xGraphMode : 1;
|
||||
unsigned Deleted : 1; /* Deleted Status */
|
||||
unsigned NeverDelete : 1; /* Never Delete User */
|
||||
unsigned xChat : 1;
|
||||
|
Reference in New Issue
Block a user