
  PROCEDURE [INLINE] nap$validate_user
    (    capability: ost$name;
         ring: ost$ring;
         system_privilege: boolean;
     VAR status: ost$status);

    VAR
      caller_id: ost$caller_identifier,
      required_capability: boolean,
      ignore_status: ost$status;

?? PUSH (LISTEXT := ON) ??
    status.normal := TRUE;
    #CALLER_ID (caller_id);
    status.normal := caller_id.ring <= ring;
    IF status.normal THEN
      IF system_privilege THEN
{       status.normal := osp$is_caller_system_privileged;
{       IF NOT status.normal THEN
{         RETURN;
{       IFEND;
      IFEND;

      IF capability <> osc$null_name THEN
        avp$get_capability (capability, avc$user, required_capability, status);
        IF NOT status.normal THEN
          RETURN; {----->
        IFEND;
        IF NOT required_capability THEN
          osp$set_status_abnormal ('AV', ave$missing_required_capability,
                capability, status);
        IFEND;
      IFEND;
    IFEND;

  PROCEND nap$validate_user;

*copyc osd$virtual_address
*copyc ost$caller_identifier
*copyc ost$name
*copyc ost$status
*copyc avp$get_capability
*copyc osp$is_caller_system_privileged
*copyc osp$set_status_abnormal
?? POP ??
