summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasatomo Nakano <nakano@gentoo.org>2005-04-20 16:44:43 +0000
committerMasatomo Nakano <nakano@gentoo.org>2005-04-20 16:44:43 +0000
commit7e0b6721dfb7d305fcf6157d90048e3fcfb8d400 (patch)
treead0033e807627a1f01fe93c5fc0726b24abbfe3a /app-i18n/nkf/files
parentNew version (diff)
downloadgentoo-2-7e0b6721dfb7d305fcf6157d90048e3fcfb8d400.tar.gz
gentoo-2-7e0b6721dfb7d305fcf6157d90048e3fcfb8d400.tar.bz2
gentoo-2-7e0b6721dfb7d305fcf6157d90048e3fcfb8d400.zip
Added python support.
(Portage version: 2.0.51.19)
Diffstat (limited to 'app-i18n/nkf/files')
-rw-r--r--app-i18n/nkf/files/digest-nkf-2.0.5-r11
-rw-r--r--app-i18n/nkf/files/nkf-python.patch221
2 files changed, 222 insertions, 0 deletions
diff --git a/app-i18n/nkf/files/digest-nkf-2.0.5-r1 b/app-i18n/nkf/files/digest-nkf-2.0.5-r1
new file mode 100644
index 000000000000..47552ab72d5e
--- /dev/null
+++ b/app-i18n/nkf/files/digest-nkf-2.0.5-r1
@@ -0,0 +1 @@
+MD5 e34d936b20aaf581da5759fbaf0438f3 nkf205.tar.gz 149809
diff --git a/app-i18n/nkf/files/nkf-python.patch b/app-i18n/nkf/files/nkf-python.patch
new file mode 100644
index 000000000000..daa55ebc4d2c
--- /dev/null
+++ b/app-i18n/nkf/files/nkf-python.patch
@@ -0,0 +1,221 @@
+diff -Naur nkf205/NKF.python/NKF_python.c nkf205-py/NKF.python/NKF_python.c
+--- nkf205/NKF.python/NKF_python.c Thu Jan 1 09:00:00 1970
++++ nkf205-py/NKF.python/NKF_python.c Thu Apr 14 23:16:11 2005
+@@ -0,0 +1,185 @@
++/** Python Interface to NKF
++***************************************************************************
++** Copyright (c) 2005 Matsumoto, Tadashi <ma2@city.plala.jp>
++** All Rights Reserved.
++**
++** Everyone is permitted to do anything on this program
++** including copying, modifying, improving,
++** as long as you don't try to pretend that you wrote it.
++** i.e., the above copyright notice has to appear in all copies.
++** Binary distribution requires original version messages.
++** You don't have to ask before copying, redistribution or publishing.
++** THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
++***************************************************************************/
++
++#include "Python.h"
++#include <setjmp.h>
++
++#define PYNKF_OPTSLEN 100
++
++#undef getc
++#undef ungetc
++#define getc(f) pynkf_getc(f)
++#define ungetc(c,f) pynkf_ungetc(c,f)
++
++#undef putchar
++#undef TRUE
++#undef FALSE
++#define putchar(c) pynkf_putchar(c)
++
++static char *PYNKF_ARGV[PYNKF_OPTSLEN/2 + 3];
++static long pynkf_ibufsize, pynkf_obufsize;
++static unsigned char *pynkf_inbuf, *pynkf_outbuf;
++static int pynkf_icount,pynkf_ocount;
++static unsigned char *pynkf_iptr, *pynkf_optr;
++static jmp_buf env;
++
++static int
++pynkf_getc(FILE *f)
++{unsigned char c;
++ if (pynkf_icount >= pynkf_ibufsize) return EOF;
++ c = *pynkf_iptr++;
++ pynkf_icount++;
++ return (int)c;
++}
++
++static int
++pynkf_ungetc(int c, FILE *f)
++{
++ if (pynkf_icount--){
++ *(--pynkf_iptr) = c;
++ return c;
++ }else{ return EOF; }
++}
++
++static void
++pynkf_putchar(int c)
++{
++ size_t size;
++ unsigned char *p;
++
++ if (pynkf_ocount--){
++ *pynkf_optr++ = c;
++ }else{
++ size = pynkf_obufsize + pynkf_obufsize;
++ p = (unsigned char *)PyMem_Realloc(pynkf_outbuf, size + 1);
++ if (pynkf_outbuf == NULL){ longjmp(env, 1); }
++ pynkf_outbuf = p;
++ pynkf_optr = pynkf_outbuf + pynkf_obufsize;
++ pynkf_ocount = pynkf_obufsize;
++ pynkf_obufsize = size;
++ *pynkf_optr++ = c;
++ pynkf_ocount--;
++ }
++}
++
++#define PERL_XS 1
++#include "../utf8tbl.c"
++#include "../nkf.c"
++
++static void
++pynkf_parseopts(char *opts, int *argcp, char **argv)
++{
++ register char *p;
++ register int argc, flg;
++ p = opts;
++ argc = 1;
++ flg = 1;
++ *argv++ = "nkf";
++ while(*p){
++ if (*p == ' '){ *p = '\0'; flg = 1; p++; continue; }
++ if (*p != ' ' && flg){*argv++ = p; argc++; flg = 0; }
++ p++;
++ }
++ *argcp = argc;
++}
++
++static PyObject *
++pynkf_convert(unsigned char* str, long strlen, char* opts, int optslen)
++{
++ unsigned char *cp;
++ int argc;
++ char **argv;
++ register char **p;
++ PyObject * res;
++
++ if (optslen > PYNKF_OPTSLEN) {
++ PyErr_SetString(PyExc_ValueError, "Too many options.");
++ return NULL;
++ }
++ pynkf_ibufsize = strlen + 1;
++ pynkf_obufsize = pynkf_ibufsize * 1.5 + 256;
++ pynkf_outbuf = (unsigned char *)PyMem_Malloc(pynkf_obufsize);
++ if (pynkf_outbuf == NULL){
++ PyErr_NoMemory();
++ return NULL;
++ }
++ pynkf_outbuf[0] = '\0';
++ pynkf_ocount = pynkf_obufsize;
++ pynkf_optr = pynkf_outbuf;
++ pynkf_icount = 0;
++ pynkf_inbuf = str;
++ pynkf_iptr = pynkf_inbuf;
++ argv = PYNKF_ARGV;
++
++ pynkf_parseopts(opts, &argc, argv);
++
++ if (setjmp(env) == 0){
++
++ reinit();
++
++ p = argv;
++ for (argc--,p++; (argc > 0) && **p == '-'; argc--, p++) {
++ cp = *p;
++ options(cp);
++ }
++
++ if(x0201_f == WISH_TRUE)
++ x0201_f = ((!iso2022jp_f)? TRUE : NO_X0201);
++
++ kanji_convert(NULL);
++
++ }else{
++ PyMem_Free(pynkf_outbuf);
++ PyErr_NoMemory();
++ return NULL;
++ }
++
++ *pynkf_optr = 0;
++ res = PyString_FromString(pynkf_outbuf);
++ PyMem_Free(pynkf_outbuf);
++ return res;
++}
++
++#ifndef EXTERN_NKF
++static
++#endif
++PyObject *pynkf_nkf(PyObject *self, PyObject *args)
++{
++ unsigned char *str;
++ long strlen;
++ char *opts;
++ int optslen;
++ PyObject* res;
++
++ if (!PyArg_ParseTuple(args, "s#s#", &opts, &optslen, &str, &strlen)) {
++ return NULL;
++ }
++ res = pynkf_convert(str, strlen, opts, optslen);
++ return res;
++}
++
++#ifndef EXTERN_NKF
++static PyMethodDef
++nkfmethods[] = {
++ {"nkf", pynkf_nkf, METH_VARARGS},
++ {NULL, NULL}
++};
++
++/* Module initialization function */
++void
++initnkf(void)
++{
++ Py_InitModule("nkf", nkfmethods);
++}
++#endif
+diff -Naur nkf205/NKF.python/README nkf205-py/NKF.python/README
+--- nkf205/NKF.python/README Thu Jan 1 09:00:00 1970
++++ nkf205-py/NKF.python/README Thu Apr 14 23:16:11 2005
+@@ -0,0 +1,12 @@
++Python Interface to NKF
++
++1. How to Install
++
++ # python setup.py install
++
++2. Usage
++
++ from nkf import nkf
++ output = nkf(flag, input)
++
++Matsumoto, Tadashi ma2@city.plala.jp
+diff -Naur nkf205/NKF.python/setup.py nkf205-py/NKF.python/setup.py
+--- nkf205/NKF.python/setup.py Thu Jan 1 09:00:00 1970
++++ nkf205-py/NKF.python/setup.py Thu Apr 14 23:16:11 2005
+@@ -0,0 +1,12 @@
++#!/usr/bin/env python
++
++from distutils.core import setup, Extension
++
++setup (name = "nkf",
++ version="1.0",
++ description="Python Interface to NKF",
++ author="Matsumoto Tadashi",
++ author_email="ma2@city.plala.jp",
++ ext_modules = [
++ Extension("nkf", ["NKF_python.c"],
++ extra_link_args = ['-s'])])