trouble loading config file
William Labbett

Hi,

just trying to get a config file to load.

Here's the bit of code which calls the load function :

/**********************************************************************/
   /**************** Section : load configuration file. ******************/
   /**********************************************************************/
   
   config_manager.load_config_file("configuration/tpos_configuration_file.cfg", log);
   
   if(config_manager.init_okay() != GREEN_FLAG)
   {
     /* add clear up code */
     return 0;
   }

Here's the class with the load function :

#SelectExpand
1class ConfigManagerClass 2{ 3 4 ALLEGRO_CONFIG *cfg; 5 6 int init_okay_flag; 7 8 public: 9 10 ConfigManagerClass() : cfg(NULL) 11 { 12 13 14 } 15 16 void load_config_file(const char *filename, Rabbit_Log& log) 17 { 18 cfg = al_load_config_file(filename); 19 20 log.write_message_number(); 21 log.write_string("About to load configuration file ("); 22 log.write_string(filename); 23 log.write_string(")."); 24 log.end_message(); 25 26 log.write_message_number(); 27 if( cfg == NULL ) 28 { 29 log.write_string("Failed to load it."); 30 init_okay_flag = RED_FLAG; 31 32 } 33 else 34 { 35 log.write_string("Loaded it successfully."); 36 init_okay_flag = GREEN_FLAG; 37 38 } 39 log.end_message(); 40 41 } 42 43 int get_integer(const char *key, int *integer_to_get) 44 { 45 const char *string = NULL; 46 47 string = al_get_config_value( cfg, NULL, "p1"); 48 49 if(string == NULL) 50 { 51 return ERROR_1; 52 } 53 else 54 { 55 return atoi(string); 56 } 57 58 } 59 60 61 int init_okay() 62 { 63 return init_okay_flag; 64 } 65 66};

Here's the log file :

MESSAGE :    0   : Log file opened
MESSAGE :    1   : Initialised Allegro System.
MESSAGE :    2   : Initialised true type font addon.
MESSAGE :    3   : Finished initialising InitialisationClass.
MESSAGE :    4   : Initialising Primes_Manager class.
MESSAGE :    5   : Initialised PhysFS successfully.
MESSAGE :    6   : Initialising Display.
MESSAGE :    7   : Unable to load font SIRCLIVE.ttf.
MESSAGE :    8   : Successfully initialised the Display.
MESSAGE :    9   : About to load configuration file (configuration/tpos_configuration_file.cfg).
MESSAGE :   10   : Failed to load it.

Here's my directory structure (for some evidence so you've something to go on) :
https://www.allegro.cc/files/attachment/609444
{"name":"609444","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/c\/fc0677891bf25af8316192bc2ff131f7.png","w":400,"h":256,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/c\/fc0677891bf25af8316192bc2ff131f7"}609444

{"name":"609445","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/d\/2d4eeb6dbf45968c2460959871e262c4.png","w":400,"h":149,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/d\/2d4eeb6dbf45968c2460959871e262c4"}609445

Any allegro code detectives fancy helping me work out why the cfg file won't load??

Chris Katko

Windows uses

folder\myfoler

*NIX uses:

folder/subfolder

So for windows you would write "folder\\myfolder" in the c string (two \\ = one because you're escaping the first backslash, IIRC)

William Labbett

Cheers Chris :)

Edgar Reynaldo

It's Allegro he's passing the string to, and it understands both separators I believe. Windows does too. *nix is case-sensitive, but that doesn't look like the problem either.

You can try posting your cfg file and we can look at it and try loading it ourselves, because your tpos_001 exe is in the directory above your config file, and so it looks like it should work. Oh yeah, please stop hiding your file name extensions, and attach the full size image next time, it's too hard to read.

Chris Katko

It's Allegro he's passing the string to, and it understands both separators I believe. Windows does too. *nix is case-sensitive, but that doesn't look like the problem either.

You sure about that? I'm pretty sure I've had (back)slashes, and "./subdirectory/file" vs /subdirectory/file" (no dot) both cause me problems in A4 and A5 before.

Otherwise, why would this exist?

char *fix_filename_slashes(char *path);

RPG Hacker

I always use forward slahes on Windows and never had problems with this before. Most native Windows C and C++ functions should treat / and \\ equally for pathes.

I'm pretty sure I've had (back)slashes, and "./subdirectory/file" vs /subdirectory/file" (no dot) both cause me problems in A4 and A5 before.

The problem here, I believe, is that any path starting with a / is interpreted as an absolute path on Unix. Using "subdirectory/file" should work on all systems and represent a relative path.

Thread #615390. Printed from Allegro.cc