Mercurial > noffle
diff src/fetch.c @ 79:28aeb0b93509 noffle
[svn] Extracted function in Fetch_postArts for returning failed postings to sender
author | enz |
---|---|
date | Sun, 14 May 2000 08:12:23 +0100 |
parents | adf0af5152f7 |
children | 38b0a1532a37 |
line wrap: on
line diff
--- a/src/fetch.c Sun May 14 08:11:28 2000 +0100 +++ b/src/fetch.c Sun May 14 08:12:23 2000 +0100 @@ -1,7 +1,7 @@ /* fetch.c - $Id: fetch.c 67 2000-05-12 17:19:38Z enz $ + $Id: fetch.c 85 2000-05-14 07:12:23Z enz $ */ #if HAVE_CONFIG_H @@ -178,15 +178,50 @@ del_DynStr( list ); } +static void +returnArticleToSender( const char *sender, const char *reason, + const char *article ) +{ + int ret; + Str cmd; + FILE *f; + sig_t lastHandler; + + Log_err( "Return article to '%s' by mail", sender ); + snprintf( cmd, MAXCHAR, "mail -s '[ NOFFLE: Posting failed ]' '%s'", + sender ); + lastHandler = signal( SIGPIPE, SIG_IGN ); + f = popen( cmd, "w" ); + if ( f == NULL ) + Log_err( "Invocation of '%s' failed (%s)", cmd, strerror( errno ) ); + else + { + fprintf( f, + "\t[ NOFFLE: POSTING OF ARTICLE FAILED ]\n" + "\n" + "\t[ The posting of your article failed. ]\n" + "\t[ Reason of failure at remote server: ]\n" + "\n" + "\t[ %s ]\n" + "\n" + "\t[ Full article text has been appended. ]\n" + "\n" + "%s" + ".\n", + reason, article ); + ret = pclose( f ); + if ( ret != EXIT_SUCCESS ) + Log_err( "'%s' exit value %d", cmd, ret ); + signal( SIGPIPE, lastHandler ); + } +} + void Fetch_postArts( void ) { DynStr *s; - Str msgId, cmd, errStr, sender; - int ret; + Str msgId, errStr, sender; const char *txt; - FILE *f; - sig_t lastHandler; s = new_DynStr( 10000 ); if ( Out_first( fetch.serv, msgId, s ) ) @@ -207,37 +242,7 @@ Log_err( "Article %s has no From/Sender/X-Sender field", msgId ); else - { - Log_ntc( "Return article to '%s' by mail", sender ); - snprintf( cmd, MAXCHAR, - "mail -s '[ NOFFLE: Posting failed ]' '%s'", - sender ); - lastHandler = signal( SIGPIPE, SIG_IGN ); - f = popen( cmd, "w" ); - if ( f == NULL ) - Log_err( "Invocation of '%s' failed (%s)", cmd, - strerror( errno ) ); - else - { - fprintf( f, - "\t[ NOFFLE: POSTING OF ARTICLE FAILED ]\n" - "\n" - "\t[ The posting of your article failed. ]\n" - "\t[ Reason of failure at remote server: ]\n" - "\n" - "\t[ %s ]\n" - "\n" - "\t[ Full article text has been appended. ]\n" - "\n" - "%s" - ".\n", - errStr, txt ); - ret = pclose( f ); - if ( ret != EXIT_SUCCESS ) - Log_err( "'%s' exit value %d", cmd, ret ); - signal( SIGPIPE, lastHandler ); - } - } + returnArticleToSender( sender, errStr, txt ); } } while ( Out_next( msgId, s ) );