tFurther tweaks to tstring code - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 1cf917eb25286179db182405ef1ce84a53486e28
(DIR) parent faf04e561d88902ff47cc6405b90896e096a9184
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Tue, 3 Oct 2000 00:42:06 +0000
Further tweaks to tstring code
Diffstat:
M po/dopewars.pot | 500 ++++++++++++++++----------------
M src/curses_client.c | 63 ++++++++++---------------------
M src/gtk_client.c | 89 ++++++++++---------------------
M src/message.c | 31 +++++++++++++------------------
M src/serverside.c | 44 +++++++++++--------------------
M src/tstring.c | 135 +++++++++++++++++++++++++++++++
M src/tstring.h | 4 ++++
7 files changed, 464 insertions(+), 402 deletions(-)
---
(DIR) diff --git a/po/dopewars.pot b/po/dopewars.pot
t@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-10-02 02:18+0100\n"
+"POT-Creation-Date: 2000-10-02 22:34+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
t@@ -1002,378 +1002,378 @@ msgstr ""
msgid "CLQP"
msgstr ""
-#: src/curses_client.c:372 src/gtk_client.c:822
+#: src/curses_client.c:372 src/gtk_client.c:816
msgid "Where to, dude ? "
msgstr ""
-#: src/curses_client.c:404
+#: src/curses_client.c:403
msgid "You can't get any cash for the following carried %tde :"
msgstr ""
-#: src/curses_client.c:419
+#: src/curses_client.c:416
msgid "What do you want to drop? "
msgstr ""
-#: src/curses_client.c:430
+#: src/curses_client.c:427
msgid "How many do you drop? "
msgstr ""
-#: src/curses_client.c:459 src/curses_client.c:845
+#: src/curses_client.c:456 src/curses_client.c:834
msgid "What do you wish to buy? "
msgstr ""
-#: src/curses_client.c:461 src/curses_client.c:847
+#: src/curses_client.c:458 src/curses_client.c:836
msgid "What do you wish to sell? "
msgstr ""
-#: src/curses_client.c:478
+#: src/curses_client.c:475
#, c-format
msgid "You can afford %d, and can carry %d. "
msgstr ""
-#: src/curses_client.c:481
+#: src/curses_client.c:478
msgid "How many do you buy? "
msgstr ""
-#: src/curses_client.c:489
+#: src/curses_client.c:486
#, c-format
msgid "You have %d. "
msgstr ""
-#: src/curses_client.c:491
+#: src/curses_client.c:488
msgid "How many do you sell? "
msgstr ""
-#: src/curses_client.c:516
+#: src/curses_client.c:512
msgid "Choose an errand to give one of your %tde..."
msgstr ""
-#: src/curses_client.c:524
+#: src/curses_client.c:518
#, c-format
msgid " S>py on another dealer (cost: %s)"
msgstr ""
-#: src/curses_client.c:528
+#: src/curses_client.c:522
#, c-format
msgid " T>ip off the cops to another dealer (cost: %s)"
msgstr ""
-#: src/curses_client.c:531
+#: src/curses_client.c:525
msgid " G>et stuffed"
msgstr ""
-#: src/curses_client.c:534
+#: src/curses_client.c:528
msgid "or C>ontact your spies and receive reports"
msgstr ""
-#: src/curses_client.c:536
+#: src/curses_client.c:530
msgid "or N>o errand ? "
msgstr ""
-#: src/curses_client.c:539
+#: src/curses_client.c:533
msgid "STGCN"
msgstr ""
-#: src/curses_client.c:542
+#: src/curses_client.c:536
msgid "Whom do you want to spy on? "
msgstr ""
-#: src/curses_client.c:547
+#: src/curses_client.c:541
msgid "Whom do you want to tip the cops off to? "
msgstr ""
-#: src/curses_client.c:552
+#: src/curses_client.c:546
msgid " Are you sure? "
msgstr ""
-#: src/curses_client.c:553 src/curses_client.c:571 src/curses_client.c:1736
+#: src/curses_client.c:547 src/curses_client.c:565 src/curses_client.c:1713
msgid "YN"
msgstr ""
-#: src/curses_client.c:569
+#: src/curses_client.c:563
msgid "Are you sure you want to quit? "
msgstr ""
-#: src/curses_client.c:577
+#: src/curses_client.c:571
msgid "New name: "
msgstr ""
-#: src/curses_client.c:633
+#: src/curses_client.c:627
msgid "You have been pushed from the server. Reverting to single player mode."
msgstr ""
-#: src/curses_client.c:643
+#: src/curses_client.c:637
msgid "The server has terminated. Reverting to single player mode."
msgstr ""
-#: src/curses_client.c:658 src/gtk_client.c:340 src/serverside.c:259
+#: src/curses_client.c:652 src/gtk_client.c:339 src/serverside.c:259
#, c-format
msgid "%s joins the game!"
msgstr ""
-#: src/curses_client.c:663 src/gtk_client.c:346
+#: src/curses_client.c:657 src/gtk_client.c:345
#, c-format
msgid "%s has left the game."
msgstr ""
-#: src/curses_client.c:668
+#: src/curses_client.c:662
#, c-format
msgid "%s will now be known as %s."
msgstr ""
-#: src/curses_client.c:692
+#: src/curses_client.c:686
msgid "S U B W A Y"
msgstr ""
-#: src/curses_client.c:735
+#: src/curses_client.c:729
msgid ""
"Unfortunately, somebody else is already using \"your\" name. Please change "
"it."
msgstr ""
-#: src/curses_client.c:756
+#: src/curses_client.c:750
msgid "H I G H S C O R E S"
msgstr ""
-#: src/curses_client.c:814
+#: src/curses_client.c:807
msgid "Will you B>uy, S>ell, or L>eave? "
msgstr ""
-#: src/curses_client.c:819
+#: src/curses_client.c:812
msgid "BSL"
msgstr ""
-#: src/curses_client.c:824
+#: src/curses_client.c:817
msgid "You don't have any %tde to sell!"
msgstr ""
-#: src/curses_client.c:834 src/gtk_client.c:1115
+#: src/curses_client.c:825 src/gtk_client.c:1102
msgid "You'll need more %tde to carry any more %tde!"
msgstr ""
-#: src/curses_client.c:858 src/gtk_client.c:1122
+#: src/curses_client.c:847 src/gtk_client.c:1107
msgid "You don't have enough space to carry that %tde!"
msgstr ""
-#: src/curses_client.c:868 src/gtk_client.c:1129
+#: src/curses_client.c:855 src/gtk_client.c:1111
msgid "You don't have enough cash to buy that %tde!"
msgstr ""
-#: src/curses_client.c:883 src/gtk_client.c:1134
+#: src/curses_client.c:868 src/gtk_client.c:1115
msgid "You don't have any to sell!"
msgstr ""
-#: src/curses_client.c:907
+#: src/curses_client.c:892
msgid "How much money do you pay back? "
msgstr ""
-#: src/curses_client.c:913 src/curses_client.c:943 src/gtk_client.c:1962
+#: src/curses_client.c:898 src/curses_client.c:928 src/gtk_client.c:1943
msgid "You don't have that much money!"
msgstr ""
-#: src/curses_client.c:933
+#: src/curses_client.c:918
msgid "Do you want to D>eposit money, W>ithdraw money, or L>eave ? "
msgstr ""
-#: src/curses_client.c:936
+#: src/curses_client.c:921
msgid "DWL"
msgstr ""
-#: src/curses_client.c:938
+#: src/curses_client.c:923
msgid "How much money? "
msgstr ""
-#: src/curses_client.c:946 src/gtk_client.c:1955
+#: src/curses_client.c:931 src/gtk_client.c:1936
msgid "There isn't that much money in the bank..."
msgstr ""
-#: src/curses_client.c:973
+#: src/curses_client.c:958
msgid "Yes"
msgstr ""
-#: src/curses_client.c:973
+#: src/curses_client.c:958
msgid "No"
msgstr ""
-#: src/curses_client.c:973
+#: src/curses_client.c:958
msgid "Run"
msgstr ""
-#: src/curses_client.c:974 src/gtk_client.c:525
+#: src/curses_client.c:959 src/gtk_client.c:521
msgid "Fight"
msgstr ""
-#: src/curses_client.c:974
+#: src/curses_client.c:959
msgid "Attack"
msgstr ""
-#: src/curses_client.c:974
+#: src/curses_client.c:959
msgid "Evade"
msgstr ""
-#: src/curses_client.c:1043
+#: src/curses_client.c:1028
msgid "Press any key..."
msgstr ""
-#: src/curses_client.c:1175
+#: src/curses_client.c:1160
msgid "Messages"
msgstr ""
-#: src/curses_client.c:1182 src/gtk_client.c:1415
+#: src/curses_client.c:1167 src/gtk_client.c:1396
msgid "Stats"
msgstr ""
-#: src/curses_client.c:1185
+#: src/curses_client.c:1170
#, c-format
msgid "Cash %17s"
msgstr ""
-#: src/curses_client.c:1192
+#: src/curses_client.c:1177
#, c-format
msgid "Health %3d"
msgstr ""
-#: src/curses_client.c:1194
+#: src/curses_client.c:1179
#, c-format
msgid "Bank %17s"
msgstr ""
-#: src/curses_client.c:1198
+#: src/curses_client.c:1183
#, c-format
msgid "Debt %17s"
msgstr ""
-#: src/curses_client.c:1202
+#: src/curses_client.c:1187
#, c-format
msgid "Space %6d"
msgstr ""
-#: src/curses_client.c:1204
+#: src/curses_client.c:1189
msgid "%Tde %3d Space %6d"
msgstr ""
-#: src/curses_client.c:1215
+#: src/curses_client.c:1198
msgid "Trenchcoat"
msgstr ""
-#: src/curses_client.c:1217
+#: src/curses_client.c:1200
msgid "**Stats: Drugs** %Tde"
msgstr ""
-#: src/curses_client.c:1230 src/gtk_client.c:644
+#: src/curses_client.c:1213 src/gtk_client.c:638
msgid "**Stats: Guns** %Tde"
msgstr ""
-#: src/curses_client.c:1257
+#: src/curses_client.c:1239
#, c-format
msgid "Spy reports for %s"
msgstr ""
-#: src/curses_client.c:1260 src/curses_client.c:1265
+#: src/curses_client.c:1242 src/curses_client.c:1246
msgid "%Tde..."
msgstr ""
-#: src/curses_client.c:1287
+#: src/curses_client.c:1267
msgid "No other players are currently logged on!"
msgstr ""
-#: src/curses_client.c:1292
+#: src/curses_client.c:1272
msgid "Players currently logged on:-"
msgstr ""
-#: src/curses_client.c:1441
+#: src/curses_client.c:1420
msgid "Hey dude, what's your name? "
msgstr ""
-#: src/curses_client.c:1476
+#: src/curses_client.c:1455
msgid "Hey dude, the prices of %tde here are:"
msgstr ""
-#: src/curses_client.c:1490
+#: src/curses_client.c:1467
msgid "Will you B>uy"
msgstr ""
-#: src/curses_client.c:1491
+#: src/curses_client.c:1468
msgid ", S>ell"
msgstr ""
-#: src/curses_client.c:1492
+#: src/curses_client.c:1469
msgid ", D>rop"
msgstr ""
-#: src/curses_client.c:1493
+#: src/curses_client.c:1470
msgid ", T>alk, P>age, L>ist"
msgstr ""
-#: src/curses_client.c:1496
+#: src/curses_client.c:1473
msgid ", G>ive"
msgstr ""
-#: src/curses_client.c:1499
+#: src/curses_client.c:1476
msgid ", F>ight"
msgstr ""
-#: src/curses_client.c:1503
+#: src/curses_client.c:1480
msgid ", J>et"
msgstr ""
-#: src/curses_client.c:1505 src/curses_client.c:1520
+#: src/curses_client.c:1482 src/curses_client.c:1497
msgid ", or Q>uit? "
msgstr ""
-#: src/curses_client.c:1513
+#: src/curses_client.c:1490
msgid "Do you "
msgstr ""
-#: src/curses_client.c:1515
+#: src/curses_client.c:1492
msgid "F>ight, "
msgstr ""
-#: src/curses_client.c:1516
+#: src/curses_client.c:1493
msgid "S>tand, "
msgstr ""
-#: src/curses_client.c:1518
+#: src/curses_client.c:1495
msgid "R>un, "
msgstr ""
-#: src/curses_client.c:1519
+#: src/curses_client.c:1496
msgid "D>eal "
msgstr ""
-#: src/curses_client.c:1562
+#: src/curses_client.c:1539
msgid "Connection to server lost! Reverting to single player mode"
msgstr ""
-#: src/curses_client.c:1591
+#: src/curses_client.c:1568
msgid "BSDTPLGFJQ"
msgstr ""
-#: src/curses_client.c:1593
+#: src/curses_client.c:1570
msgid "DRFSQ"
msgstr ""
-#: src/curses_client.c:1621
+#: src/curses_client.c:1598
msgid "List what? P>layers or S>cores? "
msgstr ""
-#: src/curses_client.c:1622
+#: src/curses_client.c:1599
msgid "PS"
msgstr ""
-#: src/curses_client.c:1631
+#: src/curses_client.c:1608
msgid "Whom do you want to page (talk privately to) ? "
msgstr ""
-#: src/curses_client.c:1646
+#: src/curses_client.c:1623
msgid "Talk: "
msgstr ""
-#: src/curses_client.c:1735
+#: src/curses_client.c:1712
msgid "Play again? "
msgstr ""
-#: src/curses_client.c:1747
+#: src/curses_client.c:1724
msgid ""
"No curses client available - rebuild the binary passing the\n"
"--enable-curses-client option to configure, or use a windowed\n"
t@@ -1472,7 +1472,7 @@ msgstr ""
msgid "Inventory"
msgstr ""
-#: src/gtk_client.c:238 src/gtk_client.c:2197 src/gtk_client.c:2578
+#: src/gtk_client.c:238 src/gtk_client.c:2178 src/gtk_client.c:2543
msgid "Close"
msgstr ""
t@@ -1480,199 +1480,199 @@ msgstr ""
msgid "Connection to server lost - switching to single player mode"
msgstr ""
-#: src/gtk_client.c:314
+#: src/gtk_client.c:313
msgid "You have been pushed from the server."
msgstr ""
-#: src/gtk_client.c:319
+#: src/gtk_client.c:318
msgid "The server has terminated."
msgstr ""
-#: src/gtk_client.c:360
+#: src/gtk_client.c:359
msgid "Jetting to %tde"
msgstr ""
-#: src/gtk_client.c:370
+#: src/gtk_client.c:367
#, c-format
msgid "_Spy\t(%s)"
msgstr ""
-#: src/gtk_client.c:374
+#: src/gtk_client.c:371
#, c-format
msgid "_Tipoff\t(%s)"
msgstr ""
-#: src/gtk_client.c:408
+#: src/gtk_client.c:405
msgid "High Scores"
msgstr ""
-#: src/gtk_client.c:442 src/gtk_client.c:1057 src/gtk_client.c:1527
-#: src/gtk_client.c:1872 src/gtk_client.c:2036 src/gtk_client.c:2317
-#: src/gtk_client.c:2484
+#: src/gtk_client.c:439 src/gtk_client.c:1048 src/gtk_client.c:1508
+#: src/gtk_client.c:1853 src/gtk_client.c:2017 src/gtk_client.c:2293
+#: src/gtk_client.c:2449
msgid "OK"
msgstr ""
-#: src/gtk_client.c:552
+#: src/gtk_client.c:548
msgid "_Deal %Tde"
msgstr ""
-#: src/gtk_client.c:558 src/gtk_client.c:1165 src/gtk_client.c:1362
+#: src/gtk_client.c:552 src/gtk_client.c:1146 src/gtk_client.c:1343
msgid "_Fight"
msgstr ""
-#: src/gtk_client.c:561
+#: src/gtk_client.c:555
msgid "_Stand"
msgstr ""
-#: src/gtk_client.c:564 src/gtk_client.c:1164
+#: src/gtk_client.c:558 src/gtk_client.c:1145
msgid "_Run"
msgstr ""
-#: src/gtk_client.c:651
+#: src/gtk_client.c:645
msgid "**Stats: Bitches** %Tde"
msgstr ""
-#: src/gtk_client.c:813
+#: src/gtk_client.c:807
msgid "Jet to location"
msgstr ""
-#: src/gtk_client.c:883
+#: src/gtk_client.c:876
#, c-format
msgid "at %s"
msgstr ""
-#: src/gtk_client.c:888
+#: src/gtk_client.c:881
msgid "You are currently carrying %d %tde"
msgstr ""
-#: src/gtk_client.c:895
+#: src/gtk_client.c:886
#, c-format
msgid "Available space: %d"
msgstr ""
-#: src/gtk_client.c:900
+#: src/gtk_client.c:891
#, c-format
msgid "You can afford %d"
msgstr ""
-#: src/gtk_client.c:949 src/gtk_client.c:1087
+#: src/gtk_client.c:940 src/gtk_client.c:1077
msgid "Buy"
msgstr ""
-#: src/gtk_client.c:950 src/gtk_client.c:1088
+#: src/gtk_client.c:941 src/gtk_client.c:1078
msgid "Sell"
msgstr ""
-#: src/gtk_client.c:951 src/gtk_client.c:1089
+#: src/gtk_client.c:942 src/gtk_client.c:1079
msgid "Drop"
msgstr ""
-#: src/gtk_client.c:1040
+#: src/gtk_client.c:1031
msgid "Buy how many?"
msgstr ""
-#: src/gtk_client.c:1042
+#: src/gtk_client.c:1033
msgid "Sell how many?"
msgstr ""
-#: src/gtk_client.c:1044
+#: src/gtk_client.c:1035
msgid "Drop how many?"
msgstr ""
-#: src/gtk_client.c:1063 src/gtk_client.c:1872 src/gtk_client.c:2047
-#: src/gtk_client.c:2325
+#: src/gtk_client.c:1054 src/gtk_client.c:1853 src/gtk_client.c:2028
+#: src/gtk_client.c:2301
msgid "Cancel"
msgstr ""
-#: src/gtk_client.c:1100
+#: src/gtk_client.c:1090
msgid "Buy %tde"
msgstr ""
-#: src/gtk_client.c:1101
+#: src/gtk_client.c:1091
msgid "Sell %tde"
msgstr ""
-#: src/gtk_client.c:1102
+#: src/gtk_client.c:1092
msgid "Drop %tde"
msgstr ""
-#: src/gtk_client.c:1108
+#: src/gtk_client.c:1097
msgid "You don't have any %tde!"
msgstr ""
-#: src/gtk_client.c:1164 src/gtk_client.c:1873
+#: src/gtk_client.c:1145 src/gtk_client.c:1854
msgid "_Yes"
msgstr ""
-#: src/gtk_client.c:1164 src/gtk_client.c:1873
+#: src/gtk_client.c:1145 src/gtk_client.c:1854
msgid "_No"
msgstr ""
-#: src/gtk_client.c:1165
+#: src/gtk_client.c:1146
msgid "_Attack"
msgstr ""
-#: src/gtk_client.c:1165
+#: src/gtk_client.c:1146
msgid "_Evade"
msgstr ""
-#: src/gtk_client.c:1183
+#: src/gtk_client.c:1164
msgid "Question"
msgstr ""
-#: src/gtk_client.c:1312
+#: src/gtk_client.c:1293
msgid "Space"
msgstr ""
-#: src/gtk_client.c:1317
+#: src/gtk_client.c:1298
msgid "Cash"
msgstr ""
-#: src/gtk_client.c:1322
+#: src/gtk_client.c:1303
msgid "Debt"
msgstr ""
-#: src/gtk_client.c:1327
+#: src/gtk_client.c:1308
msgid "Bank"
msgstr ""
-#: src/gtk_client.c:1342
+#: src/gtk_client.c:1323
msgid "Health"
msgstr ""
-#: src/gtk_client.c:1362
+#: src/gtk_client.c:1343
msgid "_Jet!"
msgstr ""
-#: src/gtk_client.c:1392
+#: src/gtk_client.c:1373
msgid "dopewars"
msgstr ""
-#: src/gtk_client.c:1474
+#: src/gtk_client.c:1455
msgid "Drug Dealing and Research"
msgstr ""
-#: src/gtk_client.c:1475
+#: src/gtk_client.c:1456
msgid "Play Testing"
msgstr ""
-#: src/gtk_client.c:1476
+#: src/gtk_client.c:1457
msgid "Extensive Play Testing"
msgstr ""
-#: src/gtk_client.c:1478
+#: src/gtk_client.c:1459
msgid "Constructive Criticism"
msgstr ""
-#: src/gtk_client.c:1480
+#: src/gtk_client.c:1461
msgid "Unconstructive Criticism"
msgstr ""
-#: src/gtk_client.c:1484
+#: src/gtk_client.c:1465
msgid "About dopewars"
msgstr ""
-#: src/gtk_client.c:1493
+#: src/gtk_client.c:1474
msgid ""
"Based on John E. Dell's old Drug Wars game, dopewars is a simulation of an\n"
"imaginary drug market. dopewars is an All-American game which features\n"
t@@ -1684,151 +1684,151 @@ msgid ""
"have one month of game time to make your fortune.\n"
msgstr ""
-#: src/gtk_client.c:1501
+#: src/gtk_client.c:1482
#, c-format
msgid ""
"Version %s Copyright (C) 1998-2000 Ben Webb ben@bellatrix.pcl.ox.ac.uk\n"
"dopewars is released under the GNU General Public Licence\n"
msgstr ""
-#: src/gtk_client.c:1519
+#: src/gtk_client.c:1500
msgid ""
"\n"
"For information on the command line options, type dopewars -h at your\n"
"Unix prompt. This will display a help screen, listing the available options."
msgstr ""
-#: src/gtk_client.c:1557 src/gtk_client.c:1580
+#: src/gtk_client.c:1538 src/gtk_client.c:1561
#, c-format
msgid "Status: Could not connect (%s)"
msgstr ""
-#: src/gtk_client.c:1568
+#: src/gtk_client.c:1549
#, c-format
msgid "Status: Attempting to contact %s..."
msgstr ""
-#: src/gtk_client.c:1628
+#: src/gtk_client.c:1609
#, c-format
msgid "%d of %d"
msgstr ""
-#: src/gtk_client.c:1692 src/gtk_client.c:1733 src/gtk_client.c:1774
+#: src/gtk_client.c:1673 src/gtk_client.c:1714 src/gtk_client.c:1755
msgid "Server"
msgstr ""
-#: src/gtk_client.c:1693 src/gtk_client.c:1748
+#: src/gtk_client.c:1674 src/gtk_client.c:1729
msgid "Port"
msgstr ""
-#: src/gtk_client.c:1694
+#: src/gtk_client.c:1675
msgid "Version"
msgstr ""
-#: src/gtk_client.c:1695
+#: src/gtk_client.c:1676
msgid "Players"
msgstr ""
-#: src/gtk_client.c:1696
+#: src/gtk_client.c:1677
msgid "Comment"
msgstr ""
-#: src/gtk_client.c:1709
+#: src/gtk_client.c:1690
msgid "New Game"
msgstr ""
-#: src/gtk_client.c:1718
+#: src/gtk_client.c:1699
msgid "Hey dude, what's your _name?"
msgstr ""
-#: src/gtk_client.c:1740
+#: src/gtk_client.c:1721
msgid "Host name"
msgstr ""
-#: src/gtk_client.c:1763 src/gtk_client.c:1826
+#: src/gtk_client.c:1744 src/gtk_client.c:1807
msgid "_Connect"
msgstr ""
-#: src/gtk_client.c:1776 src/gtk_client.c:1797
+#: src/gtk_client.c:1757 src/gtk_client.c:1778
msgid "Single player"
msgstr ""
-#: src/gtk_client.c:1782
+#: src/gtk_client.c:1763
msgid "_Antique mode"
msgstr ""
-#: src/gtk_client.c:1789
+#: src/gtk_client.c:1770
msgid "_Start single-player game"
msgstr ""
-#: src/gtk_client.c:1799 src/gtk_client.c:1837
+#: src/gtk_client.c:1780 src/gtk_client.c:1818
msgid "Metaserver"
msgstr ""
-#: src/gtk_client.c:1816
+#: src/gtk_client.c:1797
msgid "_Update"
msgstr ""
-#: src/gtk_client.c:1841
+#: src/gtk_client.c:1822
msgid "Status: Waiting for user input"
msgstr ""
-#: src/gtk_client.c:1993
+#: src/gtk_client.c:1974
#, c-format
msgid "Cash: %s"
msgstr ""
-#: src/gtk_client.c:2000
+#: src/gtk_client.c:1981
#, c-format
msgid "Debt: %s"
msgstr ""
-#: src/gtk_client.c:2003
+#: src/gtk_client.c:1984
#, c-format
msgid "Bank: %s"
msgstr ""
-#: src/gtk_client.c:2011
+#: src/gtk_client.c:1992
msgid "Pay back:"
msgstr ""
-#: src/gtk_client.c:2014
+#: src/gtk_client.c:1995
msgid "Deposit"
msgstr ""
-#: src/gtk_client.c:2018
+#: src/gtk_client.c:1999
msgid "Withdraw"
msgstr ""
-#: src/gtk_client.c:2042
+#: src/gtk_client.c:2023
msgid "Pay all"
msgstr ""
-#: src/gtk_client.c:2064
+#: src/gtk_client.c:2045
msgid "Player List"
msgstr ""
-#: src/gtk_client.c:2152
+#: src/gtk_client.c:2133
msgid "Talk to player(s)"
msgstr ""
-#: src/gtk_client.c:2174
+#: src/gtk_client.c:2155
msgid "Talk to all players"
msgstr ""
-#: src/gtk_client.c:2178
+#: src/gtk_client.c:2159
msgid "Message:-"
msgstr ""
-#: src/gtk_client.c:2191
+#: src/gtk_client.c:2172
msgid "Send"
msgstr ""
-#: src/gtk_client.c:2283
+#: src/gtk_client.c:2263
msgid "Spy On Player"
msgstr ""
-#: src/gtk_client.c:2285
+#: src/gtk_client.c:2265
msgid ""
"Please choose the player to spy on. Your %tde will\n"
"then offer his services to the player, and if successful,\n"
t@@ -1837,11 +1837,11 @@ msgid ""
"you, so any %tde or %tde that he's carrying may be lost!"
msgstr ""
-#: src/gtk_client.c:2295
+#: src/gtk_client.c:2273
msgid "Tip Off The Cops"
msgstr ""
-#: src/gtk_client.c:2297
+#: src/gtk_client.c:2275
msgid ""
"Please choose the player to tip off the cops to. Your %tde will\n"
"help the cops to attack that player, and then report back to you\n"
t@@ -1849,71 +1849,71 @@ msgid ""
"so any %tde or %tde that he's carrying may be lost!"
msgstr ""
-#: src/gtk_client.c:2339
+#: src/gtk_client.c:2314
msgid "Sack %Tde"
msgstr ""
-#: src/gtk_client.c:2343
+#: src/gtk_client.c:2315
msgid ""
"Are you sure? (Any %tde or %tde carried\n"
"by this %tde may be lost!)"
msgstr ""
-#: src/gtk_client.c:2366
+#: src/gtk_client.c:2335
msgid "Name"
msgstr ""
-#: src/gtk_client.c:2367
+#: src/gtk_client.c:2336
msgid "Price"
msgstr ""
-#: src/gtk_client.c:2368
+#: src/gtk_client.c:2337
msgid "Number"
msgstr ""
-#: src/gtk_client.c:2370
+#: src/gtk_client.c:2339
msgid "_Buy ->"
msgstr ""
-#: src/gtk_client.c:2371
+#: src/gtk_client.c:2340
msgid "<- _Sell"
msgstr ""
-#: src/gtk_client.c:2372
+#: src/gtk_client.c:2341
msgid "_Drop <-"
msgstr ""
-#: src/gtk_client.c:2377
+#: src/gtk_client.c:2346
msgid "%Tde here"
msgstr ""
-#: src/gtk_client.c:2382
+#: src/gtk_client.c:2349
msgid "%Tde carried"
msgstr ""
-#: src/gtk_client.c:2460
+#: src/gtk_client.c:2425
msgid "Change Name"
msgstr ""
-#: src/gtk_client.c:2470
+#: src/gtk_client.c:2435
msgid ""
"Unfortunately, somebody else is already using \"your\" name. Please change "
"it:-"
msgstr ""
-#: src/gtk_client.c:2507
+#: src/gtk_client.c:2472
msgid "**GunShop window title** %Tde"
msgstr ""
-#: src/gtk_client.c:2531
+#: src/gtk_client.c:2496
msgid "Done"
msgstr ""
-#: src/gtk_client.c:2564
+#: src/gtk_client.c:2529
msgid "Spy reports"
msgstr ""
-#: src/gtk_client.c:2630
+#: src/gtk_client.c:2595
msgid ""
"No GTK+ client available - rebuild the binary passing the\n"
"--enable-gtk-client option to configure, or use the curses\n"
t@@ -2135,148 +2135,148 @@ msgstr ""
msgid "(R.I.P.)"
msgstr ""
-#: src/serverside.c:1032
+#: src/serverside.c:1031
#, c-format
msgid "%s: Tipoff from %s"
msgstr ""
-#: src/serverside.c:1050
+#: src/serverside.c:1049
msgid "One of your %tde was spying for %s.^The spy %s!"
msgstr ""
-#: src/serverside.c:1060
+#: src/serverside.c:1056
#, c-format
msgid "Your spy working with %s has been discovered!^The spy %s!"
msgstr ""
-#: src/serverside.c:1083
+#: src/serverside.c:1079
#, c-format
msgid " The lady next to you on the subway said,^ \"%s\"%s"
msgstr ""
-#: src/serverside.c:1086
+#: src/serverside.c:1082
msgid "^ (at least, you -think- that's what she said)"
msgstr ""
-#: src/serverside.c:1088
+#: src/serverside.c:1084
#, c-format
msgid " You hear someone playing %s"
msgstr ""
-#: src/serverside.c:1097 src/serverside.c:1108 src/serverside.c:1119
-#: src/serverside.c:1130
+#: src/serverside.c:1093 src/serverside.c:1102 src/serverside.c:1111
+#: src/serverside.c:1120
msgid "YN^Would you like to visit %tde?"
msgstr ""
-#: src/serverside.c:1143
+#: src/serverside.c:1131
msgid "YN^^Would you like to hire a %tde for %s?"
msgstr ""
-#: src/serverside.c:1158
+#: src/serverside.c:1144
#, c-format
msgid "AE^%s is already here!^Do you Attack, or Evade?"
msgstr ""
-#: src/serverside.c:1480
+#: src/serverside.c:1466
msgid "You were mugged in the subway!"
msgstr ""
-#: src/serverside.c:1491
+#: src/serverside.c:1477
#, c-format
msgid "You meet a friend! He gives you %d %s."
msgstr ""
-#: src/serverside.c:1496
+#: src/serverside.c:1482
#, c-format
msgid "You meet a friend! You give him %d %s."
msgstr ""
-#: src/serverside.c:1505
+#: src/serverside.c:1491
msgid "Sanitized away a RandomOffer"
msgstr ""
-#: src/serverside.c:1510
+#: src/serverside.c:1496
#, c-format
msgid ""
"Police dogs chase you for %d blocks! You dropped some %s! That's a drag, man!"
msgstr ""
-#: src/serverside.c:1526
+#: src/serverside.c:1512
#, c-format
msgid "You find %d %s on a dead dude in the subway!"
msgstr ""
-#: src/serverside.c:1538
+#: src/serverside.c:1524
#, c-format
msgid "Your mama made brownies with some of your %s! They were great!"
msgstr ""
-#: src/serverside.c:1548
+#: src/serverside.c:1534
msgid ""
"YN^There is some weed that smells like paraquat here!^It looks good! Will "
"you smoke it? "
msgstr ""
-#: src/serverside.c:1555
+#: src/serverside.c:1541
#, c-format
msgid "You stopped to %s."
msgstr ""
-#: src/serverside.c:1576
+#: src/serverside.c:1562
#, c-format
msgid "Would you like to buy a bigger trenchcoat for %s?"
msgstr ""
-#: src/serverside.c:1581
+#: src/serverside.c:1567
#, c-format
msgid "YN^Hey dude! I'll help carry your %s for a mere %s. Yes or no?"
msgstr ""
-#: src/serverside.c:1593
+#: src/serverside.c:1579
#, c-format
msgid "YN^Would you like to buy a %s for %s?"
msgstr ""
-#: src/serverside.c:1699 src/serverside.c:1792
+#: src/serverside.c:1685 src/serverside.c:1778
#, c-format
msgid "%s: offer was on behalf of %s"
msgstr ""
-#: src/serverside.c:1702
+#: src/serverside.c:1688
#, c-format
msgid "%s has accepted your %s!^Use the G key to contact your spy."
msgstr ""
-#: src/serverside.c:1748
+#: src/serverside.c:1734
msgid ""
"You hallucinated for three days on the wildest trip you ever imagined!^Then "
"you died because your brain disintegrated!"
msgstr ""
-#: src/serverside.c:1772
+#: src/serverside.c:1758
#, c-format
msgid "Too late - %s has just left!"
msgstr ""
-#: src/serverside.c:1795
+#: src/serverside.c:1781
#, c-format
msgid "%s has rejected your %s!"
msgstr ""
-#: src/serverside.c:1838
+#: src/serverside.c:1824
msgid "YN^Officer %%s spots you dropping %s, and chases you!"
msgstr ""
-#: src/serverside.c:1840
+#: src/serverside.c:1826
msgid ""
"YN^Officer %%s and %%d of his deputies spot you dropping %s, and chase you!"
msgstr ""
-#: src/serverside.c:1999
+#: src/serverside.c:1985
msgid "Player removed due to idle timeout"
msgstr ""
-#: src/serverside.c:2009
+#: src/serverside.c:1995
msgid "Player removed due to connect timeout"
msgstr ""
t@@ -2321,114 +2321,114 @@ msgstr ""
msgid "Do you run, or fight?"
msgstr ""
-#: src/message.c:1051
+#: src/message.c:1050
msgid "pitifully armed"
msgstr ""
-#: src/message.c:1052
+#: src/message.c:1051
msgid "lightly armed"
msgstr ""
-#: src/message.c:1053
+#: src/message.c:1052
msgid "moderately well armed"
msgstr ""
-#: src/message.c:1054
+#: src/message.c:1053
msgid "heavily armed"
msgstr ""
-#: src/message.c:1055
+#: src/message.c:1054
msgid "armed to the teeth"
msgstr ""
-#: src/message.c:1057
+#: src/message.c:1056
msgid "%s arrives with %d %tde, %s!"
msgstr ""
-#: src/message.c:1065
+#: src/message.c:1063
#, c-format
msgid "%s stands and takes it"
msgstr ""
-#: src/message.c:1067
+#: src/message.c:1065
msgid "You stand there like a dummy."
msgstr ""
-#: src/message.c:1072
+#: src/message.c:1070
#, c-format
msgid "%s has got away!"
msgstr ""
-#: src/message.c:1074
+#: src/message.c:1072
msgid "You got away!"
msgstr ""
-#: src/message.c:1079
+#: src/message.c:1077
msgid "Guns reloaded..."
msgstr ""
-#: src/message.c:1084
+#: src/message.c:1082
#, c-format
msgid "%s shoots at %s... and misses!"
msgstr ""
-#: src/message.c:1087
+#: src/message.c:1085
#, c-format
msgid "%s shoots at you... and misses!"
msgstr ""
-#: src/message.c:1090
+#: src/message.c:1088
#, c-format
msgid "You missed %s!"
msgstr ""
-#: src/message.c:1096
+#: src/message.c:1094
#, c-format
msgid "%s shoots %s dead."
msgstr ""
-#: src/message.c:1099
+#: src/message.c:1097
msgid "%s shoots at %s and kills a %tde!"
msgstr ""
-#: src/message.c:1104
+#: src/message.c:1101
#, c-format
msgid "%s shoots at %s."
msgstr ""
-#: src/message.c:1109
+#: src/message.c:1106
#, c-format
msgid "%s wasted you, man! What a drag!"
msgstr ""
-#: src/message.c:1113
+#: src/message.c:1110
msgid "%s shoots at you... and kills a %tde!"
msgstr ""
-#: src/message.c:1118
+#: src/message.c:1114
#, c-format
msgid "%s hits you, man!"
msgstr ""
-#: src/message.c:1122
+#: src/message.c:1118
#, c-format
msgid "You killed %s!"
msgstr ""
-#: src/message.c:1124
+#: src/message.c:1120
msgid "You hit %s, and killed a %tde!"
msgstr ""
-#: src/message.c:1129
+#: src/message.c:1124
#, c-format
msgid "You hit %s!"
msgstr ""
-#: src/message.c:1132
+#: src/message.c:1127
msgid " You loot the body!"
msgstr ""
-#: src/message.c:1135
+#: src/message.c:1130
#, c-format
msgid " (Health: %d)"
msgstr ""
(DIR) diff --git a/src/curses_client.c b/src/curses_client.c
t@@ -395,16 +395,13 @@ static void DropDrugs(Player *Play) {
int i,c,NumDrugs;
GString *text;
gchar *buf;
- gchar *tfmt,**tstr;
attrset(TextAttr);
clear_bottom();
text=g_string_new("");
- tstring_fmt(&tfmt,&tstr,
- _("You can\'t get any cash for the following carried %tde :"),
- Names.Drugs);
- g_string_sprintf(text,tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintf(text,
+ _("You can\'t get any cash for the following carried %tde :"),
+ Names.Drugs);
mvaddstr(16,1,text->str);
NumDrugs=0;
for (i=0;i<NumDrug;i++) {
t@@ -507,16 +504,13 @@ static void GiveErrand(Player *Play) {
gchar *prstr;
GString *text;
Player *To;
- gchar *tfmt,**tstr;
text=g_string_new("");
attrset(TextAttr);
clear_bottom();
y=17;
- tstring_fmt(&tfmt,&tstr,_("Choose an errand to give one of your %tde..."),
- Names.Bitches);
- g_string_sprintf(text,tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintf(text,_("Choose an errand to give one of your %tde..."),
+ Names.Bitches);
mvaddstr(y++,1,text->str);
attrset(PromptAttr);
if (Play->Bitches.Carried>0) {
t@@ -799,7 +793,6 @@ void GunShop(Player *Play) {
/* decisions on to the server for sanity checking and implementation. */
int i,c,c2;
gchar *text,*prstr;
- gchar *tfmt,**tstr;
print_status(Play,0);
attrset(TextAttr);
t@@ -821,20 +814,16 @@ void GunShop(Player *Play) {
if (c=='S' || c=='B') {
clear_line(22);
if (c=='S' && TotalGunsCarried(Play)==0) {
- tstring_fmt(&tfmt,&tstr,_("You don't have any %tde to sell!"),
- Names.Guns);
- text=g_strdup_printf(tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ text=dpg_strdup_printf(_("You don't have any %tde to sell!"),
+ Names.Guns);
mvaddstr(22,(Width-strlen(text))/2,text); g_free(text);
nice_wait();
clear_line(23);
continue;
} else if (c=='B' && TotalGunsCarried(Play)>=Play->Bitches.Carried+2) {
- tstring_fmt(&tfmt,&tstr,
+ text=dpg_strdup_printf(
_("You'll need more %tde to carry any more %tde!"),
Names.Bitches,Names.Guns);
- text=g_strdup_printf(tfmt,tstr[0],tstr[1]);
- tstring_free(tfmt,tstr);
mvaddstr(22,(Width-strlen(text))/2,text); g_free(text);
nice_wait();
clear_line(23);
t@@ -855,20 +844,16 @@ void GunShop(Player *Play) {
if (c=='B') {
if (Gun[c2].Space > Play->CoatSize) {
clear_line(22);
- tstring_fmt(&tfmt,&tstr,_("You don't have enough space to "
- "carry that %tde!"),Names.Gun);
- text=g_strdup_printf(tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ text=dpg_strdup_printf(_("You don't have enough space to "
+ "carry that %tde!"),Names.Gun);
mvaddstr(22,(Width-strlen(text))/2,text); g_free(text);
nice_wait();
clear_line(23);
continue;
} else if (Gun[c2].Price > Play->Cash) {
clear_line(22);
- tstring_fmt(&tfmt,&tstr,_("You don't have enough cash to buy "
- "that %tde!"),Names.Gun);
- text=g_strdup_printf(tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ text=dpg_strdup_printf(_("You don't have enough cash to buy "
+ "that %tde!"),Names.Gun);
mvaddstr(22,(Width-strlen(text))/2,text); g_free(text);
nice_wait();
clear_line(23);
t@@ -1201,10 +1186,8 @@ void print_status(Player *Play,char DispDrug) {
attrset(TitleAttr);
if (WantAntique) g_string_sprintf(text,_("Space %6d"),Play->CoatSize);
else {
- tstring_fmt(&tfmt,&tstr,_("%Tde %3d Space %6d"),Names.Bitches);
- g_string_sprintf(text,tfmt,tstr[0],
- Play->Bitches.Carried,Play->CoatSize);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintf(text,_("%Tde %3d Space %6d"),Names.Bitches,
+ Play->Bitches.Carried,Play->CoatSize);
}
mvaddstr(0,Width-2-strlen(text->str),text->str);
print_location(Location[(int)Play->IsAt].Name);
t@@ -1249,7 +1232,6 @@ void DisplaySpyReports(char *Data,Player *From,Player *To) {
/* Parses details about player "From" from string "Data" and then */
/* displays the lot, drugs and guns. */
gchar *text;
- gchar *tfmt,**tstr;
ReceivePlayerData(To,Data,From);
t@@ -1257,14 +1239,12 @@ void DisplaySpyReports(char *Data,Player *From,Player *To) {
text=g_strdup_printf(_("Spy reports for %s"),GetPlayerName(From));
mvaddstr(17,1,text); g_free(text);
- tstring_fmt(&tfmt,&tstr,_("%Tde..."),Names.Drugs);
- text=g_strdup_printf(tfmt,tstr[0]);
- mvaddstr(19,20,text); g_free(text); tstring_free(tfmt,tstr);
+ text=dpg_strdup_printf(_("%Tde..."),Names.Drugs);
+ mvaddstr(19,20,text); g_free(text);
print_status(From,1); nice_wait();
clear_line(19);
- tstring_fmt(&tfmt,&tstr,_("%Tde..."),Names.Guns);
- text=g_strdup_printf(tfmt,tstr[0]);
- mvaddstr(19,20,text); g_free(text); tstring_free(tfmt,tstr);
+ text=dpg_strdup_printf(_("%Tde..."),Names.Guns);
+ mvaddstr(19,20,text); g_free(text);
print_status(From,0); nice_wait();
print_status(To,1); refresh();
t@@ -1415,7 +1395,6 @@ static void Curses_DoGame(Player *Play) {
char HaveWorthless;
Player *tmp;
struct sigaction sact;
- gchar *tfmt,**tstr;
DisplayMode=DM_NONE;
QuitRequest=FALSE;
t@@ -1473,11 +1452,9 @@ static void Curses_DoGame(Player *Play) {
NumDrugsHere=0;
for (i=0;i<NumDrug;i++) if (Play->Drugs[i].Price>0) NumDrugsHere++;
clear_bottom();
- tstring_fmt(&tfmt,&tstr,_("Hey dude, the prices of %tde here are:"),
- Names.Drugs);
- g_string_sprintf(text,tfmt,tstr[0]);
+ dpg_string_sprintf(text,_("Hey dude, the prices of %tde here are:"),
+ Names.Drugs);
mvaddstr(16,1,text->str);
- tstring_free(tfmt,tstr);
i=-1;
for (c=0;c<NumDrugsHere;c++) {
if ((i=GetNextDrugIndex(i,Play))==-1) break;
(DIR) diff --git a/src/gtk_client.c b/src/gtk_client.c
t@@ -288,7 +288,6 @@ void HandleClientMessage(char *pt,Player *Play) {
gboolean Handled;
GtkWidget *MenuItem;
GSList *list;
- gchar *tfmt,**tstr;
if (ProcessMessage(pt,Play,&From,&AICode,&Code,&Data,FirstClient)==-1) {
return;
t@@ -357,11 +356,9 @@ void HandleClientMessage(char *pt,Player *Play) {
tmp=(Player *)list->data;
tmp->Flags &= ~FIGHTING;
}
- tstring_fmt(&tfmt,&tstr,_("Jetting to %tde"),
- Location[(int)Play->IsAt].Name);
- text=g_strdup_printf(tfmt,tstr[0]);
+ text=dpg_strdup_printf(_("Jetting to %tde"),
+ Location[(int)Play->IsAt].Name);
PrintMessage(text); g_free(text);
- tstring_free(tfmt,tstr);
break;
case C_ENDLIST:
MenuItem=gtk_item_factory_get_widget(ClientData.Menu,
t@@ -514,7 +511,6 @@ static void CreateFightDialog() {
GtkAdjustment *adj;
GtkAccelGroup *accel_group;
gchar *buf;
- gchar *tfmt,**tstr;
FightDialog=dialog=gtk_window_new(GTK_WINDOW_DIALOG);
gtk_signal_connect(GTK_OBJECT(dialog),"delete_event",
t@@ -549,11 +545,9 @@ static void CreateFightDialog() {
gtk_widget_show(hsep);
hbbox=gtk_hbutton_box_new();
- tstring_fmt(&tfmt,&tstr,_("_Deal %Tde"),Names.Drugs);
- buf=g_strdup_printf(tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ buf=dpg_strdup_printf(_("_Deal %Tde"),Names.Drugs);
button=AddFightButton(buf,accel_group,GTK_BOX(hbbox),'D');
- gtk_widget_show(button);
+ gtk_widget_show(button); g_free(buf);
button=AddFightButton(_("_Fight"),accel_group,GTK_BOX(hbbox),'F');
gtk_object_set_data(GTK_OBJECT(dialog),"fight",button);
t@@ -873,7 +867,6 @@ static void UpdateDealDialog() {
GtkAdjustment *spin_adj;
gint DrugInd,CanDrop,CanCarry,CanAfford,MaxDrug;
Player *Play;
- gchar *tfmt,**tstr;
text=g_string_new(NULL);
DrugInd=DealDialog.DrugInd;
t@@ -885,10 +878,8 @@ static void UpdateDealDialog() {
gtk_label_set_text(GTK_LABEL(DealDialog.cost),text->str);
CanDrop=Play->Drugs[DrugInd].Carried;
- tstring_fmt(&tfmt,&tstr,_("You are currently carrying %d %tde"),
- Drug[DrugInd].Name);
- g_string_sprintf(text,tfmt,CanDrop,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintf(text,_("You are currently carrying %d %tde"),
+ Drug[DrugInd].Name,CanDrop);
gtk_label_set_text(GTK_LABEL(DealDialog.carrying),text->str);
CanCarry=Play->CoatSize;
t@@ -1081,7 +1072,6 @@ void DealGuns(GtkWidget *widget,gpointer data) {
gint row,GunInd;
gchar *Action,*Title;
GString *text;
- gchar *tfmt,**tstr;
dialog=gtk_widget_get_ancestor(widget,GTK_TYPE_WINDOW);
if (data==BT_BUY) Action=_("Buy");
t@@ -1097,38 +1087,29 @@ void DealGuns(GtkWidget *widget,gpointer data) {
} else return;
- if (data==BT_BUY) tstring_fmt(&tfmt,&tstr,_("Buy %tde"),Names.Guns);
- else if (data==BT_SELL) tstring_fmt(&tfmt,&tstr,_("Sell %tde"),Names.Guns);
- else tstring_fmt(&tfmt,&tstr,_("Drop %tde"),Names.Guns);
- Title=g_strdup_printf(tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ if (data==BT_BUY) Title=dpg_strdup_printf(_("Buy %tde"),Names.Guns);
+ else if (data==BT_SELL) Title=dpg_strdup_printf(_("Sell %tde"),Names.Guns);
+ else Title=dpg_strdup_printf(_("Drop %tde"),Names.Guns);
+
text=g_string_new("");
if (data!=BT_BUY && TotalGunsCarried(ClientData.Play)==0) {
- tstring_fmt(&tfmt,&tstr,_("You don't have any %tde!"),Names.Guns);
- g_string_sprintf(text,tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintf(text,_("You don't have any %tde!"),Names.Guns);
MessageBox(dialog,Title,text->str,MB_OK);
} else if (data==BT_BUY && TotalGunsCarried(ClientData.Play) >=
ClientData.Play->Bitches.Carried+2) {
- tstring_fmt(&tfmt,&tstr,
- _("You'll need more %tde to carry any more %tde!"),
- Names.Bitches,Names.Guns);
- g_string_sprintf(text,tfmt,tstr[0],tstr[1]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintf(text,
+ _("You'll need more %tde to carry any more %tde!"),
+ Names.Bitches,Names.Guns);
MessageBox(dialog,Title,text->str,MB_OK);
} else if (data==BT_BUY && Gun[GunInd].Space > ClientData.Play->CoatSize) {
- tstring_fmt(&tfmt,&tstr,
- _("You don't have enough space to carry that %tde!"),
- Names.Gun);
- g_string_sprintf(text,tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintf(text,
+ _("You don't have enough space to carry that %tde!"),
+ Names.Gun);
MessageBox(dialog,Title,text->str,MB_OK);
} else if (data==BT_BUY && Gun[GunInd].Price > ClientData.Play->Cash) {
- tstring_fmt(&tfmt,&tstr,
- _("You don't have enough cash to buy that %tde!"),Names.Gun);
- g_string_sprintf(text,tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintf(text,_("You don't have enough cash to buy that %tde!"),
+ Names.Gun);
MessageBox(dialog,Title,text->str,MB_OK);
} else if (data==BT_SELL && ClientData.Play->Guns[GunInd].Carried == 0) {
MessageBox(dialog,Title,_("You don't have any to sell!"),MB_OK);
t@@ -2268,7 +2249,6 @@ void TipOff(GtkWidget *widget,gpointer data) {
void ErrandDialog(gint ErrandType) {
GtkWidget *dialog,*clist,*button,*vbox,*hbbox,*hsep,*label;
gchar *text;
- gchar *tfmt,**tstr;
dialog=gtk_window_new(GTK_WINDOW_DIALOG);
gtk_container_set_border_width(GTK_CONTAINER(dialog),7);
t@@ -2281,26 +2261,22 @@ void ErrandDialog(gint ErrandType) {
if (ErrandType==ET_SPY) {
gtk_window_set_title(GTK_WINDOW(dialog),_("Spy On Player"));
- tstring_fmt(&tfmt,&tstr,
+ text=dpg_strdup_printf(
_("Please choose the player to spy on. Your %tde will\n"
"then offer his services to the player, and if successful,\n"
"you will be able to view the player's stats with the\n"
"\"Get spy reports\" menu. Remember that the %tde will leave\n"
"you, so any %tde or %tde that he's carrying may be lost!"),
Names.Bitch,Names.Bitch,Names.Guns,Names.Drugs);
- text=g_strdup_printf(tfmt,tstr[0],tstr[1],tstr[2],tstr[3]);
- tstring_free(tfmt,tstr);
label=gtk_label_new(text); g_free(text);
} else {
gtk_window_set_title(GTK_WINDOW(dialog),_("Tip Off The Cops"));
- tstring_fmt(&tfmt,&tstr,
+ text=dpg_strdup_printf(
_("Please choose the player to tip off the cops to. Your %tde will\n"
"help the cops to attack that player, and then report back to you\n"
"on the encounter. Remember that the %tde will leave you temporarily,\n"
"so any %tde or %tde that he's carrying may be lost!"),
Names.Bitch,Names.Bitch,Names.Guns,Names.Drugs);
- text=g_strdup_printf(tfmt,tstr[0],tstr[1],tstr[2],tstr[3]);
- tstring_free(tfmt,tstr);
label=gtk_label_new(text); g_free(text);
}
t@@ -2335,16 +2311,10 @@ Names.Bitch,Names.Bitch,Names.Guns,Names.Drugs);
void SackBitch(GtkWidget *widget,gpointer data) {
char *title,*text;
- gchar *tfmt,**tstr;
- tstring_fmt(&tfmt,&tstr,_("Sack %Tde"),Names.Bitch);
- title=g_strdup_printf(tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
- tstring_fmt(&tfmt,&tstr,
- _("Are you sure? (Any %tde or %tde carried\n"
- "by this %tde may be lost!)"),Names.Guns,
- Names.Drugs,Names.Bitch);
- text=g_strdup_printf(tfmt,tstr[0],tstr[1],tstr[2]);
- tstring_free(tfmt,tstr);
+ title=dpg_strdup_printf(_("Sack %Tde"),Names.Bitch);
+ text=dpg_strdup_printf(_("Are you sure? (Any %tde or %tde carried\n"
+ "by this %tde may be lost!)"),Names.Guns,
+ Names.Drugs,Names.Bitch);
if (MessageBox(ClientData.window,title,text,MB_YES|MB_NO)==MB_YES) {
SendClientMessage(ClientData.Play,C_NONE,C_SACKBITCH,NULL,NULL);
}
t@@ -2361,7 +2331,6 @@ void CreateInventory(GtkWidget *hbox,gchar *Objects,GtkAccelGroup *accel_group,
gchar *titles[2][2];
gchar *button_text[3];
gpointer button_type[3] = { BT_BUY, BT_SELL, BT_DROP };
- gchar *tfmt,**tstr;
titles[0][0]=titles[1][0]=_("Name");
titles[0][1]=_("Price");
t@@ -2374,14 +2343,10 @@ void CreateInventory(GtkWidget *hbox,gchar *Objects,GtkAccelGroup *accel_group,
text=g_string_new("");
if (CreateHere) {
- tstring_fmt(&tfmt,&tstr,_("%Tde here"),Objects);
- g_string_sprintf(text,tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintf(text,_("%Tde here"),Objects);
widgets->HereFrame=frame[0]=gtk_frame_new(text->str);
}
- tstring_fmt(&tfmt,&tstr,_("%Tde carried"),Objects);
- g_string_sprintf(text,tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintf(text,_("%Tde carried"),Objects);
widgets->CarriedFrame=frame[1]=gtk_frame_new(text->str);
widgets->HereList=widgets->CarriedList=NULL;
(DIR) diff --git a/src/message.c b/src/message.c
t@@ -1045,7 +1045,6 @@ void FormatFightMessage(Player *To,GString *text,
int Bitches,int BitchesKilled,int ArmPercent,
gchar FightPoint,gboolean Loot) {
gchar *Armament;
- gchar *tfmt,**tstr;
switch(FightPoint) {
case F_ARRIVED:
Armament= ArmPercent<10 ? _("pitifully armed") :
t@@ -1054,10 +1053,9 @@ void FormatFightMessage(Player *To,GString *text,
ArmPercent<80 ? _("heavily armed") :
_("armed to the teeth");
if (DefendName[0]) {
- tstring_fmt(&tfmt,&tstr,_("%s arrives with %d %tde, %s!"),
- Names.Bitches);
- g_string_sprintfa(text,tfmt,DefendName,Bitches,tstr[0],Armament);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintfa(text,_("%s arrives with %d %tde, %s!"),
+ Names.Bitches,
+ DefendName,Bitches,Armament);
}
break;
case F_STAND:
t@@ -1096,10 +1094,9 @@ void FormatFightMessage(Player *To,GString *text,
g_string_sprintfa(text,_("%s shoots %s dead."),
AttackName,DefendName);
} else if (BitchesKilled) {
- tstring_fmt(&tfmt,&tstr,_("%s shoots at %s and kills a %tde!"),
- Names.Bitch);
- g_string_sprintfa(text,tfmt,AttackName,DefendName,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintfa(text,_("%s shoots at %s and kills a %tde!"),
+ Names.Bitch,
+ AttackName,DefendName);
} else {
g_string_sprintfa(text,_("%s shoots at %s."),
AttackName,DefendName);
t@@ -1109,11 +1106,10 @@ void FormatFightMessage(Player *To,GString *text,
g_string_sprintfa(text,_("%s wasted you, man! What a drag!"),
AttackName);
} else if (BitchesKilled) {
- tstring_fmt(&tfmt,&tstr,
- _("%s shoots at you... and kills a %tde!"),
- Names.Bitch);
- g_string_sprintfa(text,tfmt,AttackName,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintfa(text,
+ _("%s shoots at you... and kills a %tde!"),
+ Names.Bitch,
+ AttackName);
} else {
g_string_sprintfa(text,_("%s hits you, man!"),AttackName);
}
t@@ -1121,10 +1117,9 @@ void FormatFightMessage(Player *To,GString *text,
if (Health==0 && Bitches==0) {
g_string_sprintfa(text,_("You killed %s!"),DefendName);
} else if (BitchesKilled) {
- tstring_fmt(&tfmt,&tstr,_("You hit %s, and killed a %tde!"),
- Names.Bitch);
- g_string_sprintfa(text,tfmt,DefendName,tstr[0]);
- tstring_free(tfmt,tstr);
+ dpg_string_sprintfa(text,_("You hit %s, and killed a %tde!"),
+ Names.Bitch,
+ DefendName);
} else {
g_string_sprintfa(text,_("You hit %s!"),DefendName);
}
(DIR) diff --git a/src/serverside.c b/src/serverside.c
t@@ -1013,7 +1013,6 @@ void SendEvent(Player *To) {
Player *Play;
GSList *list;
gchar *prstr;
- gchar *tfmt,**tstr;
if (!To) return;
if (To->EventNum==E_MAX) To->EventNum=E_NONE;
t@@ -1046,13 +1045,10 @@ void SendEvent(Player *To) {
brandom(0,100)<10+To->SpyList.Data[i].Turns) {
if (TotalGunsCarried(To) > 0) j=brandom(0,NUMDISCOVER);
else j=brandom(0,NUMDISCOVER-1);
- tstring_fmt(&tfmt,&tstr,
- _("One of your %tde was spying for %s."
- "^The spy %s!"),Names.Bitches);
- text=g_strdup_printf(tfmt,tstr[0],
- GetPlayerName(To->SpyList.Data[i].Play),
- _(Discover[j]));
- tstring_free(tfmt,tstr);
+ text=dpg_strdup_printf(
+ _("One of your %tde was spying for %s.^The spy %s!"),
+ Names.Bitches,
+ GetPlayerName(To->SpyList.Data[i].Play),_(Discover[j]));
if (j!=DEFECT) LoseBitch(To,NULL,NULL);
SendPlayerData(To);
SendPrintMessage(NULL,C_NONE,To,text);
t@@ -1094,10 +1090,8 @@ void SendEvent(Player *To) {
break;
case E_LOANSHARK:
if (To->IsAt+1==LoanSharkLoc && To->Debt>0) {
- tstring_fmt(&tfmt,&tstr,_("YN^Would you like to visit %tde?"),
- Names.LoanSharkName);
- text=g_strdup_printf(tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ text=dpg_strdup_printf(_("YN^Would you like to visit %tde?"),
+ Names.LoanSharkName);
SendQuestion(NULL,C_ASKLOAN,To,text);
g_free(text);
return;
t@@ -1105,10 +1099,8 @@ void SendEvent(Player *To) {
break;
case E_BANK:
if (To->IsAt+1==BankLoc) {
- tstring_fmt(&tfmt,&tstr,_("YN^Would you like to visit %tde?"),
- Names.BankName);
- text=g_strdup_printf(tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ text=dpg_strdup_printf(_("YN^Would you like to visit %tde?"),
+ Names.BankName);
SendQuestion(NULL,C_ASKBANK,To,text);
g_free(text);
return;
t@@ -1116,10 +1108,8 @@ void SendEvent(Player *To) {
break;
case E_GUNSHOP:
if (To->IsAt+1==GunShopLoc && !Sanitized && !WantAntique) {
- tstring_fmt(&tfmt,&tstr,_("YN^Would you like to visit %tde?"),
- Names.GunShopName);
- text=g_strdup_printf(tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ text=dpg_strdup_printf(_("YN^Would you like to visit %tde?"),
+ Names.GunShopName);
SendQuestion(NULL,C_ASKGUNSHOP,To,text);
g_free(text);
return;
t@@ -1127,10 +1117,8 @@ void SendEvent(Player *To) {
break;
case E_ROUGHPUB:
if (To->IsAt+1==RoughPubLoc && !WantAntique) {
- tstring_fmt(&tfmt,&tstr,_("YN^Would you like to visit %tde?"),
- Names.RoughPubName);
- text=g_strdup_printf(tfmt,tstr[0]);
- tstring_free(tfmt,tstr);
+ text=dpg_strdup_printf(_("YN^Would you like to visit %tde?"),
+ Names.RoughPubName);
SendQuestion(NULL,C_ASKPUB,To,text);
g_free(text);
return;
t@@ -1139,12 +1127,10 @@ void SendEvent(Player *To) {
case E_HIREBITCH:
if (To->IsAt+1==RoughPubLoc && !WantAntique) {
To->Bitches.Price=brandom(Bitch.MinPrice,Bitch.MaxPrice);
- tstring_fmt(&tfmt,&tstr,
+ text=g_strdup_printf(
_("YN^^Would you like to hire a %tde for %s?"),
- Names.Bitch);
- text=g_strdup_printf(tfmt,tstr[0],
- prstr=FormatPrice(To->Bitches.Price));
- tstring_free(tfmt,tstr);
+ Names.Bitch,
+ prstr=FormatPrice(To->Bitches.Price));
SendQuestion(NULL,C_ASKBITCH,To,text);
g_free(text); g_free(prstr);
return;
(DIR) diff --git a/src/tstring.c b/src/tstring.c
t@@ -108,3 +108,138 @@ void tstring_free(gchar *tformat,gchar **tstrings) {
for (pt=tstrings;*pt;pt++) g_free(*pt);
g_free(tstrings);
}
+
+void GetNextFormat(int Index,gchar *str,int *StartPos,
+ int *EndPos,int *ArgNum,char *Code,gboolean *Caps) {
+ int anum;
+ *StartPos=*EndPos=*ArgNum=0;
+ Code[0]=0;
+ anum=0;
+ while (str[Index]) {
+ if (str[Index]=='%') {
+ *StartPos=*EndPos=Index++;
+ while (str[Index]>='0' && str[Index]<='9') {
+ anum=anum*10+str[Index]-'0';
+ Index++;
+ }
+ if (str[Index]=='$') {
+ *EndPos=Index++; *ArgNum=anum;
+ }
+ if ((str[Index]=='T' || str[Index]=='t') && Index+2<strlen(str)) {
+ *Caps=(str[Index]=='T');
+ Code[0]=str[Index+1];
+ Code[1]=str[Index+2];
+ Code[2]=0;
+ *EndPos=Index+2;
+ }
+ return;
+ } else Index++;
+ }
+}
+
+void GetNextTString(gchar *str,int index,gchar *Code,gboolean *Caps,
+ int *NumArg,int *StartPos,int *EndPos) {
+ int i;
+ *StartPos=*EndPos=0;
+ i=index;
+ while (str[i]) {
+ if (str[i]=='%') {
+ i++;
+ if ((str[i]=='T' || str[i]=='t')
+ && i+2<strlen(str)) {
+ (*NumArg)++;
+ *StartPos=i-1;
+ *Caps = (str[i]=='T');
+ Code[0]=str[i+1];
+ Code[1]=str[i+2];
+ Code[2]='\0';
+ i+=3;
+ *EndPos=i;
+ return;
+ }
+ } else i++;
+ }
+}
+
+int SkipNextTString(gchar *str,int index) {
+ gchar Code[3];
+ gboolean Caps;
+ int NumArg,StartPos,EndPos;
+ GetNextTString(str,index,Code,&Caps,&NumArg,&StartPos,&EndPos);
+ return EndPos;
+}
+
+void SubstNextTString(GString *string,int *NumArg,GPtrArray *strs) {
+ gchar Code[3];
+ gboolean Caps;
+ int StartPos,EndPos;
+ gchar *str,*tstr;
+
+ GetNextTString(string->str,0,Code,&Caps,NumArg,&StartPos,&EndPos);
+ if (EndPos!=0 && *NumArg>=1 && *NumArg<=strs->len) {
+ str=(gchar *)g_ptr_array_index(strs,*NumArg-1);
+ tstr=GetTranslatedString(str,Code,Caps);
+ g_string_erase(string,StartPos,EndPos-StartPos);
+ g_string_insert(string,StartPos,tstr);
+ g_free(tstr);
+ }
+}
+
+gchar *HandleTFmt(gchar *format, va_list args) {
+ GString *string;
+ gchar *retstr;
+ GPtrArray *tstrs;
+ int i,numtstr,NumArg;
+
+ string=g_string_new(format);
+ tstrs=g_ptr_array_new();
+ i=numtstr=0;
+ while (1) {
+ i=SkipNextTString(string->str,i);
+ if (i!=0) numtstr++; else break;
+ }
+ for (i=0;i<numtstr;i++) {
+ g_ptr_array_add(tstrs,(gpointer)va_arg(args,char *));
+ }
+ NumArg=0;
+ for (i=0;i<numtstr;i++) {
+ SubstNextTString(string,&NumArg,tstrs);
+ }
+ retstr=string->str;
+ g_ptr_array_free(tstrs,FALSE);
+ g_string_free(string,FALSE);
+ return retstr;
+}
+
+gchar *dpg_strdup_printf(gchar *format, ...) {
+ va_list ap;
+ gchar *newfmt,*retstr;
+ va_start(ap,format);
+ newfmt=HandleTFmt(format,ap);
+ retstr=g_strdup_vprintf(newfmt,ap);
+ g_free(newfmt);
+ va_end(ap);
+ return retstr;
+}
+
+void dpg_string_sprintf(GString *string, gchar *format, ...) {
+ va_list ap;
+ gchar *newfmt,*retstr;
+ va_start(ap,format);
+ newfmt=HandleTFmt(format,ap);
+ retstr=g_strdup_vprintf(newfmt,ap);
+ g_string_assign(string,retstr);
+ g_free(newfmt); g_free(retstr);
+ va_end(ap);
+}
+
+void dpg_string_sprintfa(GString *string, gchar *format, ...) {
+ va_list ap;
+ gchar *newfmt,*retstr;
+ va_start(ap,format);
+ newfmt=HandleTFmt(format,ap);
+ retstr=g_strdup_vprintf(newfmt,ap);
+ g_string_append(string,retstr);
+ g_free(newfmt); g_free(retstr);
+ va_end(ap);
+}
(DIR) diff --git a/src/tstring.h b/src/tstring.h
t@@ -30,4 +30,8 @@
void tstring_fmt(gchar **tformat,gchar ***tstrings,char *OrigFormat, ...);
void tstring_free(gchar *tformat,gchar **tstrings);
+gchar *dpg_strdup_printf(gchar *format, ...);
+void dpg_string_sprintf(GString *string, gchar *format, ...);
+void dpg_string_sprintfa(GString *string, gchar *format, ...);
+
#endif /* __TSTRING_H__ */