|
|
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.