View | Details | Raw Unified | Return to bug 125590
Collapse All | Expand All

(-)games/lordsawar/files/patch-src_game.cpp (-94 / +6 lines)
Lines 1-98 Link Here
1
Index: src/game.cpp
1
Index: src/game.cpp
2
@@ -1115,15 +1115,6 @@
2
@@ -1042,7 +1042,7 @@
3
 int
3
     }
4
 Game::loadHeroTemplates()
4
   else
5
 {
5
     {
6
-  FILE *fileptr = fopen (File::getMiscFile("heronames").c_str(), "r");
6
-      SDL_Delay(250);
7
-  char *line = NULL;
7
+      //SDL_Delay(250);
8
-  size_t len = 0;
9
-  ssize_t read;
10
-  int retval;
11
-  int gender;
12
-  int side;
13
-  size_t bytesread = 0;
14
-  char *tmp;
15
   const Armysetlist* al = Armysetlist::getInstance();
16
   const Army* herotype;
17
 
18
@@ -1131,51 +1122,41 @@
19
   std::vector<const Army*> heroes;
20
   Player *p = Playerlist::getInstance()->getNeutral();
21
   for (unsigned int j = 0; j < al->getSize(p->getArmyset()); j++)
22
-    {
23
+	{
24
       const Army *a = al->getArmy (p->getArmyset(), j);
25
       if (a->isHero())
26
-	heroes.push_back(a);
27
+		heroes.push_back(a);
28
     }
8
     }
29
+ 
30
+  std::ifstream file(File::getMiscFile("heronames").c_str());
31
 
32
-  if (fileptr == NULL)
33
-    return -1;
34
-  while ((read = getline (&line, &len, fileptr)) != -1)
35
-    {
36
-      bytesread = 0;
37
-      retval = sscanf (line, "%d%d%n", &side, &gender, &bytesread);
38
-      if (retval != 2)
39
-	{
40
-	  free (line);
41
-	  return -2;
42
-	}
43
-      while (isspace(line[bytesread]) && line[bytesread] != '\0')
44
-	bytesread++;
45
-      tmp = strchr (&line[bytesread], '\n');
46
-      if (tmp)
47
-	tmp[0] = '\0';
48
-      if (strlen (&line[bytesread]) == 0)
49
-	{
50
-	  free (line);
51
-	  return -3;
52
-	}
53
-      if (side < 0 || side > (int) MAX_PLAYERS)
54
-	{
55
-	  free (line);
56
-	  return -4;
57
+  if (file.good()) {
58
+	std::string buffer, name;
59
+	int side, gender;
60
+
61
+	while (std::getline(file, buffer)) {
62
+	std::istringstream line(buffer);
63
+	if (!(line >> side >> gender >> name))
64
+		return -2;
65
+
66
+	if (side < 0 || side > (int) MAX_PLAYERS)
67
+		return -4;
68
+
69
+	herotype = heroes[rand() % heroes.size()];
70
+	Hero *newhero = new Hero (*herotype, "", NULL);
71
+
72
+	if (gender)
73
+		newhero->setGender(Hero::MALE);
74
+	else
75
+		newhero->setGender(Hero::FEMALE);
76
+
77
+	newhero->setName (name);
78
+    d_herotemplates[side].push_back (newhero);
79
 	}
80
+  } else
81
+		return -1;
82
 
83
-      herotype = heroes[rand() % heroes.size()];
84
-      Hero *newhero = new Hero (*herotype, "", NULL);
85
-      if (gender)
86
-	newhero->setGender(Hero::MALE);
87
-      else
88
-	newhero->setGender(Hero::FEMALE);
89
-      newhero->setName (&line[bytesread]);
90
-      d_herotemplates[side].push_back (newhero);
91
-    }
92
-  if (line)
93
-    free (line);
94
-  fclose (fileptr);
95
+  file.close();
96
   return 0;
97
 }
9
 }
98
 
10
 
(-)games/lordsawar/files/patch-src_herotemplates.cpp (+94 lines)
Line 0 Link Here
1
Index: src/herotemplates.cpp
2
@@ -64,15 +64,6 @@
3
 
4
 int HeroTemplates::loadHeroTemplates()
5
 {
6
-  FILE *fileptr = fopen (File::getMiscFile("heronames").c_str(), "r");
7
-  char *line = NULL;
8
-  size_t len = 0;
9
-  ssize_t read;
10
-  int retval;
11
-  int gender;
12
-  int side;
13
-  size_t bytesread = 0;
14
-  char *tmp;
15
   const Armysetlist* al = Armysetlist::getInstance();
16
   const Army* herotype;
17
 
18
@@ -83,48 +74,37 @@
19
     {
20
       const Army *a = al->getArmy (p->getArmyset(), j);
21
       if (a->isHero())
22
-	heroes.push_back(a);
23
+		heroes.push_back(a);
24
     }
25
+ 
26
+  std::ifstream file(File::getMiscFile("heronames").c_str());
27
 
28
-  if (fileptr == NULL)
29
-    return -1;
30
-  while ((read = getline (&line, &len, fileptr)) != -1)
31
-    {
32
-      bytesread = 0;
33
-      retval = sscanf (line, "%d%d%n", &side, &gender, &bytesread);
34
-      if (retval != 2)
35
-	{
36
-	  free (line);
37
-	  return -2;
38
-	}
39
-      while (isspace(line[bytesread]) && line[bytesread] != '\0')
40
-	bytesread++;
41
-      tmp = strchr (&line[bytesread], '\n');
42
-      if (tmp)
43
-	tmp[0] = '\0';
44
-      if (strlen (&line[bytesread]) == 0)
45
-	{
46
-	  free (line);
47
-	  return -3;
48
-	}
49
-      if (side < 0 || side > (int) MAX_PLAYERS)
50
-	{
51
-	  free (line);
52
-	  return -4;
53
+  if (file.good()) {
54
+	std::string buffer, name;
55
+	int side, gender;
56
+
57
+	while (std::getline(file, buffer)) {
58
+	std::istringstream line(buffer);
59
+	if (!(line >> side >> gender >> name))
60
+		return -2;
61
+
62
+	if (side < 0 || side > (int) MAX_PLAYERS)
63
+		return -4;
64
+
65
+	herotype = heroes[rand() % heroes.size()];
66
+	Hero *newhero = new Hero (*herotype, "", NULL);
67
+
68
+	if (gender)
69
+		newhero->setGender(Hero::MALE);
70
+	else
71
+		newhero->setGender(Hero::FEMALE);
72
+
73
+	newhero->setName (name);
74
+    d_herotemplates[side].push_back (newhero);
75
 	}
76
+  } else
77
+	return -1;
78
 
79
-      herotype = heroes[rand() % heroes.size()];
80
-      Hero *newhero = new Hero (*herotype, "", NULL, true);
81
-      if (gender)
82
-	newhero->setGender(Hero::MALE);
83
-      else
84
-	newhero->setGender(Hero::FEMALE);
85
-      newhero->setName (&line[bytesread]);
86
-      d_herotemplates[side].push_back (newhero);
87
-    }
88
-  if (line)
89
-    free (line);
90
-  fclose (fileptr);
91
+  file.close();
92
   return 0;
93
 }
94
-        
(-)games/lordsawar/Makefile (-3 / +3 lines)
Lines 6-20 Link Here
6
#
6
#
7
7
8
PORTNAME=	lordsawar
8
PORTNAME=	lordsawar
9
PORTVERSION=	0.0.8
9
PORTVERSION=	0.0.9
10
PORTREVISION=	2
11
CATEGORIES=	games
10
CATEGORIES=	games
12
MASTER_SITES=	http://lordsawar.com/
11
MASTER_SITES=	http://lordsawar.com/
13
12
14
MAINTAINER=	spam@rm-rf.kiev.ua
13
MAINTAINER=	spam@rm-rf.kiev.ua
15
COMMENT=	A Warlords II clone
14
COMMENT=	A Warlords II clone
16
15
17
LIB_DEPENDS=	glademm-2.4:${PORTSDIR}/devel/libglademm24
16
LIB_DEPENDS=	glademm-2.4:${PORTSDIR}/devel/libglademm24 \
17
		gnet-2.0:${PORTSDIR}/net/gnet2
18
18
19
USE_GZIP=	yes
19
USE_GZIP=	yes
20
USE_GETTEXT=	yes
20
USE_GETTEXT=	yes
(-)games/lordsawar/distinfo (-3 / +3 lines)
Lines 1-3 Link Here
1
MD5 (lordsawar-0.0.8.tar.gz) = dfe83aea8517d9760d9cd8e268efef8d
1
MD5 (lordsawar-0.0.9.tar.gz) = 4e072bce1fe77f61a97c67d766a64c9e
2
SHA256 (lordsawar-0.0.8.tar.gz) = 9786394b856beeee45fcfe0ca74befed573b5b5f201086f8bc73d3d54a3d28e1
2
SHA256 (lordsawar-0.0.9.tar.gz) = d87cf2c5c51dd169757020ffb679ce5f9b7b102fc792daca327c57fefa1f5fdd
3
SIZE (lordsawar-0.0.8.tar.gz) = 13340263
3
SIZE (lordsawar-0.0.9.tar.gz) = 14364630
(-)games/lordsawar/pkg-plist (-9 / +21 lines)
Lines 1-7 Link Here
1
bin/lordsawar
1
bin/lordsawar
2
bin/lordsawar-army-editor
2
bin/lordsawar-army-editor
3
bin/lordsawar-editor
3
bin/lordsawar-editor
4
bin/lordsawar_server
4
bin/lordsawar-tile-editor
5
share/applications/lordsawar.desktop
5
share/applications/lordsawar.desktop
6
%%DATADIR%%/citynames
6
%%DATADIR%%/citynames
7
%%DATADIR%%/heronames
7
%%DATADIR%%/heronames
Lines 103-108 Link Here
103
%%DATADIR%%/various/editor/button_1x1.png
103
%%DATADIR%%/various/editor/button_1x1.png
104
%%DATADIR%%/various/editor/button_2x2.png
104
%%DATADIR%%/various/editor/button_2x2.png
105
%%DATADIR%%/various/editor/button_3x3.png
105
%%DATADIR%%/various/editor/button_3x3.png
106
%%DATADIR%%/various/editor/button_6x6.png
106
%%DATADIR%%/various/editor/button_castle.png
107
%%DATADIR%%/various/editor/button_castle.png
107
%%DATADIR%%/various/editor/button_erase.png
108
%%DATADIR%%/various/editor/button_erase.png
108
%%DATADIR%%/various/editor/button_blank.png
109
%%DATADIR%%/various/editor/button_blank.png
Lines 113-120 Link Here
113
%%DATADIR%%/various/editor/button_stack.png
114
%%DATADIR%%/various/editor/button_stack.png
114
%%DATADIR%%/various/editor/button_bridge.png
115
%%DATADIR%%/various/editor/button_bridge.png
115
%%DATADIR%%/various/editor/button_port.png
116
%%DATADIR%%/various/editor/button_port.png
117
%%DATADIR%%/various/editor/tilestyles.png
116
%%DATADIR%%/various/arrows.png
118
%%DATADIR%%/various/arrows.png
117
%%DATADIR%%/various/waypoints.png
119
%%DATADIR%%/various/waypoints.png
120
%%DATADIR%%/various/win.png
118
%%DATADIR%%/various/buttons.png
121
%%DATADIR%%/various/buttons.png
119
%%DATADIR%%/various/city_occupied.png
122
%%DATADIR%%/various/city_occupied.png
120
%%DATADIR%%/various/items.png
123
%%DATADIR%%/various/items.png
Lines 125-139 Link Here
125
%%DATADIR%%/various/ruin_1.png
128
%%DATADIR%%/various/ruin_1.png
126
%%DATADIR%%/various/ruin_2.png
129
%%DATADIR%%/various/ruin_2.png
127
%%DATADIR%%/various/splash_screen.jpg
130
%%DATADIR%%/various/splash_screen.jpg
128
%%DATADIR%%/various/about_screen.jpg
129
%%DATADIR%%/various/network_screen.jpg
130
%%DATADIR%%/various/stats.png
131
%%DATADIR%%/various/win.jpg
132
%%DATADIR%%/various/win_mask.png
133
%%DATADIR%%/various/freelords.png
134
%%DATADIR%%/various/lordsawar_logo.png
131
%%DATADIR%%/various/lordsawar_logo.png
135
%%DATADIR%%/various/freelords_editor.png
136
%%DATADIR%%/various/editor.png
137
%%DATADIR%%/various/hero.png
132
%%DATADIR%%/various/hero.png
138
%%DATADIR%%/various/prodshieldset.png
133
%%DATADIR%%/various/prodshieldset.png
139
%%DATADIR%%/various/smallruinedcity.png
134
%%DATADIR%%/various/smallruinedcity.png
Lines 142-147 Link Here
142
%%DATADIR%%/various/smallunexploredstronghold.png
137
%%DATADIR%%/various/smallunexploredstronghold.png
143
%%DATADIR%%/various/smallexploredruin.png
138
%%DATADIR%%/various/smallexploredruin.png
144
%%DATADIR%%/various/smalltemple.png
139
%%DATADIR%%/various/smalltemple.png
140
%%DATADIR%%/various/castle_icon.png
145
%%DATADIR%%/various/cursors.png
141
%%DATADIR%%/various/cursors.png
146
%%DATADIR%%/various/smallupkeep.png
142
%%DATADIR%%/various/smallupkeep.png
147
%%DATADIR%%/various/smallincome.png
143
%%DATADIR%%/various/smallincome.png
Lines 149-154 Link Here
149
%%DATADIR%%/various/smallcity.png
145
%%DATADIR%%/various/smallcity.png
150
%%DATADIR%%/various/diplomacy-small.png
146
%%DATADIR%%/various/diplomacy-small.png
151
%%DATADIR%%/various/diplomacy-large.png
147
%%DATADIR%%/various/diplomacy-large.png
148
%%DATADIR%%/various/parley_offered.png
149
%%DATADIR%%/various/parley_refused.png
150
%%DATADIR%%/various/tileset_icon.png
152
%%DATADIR%%/map/2ndPunic37.map
151
%%DATADIR%%/map/2ndPunic37.map
153
%%DATADIR%%/music/back1.ogg
152
%%DATADIR%%/music/back1.ogg
154
%%DATADIR%%/music/defeat.ogg
153
%%DATADIR%%/music/defeat.ogg
Lines 161-166 Link Here
161
%%DATADIR%%/glade/army-gains-level-dialog.glade
160
%%DATADIR%%/glade/army-gains-level-dialog.glade
162
%%DATADIR%%/glade/army-info-window.glade
161
%%DATADIR%%/glade/army-info-window.glade
163
%%DATADIR%%/glade/stack-info-window.glade
162
%%DATADIR%%/glade/stack-info-window.glade
163
%%DATADIR%%/glade/stack-info-dialog.glade
164
%%DATADIR%%/glade/buy-production-dialog.glade
164
%%DATADIR%%/glade/buy-production-dialog.glade
165
%%DATADIR%%/glade/city-defeated-dialog.glade
165
%%DATADIR%%/glade/city-defeated-dialog.glade
166
%%DATADIR%%/glade/city-looted-dialog.glade
166
%%DATADIR%%/glade/city-looted-dialog.glade
Lines 173-182 Link Here
173
%%DATADIR%%/glade/player-died-dialog.glade
173
%%DATADIR%%/glade/player-died-dialog.glade
174
%%DATADIR%%/glade/game-over-dialog.glade
174
%%DATADIR%%/glade/game-over-dialog.glade
175
%%DATADIR%%/glade/game-preferences-dialog.glade
175
%%DATADIR%%/glade/game-preferences-dialog.glade
176
%%DATADIR%%/glade/about-dialog.glade
177
%%DATADIR%%/glade/game-quit-dialog.glade
176
%%DATADIR%%/glade/game-window.glade
178
%%DATADIR%%/glade/game-window.glade
177
%%DATADIR%%/glade/hero-dialog.glade
179
%%DATADIR%%/glade/hero-dialog.glade
178
%%DATADIR%%/glade/hero-offer-dialog.glade
180
%%DATADIR%%/glade/hero-offer-dialog.glade
179
%%DATADIR%%/glade/surrender-dialog.glade
181
%%DATADIR%%/glade/surrender-dialog.glade
182
%%DATADIR%%/glade/surrender-refused-dialog.glade
180
%%DATADIR%%/glade/sage-dialog.glade
183
%%DATADIR%%/glade/sage-dialog.glade
181
%%DATADIR%%/glade/ruin-rewarded-dialog.glade
184
%%DATADIR%%/glade/ruin-rewarded-dialog.glade
182
%%DATADIR%%/glade/ruin-report-dialog.glade
185
%%DATADIR%%/glade/ruin-report-dialog.glade
Lines 211-225 Link Here
211
%%DATADIR%%/glade/diplomacy-dialog.glade
214
%%DATADIR%%/glade/diplomacy-dialog.glade
212
%%DATADIR%%/glade/treachery-dialog.glade
215
%%DATADIR%%/glade/treachery-dialog.glade
213
%%DATADIR%%/glade/editor/main-window.glade
216
%%DATADIR%%/glade/editor/main-window.glade
217
%%DATADIR%%/glade/editor/tileset-window.glade
214
%%DATADIR%%/glade/editor/signpost-dialog.glade
218
%%DATADIR%%/glade/editor/signpost-dialog.glade
215
%%DATADIR%%/glade/editor/temple-dialog.glade
219
%%DATADIR%%/glade/editor/temple-dialog.glade
220
%%DATADIR%%/glade/editor/reward-dialog.glade
221
%%DATADIR%%/glade/editor/reward-list-dialog.glade
216
%%DATADIR%%/glade/editor/ruin-dialog.glade
222
%%DATADIR%%/glade/editor/ruin-dialog.glade
223
%%DATADIR%%/glade/editor/select-hidden-ruin-dialog.glade
217
%%DATADIR%%/glade/editor/stack-dialog.glade
224
%%DATADIR%%/glade/editor/stack-dialog.glade
218
%%DATADIR%%/glade/editor/select-army-dialog.glade
225
%%DATADIR%%/glade/editor/select-army-dialog.glade
219
%%DATADIR%%/glade/editor/players-dialog.glade
226
%%DATADIR%%/glade/editor/players-dialog.glade
220
%%DATADIR%%/glade/editor/city-dialog.glade
227
%%DATADIR%%/glade/editor/city-dialog.glade
221
%%DATADIR%%/glade/editor/map-info-dialog.glade
228
%%DATADIR%%/glade/editor/map-info-dialog.glade
229
%%DATADIR%%/glade/editor/tileset-info-dialog.glade
222
%%DATADIR%%/glade/editor/new-map-dialog.glade
230
%%DATADIR%%/glade/editor/new-map-dialog.glade
231
%%DATADIR%%/glade/editor/itemlist-dialog.glade
232
%%DATADIR%%/glade/editor/tile-preview-dialog.glade
233
%%DATADIR%%/glade/editor/select-item-dialog.glade
234
%%DATADIR%%/glade/editor/select-reward-dialog.glade
223
%%DATADIR%%/glade/editor/armyset-window.glade
235
%%DATADIR%%/glade/editor/armyset-window.glade
224
%%DATADIR%%/glade/editor/armyset-info-dialog.glade
236
%%DATADIR%%/glade/editor/armyset-info-dialog.glade
225
%%DATADIR%%/shield/default/default.xml
237
%%DATADIR%%/shield/default/default.xml

Return to bug 125590