get_config_dir Function

public function get_config_dir() result(config_dir)

Arguments

None

Return Value character(len=256)


Source Code

    function get_config_dir() result(config_dir)
        character(len=256) :: config_dir
        character(len=256) :: home_dir
        integer :: status

        ! Try to get XDG_CONFIG_HOME first (Linux standard)
        call get_environment_variable('XDG_CONFIG_HOME', config_dir, status=status)

        if (status == 0 .and. len_trim(config_dir) > 0) then
            config_dir = join_path(trim(config_dir), 'fortran')
        else
            ! Fallback to HOME directory
            call get_environment_variable('HOME', home_dir, status=status)

            if (status == 0) then
                ! Linux/macOS: ~/.config/fortran
                config_dir = join_path(trim(home_dir), '.config', 'fortran')
            else
                ! Windows fallback: try LOCALAPPDATA
                call get_environment_variable('LOCALAPPDATA', config_dir, status=status)
                if (status == 0) then
                    config_dir = join_path(trim(config_dir), 'fortran', 'config')
                else
                    ! Last resort - use current directory
                    config_dir = './.fortran-config'
                end if
            end if
        end if

    end function get_config_dir