AUSAM/source/ale/ale2.c
#include "defines.h"
char buf[MAXBPF], dear[MAXBPF];
int sir_title,
the_title;
let()
{
register char *p, *p2;
register n;
p = fields[0];
p2 = buf;
n_titles = 0;
sir_title = 0;
the_title = 0;
n_names = 0;
n = 0;
while( *p )
{
names[n_names++] = p2;
while( *p && ( *p != ' ' ) )
*p2++ = *p++;
*p2++ = NULLCHAR;
if( *p )
p++;
}
while( 1 )
{
if( strcmp( names[n_titles], "The" ) == 0 )
{
names[n_titles++] = NULLCHAR;
the_title++;
continue;
}
else
if( strcmp( names[n_titles], "Sir" ) == 0 )
{
names[n_titles++] = NULLCHAR;
sir_title++;
continue;
}
else
for( t_ptr = titles; *t_ptr; t_ptr++ )
if( strcmp( names[n_titles], *t_ptr ) == 0 )
break;
if( *t_ptr )
n_titles++;
else
break;
}
p = dear;
n = 0;
if( !dear_field[0] )
{
p2 = "Dear";
while( *p++ = *p2++ );
*(p-1) = ' ';
if( sir_title )
{
p2 = "Sir";
while( *p++ = *p2++ );
*(p-1) = ' ';
p2 = names[n_titles]; /* first name of person */
}
else
if( n_titles != the_title )
{
while( n != n_titles )
{
p2 = names[n++];
if( p2 )
{
while( *p++ = *p2++ );
*(p-1) = ' ';
}
}
n = 0;
p2 = names[n_names-1];
while( *p2++ );
p2--;
while( ( *--p2 >= 'A' ) && ( *p2 <= 'Z' ) )
n++;
if( *p2 == '\~' )
{
while( *--p2 == '\~' );
*++p2 = NULLCHAR;
}
else
if(n & !cflag)
{
run_err( "caps in name field" );
return;
}
p2 = names[n_names-1];
}
else
{
p2 = "Sir/Madam";
while( *p++ = *p2++ );
*(p-1) = ' ';
p2 = ""; /* this is terible */
}
}
else
p2 = dear_field;
while( *p++ = *p2++ );
n = 0;
while( fields[n][0] )
print( outp_A, fields[n++] );
putc( '\n', outp_A );
print( outp_A, dear );
putc( '\n', outp_A );
}