InfoDirectory使用手引書
目次 索引 前ページ次ページ

第3部 SDK編> 第5章 アプリケーション開発環境(LDAP C API)> 5.5 サンプルプログラム> 5.5.3 サンプルプログラムの紹介

5.5.3.7 日本語を含むエントリ情報の出力

 受信したエントリの情報を出力する場合のサンプルプログラムを以下に示します。このサンプルプログラムでは、属性値に日本語が含まれる場合の処理を行っています。

■[jp_prt_entry.c]

  /*
   * Copyright (c) 2001. Fujitsu Limited. All rights reserved.
   *
   * print all information of entry.
   *
   */
  #include    <sys/types.h>
  #include    <stdio.h>
  #include    <stdlib.h>
  #include    "examples.h"
  /*-------------------------------------------------------------*/
  /*
   * print entry process 
   */
  int print_entry_jp(
      LDAP           *ld,
      LDAPMessage    *result,
      int            freeit
  )
  {
      LDAPMessage     *entry;
      int             cnt, num_entry;
      char            *dn, *utf_dn;
      BerElement      *ber;
      char            *attr;
      struct berval   **vals; 
      char            *value, *utf_value;  
  
  /*----------------------------------------------------------*/  
  
      /* entry count initialize */  
      num_entry = 0;  
  
      for ( entry = ldap_first_entry( ld, result );  
          entry != NULL;  
          entry = ldap_next_entry( ld, entry ) ) {  
          utf_dn = (char *)ldap_get_dn( ld, entry );  
          ldap_conv_utf( utf_dn, &dn,  
          LDAP_CHARS_OPT_UTF8, LDAP_CHARS_OPT_SJIS );  
          printf( "dn: %s\n", dn );  
          ldap_memfree( utf_dn );  
          ldap_memfree( (char *)dn );  
          for ( attr = ldap_first_attribute( ld, entry, &ber );  
                attr != NULL;  
                attr = ldap_next_attribute( ld, entry, ber ) ) {  
              vals = ldap_get_values_len( ld, entry, attr );  
              for ( cnt = 0; vals[cnt] != NULL; cnt++ ) {  
                  utf_value = calloc( 1, (vals[cnt]->bv_len + 1) );  
                  memcpy( utf_value, vals[cnt]->bv_val, vals[cnt]->bv_len);  
                  ldap_conv_utf( utf_value, &value,  
                  LDAP_CHARS_OPT_UTF8, LDAP_CHARS_OPT_SJIS);  
                  printf( "%s: %s\n", attr, value );  
                  free( utf_value );  
                  ldap_memfree( value );  
              }  
              ldap_memfree( attr );  
              ldap_value_free_len( vals );  
          }  
          ldap_ber_free( ber, 0 );  
          printf( "\n" );  
          num_entry++; /* entry count up */  
      }  
  
      if ( freeit != 0 ) {  
          ldap_msgfree( result );  
      }  
  
      return( num_entry );  
  }

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2004