Crossfire Server, Trunk  R22047
init.c File Reference
#include "global.h"
#include <stdlib.h>
#include <string.h>
#include "object.h"
#include "output_file.h"
#include "assets.h"
+ Include dependency graph for init.c:

Go to the source code of this file.

Macros

#define EXTERN
 
#define INIT_C
 

Functions

static void do_dynamic (archetype *at)
 
void free_globals (void)
 
void init_attackmess (BufferReader *reader, const char *filename)
 
static void init_clocks (void)
 
static void init_defaults (void)
 
static void init_dynamic (void)
 
static void init_emergency_mappath (void)
 
static void init_environ (void)
 
void init_globals (void)
 
void init_library (void)
 
void write_todclock (void)
 

Variables

static int found_map = 0
 
struct Settings settings
 
const char *const spellpathnames [NRSPELLPATHS]
 
struct Statistics statistics
 
unsigned long todtick
 

Detailed Description

Basic initialization for the common library.

Definition in file init.c.

Macro Definition Documentation

◆ EXTERN

#define EXTERN

Definition at line 19 of file init.c.

◆ INIT_C

#define INIT_C

Definition at line 20 of file init.c.

Function Documentation

◆ do_dynamic()

static void do_dynamic ( archetype *  at)
static

Definition at line 371 of file init.c.

References delete_map(), EXIT_PATH, first_map_ext_path, first_map_path, found_map, llevError, LOG(), MAP_TYPE_LEGACY, ready_map_name(), safe_strncpy, and strlcpy().

Referenced by init_dynamic().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ free_globals()

void free_globals ( void  )

Cleans all memory allocated for global variables.

Will clear:

  • attack messages
  • emergency map settings
  • friendly list
  • experience
  • regions

Definition at line 324 of file init.c.

References assets_free(), attack_mess, Settings::emergency_mapname, first_friendly_object, first_region, FREE_AND_CLEAR, FREE_AND_CLEAR_STR, free_experience(), regiondef::jailmap, regiondef::longname, MAXATTACKMESS, regiondef::msg, regiondef::name, regiondef::next, NROFATTACKMESS, regiondef::parent_name, and undead_name.

Referenced by cleanup().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ init_attackmess()

void init_attackmess ( BufferReader reader,
const char *  filename 
)

Initializes the attack messages. Called by init_library().

Memory will be cleared by free_globals().

Definition at line 476 of file init.c.

References attack_mess, buf, attackmess::buf1, attackmess::buf2, attackmess::buf3, bufferreader_next_line(), attackmess::level, level, llevDebug, LOG(), and strdup_local.

Referenced by assets_collect().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ init_clocks()

static void init_clocks ( void  )
static

Initializes the gametime and TOD counters Called by init_library().

Definition at line 440 of file init.c.

References llevDebug, llevError, Settings::localdir, LOG(), MAX_BUF, snprintf, todtick, and write_todclock().

Referenced by init_library().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ init_defaults()

static void init_defaults ( void  )
static

Initialises global variables which can be changed by options. Called by init_library().

Definition at line 365 of file init.c.

References nroferrors.

Referenced by init_globals().

+ Here is the caller graph for this function:

◆ init_dynamic()

static void init_dynamic ( void  )
static

Initializes first_map_path from the archetype collection.

Must be called after archetypes have been initialized.

Note
will call exit() if no MAP archetype was found.

Definition at line 405 of file init.c.

References archetypes_for_each(), do_dynamic(), found_map, llevError, and LOG().

Referenced by init_library().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ init_emergency_mappath()

static void init_emergency_mappath ( void  )
static

