The following commit has been merged in the trunk-ups branch:
commit 5083e0c4622020bf87d4a66ada4ec3e621d5c49c
Author: gentildemon <[EMAIL PROTECTED]>
Date:   Tue Aug 26 10:58:38 2008 +0000

    task #5918 - Implements command-line option --reset-config that removes the 
personal config file (~/.config/wormux/config.xml)
    
    Kurosu, could you check it works under Windows ? I'm not sure unlink() is 
working under Win32.
    
    
    
    git-svn-id: svn+ssh://svn.gna.org/svn/wormux/[EMAIL PROTECTED] 
30ef787d-52ff-0310-b286-e08351bb7647

diff --git a/src/game/config.cpp b/src/game/config.cpp
index 5636dab..bac5908 100644
--- a/src/game/config.cpp
+++ b/src/game/config.cpp
@@ -245,21 +245,40 @@ Config::Config():
   resource_manager.AddDataPath(dir + PATH_SEPARATOR);
 }
 
-bool Config::MkdirChatLogDir()
+bool Config::MkdirChatLogDir() const
 {
   return CreateFolder(chat_log_dir);
 }
 
-bool Config::MkdirPersonalConfigDir()
+bool Config::MkdirPersonalConfigDir() const
 {
   return CreateFolder(personal_config_dir);
 }
 
-bool Config::MkdirPersonalDataDir()
+bool Config::MkdirPersonalDataDir() const
 {
   return CreateFolder(personal_data_dir);
 }
 
+bool Config::RemovePersonalConfigFile() const
+{
+  std::string personal_config_file = personal_config_dir + FILENAME;
+
+  int r = unlink(personal_config_file.c_str());
+  if (r) {
+    if (errno == -ENOENT) {
+      r = 0;
+    } else {
+      perror((Format("Fail to remove personal config file %s", 
personal_config_file.c_str())).c_str());
+    }
+  }
+
+  if (r)
+    return false;
+
+  return true;
+}
+
 void Config::SetLanguage(const std::string language)
 {
   default_language = language;
@@ -649,8 +668,10 @@ uint Config::GetMaxVolume()
 
 const std::string& Config::GetTtfFilename()
 {
-  if (fonts.find(default_language) == fonts.end()) return ttf_filename;
-  else                                             return 
fonts[default_language];
+  if (fonts.find(default_language) == fonts.end())
+    return ttf_filename;
+  else
+    return fonts[default_language];
 }
 
 void Config::SetNetworkLocalTeams()
diff --git a/src/game/config.h b/src/game/config.h
index fa79e16..44d8ca4 100644
--- a/src/game/config.h
+++ b/src/game/config.h
@@ -154,9 +154,11 @@ public:
   const std::list<ConfigTeam>& AccessNetworkTeamsList() const { return 
network_local_teams; };
 
   // return true if the directory is created
-  bool MkdirPersonalConfigDir();
-  bool MkdirPersonalDataDir();
-  bool MkdirChatLogDir();
+  bool MkdirPersonalConfigDir() const;
+  bool MkdirPersonalDataDir() const;
+  bool MkdirChatLogDir() const;
+
+  bool RemovePersonalConfigFile() const;
 
 protected:
   bool SaveXml(bool save_current_teams);
@@ -231,8 +233,6 @@ private:
   void LoadDefaultValue();
   void LoadXml(const xmlNode* xml);
 
-
-
   /* this is mutable in order to be able to load config on fly when calling
    * GetObjectConfig() witch is not supposed to modify the object itself */
   mutable std::map<std::string, ObjectConfig *> config_set;
diff --git a/src/main.cpp b/src/main.cpp
index 0402fc0..301cd10 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -310,6 +310,26 @@ void DisplayWelcomeMessage()
 #endif
 }
 
