?? NEWTITLE := 'NOS/VE Device Management' ??
MODULE dmm$search_volume_directory ALIAS 'DMMSDIR';
?? RIGHT := 110 ??

{
{
{

?? NEWTITLE := 'Global Declarations Referenced By This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc dmt$ms_volume_directory
*copyc gft$system_file_identifier
*copyc ost$name
*copyc ost$status
?? POP ??
*copy dmp$close_file
*copy dmp$open_directory
?? TITLE := 'dmp$search_vol_directory_name', EJECT ??

  PROCEDURE [XDCL, #GATE] dmp$search_vol_directory_name ALIAS 'dmxsdrn'
    (    search_name: ost$name;
         directory_sfid: gft$system_file_identifier;
     VAR directory_index: dmt$directory_index;
     VAR name_found_in_directory: boolean;
     VAR status: ost$status);

    VAR
      p_directory: ^dmt$ms_volume_directory,
      index: dmt$directory_index,
      number_directory_entries: dmt$directory_index;

    status.normal := TRUE;
    name_found_in_directory := FALSE;
    directory_index := 0;

    dmp$open_directory (directory_sfid, osc$os_ring_1, osc$tsrv_ring, mmc$sar_read, mmc$as_sequential,
          p_directory, status);
    IF NOT status.normal THEN
      RETURN; {----->
    IFEND;

    number_directory_entries := p_directory^.header.number_of_entries;

  /directory_search/
    FOR index := 1 TO number_directory_entries DO

      IF p_directory^.entries [index].entry_available THEN
        IF directory_index = 0 THEN
          directory_index := index;
        IFEND;
      ELSEIF p_directory^.entries [index].user_supplied_name = search_name THEN
        name_found_in_directory := TRUE;
        directory_index := index;
        EXIT /directory_search/; {----->
      IFEND;
    FOREND /directory_search/;

    dmp$close_file (p_directory, status);

  PROCEND dmp$search_vol_directory_name;

MODEND dmm$search_volume_directory;
