Mercurial > noffle
view src/control.c @ 244:4e69e9b722ae noffle
[svn] * src/database.c,src/protocol.c,src/util.c,src/util.h: The latest IETF
article format draft draft-ietf-usefor-article-06.txt recommends that
Xref: references contain the FQDN of the server. We were using the
host name without the domain. So split the routine used for obtaining
the FQDN from protocol.c into util.c, and use it when adding Xrefs.
author | bears |
---|---|
date | Fri, 15 Mar 2002 10:50:33 +0000 |
parents | ffb1848a39db |
children | 01755687c565 |
line wrap: on
line source
/* control.c $Id: control.c 342 2001-12-09 12:31:57Z bears $ */ #if HAVE_CONFIG_H #include <config.h> #endif #include <stdio.h> #include "common.h" #include "content.h" #include "control.h" #include "database.h" #include "group.h" #include "itemlist.h" #include "log.h" #include "outgoing.h" #include "portable.h" int Ctrl_cancel( const char *msgId ) { ItemList *refs; const char *ref; Str server; Bool seen = FALSE; int res = CANCEL_OK; Bool removeFromDb = TRUE; /* See if in outgoing and zap if so. */ if ( Out_find( msgId, server ) ) { Out_remove( server, msgId ); Log_inf( "'%s' cancelled from outgoing queue for '%s'.\n", msgId, server ); seen = TRUE; } if ( ! Db_contains( msgId ) ) { Log_inf( "Cancel: '%s' not in database.", msgId ); return seen ? CANCEL_OK : CANCEL_NO_SUCH_MSG; } /* Retrieve the Xrefs, remove from each group and then remove from the database. */ refs = new_Itl( Db_xref( msgId ), " " ); for( ref = Itl_first( refs ); ref != NULL; ref = Itl_next( refs ) ) { Str grp; int no; if ( sscanf( ref, "%s:%d", grp, &no ) != 2 ) break; if ( Grp_exists( grp ) ) { Cont_read( grp ); Cont_delete( no ); /* * If we don't manage to remove the overview, leave the message * in the main database to avoid confusion. Yes, the message * will not be cancelled properly for this group but we don't * signal this to the calling routine. */ if ( Cont_write() ) Log_dbg( LOG_DBG_CONTROL, "Removed '%s' from group '%s'.", msgId, grp ); else removeFromDb = FALSE; if ( ! Grp_local( grp ) && ! seen ) res = CANCEL_NEEDS_MSG; } else { Log_inf( "Group '%s' in Xref for '%s' not found.", grp, msgId ); } } del_Itl( refs ); if ( removeFromDb ) Db_delete( msgId ); Log_inf( "Message '%s' cancelled.", msgId ); return res; }