home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Collection - Online Library - January 1996 / CKITOS2196.ISO / diskette / gg244090.dsk / unc.dsk / CHAPTER.11 / ADDR_M.C next >
C/C++ Source or Header  |  1993-08-04  |  2KB  |  61 lines

  1. /******************************************************************************/
  2. /* Module  : addr_m.c                                                         */
  3. /* Purpose : Server manager code. Implements the address lookup procedure     */
  4. /*           that will be called from the client lookup.                      */
  5. /******************************************************************************/
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include "look.h"
  11.  
  12. #define BUFFER_SIZE MAX_NAME_LENGTH + MAX_DIR_ENTRY_LENGTH + 1
  13. #define ADDRESS_FIL "ADDRESS.FIL"
  14.  
  15. /******************************************************************************/
  16. /* Procedure  : lookup_addr                                                   */
  17. /* Purpose    : Allows a client to do an address directory lookup using a     */
  18. /*              person's name. Returns the address of the person if name is   */
  19. /*              found. If not, a zero length string is returned.              */
  20. /******************************************************************************/
  21.  
  22. void lookup_addr (
  23.    rpc_binding_handle_t bh,
  24.    name_t name,
  25.    dir_entry_t address )
  26. {
  27.    FILE *file_p;
  28.    char buffer[ BUFFER_SIZE ];
  29.  
  30.    /* Open directory file.                                                    */
  31.    file_p = fopen ( ADDRESS_FIL, "r" );
  32.    if ( file_p == NULL ) {
  33.          fprintf ( stderr, "Cannot open file %s\n", ADDRESS_FIL );
  34.          return;
  35.    }
  36.  
  37.    /* Search for directory entry containing the person's name.                */
  38.    printf ( "Doing an address lookup for %s\n", name );
  39.    while ( 1 ) {
  40.       /* Return a 0 length string if lookup fails.                            */
  41.       if ( fgets ( buffer, BUFFER_SIZE, file_p ) == NULL ) {
  42.          *address = '\0';
  43.          break;
  44.       }
  45.  
  46.       /* Return a person's address if lookup is successful.                   */
  47.       if ( strstr ( buffer, name ) != NULL ) {
  48.          buffer[ strlen ( buffer ) - 1 ] = '\0';
  49.          strcpy ( address, &buffer[ strlen ( name ) + 1 ] );
  50.          break;
  51.       }
  52.    }
  53.  
  54.    /* Clean up and finish.                                                    */
  55.    fclose ( file_p );
  56.    return;
  57. }
  58.  
  59. /* Declare and initialize the address lookup manager EPV table.               */
  60. look_v1_0_epv_t epv_addr = { lookup_addr };
  61.