ftp.nice.ch/pub/next/unix/text/recode-3.4.s.tar.gz#/recode-3.4/lat1txte.c

This is lat1txte.c in view mode; [Download] [Up]

/* Conversion of files between different charsets and usages.
   Copyright (C) 1990, 1993 Free Software Foundation, Inc.
   Francois Pinard <pinard@iro.umontreal.ca>, 1988.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#include "recode.h"

static const char *const translation_table[128] =
  {
    NULL,			/* 128 */
    NULL,			/* 129 */
    NULL,			/* 130 */
    NULL,			/* 131 */
    NULL,			/* 132 */
    NULL,			/* 133 */
    NULL,			/* 134 */
    NULL,			/* 135 */
    NULL,			/* 136 */
    NULL,			/* 137 */
    NULL,			/* 138 */
    NULL,			/* 139 */
    NULL,			/* 140 */
    NULL,			/* 141 */
    NULL,			/* 142 */
    NULL,			/* 143 */
    NULL,			/* 144 */
    NULL,			/* 145 */
    NULL,			/* 146 */
    NULL,			/* 147 */
    NULL,			/* 148 */
    NULL,			/* 149 */
    NULL,			/* 150 */
    NULL,			/* 151 */
    NULL,			/* 152 */
    NULL,			/* 153 */
    NULL,			/* 154 */
    NULL,			/* 155 */
    NULL,			/* 156 */
    NULL,			/* 157 */
    NULL,			/* 158 */
    NULL,			/* 159 */

    " ",			/* 160 no-break space */
    NULL,			/* 161 inverted exclamation mark */
    NULL,			/* 162 cent sign */
    NULL,			/* 163 pound sign */
    NULL,			/* 164 currency sign */
    NULL,			/* 165 yen sign */
    NULL,			/* 166 broken bar */
    NULL,			/* 167 paragraph sign, section sign */
    NULL,			/* 168 diaeresis */
    NULL,			/* 169 copyright sign */
    NULL,			/* 170 feminine ordinal indicator */
    "``",			/* 171 left angle quotation mark */
    NULL,			/* 172 not sign */
    NULL,			/* 173 soft hyphen */
    NULL,			/* 174 registered trade mark sign */
    NULL,			/* 175 macron */
    NULL,			/* 176 degree sign */
    NULL,			/* 177 plus-minus sign */
    NULL,			/* 178 superscript two */
    NULL,			/* 179 superscript three */
    NULL,			/* 180 acute accent */
    NULL,			/* 181 small greek mu, micro sign */
    NULL,			/* 182 pilcrow sign */
    NULL,			/* 183 middle dot */
    NULL,			/* 184 cedilla */
    NULL,			/* 185 superscript one */
    NULL,			/* 186 masculine ordinal indicator */
    "''",			/* 187 right angle quotation mark */
    NULL,			/* 188 vulgar fraction one quarter */
    NULL,			/* 189 vulgar fraction one half */
    NULL,			/* 190 vulgar fraction three quarters */
    NULL,			/* 191 inverted question mark */
    "A`",			/* 192 capital A with grave accent */
    NULL,			/* 193 capital A with acute accent */
    "A^",			/* 194 capital A with circumflex accent */
    NULL,			/* 195 capital A with tilde */
    "A\"",			/* 196 capital A diaeresis */
    NULL,			/* 197 capital A with ring above */
    NULL,			/* 198 capital diphthong A with E */
    "C,",			/* 199 capital C with cedilla */
    "E`",			/* 200 capital E with grave accent */
    "E\'",			/* 201 capital E with acute accent */
    "E^",			/* 202 capital E with circumflex accent */
    "E\"",			/* 203 capital E with diaeresis */
    NULL,			/* 204 capital I with grave accent */
    NULL,			/* 205 capital I with acute accent */
    "I^",			/* 206 capital I with circumflex accent */
    "I\"",			/* 207 capital I with diaeresis */
    NULL,			/* 208 capital icelandic ETH */
    NULL,			/* 209 capital N with tilde */
    "O`",			/* 210 capital O with grave accent */
    NULL,			/* 211 capital O with acute accent */
    "O^",			/* 212 capital O with circumflex accent */
    NULL,			/* 213 capital O with tilde */
    "O\"",			/* 214 capital O with diaeresis */
    NULL,			/* 215 multiplication sign */
    NULL,			/* 216 capital O with oblique stroke */
    "U`",			/* 217 capital U with grave accent */
    NULL,			/* 218 capital U with acute accent */
    "U^",			/* 219 capital U with circumflex accent */
    "U\"",			/* 220 capital U with diaeresis */
    NULL,			/* 221 capital Y with acute accent */
    NULL,			/* 222 capital icelandic THORN */
    NULL,			/* 223 small german sharp s */
    "a`",			/* 224 small a with grave accent */
    NULL,			/* 225 small a with acute accent */
    "a^",			/* 226 small a with circumflex accent */
    NULL,			/* 227 small a with tilde */
    "a\"",			/* 228 small a with diaeresis */
    NULL,			/* 229 small a with ring above */
    NULL,			/* 230 small diphthong a with e */
    "c,",			/* 231 small c with cedilla */
    "e`",			/* 232 small e with grave accent */
    "e\'",			/* 233 small e with acute accent */
    "e^",			/* 234 small e with circumflex accent */
    "e\"",			/* 235 small e with diaeresis */
    NULL,			/* 236 small i with grave accent */
    NULL,			/* 237 small i with acute accent */
    "i^",			/* 238 small i with circumflex accent */
    "i\"",			/* 239 small i with diaeresis */
    NULL,			/* 240 small icelandic eth */
    NULL,			/* 241 small n with tilde */
    "o`",			/* 242 small o with grave accent */
    NULL,			/* 243 small o with acute accent */
    "o^",			/* 244 small o with circumflex accent */
    NULL,			/* 245 small o with tilde */
    "o\"",			/* 246 small o with diaeresis */
    NULL,			/* 247 division sign */
    NULL,			/* 248 small o with oblique stroke */
    "u`",			/* 249 small u with grave accent */
    NULL,			/* 250 small u with acute accent */
    "u^",			/* 251 small u with circumflex accent */
    "u\"",			/* 252 small u with diaeresis */
    NULL,			/* 253 small y with acute accent */
    NULL,			/* 254 small icelandic thorn */
    NULL,			/* 255 small y with diaeresis */
  };