This loads the emergency map information from a .emergency file in the map directory. Doing this makes it easier to switch between map distributions (don't need to recompile. Note that there is no reason I see that this could not be re-loaded during play, but it seems like there should be little reason to do that.

Note
If file doesn't exist, will not do anything.

Definition at line 143 of file init.c.

References Settings::datadir, Settings::emergency_mapname, EMERGENCY_MAPPATH, Settings::emergency_x, Settings::emergency_y, llevDebug, llevError, LOG(), Settings::mapdir, MAX_BUF, snprintf, and strdup_local.

Referenced by init_library().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ init_environ()

static void init_environ ( void  )
static

Initializes values from the environmental variables. it needs to be called very early, since command line options should overwrite these if specified.

Definition at line 240 of file init.c.

References Settings::archetypes, Settings::datadir, Settings::localdir, Settings::mapdir, Settings::playerdir, Settings::templatedir, Settings::tmpdir, Settings::treasures, and Settings::uniquedir.

Referenced by init_library().

+ Here is the caller graph for this function:

◆ init_globals()

void init_globals ( void  )

Initialises all global variables. Might use environment-variables as default for some of them.

Setups logfile, and such variables.

Definition at line 278 of file init.c.

References add_string(), amulet_arch, exiting, first_artifactlist, first_friendly_object, first_map, first_map_ext_path, first_player, init_defaults(), llevError, LOG(), logfile, Settings::logfilename, nrofallowedstr, nrofartifacts, ring_arch, statistics, trying_emergency_save, and undead_name.

Referenced by cctk_init_std_archetypes(), generate_map(), init_library(), ResourcesManager::load(), and main().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ init_library()

void init_library ( void  )

It is vital that init_library() is called by any functions using this library. If you want to lessen the size of the program using the library, you can replace the call to init_library() with init_globals() and init_function_pointers(). Good idea to also call init_hash_table if you are doing any object loading.

Definition at line 189 of file init.c.

References assets_collect(), assets_dump_undefined(), assets_end_load(), assets_init(), attack_mess, attackmess::buf1, attackmess::buf2, attackmess::buf3, check_formulae(), Settings::datadir, FALSE, i18n_init(), Settings::ignore_assets_errors, init_block(), init_clocks(), init_dynamic(), init_emergency_mappath(), init_environ(), init_experience(), init_globals(), init_hash_table(), init_objects(), init_regions(), init_stats(), attackmess::level, level, llevError, LOG(), and MAXATTACKMESS.

Referenced by generate_map(), init(), ResourcesManager::load(), and main().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ write_todclock()

void write_todclock ( void  )

Write out the current time to the file so time does not reset every time the server reboots.

Definition at line 423 of file init.c.

References Settings::localdir, MAX_BUF, of_close(), of_open(), snprintf, and todtick.

Referenced by clean_tmp_files(), init_clocks(), and tick_the_clock().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ found_map

int found_map = 0
static

Definition at line 369 of file init.c.

Referenced by do_dynamic(), and init_dynamic().

◆ settings

struct Settings settings

Server settings.

Definition at line 39 of file init.c.

Referenced by CREFilterDialog::accept(), CREReportDialog::accept(), account_block_create(), account_char_load(), account_char_save(), account_new_cmd(), accounts_load(), accounts_save(), add_me_cmd(), add_player_exp(), add_server_collect_hooks(), apply_check_item_power(), apply_check_personalized_blessings(), apply_death_exp_penalty(), apply_race_and_class(), assets_collect(), attack_ob_simple(), attempt_steal(), block_until_new_connection(), calc_perm_exp(), calc_skill_exp(), cast_create_town_portal(), cast_spell(), cctk_init_std_archetypes(), cctk_setdatadir(), cctk_setlog(), cfapi_system_directory(), change_abil(), check_exp_loss(), check_login(), check_pick(), check_probe(), check_race_and_class(), checkbanned(), checkdm(), clean_tmp_files(), CREMapInformationManager::clearCache(), command_abil(), command_addexp(), command_banish(), command_create(), command_debug(), command_help(), command_loadtest(), command_nowiz(), command_patch(), command_players(), command_search_items(), command_settings(), command_title(), compute_price_variation_with_bargaining(), convert_item(), create_items_path(), create_overlay_pathname(), create_pathname(), create_player_cmd(), create_template_pathname(), CREExperienceWindow::CREExperienceWindow(), CREFilterDialog::CREFilterDialog(), CREReportDialog::CREReportDialog(), crypt_string(), dead_player(), delete_character(), display_motd(), do_symptoms(), do_throw(), dragon_eat_flesh(), dump_experience(), enter_exit(), enter_player_maplevel(), enter_player_savebed(), exp_level(), FaceMakerDialog::FaceMakerDialog(), find_help_file(), find_maps(), find_spot_for_submap(), find_style(), MessageManager::findPrePost(), fix_object(), fix_player(), forbid_play(), free_server(), get_cha_bonus(), get_cleric_chance(), get_con_bonus(), get_dam_bonus(), get_dex_bonus(), get_fear_bonus(), get_grace_bonus(), get_learn_spell(), get_sp_bonus(), get_speed_bonus(), get_thaco_bonus(), get_turn_bonus(), get_weight_limit(), god_enchants_weapon(), help_topics(), hiscore_init(), hit_player(), i18n_init(), improve_armour(), improve_weapon(), init_beforeplay(), init_book_archive(), init_experience(), init_regions(), init_server(), init_startup(), init_stats(), initPlugins(), is_legal_2ways_exit(), key_change_class(), key_confirm_quit(), kill_object(), kill_player(), kill_player_not_permadeath(), kill_player_permadeath(), knowledge_read_player_data(), knowledge_write_player_data(), level_exp(), list_players(), ResourcesManager::load(), load_quests_from_file(), load_settings(), load_table_float(), load_table_int(), CREMapInformationManager::loadCache(), MessageManager::loadDirectory(), QuestManager::loadQuestFile(), LOG(), main(), map_remove_unique_files(), mapfile_load(), metaserver2_init(), monsterFight(), object_clear(), CREMainWindow::onReportQuests(), CREMainWindow::onReportSpellDamage(), MessageFile::parseFile(), pay_for_item(), pick_up_object(), player_lvl_adj(), plugins_init_plugin(), process_events(), process_players1(), quest_read_player_data(), quest_write_player_data(), rangetostring(), read_map_log(), ready_map_name(), resurrect_player(), roll_stats(), MessageFile::save(), save_map(), save_player(), QuestManager::saveQuestFile(), scroll_failure(), scroll_type_apply(), send_exp_table(), send_file(), send_new_char_info(), send_news(), send_rules(), set_abs_magic(), set_archetypes(), set_confdir(), set_csport(), set_datadir(), set_debug(), set_disable_plugin(), set_dumpmon1(), set_dumpmon2(), set_dumpmon3(), set_dumpmon4(), set_dumpmon5(), set_dumpmon6(), set_dumpmon7(), set_dumpmon8(), set_dumpmon9(), set_dumpmont(), set_ignore_assets_errors(), set_localdir(), set_logfile(), set_mapdir(), set_mondebug(), set_playerdir(), set_regions(), set_templatedir(), set_tmpdir(), set_treasures(), set_uniquedir(), show_skills(), SP_level_spellpoint_cost(), spell_failure(), spellbook_type_apply(), START_TEST(), CREMapInformationManager::storeCache(), swap_map(), town_portal_destroy_existing(), unset_debug(), CREResourcesWindow::updateFilters(), CREResourcesWindow::updateReports(), verify_player(), write_book_archive(), write_map_log(), and write_scroll().

◆ spellpathnames

const char* const spellpathnames[NRSPELLPATHS]
Initial value:
= {
"Protection",
"Fire",
"Frost",
"Electricity",
"Missiles",
"Self",
"Summoning",
"Abjuration",
"Restoration",
"Detonation",
"Mind",
"Creation",
"Teleportation",
"Information",
"Transmutation",
"Transferrence",
"Turning",
"Wounding",
"Death",
"Light"
}

Perhaps not the best place for this, but needs to be in some file in the common area so that standalone programs, like the random map generator, can be built.

Definition at line 108 of file init.c.

Referenced by describe_spellpath_attenuation(), dragon_ability_gain(), send_spell_paths(), and spellpath_msg().

◆ statistics

struct Statistics statistics

Merged spell statistics.

Definition at line 101 of file init.c.

Referenced by init_globals(), main(), object_merge_spell(), and ok_to_put_more().

◆ todtick

unsigned long todtick