/* * @(#)parse_addresses.c 1.2 05/19/98 SMI * * Copyright 1997 by Sun Microsystems, Inc. * All rights reserved * * parses a given list of addresses * * Syntax: * parse_addresses * */ #include #include #include #include void check (int status) { if ( status < 0 ) { printf( "ERROR: %s\n", (char *)imta_error(status)); exit (status); } return; } static void usage() { printf("Usage:\n parse_addresses\n\n"); return; } main ( int argc, char **argv) { char *output; char input[4096]; char c; imadr_t adr; int count, i; do { printf("input> "); if ( !fgets(input, sizeof(input), stdin) ) { break; } else { input[strlen(input) - 1] = 0; /* Strip off the \n */ /* parse the list of addresses */ if ( (count = imadr_parse_list( &adr, input)) > 0 ) { for ( i=1 ; i<=count ; i++ ) { check( imadr_get( adr, i, &output)); printf( "parsing address : %s\n", output); check( imadr_get_property( adr, i, IMADR_PROPER, &output)); printf( " entire address : %s\n", output); check( imadr_get_property( adr, i, IMADR_ADDRESS, &output)); printf( " rfc822 component : %s\n", output); check( imadr_get_property( adr, i, IMADR_DOMAIN, &output)); printf( " domain part : %s\n", output); check( imadr_get_property( adr, i, IMADR_LOCAL, &output)); printf( " local part : %s\n", output); check( imadr_get_property( adr, i, IMADR_PHRASE, &output)); printf( " free form field : %s\n", output); check( imadr_get_property( adr, i, IMADR_ROUTE, &output)); printf( " route : %s\n", output); } } imadr_free(adr); } } while(1); }