tFurther tweaks to tstring code - vaccinewars - be a doctor and try to vaccinat… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 1cf917eb25286179db182405ef1ce84a53486e28 | |
parent faf04e561d88902ff47cc6405b90896e096a9184 | |
Author: Ben Webb <[email protected]> | |
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(-) | |
--- | |
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 <[email protected]>\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 [email protected]\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 "" | |
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 *T… | |
/* 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 … | |
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; | |
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,GtkA… | |
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,Gt… | |
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; | |
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); | |
} | |
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; | |
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); | |
+} | |
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__ */ |