create_temp_dir Function

public function create_temp_dir(prefix) result(temp_dir)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: prefix

Return Value character(len=:), allocatable


Source Code

    function create_temp_dir(prefix) result(temp_dir)
        character(len=*), intent(in) :: prefix
        character(len=:), allocatable :: temp_dir
        character(len=32) :: random_suffix
        character(len=256) :: base_temp_dir
        integer :: ios

        ! Get system temp directory using FPM's get_env
        base_temp_dir = get_env('TMPDIR', '')
        if (len_trim(base_temp_dir) == 0) then
            base_temp_dir = get_env('TMP', '')
            if (len_trim(base_temp_dir) == 0) then
                base_temp_dir = get_env('TEMP', '')
                if (len_trim(base_temp_dir) == 0) then
                    base_temp_dir = get_system_temp_dir()
                end if
            end if
        end if

        ! Generate random suffix using system time and process ID
        call generate_random_suffix(random_suffix)

        ! Create unique temp directory path using FPM's join_path
        temp_dir = join_path(trim(base_temp_dir), &
                             trim(prefix)//'_'//trim(random_suffix))

        ! Create the directory
        call mkdir(temp_dir)

    end function create_temp_dir