|
|
1.1 ! root 1: /* rydserror.c - ROSY: return error to invocation */ ! 2: ! 3: #ifndef lint ! 4: static char *rcsid = "$Header: /f/osi/rosy/RCS/rydserror.c,v 7.1 90/07/01 21:06:31 mrose Exp $"; ! 5: #endif ! 6: ! 7: /* ! 8: * $Header: /f/osi/rosy/RCS/rydserror.c,v 7.1 90/07/01 21:06:31 mrose Exp $ ! 9: * ! 10: * ! 11: * $Log: rydserror.c,v $ ! 12: * Revision 7.1 90/07/01 21:06:31 mrose ! 13: * pepsy ! 14: * ! 15: * Revision 7.0 89/11/23 22:21:56 mrose ! 16: * Release 6.0 ! 17: * ! 18: */ ! 19: ! 20: /* ! 21: * NOTICE ! 22: * ! 23: * Acquisition, use, and distribution of this module and related ! 24: * materials are subject to the restrictions of a license agreement. ! 25: * Consult the Preface in the User's Manual for the full terms of ! 26: * this agreement. ! 27: * ! 28: */ ! 29: ! 30: ! 31: /* LINTLIBRARY */ ! 32: ! 33: #include <stdio.h> ! 34: #include "rosy.h" ! 35: ! 36: ! 37: #define missingP(p) \ ! 38: { \ ! 39: if (p == NULL) \ ! 40: return rosaplose (roi, ROS_PARAMETER, NULLCP, \ ! 41: "mandatory parameter \"%s\" missing", "p"); \ ! 42: } ! 43: ! 44: /* ERROR */ ! 45: ! 46: int RyDsError (sd, id, err, out, priority, roi) ! 47: int sd; ! 48: int id, ! 49: err, ! 50: priority; ! 51: caddr_t out; ! 52: struct RoSAPindication *roi; ! 53: { ! 54: int result; ! 55: PE pe; ! 56: register struct opsblk *opb; ! 57: register struct RyError **ryep, ! 58: *rye; ! 59: register struct RyOperation *ryo; ! 60: ! 61: missingP (roi); ! 62: ! 63: if ((opb = findopblk (sd, id, OPB_RESPONDER)) == NULLOPB) ! 64: return rosaplose (roi, ROS_PARAMETER, NULLCP, ! 65: "invocation %d not in progress on association %d", ! 66: id, sd); ! 67: ! 68: ryo = opb -> opb_ryo; ! 69: if (!(ryep = ryo -> ryo_errors)) ! 70: return rosaplose (roi, ROS_PARAMETER, NULLCP, ! 71: "error not permitted with operation %s/%d", ! 72: ryo -> ryo_name, ryo -> ryo_op); ! 73: ! 74: for (; *ryep; ryep++) ! 75: if ((*ryep) -> rye_err == err) ! 76: break; ! 77: ! 78: if (!(rye = *ryep)) ! 79: return rosaplose (roi, ROS_PARAMETER, NULLCP, ! 80: "error %d not permitted with operation %s/%d", ! 81: err, ryo -> ryo_name, ryo -> ryo_op); ! 82: ! 83: #ifdef PEPSY_DEFINITIONS ! 84: if (rye -> rye_param_mod) { ! 85: #else ! 86: if (rye -> rye_param_encode) { ! 87: #endif ! 88: #ifdef notdef ! 89: missingP (out); ! 90: #endif ! 91: PY_pepy[0] = 0; ! 92: #ifdef PEPSY_DEFINITIONS ! 93: if (enc_f (rye -> rye_param_index, rye -> rye_param_mod, &pe, 1, NULL, ! 94: NULLCP, out) == NOTOK) ! 95: #else ! 96: if ((*rye -> rye_param_encode) (&pe, 1, NULL, NULLCP, out) == NOTOK) ! 97: #endif ! 98: return rosaplose (roi, ROS_CONGEST, NULLCP, ! 99: "error encoding parameter for invocation %d having %s/%d [%s]", ! 100: opb -> opb_id, rye -> rye_name, rye -> rye_err, ! 101: PY_pepy); ! 102: } ! 103: else { ! 104: if (out) ! 105: return rosaplose (roi, ROS_PARAMETER, NULLCP, ! 106: "error parameter not permitted with operation %s/%d", ! 107: rye -> rye_name, rye -> rye_err); ! 108: ! 109: pe = NULLPE; ! 110: } ! 111: ! 112: if ((result = RoErrorRequest (sd, id, err, pe, priority, roi)) != NOTOK) ! 113: freeopblk (opb); ! 114: ! 115: if (pe) ! 116: pe_free (pe); ! 117: ! 118: return result; ! 119: ! 120: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.