?? RIGHT := 110 ??
MODULE dmm$get_file_info;
*copyc dmh$get_file_info
?? PUSH (LISTEXT := ON) ??
*copyc mmc$null_shared_queue
*copyc dmt$file_information
*copyc gft$file_descriptor_entry
*copyc gft$system_file_identifier
*copyc ost$status
?? POP ??
*copyc dmp$get_total_allocated_length
*copyc gfp$get_eoi_from_fde
*copyc gfp$unlock_fde_p
*copyc gfp$verify_get_locked_fde_p

  PROCEDURE [XDCL, #GATE] dmp$get_file_info
    (    system_file_id: gft$system_file_identifier;
     VAR file_info: dmt$file_information;
     VAR status: ost$status);

    VAR
      p_fde: gft$locked_file_desc_entry_p;

    gfp$verify_get_locked_fde_p (system_file_id, p_fde, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    dmp$get_total_allocated_length (p_fde, file_info.total_allocated_length);
    file_info.eoi_byte_address := gfp$get_eoi_from_fde (p_fde);
    file_info.file_kind := p_fde^.file_kind;
    file_info.shared_queue := mmc$null_shared_queue;
    IF p_fde^.queue_ordinal > mmc$pq_shared_last_sys THEN
      file_info.shared_queue := p_fde^.queue_ordinal - mmc$pq_shared_last_sys;
    IFEND;
    file_info.time_last_modified := p_fde^.time_last_modified;
    file_info.trimmed_length := 0;
    gfp$unlock_fde_p (p_fde);

  PROCEND dmp$get_file_info;

MODEND dmm$get_file_info;
