Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
123
cde/programs/dtudcfonted/libfal/_fallcRM.c
Normal file
123
cde/programs/dtudcfonted/libfal/_fallcRM.c
Normal file
@@ -0,0 +1,123 @@
|
||||
/* lcRM.c 1.1 - Fujitsu source for CDEnext 95/11/06 20:32:40 */
|
||||
/* $XConsortium: _fallcRM.c /main/1 1996/04/08 15:18:41 cde-fuj $ */
|
||||
/*
|
||||
* Copyright 1992, 1993 by TOSHIBA Corp.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and its
|
||||
* documentation for any purpose and without fee is hereby granted, provided
|
||||
* that the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of TOSHIBA not be used in advertising
|
||||
* or publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. TOSHIBA make no representations about the
|
||||
* suitability of this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*
|
||||
* TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||
* TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
*
|
||||
* Author: Katsuhisa Yano TOSHIBA Corp.
|
||||
* mopi@osa.ilab.toshiba.co.jp
|
||||
*/
|
||||
|
||||
#include "_fallibint.h"
|
||||
#include "_fallcPubI.h"
|
||||
#include <stdio.h>
|
||||
|
||||
typedef struct _StateRec {
|
||||
XLCd lcd;
|
||||
XlcConv conv;
|
||||
} StateRec, *State;
|
||||
|
||||
static void
|
||||
mbinit(state)
|
||||
XPointer state;
|
||||
{
|
||||
_fallcResetConverter(((State) state)->conv);
|
||||
}
|
||||
|
||||
static char
|
||||
mbchar(state, str, lenp)
|
||||
XPointer state;
|
||||
char *str;
|
||||
int *lenp;
|
||||
{
|
||||
XlcConv conv = ((State) state)->conv;
|
||||
XlcCharSet charset;
|
||||
char *from, *to, buf[BUFSIZ];
|
||||
int from_left, to_left;
|
||||
XPointer args[1];
|
||||
|
||||
from = str;
|
||||
*lenp = from_left = XLC_PUBLIC(((State) state)->lcd, mb_cur_max);
|
||||
to = buf;
|
||||
to_left = BUFSIZ;
|
||||
args[0] = (XPointer) &charset;
|
||||
|
||||
_fallcConvert(conv, (XPointer *) &from, &from_left, (XPointer *) &to,
|
||||
&to_left, args, 1);
|
||||
|
||||
*lenp -= from_left;
|
||||
|
||||
/* XXX */
|
||||
return buf[0];
|
||||
}
|
||||
|
||||
static void
|
||||
mbfinish(state)
|
||||
XPointer state;
|
||||
{
|
||||
}
|
||||
|
||||
static char *
|
||||
lcname(state)
|
||||
XPointer state;
|
||||
{
|
||||
return ((State) state)->lcd->core->name;
|
||||
}
|
||||
|
||||
static void
|
||||
destroy(state)
|
||||
XPointer state;
|
||||
{
|
||||
_fallcCloseConverter(((State) state)->conv);
|
||||
_falCloseLC(((State) state)->lcd);
|
||||
Xfree((char *) state);
|
||||
}
|
||||
|
||||
static XrmMethodsRec rm_methods = {
|
||||
mbinit,
|
||||
mbchar,
|
||||
mbfinish,
|
||||
lcname,
|
||||
destroy
|
||||
} ;
|
||||
|
||||
XrmMethods
|
||||
_falrmDefaultInitParseInfo(lcd, rm_state)
|
||||
XLCd lcd;
|
||||
XPointer *rm_state;
|
||||
{
|
||||
State state;
|
||||
|
||||
state = (State) Xmalloc(sizeof(StateRec));
|
||||
if (state == NULL)
|
||||
return (XrmMethods) NULL;
|
||||
|
||||
state->lcd = lcd;
|
||||
state->conv = _fallcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNChar);
|
||||
if (state->conv == NULL) {
|
||||
Xfree((char *) state);
|
||||
|
||||
return (XrmMethods) NULL;
|
||||
}
|
||||
|
||||
*rm_state = (XPointer) state;
|
||||
|
||||
return &rm_methods;
|
||||
}
|
||||
Reference in New Issue
Block a user