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

  1. /******************************************************************************/
  2. /* Module  : phon_m.c                                                         */
  3. /* Purpose : Server manager code. Implements the phone number lookup          */
  4. /*           procedure 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 PHONE_FIL "PHONE.FIL"
  14.  
  15. /******************************************************************************/
  16. /* Procedure  : lookup_phon                                                   */
  17. /* Purpose    : Allows a client to do an phone directory lookup using a       */
  18. /*              person's name. Returns the phone number of the person if name */
  19. /*              is found. If not, a zero length string is returned.           */
  20. /******************************************************************************/
  21.  
  22. void lookup_phon (
  23.    rpc_binding_handle_t bh,
  24.    name_t name,
  25.    dir_entry_t phone )
  26. {
  27.    FILE *file_p;
  28.    char buffer[ BUFFER_SIZE ];
  29.  
  30.    /* Open directory file.                                                    */
  31.    file_p = fopen ( PHONE_FIL, "r" );
  32.    if ( file_p == NULL ) {
  33.          fprintf ( stderr, "Cannot open file %s\n", PHONE_FIL );
  34.          return;
  35.    }
  36.  
  37.    /* Search for directory entry containing the person's name.                */
  38.    printf ( "Doing a phone number 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.          *phone = '\0';
  43.          break;
  44.       }
  45.  
  46.       /* Return a person's phone number if lookup is successful.              */
  47.       if ( strstr ( buffer, name ) != NULL ) {
  48.          buffer[ strlen ( buffer ) - 1 ] = '\0';
  49.          strcpy ( phone, &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 phone lookup manager EPV table.                 */
  60. look_v1_0_epv_t epv_phon = { lookup_phon };
  61.