mkdir Subroutine

public subroutine mkdir(dir, echo)

Create a directory. Create subdirectories as needed

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: dir
logical, intent(in), optional :: echo

Source Code

subroutine mkdir(dir, echo)
    character(len=*), intent(in) :: dir
    logical, intent(in), optional :: echo

    integer :: stat
    logical :: echo_local

    if (is_dir(dir)) return

    select case (get_os_type())
        case (OS_UNKNOWN, OS_LINUX, OS_MACOS, OS_CYGWIN, OS_SOLARIS, OS_FREEBSD, OS_OPENBSD)
#ifndef FPM_BOOTSTRAP
            echo_local = .true.
            if (present(echo)) echo_local = echo
            if (echo_local) print *, '+ ', 'mkdir -p ' // dir
            stat = c_mkdir_p(dir(1:len_trim(dir))//c_null_char)
#else
            call run('mkdir -p ' // dir, exitstat=stat,echo=echo,verbose=.false.)
#endif

        case (OS_WINDOWS)
            call run("mkdir " // windows_path(dir), &
                    & echo=echo, exitstat=stat,verbose=.false.)

    end select

    ! Not an error if another process created it at the same time
    if (stat /= 0 .and. .not. is_dir(dir)) then
        call fpm_stop(1, '*mkdir*:directory creation failed')
    end if
end subroutine mkdir