static void
init_latin1_texte (STEP *step)
{
  int rewritten;		/* number of rewritten translations */
  const char **table;		/* allocated structure, including pool */
  char *pool;			/* cursor in character pool */
  int counter;			/* general purpose counter */

  /* The algorithm for proper processing of -c option depends on the fact
     that quotes to be changed in colons are exactly those, in strings
     from translation_table, which are in second position while the
     string is two characters in length.  This is sufficient for now.  */

  rewritten = 0;
  if (diaeresis_char != '"')
    for (counter = 128; counter < 256; counter++)
      if (translation_table[counter - 128]
	  && translation_table[counter - 128][1] == '"'
	  && translation_table[counter - 128][2] == '\0')
	rewritten++;

  table = (const char **) xmalloc (sizeof (char *) * 256
				   + 2 * 128
				   + 3 * rewritten);
  pool = (char *) (table + 256);

  for (counter = 0; counter < 128; counter++)
    {
      table[counter] = pool;
      *pool++ = counter;
      *pool++ = '\0';
    }

  for (; counter < 256; counter++)
    if (diaeresis_char != '"'
	&& translation_table[counter - 128]
	&& translation_table[counter - 128][1] == '"'
	&& translation_table[counter - 128][2] == '\0')
      {
	table[counter] = pool;
	*pool++ = translation_table[counter - 128][0];
	*pool++ = diaeresis_char;
	*pool++ = '\0';
      }
    else
      table[counter] = translation_table[counter - 128];

  step->one_to_many = table;
}

void
module_latin1_texte (void)
{
  declare_step ("Latin-1", "Texte", ONE_TO_MANY, init_latin1_texte,
		file_one_to_many);

  declare_alias ("txte", "Texte");
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.