Commit 46587ae2 authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

Latest changes from HEAD.

parent 26a48389
......@@ -43,14 +43,12 @@ ac_help="$ac_help
--enable-ipv6 enable IPv6 support [auto]"
ac_help="$ac_help
--enable-local enable AF_LOCAL (AF_UNIX) socket support [auto]"
ac_help="$ac_help
--enable-rewrite enable rewrite [no]"
ac_help="$ac_help
--enable-x-compile enable cross compiling [no]"
ac_help="$ac_help
--with-cyrus-sasl with Cyrus SASL support [auto]"
ac_help="$ac_help
--with-fetch with fetch URL support [auto]"
--with-fetch with freeBSD fetch URL support [auto]"
ac_help="$ac_help
--with-kerberos with Kerberos support [auto]"
ac_help="$ac_help
......@@ -85,7 +83,9 @@ ac_help="$ac_help
ac_help="$ac_help
--enable-phonetic enable phonetic/soundex [no]"
ac_help="$ac_help
--enable-rlookups enable reverse lookups [no]"
--enable-rewrite enable DN rewriting in back-ldap and back-meta [no]"
ac_help="$ac_help
--enable-rlookups enable reverse lookups of client hostnames [no]"
ac_help="$ac_help
--enable-slp enable SLPv2 support [no]"
ac_help="$ac_help
......@@ -93,51 +93,51 @@ ac_help="$ac_help
ac_help="$ac_help
--enable-bdb enable Berkeley DB backend [yes]"
ac_help="$ac_help
--with-bdb-module module type [static]"
--with-bdb-module module type static|dynamic [static]"
ac_help="$ac_help
--enable-dnssrv enable dnssrv backend [no]"
ac_help="$ac_help
--with-dnssrv-module module type [static]"
--with-dnssrv-module module type static|dynamic [static]"
ac_help="$ac_help
--enable-ldap enable ldap backend [no]"
ac_help="$ac_help
--with-ldap-module module type [static]"
--with-ldap-module module type static|dynamic [static]"
ac_help="$ac_help
--enable-ldbm enable ldbm backend [no]"
ac_help="$ac_help
--with-ldbm-api with LDBM API [auto]"
--with-ldbm-api with LDBM API auto|berkeley|bcompat|mdbm|gdbm [auto]"
ac_help="$ac_help
--with-ldbm-module module type [static]"
--with-ldbm-module module type static|dynamic [static]"
ac_help="$ac_help
--with-ldbm-type use LDBM type [auto]"
--with-ldbm-type use LDBM type auto|btree|hash [auto]"
ac_help="$ac_help
--enable-meta enable metadirectory backend [no]"
ac_help="$ac_help
--with-meta-module module type [static]"
--with-meta-module module type static|dynamic [static]"
ac_help="$ac_help
--enable-monitor enable monitor backend [no]"
ac_help="$ac_help
--with-monitor-module module type [static]"
--with-monitor-module module type static|dynamic [static]"
ac_help="$ac_help
--enable-null enable null backend [no]"
ac_help="$ac_help
--with-null-module module type [static]"
--with-null-module module type static|dynamic [static]"
ac_help="$ac_help
--enable-passwd enable passwd backend [no]"
ac_help="$ac_help
--with-passwd-module module type [static]"
--with-passwd-module module type static|dynamic [static]"
ac_help="$ac_help
--enable-perl enable perl backend [no]"
ac_help="$ac_help
--with-perl-module module type [static]"
--with-perl-module module type static|dynamic [static]"
ac_help="$ac_help
--enable-shell enable shell backend [no]"
ac_help="$ac_help
--with-shell-module module type [static]"
--with-shell-module module type static|dynamic [static]"
ac_help="$ac_help
--enable-sql enable sql backend [no]"
ac_help="$ac_help
--with-sql-module module type [static]"
--with-sql-module module type static|dynamic [static]"
ac_help="$ac_help
 
