create_temp_file Function

public function create_temp_file(prefix, extension) result(temp_file)

Create a unique temporary file path without creating a directory

Arguments

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

Return Value character(len=:), allocatable


Source Code

    function create_temp_file(prefix, extension) result(temp_file)
        character(len=*), intent(in) :: prefix
        character(len=*), intent(in), optional :: extension
        character(len=:), allocatable :: temp_file
        character(len=32) :: random_suffix
        character(len=256) :: base_temp_dir
        character(len=:), allocatable :: ext

        ! Get system temp directory
        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
        call generate_random_suffix(random_suffix)

        ! Handle extension
        if (present(extension)) then
            if (len_trim(extension) > 0) then
                if (extension(1:1) == '.') then
                    ext = trim(extension)
                else
                    ext = '.'//trim(extension)
                end if
            else
                ext = ''
            end if
        else
            ext = ''
        end if

        ! Create unique temp file path directly in temp directory
        temp_file = join_path(trim(base_temp_dir), &
                              trim(prefix)//'_'//trim(random_suffix)//ext)

    end function create_temp_file