|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T r
Length: 3512 (0xdb8) Types: TextFile Names: »recipstate.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Lib/qmgr/recipstate.c«
/* recipstate.c: support for qmgr responses */ # ifndef lint static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/qmgr/RCS/recipstate.c,v 5.0 90/09/20 16:22:25 pp Exp Locker: pp $"; # endif /* * $Header: /cs/research/pp/hubris/pp-beta/Lib/qmgr/RCS/recipstate.c,v 5.0 90/09/20 16:22:25 pp Exp Locker: pp $ * * $Log: recipstate.c,v $ * Revision 5.0 90/09/20 16:22:25 pp * rcsforce : 5.0 public release * */ #include "util.h" #include "qmgr.h" #define STR2QB(s) str2qb((s), strlen((s)), 1) struct type_Qmgr_DeliveryStatus *deliverystate; struct type_Qmgr_DeliveryStatus *delivery_setstate (rno, val, msg) int rno, val; char *msg; { struct type_Qmgr_DeliveryStatus *ds; PP_DBG (("delivery_setstate (%d, %d)", rno, val)); for (ds = deliverystate; ds; ds = ds -> next) { if (ds -> IndividualDeliveryStatus -> recipient -> parm == rno) { ds -> IndividualDeliveryStatus -> status = val; if (msg) { if (ds -> IndividualDeliveryStatus -> info) qb_free (ds -> IndividualDeliveryStatus -> info); ds -> IndividualDeliveryStatus -> info = STR2QB (msg); } } } return deliverystate; } struct type_Qmgr_DeliveryStatus *delivery_init (users) struct type_Qmgr_UserList *users; { struct type_Qmgr_DeliveryStatus **ds; struct type_Qmgr_IndividualDeliveryStatus *ids; PP_DBG (("delivery_init (users)")); if (deliverystate) { free_Qmgr_DeliveryStatus (deliverystate); deliverystate = NULL; } for (ds = & deliverystate; users; users = users -> next, ds = &(*ds)->next) { *ds = (struct type_Qmgr_DeliveryStatus *) calloc (1, sizeof (**ds)); ids = (*ds) -> IndividualDeliveryStatus = (struct type_Qmgr_IndividualDeliveryStatus *) calloc (1, sizeof (struct type_Qmgr_IndividualDeliveryStatus)); ids -> recipient = (struct type_Qmgr_RecipientId *) calloc (1, sizeof *ids -> recipient); ids -> recipient -> parm = users -> RecipientId -> parm; ids -> status = -1; ids -> info = NULL; } return deliverystate; } struct type_Qmgr_DeliveryStatus *delivery_setallstate (val, msg) int val; char *msg; { struct type_Qmgr_DeliveryStatus *ds; int first = 1; PP_DBG (("delivery_setallstate (%d)", val)); if (deliverystate == NULL) return deliverystate; for (ds = deliverystate; ds; ds = ds -> next) { switch (ds -> IndividualDeliveryStatus -> status) { case int_Qmgr_status_negativeDR: case int_Qmgr_status_positiveDR: case int_Qmgr_status_successSharedDR: case int_Qmgr_status_failureSharedDR: break; default: ds -> IndividualDeliveryStatus -> status = val; if (msg && val == int_Qmgr_status_mtaFailure && first) { if (ds -> IndividualDeliveryStatus -> info) qb_free (ds -> IndividualDeliveryStatus -> info); ds -> IndividualDeliveryStatus -> info = STR2QB (msg); first = 0; } break; } } return deliverystate; } struct type_Qmgr_DeliveryStatus *delivery_resetDRs (val) int val; { struct type_Qmgr_DeliveryStatus *ds; PP_DBG (("delivery_resetDRs (%d)", val)); if (deliverystate == NULL) return deliverystate; for (ds = deliverystate; ds; ds = ds -> next) { switch (ds -> IndividualDeliveryStatus -> status) { case int_Qmgr_status_negativeDR: case int_Qmgr_status_positiveDR: case int_Qmgr_status_successSharedDR: case int_Qmgr_status_failureSharedDR: ds -> IndividualDeliveryStatus -> status = val; break; default: break; } } return deliverystate; }