mcabber/mcabber/nohtml.c
author franky
Tue, 15 Sep 2020 21:31:00 +0200
changeset 2353 73916eeef3cb
parent 2268 f5402d705f67
permissions -rw-r--r--
Fix display when sending message to a full JID This path fixes a regression in mcabber 1.1.1. The message was shown as if it was a MUC private message. Thanks to Minoru for the report.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1470
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     1
/*
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
 * nohtml.c     -- (X)HTML helper functions
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
 *
1599
dcd5d4c75199 Update/Add headers
Mikael Berthe <mikael@lilotux.net>
parents: 1470
diff changeset
     4
 * Copyright (C) 2008,2009 Mikael Berthe <mikael@lilotux.net>
1470
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
 * Some portions come from the jabberd project, see below.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
 *
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
 * This program is free software; you can redistribute it and/or modify
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
 * it under the terms of the GNU General Public License as published by
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     9
 * the Free Software Foundation; either version 2 of the License, or (at
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    10
 * your option) any later version.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
 *
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
 * This program is distributed in the hope that it will be useful, but
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
 * WITHOUT ANY WARRANTY; without even the implied warranty of
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
 * General Public License for more details.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
 *
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License
2268
f5402d705f67 Fix FSF addresses in all files
Mikael Berthe <mikael@lilotux.net>
parents: 2251
diff changeset
    18
 * along with this program; if not, see <http://www.gnu.org/licenses/>.
1470
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
 *
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
 *
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    21
 * Some parts come from libjabber/str.c:
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    22
 * Copyright (c) 1999-2002 Jabber.com, Inc.  All Rights Reserved.  Contact
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    23
 * information for Jabber.com, Inc. is available at http://www.jabber.com/.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    24
 * Portions Copyright (c) 1998-1999 Jeremie Miller.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    25
 */
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    26
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    27
#include <string.h>
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    28
#include <glib.h>
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    29
#include <config.h>
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    30
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
/*  html_strip(htmlbuf)
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
 * Remove html entities from htmlbuf and try to convert it to plain text.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
 * The caller must g_free the string after use.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
 * Code mostly derived from strunescape(), in libjabber.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    36
 */
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    37
char *html_strip(const char *htmlbuf)
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    38
{
2251
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    39
  int i, j=0, html_len;
1470
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    40
  char *nohtml;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    41
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    42
  if (!htmlbuf) return(NULL);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    43
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    44
  nohtml = g_strdup(htmlbuf);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    45
2251
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    46
  html_len = (int)strlen(htmlbuf);
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    47
  for (i = 0; i < html_len; i++) {
1470
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    48
    if (htmlbuf[i] == '&') {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    49
      if (!strncmp(&htmlbuf[i],"&amp;",5)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    50
        nohtml[j] = '&';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    51
        i += 4;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    52
      } else if (!strncmp(&htmlbuf[i],"&quot;", 6)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    53
        nohtml[j] = '\"';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    54
        i += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    55
      } else if (!strncmp(&htmlbuf[i],"&apos;", 6)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    56
        nohtml[j] = '\'';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    57
        i += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    58
      } else if (!strncmp(&htmlbuf[i],"&lt;", 4)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    59
        nohtml[j] = '<';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    60
        i += 3;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    61
      } else if (!strncmp(&htmlbuf[i],"&gt;", 4)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    62
        nohtml[j] = '>';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    63
        i += 3;
2251
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    64
      } else {
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    65
        nohtml[j] = htmlbuf[i];
1470
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    66
      }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    67
    } else if (htmlbuf[i] == '<') {
2251
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    68
      if (!strncmp(&htmlbuf[i],"<br>", 4)) {
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    69
        nohtml[j] = '\n';
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    70
        i += 3;
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    71
      } else if (!strncmp(&htmlbuf[i],"<br/>", 5)) {
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    72
        nohtml[j] = '\n';
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    73
        i += 4;
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    74
      } else if (!strncmp(&htmlbuf[i],"<FONT>", 6)) {
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    75
        /* Let's strip <FONT> from Adium */
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    76
        i += 5;
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    77
        j--;
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    78
      } else if (!strncmp(&htmlbuf[i],"</FONT>", 7)) {
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    79
        i += 6;
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    80
        j--;
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    81
      } else {
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    82
        nohtml[j] = htmlbuf[i];
f3bd1564fa70 Stop html-escaping otr messages and do only strip known tags.
franky
parents: 1811
diff changeset
    83
      }
1470
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    84
    } else
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    85
      nohtml[j] = htmlbuf[i];
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    86
    j++;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    87
  }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    88
  nohtml[j] = '\0';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    89
  return nohtml;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    90
}
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    91
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    92
/*  html_escape(text)
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    93
 * Add (x)html entities to the text.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    94
 * The caller must g_free the string after use.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    95
 * Code mostly derived from strescape(), in libjabber.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    96
 */
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    97
char *html_escape(const char *text)
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    98
{
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    99
  int i, j;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   100
  int oldlen, newlen;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   101
  char *html;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   102
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   103
  if (!text) return(NULL);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   104
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   105
  oldlen = newlen = strlen(text);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   106
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   107
  for (i = 0; i < oldlen; i++) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   108
    switch(text[i])
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   109
    {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   110
      case '&':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   111
          newlen += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   112
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   113
      case '\'':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   114
          newlen += 6;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   115
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   116
          case '\"':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   117
              newlen += 6;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   118
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   119
      case '<':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   120
          newlen += 4;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   121
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   122
      case '>':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   123
          newlen += 4;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   124
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   125
      case '\n':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   126
          newlen += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   127
    }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   128
  }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   129
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   130
  if (oldlen == newlen)
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   131
    return g_strdup(text);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   132
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   133
  html = g_new0(char, newlen+1);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   134
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   135
  for (i = j = 0; i < oldlen; i++) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   136
    switch(text[i])
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   137
    {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   138
      case '&':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   139
          memcpy(&html[j], "&amp;", 5);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   140
          j += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   141
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   142
      case '\'':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   143
          memcpy(&html[j], "&apos;", 6);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   144
          j += 6;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   145
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   146
      case '\"':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   147
          memcpy(&html[j], "&quot;", 6);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   148
          j += 6;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   149
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   150
      case '<':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   151
          memcpy(&html[j], "&lt;", 4);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   152
          j += 4;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   153
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   154
      case '>':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   155
          memcpy(&html[j], "&gt;", 4);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   156
          j += 4;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   157
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   158
      case '\n':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   159
          memcpy(&html[j], "<br/>", 5);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   160
          j += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   161
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   162
      default:
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   163
          html[j++] = text[i];
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   164
    }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   165
  }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   166
  return html;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   167
}
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   168
1811
e6d355e50d7a Update Vim modelines
Mikael Berthe <mikael@lilotux.net>
parents: 1668
diff changeset
   169
/* vim: set et cindent cinoptions=>2\:2(0 ts=2 sw=2:  For Vim users... */