Blame lib/lang_ru.c

Packit 57a33d
/*
Packit 57a33d
  encoding data and routines dependent on language; russian
Packit 57a33d
Packit 57a33d
  Copyright (C) 2000-2002 David Necas (Yeti) <yeti@physics.muni.cz>
Packit 57a33d
Packit 57a33d
  This program is free software; you can redistribute it and/or modify it
Packit 57a33d
  under the terms of version 2 of the GNU General Public License as published
Packit 57a33d
  by the Free Software Foundation.
Packit 57a33d
Packit 57a33d
  This program is distributed in the hope that it will be useful, but WITHOUT
Packit 57a33d
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
Packit 57a33d
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
Packit 57a33d
  more details.
Packit 57a33d
Packit 57a33d
  You should have received a copy of the GNU General Public License along
Packit 57a33d
  with this program; if not, write to the Free Software Foundation, Inc.,
Packit 57a33d
  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
Packit 57a33d
*/
Packit 57a33d
#ifdef HAVE_CONFIG_H
Packit 57a33d
#  include "config.h"
Packit 57a33d
#endif /* HAVE_CONFIG_H */
Packit 57a33d
Packit 57a33d
#include "enca.h"
Packit 57a33d
#include "internal.h"
Packit 57a33d
#include "data/russian/russian.h"
Packit 57a33d
Packit 57a33d
/* Local prototypes. */
Packit 57a33d
static int hook(EncaAnalyserState *analyser);
Packit 57a33d
static int eol_hook(EncaAnalyserState *analyser);
Packit 57a33d
static int hook_mac1251(EncaAnalyserState *analyser);
Packit 57a33d
static int hook_macwin(EncaAnalyserState *analyser);
Packit 57a33d
Packit 57a33d
/**
Packit 57a33d
 * ENCA_LANGUAGE_RU:
Packit 57a33d
 *
Packit 57a33d
 * Russian language.
Packit 57a33d
 *
Packit 57a33d
 * Everything the world out there needs to know about this language.
Packit 57a33d
 **/
Packit 57a33d
const EncaLanguageInfo ENCA_LANGUAGE_RU = {
Packit 57a33d
  "ru",
Packit 57a33d
  "russian",
Packit 57a33d
  NCHARSETS,
Packit 57a33d
  CHARSET_NAMES,
Packit 57a33d
  CHARSET_WEIGHTS,
Packit 57a33d
  SIGNIFICANT,
Packit 57a33d
  CHARSET_LETTERS,
Packit 57a33d
  CHARSET_PAIRS,
Packit 57a33d
  WEIGHT_SUM,
Packit 57a33d
  &hook,
Packit 57a33d
  &eol_hook,
Packit 57a33d
  NULL,
Packit 57a33d
  NULL
Packit 57a33d
};
Packit 57a33d
Packit 57a33d
/**
Packit 57a33d
 * hook:
Packit 57a33d
 * @analyser: Analyser state whose charset ratings are to be modified.
Packit 57a33d
 *
Packit 57a33d
 * Launches language specific hooks for language "ru".
Packit 57a33d
 *
Packit 57a33d
 * Returns: Nonzero if charset ratigns have been actually modified, zero
Packit 57a33d
 * otherwise.
Packit 57a33d
 **/
Packit 57a33d
static int
Packit 57a33d
hook(EncaAnalyserState *analyser)
Packit 57a33d
{
Packit 57a33d
  return hook_mac1251(analyser);
Packit 57a33d
}
Packit 57a33d
Packit 57a33d
/**
Packit 57a33d
 * eol_hook:
Packit 57a33d
 * @analyser: Analyser state whose charset ratings are to be modified.
Packit 57a33d
 *
Packit 57a33d
 * Launches language specific EOL hooks for language "ru".
Packit 57a33d
 *
Packit 57a33d
 * Returns: Nonzero if charset ratigns have been actually modified, zero
Packit 57a33d
 * otherwise.
Packit 57a33d
 **/
Packit 57a33d
static int
Packit 57a33d
eol_hook(EncaAnalyserState *analyser)
Packit 57a33d
{
Packit 57a33d
  return hook_macwin(analyser);
Packit 57a33d
}
Packit 57a33d
Packit 57a33d
/**
Packit 57a33d
 * hook_macwin:
Packit 57a33d
 * @analyser: Analyser state whose charset ratings are to be modified.
Packit 57a33d
 *
Packit 57a33d
 * Decides between maccyr and cp1251 charsets for language "ru".
Packit 57a33d
 *
Packit 57a33d
 * Returns: Nonzero if charset ratigns have been actually modified, zero
Packit 57a33d
 * otherwise.
Packit 57a33d
 **/
Packit 57a33d
static int
Packit 57a33d
hook_macwin(EncaAnalyserState *analyser)
Packit 57a33d
{
Packit 57a33d
  static EncaLanguageHookDataEOL hookdata[] = {
Packit 57a33d
    { "maccyr", ENCA_SURFACE_EOL_CR, (size_t)-1 },
Packit 57a33d
    { "cp1251", ENCA_SURFACE_MASK_EOL, (size_t)-1 },
Packit 57a33d
  };
Packit 57a33d
Packit 57a33d
  return enca_language_hook_eol(analyser, ELEMENTS(hookdata), hookdata);
Packit 57a33d
}
Packit 57a33d
Packit 57a33d
/**
Packit 57a33d
 * hook_mac1251:
Packit 57a33d
 * @analyser: Analyser state whose charset ratings are to be modified.
Packit 57a33d
 *
Packit 57a33d
 * Decides between maccyr and cp1251 charsets for language "ru".
Packit 57a33d
 *
Packit 57a33d
 * Returns: Nonzero if charset ratigns have been actually modified, zero
Packit 57a33d
 * otherwise.
Packit 57a33d
 **/
Packit 57a33d
static int
Packit 57a33d
hook_mac1251(EncaAnalyserState *analyser)
Packit 57a33d
{
Packit 57a33d
  static const unsigned char list_maccyr[] = {
Packit 57a33d
    0xdf, 0x82, 0x8f, 0x8d, 0x80, 0x91, 0x88
Packit 57a33d
  };
Packit 57a33d
  static const unsigned char list_cp1251[] = {
Packit 57a33d
    0xff, 0xc2, 0xcf, 0xcd, 0xc0, 0xd1, 0xc8
Packit 57a33d
  };
Packit 57a33d
  static EncaLanguageHookData1CS hookdata[] = {
Packit 57a33d
    MAKE_HOOK_LINE(maccyr),
Packit 57a33d
    MAKE_HOOK_LINE(cp1251),
Packit 57a33d
  };
Packit 57a33d
Packit 57a33d
  return enca_language_hook_ncs(analyser, ELEMENTS(hookdata), hookdata);
Packit 57a33d
}
Packit 57a33d
Packit 57a33d
/* vim: ts=2
Packit 57a33d
 */