| Interstage Application Server Smart Repositoryユーザーズガイド |
目次
索引
![]()
|
| 第2章 アプリケーションの作成(C API) | > 2.2 アプリケーションの移行 | > 2.2.1 旧バージョンからの移行 |
旧バージョンのAPIでは“draft-ietf-ldapext-ldap-c-api-05.txt”に準拠していますが、一部、古い仕様である“draft-ietf-ldapext-ldap-c-api-00.txt”に従って実装されているものがあります。
Smart Repository LDAPクライアントAPIライブラリでは、最新の規約に正しく準拠するため、以下のAPIで機能差異が発生します。
セションハンドルオプションの扱いが変更されています。
LDAP_OPT_DESC
[変更点]
推奨されないインタフェースに変更されました。
[移行方法]
推奨されませんが、従来通り利用できます。
LDAP_OPT_HOST_NAME
LDAP_OPT_ERROR_STRING
[変更点]
アプリケーションが復帰領域をldap_memfree()で解放する必要があります。解放しない場合は、メモリリークとなります。
[移行方法]
ldap_get_option()で復帰したアドレスを不要になったタイミングでldap_memfree()で解放してください。
LDAP_OPT_RESTART
[変更点]
パラメタが、"void *"から"int *" に変更されました。旧APIでint型を使用していない場合は、アプリケーションが異常終了する可能性があります。
[移行方法]
ldap_get_option()の第3パラメタはint型変数のポインタを指定してください。
セションハンドルオプションの扱いが変更されています。
LDAP_OPT_HOST_NAME
[変更点]
パラメタが、"char **"から"char *" に変更されました。旧APIのままでは、アプリケーションが異常終了します。
[移行方法]
次の例のように修正してください。
旧バージョン
char *host = "localhost"; ldap_set_option( ld, LDAP_OPT_HOST_NAME, &host );
新バージョン
char *host = "localhost"; ldap_set_option( ld, LDAP_OPT_HOST_NAME, host );
LDAP_OPT_ERROR_NUMBER
LDAP_OPT_ERROR_STRING
[変更点]
旧バージョンでは、ldap_get_option()で参照だけができましたが、新バージョンでは、ldap_set_option()で更新できるようになりました。
[移行方法]
基本的に修正不要ですが、アプリケーションの仕様に応じて修正してください。
LDAP_OPT_RESTART
[変更点]
旧バージョンでは、パラメタがマニュアルでは"void *"でしたが、ライブラリでは"int *"で扱っていました。新バージョンでは、ライブラリでも"void *"で扱います。従来の指定方法のままでは、常にLDAP_OPT_ONが設定されたと認識されるため、アプリケーションが正しく動作しない可能性があります。
[移行方法]
次の例のように修正してください。
旧バージョン
int value = LDAP_OPT_ON; ldap_set_option( ld, LDAP_OPT_RESTART, &value );
新バージョン
ldap_set_option( ld, LDAP_OPT_RESTART, LDAP_OPT_ON );
[変更点]
構造体メンバのsdk_versionが、旧バージョンでは100を返しますが、新バージョンでは200を返します。
[移行方法]
構造体のメンバsdk_versionをチェックしている場合は修正してください。
[変更点]
filterパラメタにNULLを指定した場合、旧バージョンではパラメタエラー(LDAP_PARAM_ERROR)となりますが、新バージョンでは、"(objectClass=*)"を指定したとみなします。
[移行方法]
基本的に修正不要ですが、アプリケーションの仕様に応じて修正してください。
[変更点]
timeoutパラメタの構造体メンバのtv_sec、tv_usecともに0を指定した場合、または、どちらか一方、または両方に負の値を設定した場合、旧バージョンでは無限に待ち合わせします。新バージョンではパラメタエラー(LDAP_PARAM_ERROR)となるため、旧APIのままでは検索できません。
[移行方法]
タイムアウトを無制限にする場合は、timeoutパラメタにNULLを指定してください。ただし、ldap_set_option()のLDAP_OPT_TIMELIMITを使用している場合は“リファレンスマニュアル(API編)”の“C言語インタフェース”-“Smart Repositoryインタフェース”-“セションハンドルオプションの設定/参照インタフェース”を参照してください。
以下の関数で、関数宣言が変更され、const修飾子(太字部分)により宣言が厳格化されました。旧APIに準じたソースではコンパイル時に警告が出る場合があります。必要に応じて修正してください。
LDAP *ldap_init(
const char *hostname,
int portno ); |
int ldap_set_option(
LDAP *ld,
int option,
const void *optdata ); |
int ldap_simple_bind(
LDAP *ld,
const char *dn,
const char *passwd ); |
int ldap_simple_bind_s(
LDAP *ld,
const char *dn,
const char *passwd ); |
int ldap_search(
LDAP *ld,
const char *base,
int scope,
const char *filter,
char **attrs,
int attrsonly ); |
int ldap_search_s(
LDAP *ld,
const char *base,
int scope,
const char *filter,
char **attrs,
int attrsonly,
LDAPMessage **res ); |
int ldap_search_st(
LDAP *ld,
const char *base,
int scope,
const char *filter,
char **attrs,
int attrsonly,
struct timeval *timeout,
LDAPMessage **res ); |
int ldap_search_ext(
LDAP *ld,
const char *base,
int scope,
const char *filter,
char **attrs,
int attrsonly,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
struct timeval *timeout,
int sizelimit,
int *msgidp ); |
int ldap_search_ext_s(
LDAP *ld,
const char *base,
int scope,
const char *filter,
char **attrs,
int attrsonly,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
struct timeval *timeout,
int sizelimit,
LDAPMessage **res ); |
int ldap_compare(
LDAP *ld,
const char *dn,
const char *attr,
const char *value ); |
int ldap_compare_s(
LDAP *ld,
const char *dn,
const char *attr,
const char *value ); |
int ldap_compare_ext(
LDAP *ld,
const char *dn,
const char *attr,
const struct berval *bvalue,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp ); |
int ldap_compare_ext_s(
LDAP *ld,
const char *dn,
const char *attr,
const struct berval *bvalue,
LDAPControl **serverctrls,
LDAPControl **clientctrls ); |
int ldap_modify(
LDAP *ld,
const char *dn,
LDAPMod **mods ); |
int ldap_modify_s(
LDAP *ld,
const char *dn,
LDAPMod **mods ); |
int ldap_modify_ext(
LDAP *ld,
const char *dn,
LDAPMod **mods,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp ); |
int ldap_modify_ext_s(
LDAP *ld,
const char *dn,
LDAPMod **mods,
LDAPControl **serverctrls,
LDAPControl **clientctrls ); |
int ldap_rename(
LDAP *ld,
const char *dn,
const char *newrdn,
const char *newparent,
int deleteoldrdn,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp ); |
int ldap_rename_s(
LDAP *ld,
const char *dn,
const char *newrdn,
const char *newparent,
int deleteoldrdn,
LDAPControl **serverctrls,
LDAPControl **clientctrls ); |
int ldap_add(
LDAP *ld,
const char *dn,
LDAPMod **attrs ); |
int ldap_add_s(
LDAP *ld,
const char *dn,
LDAPMod **attrs ); |
int ldap_add_ext(
LDAP *ld,
const char *dn,
LDAPMod **attrs,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp ); |
int ldap_add_ext_s(
LDAP *ld,
const char *dn,
LDAPMod **attrs,
LDAPControl **serverctrls,
LDAPControl **clientctrls ); |
int ldap_delete(
LDAP *ld,
const char *dn ); |
int ldap_delete_s(
LDAP *ld,
const char *dn ); |
int ldap_delete_ext(
LDAP *ld,
const char *dn,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp ); |
int ldap_delete_ext_s(
LDAP *ld,
const char *dn,
LDAPControl **serverctrls,
LDAPControl **clientctrls ); |
char **ldap_get_values(
LDAP *ld,
LDAPMessage *entry,
const char *attr ); |
struct berval **ldap_get_values_len(
LDAP *ld,
LDAPMessage *entry,
const char *attr ); |
char **ldap_explode_dn(
const char *dn,
int notypes ); |
char **ldap_explode_rdn(
const char *rdn,
int notypes ); |
char *ldap_dn2ufn(
const char *dn ); |
目次
索引
![]()
|