|
|
1.1 ! root 1: ... ! 2: ! 3: static int ros_invoke (sd, rox) ! 4: int sd; ! 5: register struct RoSAPinvoke *rox; ! 6: { ! 7: int result; ! 8: register struct dispatch *ds; ! 9: struct RoSAPindication rois; ! 10: register struct RoSAPindication *roi = &rois; ! 11: register struct RoSAPpreject *rop = &roi -> roi_preject; ! 12: ! 13: for (ds = dispatches; ds -> ds_operation != APDU_UNKNOWN; ds++) ! 14: if (ds -> ds_operation == rox -> rox_op) ! 15: break; ! 16: ! 17: if (ds -> ds_operation == APDU_UNKNOWN) { ! 18: if (RoURejectRequest (sd, &rox -> rox_id, ROS_IP_UNRECOG, ! 19: ROS_NOPRIO, roi) == NOTOK) ! 20: error ("RO-U-REJECT.REQUEST: %s", RoErrString (rop -> rop_reason)); ! 21: goto out; ! 22: } ! 23: ! 24: if (rox -> rox_nolinked == 0) { ! 25: if (RoURejectRequest (sd, &rox -> rox_id, ROS_IP_LINKED, ! 26: ROS_NOPRIO, roi) == NOTOK) ! 27: error ("RO-U-REJECT.REQUEST: %s", RoErrString (rop -> rop_reason)); ! 28: goto out; ! 29: } ! 30: ! 31: switch (result = (*ds -> ds_vector) (rox)) { ! 32: case ERROR_UNKNOWN: ! 33: if (RoResultRequest (sd, rox -> rox_id, rox -> rox_op, ! 34: rox -> rox_args, ROS_NOPRIO, roi) == NOTOK) ! 35: error ("RO-RESULT.REQUEST: %s", ! 36: RoErrString (rop -> rop_reason)); ! 37: break; ! 38: ! 39: default: ! 40: if (RoErrorRequest (sd, rox -> rox_id, result, rox -> rox_args, ! 41: ROS_NOPRIO, roi) == NOTOK) ! 42: error ("RO-ERROR.REQUEST: %s", ! 43: RoErrString (rop -> rop_reason)); ! 44: break; ! 45: ! 46: case ERROR_MISTYPED: ! 47: if (RoURejectRequest (sd, &rox -> rox_id, ROS_IP_MISTYPED, ! 48: ROS_NOPRIO, roi) == NOTOK) ! 49: error ("RO-U-REJECT.REQUEST: %s", ! 50: RoErrString (rop -> rop_reason)); ! 51: break; ! 52: } ! 53: ! 54: out: ; ! 55: ROXFREE (rox); ! 56: } ! 57: ! 58: ...
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.