|
|
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 c
Length: 3667 (0xe53)
Types: TextFile
Names: »chan_debug.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/Lib/qmgr/chan_debug.c«
/* chan_debug.c: stub version of chan_control for debugging channel */
# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/qmgr/RCS/chan_debug.c,v 5.0 90/09/20 16:22:11 pp Exp Locker: pp $";
# endif
/*
* $Header: /cs/research/pp/hubris/pp-beta/Lib/qmgr/RCS/chan_debug.c,v 5.0 90/09/20 16:22:11 pp Exp Locker: pp $
*
* $Log: chan_debug.c,v $
* Revision 5.0 90/09/20 16:22:11 pp
* rcsforce : 5.0 public release
*
*/
#include "util.h"
#include "qmgr.h"
static void pdeliverystatus (), pindividualdeliverystatus ();
/* ARGSUSED */
int debug_channel_control (argc, argv, init, work, finish)
int argc;
char **argv;
IFP init;
struct type_Qmgr_DeliveryStatus *(*work)();
IFP finish;
{
char channel[FILNSIZE],
buf[FILNSIZE];
int cont = TRUE,
num;
struct type_Qmgr_ProcMsg arg;
struct type_Qmgr_UserList *temp = NULL,
*tail = NULL;
struct type_Qmgr_DeliveryStatus *result;
if (isatty (2))
pp_log_norm -> ll_stat |= LLOGTTY;
/* input channel structure */
printf("Input channel name : ");
if (scanf("%s",channel) != 1)
return NOTOK;
arg.channel = str2qb(channel,strlen(channel),1);
arg.qid = NULL;
arg.users = NULL;
if ((*init)(arg.channel) == OK) {
printf("Channel initialised\n");
while(cont == TRUE) {
if (arg.users != NULL) free_Qmgr_UserList(arg.users);
arg.users = NULL;
if (arg.qid != NULL) qb_free(arg.qid);
arg.qid = NULL;
temp = tail = NULL;
printf("Input message id : ");
if (scanf("%s",buf) != 1)
return NOTOK;
arg.qid = str2qb(buf,strlen(buf),1);
printf("Input recipient numbers to pass to channel terminated by -1\n\t : ");
scanf("%d",&num);
while (num != -1) {
temp = (struct type_Qmgr_UserList *) calloc(1, sizeof(*temp));
temp->RecipientId = (struct type_Qmgr_RecipientId *) calloc(1,sizeof(*(temp->RecipientId)));
temp->RecipientId->parm = num;
if (arg.users == NULL)
arg.users = tail = temp;
else {
tail->next = temp;
temp = temp;
}
if (scanf("%d",&num) != 1)
return NOTOK;
}
result = (*work) (&arg);
pdeliverystatus(result);
printf("Do you want to continue ");
do {
printf("(y/n) ? ");
if (scanf("%s", buf) != 1)
return NOTOK;
} while (index("yn",*buf) == NULL);
cont = (*buf == 'y') ? TRUE : FALSE;
}
if (finish != NULLIFP)
(*finish) ();
} else
printf("Channel initialisation failed\n");
return OK;
}
static void pdeliverystatus (status)
struct type_Qmgr_DeliveryStatus *status;
{
printf ("Delivery status\n");
if (status == NULL)
printf ("Complete failure\n");
else {
struct type_Qmgr_DeliveryStatus *ix = status;
while (ix != NULL)
{
pindividualdeliverystatus(ix->IndividualDeliveryStatus);
ix = ix->next;
}
}
}
static void pindividualdeliverystatus(status)
struct type_Qmgr_IndividualDeliveryStatus *status;
{
printf ("Recipient %d: ", status->recipient->parm);
switch (status->status) {
case int_Qmgr_status_success:
printf ("success");
break;
case int_Qmgr_status_successSharedDR:
printf ("successSharedDR");
break;
case int_Qmgr_status_failureSharedDR:
printf ("failureSharedDR");
break;
case int_Qmgr_status_negativeDR:
printf ("negativeDR");
break;
case int_Qmgr_status_positiveDR:
printf ("positiveDR");
break;
case int_Qmgr_status_messageFailure:
printf ("message failure");
break;
case int_Qmgr_status_mtaFailure:
printf ("mta failure");
break;
case int_Qmgr_status_mtaAndMessageFailure:
printf ("mta and message failure");
break;
default:
printf ("unknown");
break;
}
putchar ('\n');
}