program captain use captain_db use config use logging, only: initialize_log => initialize implicit none integer::mode integer, parameter::MODE_GEMINI = 1, & MODE_CGI_HTML = 2 call random_seed() ! For possible crypto call parse_options() call initialize_db(database_filename) call initialize_log(log_filename) select case(mode) case(MODE_GEMINI) call handle_gemini() end select call shutdown_db() close(logunit) contains subroutine usage() implicit none character(len=256)::pname call get_command_argument(0, pname) Print *, "Usage: "//trim(pname)//" " Print *, " " Print *, "Options:" Print *, " -h Display this help" Print *, " -c Use the specified config file" Print *, " -g Operate in Gemini mode" Print *, " -w Operate in CGI mode (default)" end subroutine usage subroutine parse_options use config implicit none character(len=1024)::option logical::config_loaded integer::i config_loaded = .false. mode = MODE_CGI_HTML i = 1 do while(i <= command_argument_count()) call get_command_argument(i, option) if(trim(option) == "-h") then call usage() stop else if(trim(option) == "-g") then mode = MODE_GEMINI else if(trim(option) == "-c") then i = i + 1 call get_command_argument(i, option) call load_configuration(trim(option)) config_loaded = .true. end if i = i + 1 end do ! Assign working directory from command if not specified if(.not. config_loaded) then Print *, "No configuration file specified" stop end if end subroutine parse_options end program captain