SLURPD (Replication Daemon) Options:"
......@@ -1547,26 +1547,6 @@ else
ol_enable_local="auto"
fi
# end --enable-local
# OpenLDAP --enable-rewrite
# Check whether --enable-rewrite or --disable-rewrite was given.
if test "${enable_rewrite+set}" = set; then
enableval="$enable_rewrite"
ol_arg=invalid
for ol_val in auto yes no ; do
if test "$enableval" = "$ol_val" ; then
ol_arg="$ol_val"
fi
done
if test "$ol_arg" = "invalid" ; then
{ echo "configure: error: bad value $enableval for --enable-rewrite" 1>&2; exit 1; }
fi
ol_enable_rewrite="$ol_arg"
else
ol_enable_rewrite="no"
fi
# end --enable-rewrite
# OpenLDAP --enable-x_compile
# Check whether --enable-x_compile or --disable-x_compile was given.
if test "${enable_x_compile+set}" = set; then
......@@ -1944,6 +1924,26 @@ else
ol_enable_phonetic="no"
fi
# end --enable-phonetic
# OpenLDAP --enable-rewrite
# Check whether --enable-rewrite or --disable-rewrite was given.
if test "${enable_rewrite+set}" = set; then
enableval="$enable_rewrite"
ol_arg=invalid
for ol_val in auto yes no ; do
if test "$enableval" = "$ol_val" ; then
ol_arg="$ol_val"
fi
done
if test "$ol_arg" = "invalid" ; then
{ echo "configure: error: bad value $enableval for --enable-rewrite" 1>&2; exit 1; }
fi
ol_enable_rewrite="$ol_arg"
else
ol_enable_rewrite="no"
fi
# end --enable-rewrite
# OpenLDAP --enable-rlookups
# Check whether --enable-rlookups or --disable-rlookups was given.
if test "${enable_rlookups+set}" = set; then
......
......@@ -130,7 +130,6 @@ OL_ARG_ENABLE(referrals,[ --enable-referrals enable LDAPv2+ Referrals (experi
OL_ARG_ENABLE(kbind,[ --enable-kbind enable LDAPv2+ Kerberos IV bind (deprecated)], no)dnl
OL_ARG_ENABLE(ipv6,[ --enable-ipv6 enable IPv6 support], auto)dnl
OL_ARG_ENABLE(local,[ --enable-local enable AF_LOCAL (AF_UNIX) socket support], auto)dnl
OL_ARG_ENABLE(rewrite,[ --enable-rewrite enable rewrite], no)dnl
OL_ARG_ENABLE(x_compile,[ --enable-x-compile enable cross compiling],
no, [yes no])dnl
......@@ -140,7 +139,7 @@ dnl OL_ARG_ENABLE(dmalloc,[ --enable-dmalloc enable debug malloc support], no
OL_ARG_WITH(cyrus_sasl,[ --with-cyrus-sasl with Cyrus SASL support],
auto, [auto yes no] )
OL_ARG_WITH(fetch,[ --with-fetch with fetch URL support],
OL_ARG_WITH(fetch,[ --with-fetch with freeBSD fetch URL support],
auto, [auto yes no] )
OL_ARG_WITH(kerberos,[ --with-kerberos with Kerberos support],
auto, [auto k5 k5only k425 kth k4 afs yes no])
......@@ -172,47 +171,48 @@ OL_ARG_ENABLE(spasswd,[ --enable-spasswd enable (Cyrus) SASL password verif
OL_ARG_ENABLE(modules,[ --enable-modules enable dynamic module support], no)dnl
dnl OL_ARG_ENABLE(multimaster,[ --enable-multimaster enable multimaster replication], no)dnl
OL_ARG_ENABLE(phonetic,[ --enable-phonetic enable phonetic/soundex], no)dnl
OL_ARG_ENABLE(rlookups,[ --enable-rlookups enable reverse lookups], no)dnl
OL_ARG_ENABLE(rewrite,[ --enable-rewrite enable DN rewriting in back-ldap and back-meta], no)dnl
OL_ARG_ENABLE(rlookups,[ --enable-rlookups enable reverse lookups of client hostnames], no)dnl
OL_ARG_ENABLE(slp, [ --enable-slp enable SLPv2 support], no)dnl
OL_ARG_ENABLE(wrappers,[ --enable-wrappers enable tcp wrapper support], no)dnl
dnl SLAPD Backend options
OL_ARG_ENABLE(bdb,[ --enable-bdb enable Berkeley DB backend], yes)dnl
OL_ARG_WITH(bdb_module,[ --with-bdb-module module type], static,
OL_ARG_WITH(bdb_module,[ --with-bdb-module module type static|dynamic], static,
[static dynamic])
OL_ARG_ENABLE(dnssrv,[ --enable-dnssrv enable dnssrv backend], no)dnl
OL_ARG_WITH(dnssrv_module,[ --with-dnssrv-module module type], static,
OL_ARG_WITH(dnssrv_module,[ --with-dnssrv-module module type static|dynamic], static,
[static dynamic])
OL_ARG_ENABLE(ldap,[ --enable-ldap enable ldap backend], no)dnl
OL_ARG_WITH(ldap_module,[ --with-ldap-module module type], static,
OL_ARG_WITH(ldap_module,[ --with-ldap-module module type static|dynamic], static,
[static dynamic])
OL_ARG_ENABLE(ldbm,[ --enable-ldbm enable ldbm backend], no)dnl
OL_ARG_WITH(ldbm_api,[ --with-ldbm-api with LDBM API], auto,
OL_ARG_WITH(ldbm_api,[ --with-ldbm-api with LDBM API auto|berkeley|bcompat|mdbm|gdbm], auto,
[auto berkeley bcompat mdbm gdbm])
OL_ARG_WITH(ldbm_module,[ --with-ldbm-module module type], static,
OL_ARG_WITH(ldbm_module,[ --with-ldbm-module module type static|dynamic], static,
[static dynamic])
OL_ARG_WITH(ldbm_type,[ --with-ldbm-type use LDBM type], auto,
OL_ARG_WITH(ldbm_type,[ --with-ldbm-type use LDBM type auto|btree|hash], auto,
[auto btree hash])
OL_ARG_ENABLE(meta,[ --enable-meta enable metadirectory backend], no)dnl
OL_ARG_WITH(meta_module,[ --with-meta-module module type], static,
OL_ARG_WITH(meta_module,[ --with-meta-module module type static|dynamic], static,
[static dynamic])
OL_ARG_ENABLE(monitor,[ --enable-monitor enable monitor backend], no)dnl
OL_ARG_WITH(monitor_module,[ --with-monitor-module module type], static,
OL_ARG_WITH(monitor_module,[ --with-monitor-module module type static|dynamic], static,
[static dynamic])
OL_ARG_ENABLE(null,[ --enable-null enable null backend], no)dnl
OL_ARG_WITH(null_module,[ --with-null-module module type], static,
OL_ARG_WITH(null_module,[ --with-null-module module type static|dynamic], static,
[static dynamic])
OL_ARG_ENABLE(passwd,[ --enable-passwd enable passwd backend], no)dnl
OL_ARG_WITH(passwd_module,[ --with-passwd-module module type], static,
OL_ARG_WITH(passwd_module,[ --with-passwd-module module type static|dynamic], static,
[static dynamic])
OL_ARG_ENABLE(perl,[ --enable-perl enable perl backend], no)dnl
OL_ARG_WITH(perl_module,[ --with-perl-module module type], static,
OL_ARG_WITH(perl_module,[ --with-perl-module module type static|dynamic], static,
[static dynamic])
OL_ARG_ENABLE(shell,[ --enable-shell enable shell backend], no)dnl
OL_ARG_WITH(shell_module,[ --with-shell-module module type], static,
OL_ARG_WITH(shell_module,[ --with-shell-module module type static|dynamic], static,
[static dynamic])
OL_ARG_ENABLE(sql,[ --enable-sql enable sql backend], no)dnl
OL_ARG_WITH(sql_module,[ --with-sql-module module type], static,
OL_ARG_WITH(sql_module,[ --with-sql-module module type static|dynamic], static,
[static dynamic])
dnl ----------------------------------------------------------------
......
......@@ -126,6 +126,62 @@ SubstringAssertion NISnetgrouptriple Bootparameter
.B concurrency <integer>
Specify a desired level of concurrency. Provided to the underlying
thread system as a hint. The default is not to provide any hint.
.\".TP
.\".B debug <subsys> <level>
.\"Specify a logging level for a particular subsystem. The subsystems include
.\".B global
.\"a global level for all subsystems,
.\".B acl
.\"the ACL engine,
.\".B backend
.\"the backend databases,
.\".B cache
.\"the entry cache manager,
.\".B config
.\"the config file reader,
.\".B connection
.\"the connection manager,
.\".B cyrus
.\"the Cyrus SASL library interface,
.\".B filter
.\"the search filter processor,
.\".B getdn
.\"the DN normalization library,
.\".B index
.\"the database indexer,
.\".B liblber
.\"the ASN.1 BER library,
.\".B module
.\"the dynamic module loader,
.\".B operation
.\"the LDAP operation processors,
.\".B sasl
.\"the SASL authentication subsystem,
.\".B schema
.\"the schema processor, and
.\".B tls
.\"the TLS library interface. This is not an exhaustive list; there are many
.\"other subsystems and more are added over time.
.\"
.\"The levels are, in order of decreasing priority:
.\".B emergency, alert, critical, error, warning, notice, information, entry,
.\".B args, results, detail1, detail2
.\"An integer may be used instead, with 0 corresponding to
.\".B emergency
.\"up to 11 for
.\".BR detail2 .
.\"The
.\".B entry
.\"level logs function entry points,
.\".B args
.\"adds function call parameters, and
.\".B results
.\"adds the function results to the logs.
.\"The
.\".B detail1
.\"and
.\".B detail2
.\"levels add even more low level detail from individual functions.
.TP
.B defaultsearchbase <dn>
Specify a default search base to use when client submits a
......@@ -278,6 +334,11 @@ and
no limit is set on
.BR unchecked .
.RE
.\".TP
.\".B logfile <filename>
.\"Specify a file for recording debug log messages. By default these messages
.\"only go to stderr and are not recorded anywhere else. Specifying a logfile
.\"copies messages to both stderr and the logfile.
.TP
.B loglevel <integer>
Specify the level at which debugging statements and operation
......@@ -327,6 +388,19 @@ entry parsing
.PD
.RE
.RE
.TP
.B moduleload <filename>
Specify the name of a dynamically loadable module to load. The filename
may be an absolute path name or a simple filename. Non-absolute names
are searched for in the directories specified by the
.B modulepath
option. This option and the
.B modulepath
option are only usable if slapd was compiled with --enable-modules.
.TP
.B modulepath <pathspec>
Specify a list of directories to search for loadable modules. Typically
the path is colon-separated but this depends on the operating system.
.HP
.B objectclass ( <oid> [NAME <name>] [DESC <description] [OBSOLETE]\
[SUP <oids>] [{ ABSTRACT | STRUCTURAL | AUXILIARY }] [MUST <oids>]\
......@@ -444,7 +518,7 @@ form
.RS
.RS
.TP
.B uid=<UID>[,cn=<REALM>][,cn=<MECH>],cn=AUTHZ
.B uid=<username>[,cn=<realm>],cn=<mechanism>,cn=auth
.RE
This SASL name is then compared against the
......@@ -458,7 +532,7 @@ regular expression that are enclosed in parenthesis, e.g.
.RS
.RS
.TP
.B uid=(.*)\\\\+realm=.*
.B uid=(.*),cn=.*
.RE
.RE
......@@ -484,10 +558,10 @@ options can be given in the configuration file to allow for multiple matching
and replacement patterns. The matching patterns are checked in the order they
appear in the file, stopping at the first successful match.
.B Caution:
Because the plus sign + is a character recognized by the regular expression engine,
and it will appear in SASL names that include a REALM, be careful to escape the
plus sign with a backslash \\+ to remove the character's special meaning.
.\".B Caution:
.\"Because the plus sign + is a character recognized by the regular expression engine,
.\"and it will appear in SASL names that include a REALM, be careful to escape the
.\"plus sign with a backslash \\+ to remove the character's special meaning.
.RE
.TP
.B sasl-secprops <properties>
......@@ -604,6 +678,10 @@ Extra args can be added on the same line.
See
.BR limits
for an explanation of the different flags.
.TP
.B ucdata-path <path>
Specify the path to the directory containing the Unicode character
tables. The default path is LOCALSTATEDIR/ucdata.
.SH TLS OPTIONS
If
.B slapd
......@@ -626,6 +704,11 @@ Authorities that
.B slapd
will recognize.
.TP
.B TLSCACertificatePath <path>
Specifies the path of a directory that contains Certificate Authority
certificates in separate individual files. Usually only one of this
or the TLSCACertificateFile is used.
.TP
.B TLSCertificateFile <filename>
Specifies the file that contains the
.B slapd
......@@ -731,6 +814,10 @@ will automatically maintain the
modifiersName, modifyTimestamp, creatorsName, and
createTimestamp attributes for entries. By default, lastmod is on.
.TP
.B maxderefdepth <depth>
Specifies the maximum number of aliases to dereference when trying to
resolve an entry, used to avoid inifinite alias loops. The default is 1.
.TP
.B readonly on | off
This option puts the database into "read-only" mode. Any attempts to
modify the database will return an "unwilling to perform" error. By
......@@ -824,6 +911,11 @@ Specify the DN suffix of queries that will be passed to this
backend database. Multiple suffix lines can be given and at least one is
required for each database definition.
.TP
.B suffixalias <alias> <aliased suffix>
Specify an alternate suffix that may be used to reference an already defined
database suffix. Operations specifying DNs residing under the alias
will execute as if they had specified the aliased suffix.
.TP
.B subordinate
Specify that the current backend database is a subordinate of another
backend database. A subordinate database may have only one suffix. This
......@@ -859,6 +951,51 @@ If specified multiple times, each url is provided.
Options in this category only apply to the BDB databases. That is,
they must follow "database bdb" line and come before any subsequent
"backend" or "database" lines.
.TP
.B cachesize <integer>
Specify the size in entries of the in-memory cache maintained
by the BDB backend database instance. The default is 1000 entries.
.TP
.B checkpoint <kbyte> <min>
Specify the frequency for checkpointing the database transaction log.
A checkpoint operation flushes the database buffers to disk and writes
a checkpoint record in the log. The checkpoint will occur if either
<kbyte> data has been written or <min> minutes have passed since the
last checkpoint. Both arguments default to zero, in which case they are ignored.
See the Berkeley DB reference guide for more details.
.TP
.B dbnosync
Specify that on-disk database contents should not be immediately
synchronized with in memory changes. Enabling this option may improve
performance at the expense of data security.
.TP
.B directory <directory>
Specify the directory where the BDB files containing this database and
associated indexes live. A separate directory must be specified for
each database. The default is
.BR LOCALSTATEDIR/openldap-data .
.TP
.B dirtyread
Allow reads of modified but not yet committed data. Usually transactions
are isolated to prevent other operations from accessing uncommitted data.
This option may improve performance, but may also return inconsistent
results if the data comes from a transaction that is later aborted. In
this case, the modified data is discarded and a subsequent search will
return a different result.
.TP
.B
index {<attrlist>|default} [pres,eq,approx,sub,<special>]
See the description for LDBM.
.TP
.B lockdetect {oldest|youngest|fewest|random|default}
Specify which transaction to abort when a deadlock is detected. The
default is the same as
.BR random .
.TP
.B mode <integer>
Specify the file protection mode that newly created database
index files should have. The default is 0600.
.SH LDBM DATABASE-SPECIFIC OPTIONS
Options in this category only apply to the LDBM databases. That is,
they must follow "database ldbm" line and come before any subsequent
......
......@@ -1246,7 +1246,7 @@ ldap_int_tls_start ( LDAP *ld, LDAPConn *conn, LDAPURLDesc *srv )
* set SASL properties to TLS ssf and authid
*/
{
const char *authid;
char *authid;
ber_len_t ssf;
/* we need to let SASL know */
......
# $OpenLDAP$
## Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
## COPYING RESTRICTIONS APPLY, see COPYRIGHT file
##
## Makefile.in for LDAP -lldap
##
LIBRARY = liblunicode.a
XXDIR = $(srcdir)/*/
XXHEADERS = ucdata.h ure.h
XXSRCS = ucdata.c ucgendat.c ure.c urestubs.c
SRCS = ucstr.c
OBJS = ucdata.o ure.o urestubs.o ucstr.o
XLIB = $(LIBRARY)
PROGRAMS = ucgendat
LDAP_INCDIR= ../../include
LDAP_LIBDIR= ../../libraries
ucgendat: $(XLIBS) ucgendat.o
$(LTLINK) -o $@ ucgendat.o $(LIBS)
./ucgendat $(srcdir)/UnicodeData.txt -x $(srcdir)/CompositionExclusions.txt
DATFILES = case.dat cmbcl.dat comp.dat ctype.dat decomp.dat num.dat kdecomp.dat
install-local: $(PROGRAMS) FORCE
-$(MKDIR) $(DESTDIR)$(datadir)/ucdata
@for i in $(DATFILES); do \
echo $(INSTALL) $(INSTALLFLAGS) -m 644 $$i $(DESTDIR)$(datadir)/ucdata; \
$(INSTALL) $(INSTALLFLAGS) -m 644 $$i $(DESTDIR)$(datadir)/ucdata; \
done
.links :
@for i in $(XXSRCS) $(XXHEADERS); do \
$(RM) $$i ; \
$(LN_S) $(XXDIR)$$i . ; \
done
touch .links
$(XXSRCS) : .links
clean-local: FORCE
@$(RM) *.dat .links
depend-common: .links
......@@ -674,6 +674,10 @@ static unsigned long _ucdcmp_size;
static unsigned long *_ucdcmp_nodes;
static unsigned long *_ucdcmp_decomp;
static unsigned long _uckdcmp_size;
static unsigned long *_uckdcmp_nodes;
static unsigned long *_uckdcmp_decomp;
/*
* Return -1 on error, 0 if okay
*/
......@@ -729,6 +733,61 @@ _ucdcmp_load(char *paths, int reload)
return 0;
}
/*
* Return -1 on error, 0 if okay
*/
static int
_uckdcmp_load(char *paths, int reload)
{
FILE *in;
unsigned long size, i;
_ucheader_t hdr;
if (_uckdcmp_size > 0) {
if (!reload)
/*
* The decompositions have already been loaded.
*/
return 0;
free((char *) _uckdcmp_nodes);
_uckdcmp_size = 0;
}
if ((in = _ucopenfile(paths, "kdecomp.dat", "rb")) == 0)
return -1;
/*
* Load the header.
*/
fread((char *) &hdr, sizeof(_ucheader_t), 1, in);
if (hdr.bom == 0xfffe) {
hdr.cnt = endian_short(hdr.cnt);
hdr.size.bytes = endian_long(hdr.size.bytes);
}
_uckdcmp_size = hdr.cnt << 1;
_uckdcmp_nodes = (unsigned long *) malloc(hdr.size.bytes);
_uckdcmp_decomp = _uckdcmp_nodes + (_uckdcmp_size + 1);
/*
* Read the decomposition data in.
*/
size = hdr.size.bytes / sizeof(unsigned long);
fread((char *) _uckdcmp_nodes, sizeof(unsigned long), size, in);
/*
* Do an endian swap if necessary.
*/
if (hdr.bom == 0xfffe) {
for (i = 0; i < size; i++)
_uckdcmp_nodes[i] = endian_long(_uckdcmp_nodes[i]);
}
fclose(in);
return 0;
}
static void
_ucdcmp_unload(void)
{
......@@ -743,11 +802,29 @@ _ucdcmp_unload(void)
_ucdcmp_size = 0;
}
static void
_uckdcmp_unload(void)
{
if (_uckdcmp_size == 0)
return;
/*
* Only need to free the offsets because the memory is allocated as a
* single block.
*/
free((char *) _uckdcmp_nodes);
_uckdcmp_size = 0;
}
int
ucdecomp(unsigned long code, unsigned long *num, unsigned long **decomp)
{
long l, r, m;
if (code < _ucdcmp_nodes[0]) {
return 0;
}
l = 0;
r = _ucdcmp_nodes[_ucdcmp_size] - 1;
......@@ -771,6 +848,38 @@ ucdecomp(unsigned long code, unsigned long *num, unsigned long **decomp)
return 0;
}
int
uckdecomp(unsigned long code, unsigned long *num, unsigned long **decomp)
{
long l, r, m;
if (code < _uckdcmp_nodes[0]) {
return 0;
}
l = 0;
r = _uckdcmp_nodes[_uckdcmp_size] - 1;
while (l <= r) {
/*
* Determine a "mid" point and adjust to make sure the mid point is at
* the beginning of a code+offset pair.
*/
m = (l + r) >> 1;
m -= (m & 1);
if (code > _uckdcmp_nodes[m])
l = m + 2;
else if (code < _uckdcmp_nodes[m])
r = m - 2;
else if (code == _uckdcmp_nodes[m]) {
*num = _uckdcmp_nodes[m + 3] - _uckdcmp_nodes[m + 1];
*decomp = &_uckdcmp_decomp[_uckdcmp_nodes[m + 1]];
return 1;
}
}
return 0;
}
int
ucdecomp_hangul(unsigned long code, unsigned long *num, unsigned long decomp[])
{
......@@ -786,9 +895,10 @@ ucdecomp_hangul(unsigned long code, unsigned long *num, unsigned long decomp[])