+void PrintUsage(const char* cmd_name)
+{
+  printf("usage: \n");
+  printf("%s -h|--help : show this help\n", cmd_name);
+  printf("%s -v|--version : show the version\n", cmd_name);
+  printf("%s -r|--reset-config : reset the configuration to default\n", 
cmd_name);
+  printf("%s -y|--skin-viewer [team] : start the skin viewer (for development 
only)\n", cmd_name);
+  printf("%s [-p|--play] [-g|--game-mode <game_mode>]"
+        " [-i|--internet] [-s|--server] [-c|--client [ip]]\n"
+        " [-l [ip/hostname of index server]]\n"
+#ifdef DEBUG
+        " [-d|--debug <debug_masks>|all]\n"
+#endif
+        , cmd_name);
+#ifdef DEBUG
+  printf("\nWith :\n");
+  printf(" <debug_masks> ::= { action | action_handler | action_handler.menu | 
ai | ai.move | body | body_anim | body.state | bonus | box | camera.follow | 
camera.shake | camera.tracking | character | character.collision | 
character.energy | damage | downloader | explosion | game | game.endofturn | 
game_mode | game.statechange | ghost | grapple.break | grapple.hook | 
grapple.node | ground_generator.element | index_server | jukebox | 
jukebox.cache | jukebox.play | lst_objects | map | map.collision | map.load | 
map.random | menu | mine | mouse | network | network.crc | network.crc_bad | 
network.traffic | network.turn_master | physical | physical.mem | 
physic.compute | physic.fall | physic.move | physic.overlapping | 
physic.pendulum | physic.physic | physic.position | physic.state | physic.sync 
| random | random.get | singleton | socket | sprite | team | test_rectangle | 
weapon | weapon.change | weapon.handposition | weapon.projectile | weapon.shoot 
| widget.border | wind | xml | xml.tree }\n");
+#endif
+}
+
 void ParseArgs(int argc, char * argv[])
 {
   int c;
@@ -326,6 +346,7 @@ void ParseArgs(int argc, char * argv[])
       {"skin-viewer",optional_argument, NULL, 'y'},
       {"game-mode",  required_argument, NULL, 'g'},
       {"debug",      required_argument, NULL, 'd'},
+      {"reset-config", no_argument,     NULL, 'r'},
       {NULL,         no_argument,       NULL,  0 }
     };
 
@@ -335,22 +356,12 @@ void ParseArgs(int argc, char * argv[])
       switch (c)
         {
         case 'h':
-          printf("usage: %s [-h|--help] [-v|--version] [-p|--play]"
-                 " [-i|--internet] [-s|--server] [-c|--client [ip]]\n"
-                 " [-g|--game-mode <game_mode>] [-y|--skin-viewer [team]]"
-#ifdef DEBUG
-                 " [-d|--debug <debug_masks>|all]\n"
-#endif
-                 " [-l [ip/hostname]]\n", argv[0]);
-#ifdef DEBUG
-          printf("\nWith :\n");
-          printf(" <debug_masks> ::= { action | action_handler | 
action_handler.menu | ai | ai.move | body | body_anim | body.state | bonus | 
box | camera.follow | camera.shake | camera.tracking | character | 
character.collision | character.energy | damage | downloader | explosion | game 
| game.endofturn | game_mode | game.statechange | ghost | grapple.break | 
grapple.hook | grapple.node | ground_generator.element | index_server | jukebox 
| jukebox.cache | jukebox.play | lst_objects | map | map.collision | map.load | 
map.random | menu | mine | mouse | network | network.crc | network.crc_bad | 
network.traffic | network.turn_master | physical | physical.mem | 
physic.compute | physic.fall | physic.move | physic.overlapping | 
physic.pendulum | physic.physic | physic.position | physic.state | physic.sync 
| random | random.get | singleton | socket | sprite | team | test_rectangle | 
weapon | weapon.change | weapon.handposition | weapon.projectile | weapon.shoot 
| widget.border | wind | xml | xml.tree }\n");
-#endif
-          exit(0);
+         PrintUsage(argv[0]);
+          exit(EXIT_SUCCESS);
           break;
         case 'v':
           DisplayWelcomeMessage();
-          exit(0);
+          exit(EXIT_SUCCESS);
           break;
         case 'p':
           choice = MainMenu::PLAY;
@@ -397,6 +408,19 @@ void ParseArgs(int argc, char * argv[])
          printf("Game-mode: %s\n", optarg);
          Config::GetInstance()->SetGameMode(optarg);
          break;
+       case 'r':
+         {
+           bool r;
+           r = Config::GetInstance()->RemovePersonalConfigFile();
+           if (!r)
+             exit(EXIT_FAILURE);
+           exit(EXIT_SUCCESS);
+         }
+         break;
+       default:
+         fprintf(stderr, "Unknow option %c", c);
+         PrintUsage(argv[0]);
+         exit(EXIT_FAILURE);
         }
     }
 }

-- 
Wormux PKG

_______________________________________________
Pkg-games-commits mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/pkg-games-commits

Reply via email to