mcabber/src/nohtml.c
author Mikael Berthe <mikael@lilotux.net>
Sun, 13 Apr 2008 13:01:32 +0200
changeset 1470 a8b924b5474c
child 1599 dcd5d4c75199
permissions -rw-r--r--
The OTR protocol expects (X)HTML messsages
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
 *
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
 * Copyright (C) 2008 Mikael Berthe <mikael@lilotux.net>
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
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    18
 * along with this program; if not, write to the Free Software
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
 * USA
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    21
 *
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    22
 *
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    23
 * Some parts come from libjabber/str.c:
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    24
 * 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
    25
 * 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
    26
 * Portions Copyright (c) 1998-1999 Jeremie Miller.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    27
 */
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    28
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    29
#include <string.h>
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    30
#include <glib.h>
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
#include <config.h>
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
/*  html_strip(htmlbuf)
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
 * 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
    36
 * 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
    37
 * Code mostly derived from strunescape(), in libjabber.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    38
 */
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    39
char *html_strip(const char *htmlbuf)
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    40
{
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    41
  int i, j=0;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    42
  char *nohtml;
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
  if (!htmlbuf) return(NULL);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    45
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    46
  nohtml = g_strdup(htmlbuf);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    47
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    48
  if (!strchr(htmlbuf, '&') && !strchr(htmlbuf, '<'))
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    49
    return(nohtml);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    50
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    51
  for (i = 0; i < (int)strlen(htmlbuf); i++) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    52
    if (htmlbuf[i] == '&') {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    53
      if (!strncmp(&htmlbuf[i],"&amp;",5)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    54
        nohtml[j] = '&';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    55
        i += 4;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    56
      } else if (!strncmp(&htmlbuf[i],"&quot;", 6)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    57
        nohtml[j] = '\"';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    58
        i += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    59
      } else if (!strncmp(&htmlbuf[i],"&apos;", 6)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    60
        nohtml[j] = '\'';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    61
        i += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    62
      } else if (!strncmp(&htmlbuf[i],"&lt;", 4)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    63
        nohtml[j] = '<';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    64
        i += 3;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    65
      } else if (!strncmp(&htmlbuf[i],"&gt;", 4)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    66
        nohtml[j] = '>';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    67
        i += 3;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    68
      }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    69
    } else if (!strncmp(&htmlbuf[i],"<br>", 4) ||
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    70
               !strncmp(&htmlbuf[i],"<br/>", 5)) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    71
      nohtml[j] = '\n';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    72
      i += (htmlbuf[i+3] == '/' ? 4 : 3);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    73
    } else if (htmlbuf[i] == '<') {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    74
      /* Let's strip all unknown tags */
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    75
      j--;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    76
      while (htmlbuf[++i] != '>');
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    77
    } else
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    78
      nohtml[j] = htmlbuf[i];
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    79
    j++;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    80
  }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    81
  nohtml[j] = '\0';
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    82
  return nohtml;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    83
}
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    84
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    85
/*  html_escape(text)
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    86
 * Add (x)html entities to the text.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    87
 * 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
    88
 * Code mostly derived from strescape(), in libjabber.
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    89
 */
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    90
char *html_escape(const char *text)
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
  int i, j;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    93
  int oldlen, newlen;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    94
  char *html;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    95
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    96
  if (!text) return(NULL);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    97
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    98
  oldlen = newlen = strlen(text);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    99
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   100
  for (i = 0; i < oldlen; i++) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   101
    switch(text[i])
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
      case '&':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   104
          newlen += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   105
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   106
      case '\'':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   107
          newlen += 6;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   108
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   109
          case '\"':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   110
              newlen += 6;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   111
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   112
      case '<':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   113
          newlen += 4;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   114
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   115
      case '>':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   116
          newlen += 4;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   117
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   118
      case '\n':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   119
          newlen += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   120
    }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   121
  }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   122
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   123
  if (oldlen == newlen)
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   124
    return g_strdup(text);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   125
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   126
  html = g_new0(char, newlen+1);
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
  for (i = j = 0; i < oldlen; i++) {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   129
    switch(text[i])
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   130
    {
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   131
      case '&':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   132
          memcpy(&html[j], "&amp;", 5);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   133
          j += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   134
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   135
      case '\'':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   136
          memcpy(&html[j], "&apos;", 6);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   137
          j += 6;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   138
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   139
      case '\"':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   140
          memcpy(&html[j], "&quot;", 6);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   141
          j += 6;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   142
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   143
      case '<':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   144
          memcpy(&html[j], "&lt;", 4);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   145
          j += 4;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   146
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   147
      case '>':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   148
          memcpy(&html[j], "&gt;", 4);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   149
          j += 4;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   150
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   151
      case '\n':
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   152
          memcpy(&html[j], "<br/>", 5);
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   153
          j += 5;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   154
          break;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   155
      default:
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   156
          html[j++] = text[i];
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   157
    }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   158
  }
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   159
  return html;
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   160
}
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   161
a8b924b5474c The OTR protocol expects (X)HTML messsages
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   162
/* vim: set expandtab cindent cinoptions=>2\:2(0:  For Vim users... */