tDon't use deprecated glib functions - 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 b6fafc5ac33d990ad0fe3e1a86214d4c908ea9fb (DIR) parent 095cd8e73f65905c97841c5ddc2fe5fcff7bf3ac (HTM) Author: Ben Webb <ben@salilab.org> Date: Sat, 24 Oct 2020 23:23:36 -0700 Don't use deprecated glib functions Diffstat: M src/curses_client/curses_client.c | 64 ++++++++++++++++---------------- M src/dopewars.c | 8 ++++---- M src/error.c | 2 +- M src/gui_client/gtk_client.c | 58 +++++++++++++++--------------- M src/log.c | 2 +- M src/message.c | 91 ++++++++++++++++--------------- M src/network.c | 20 ++++++++++---------- M src/serverside.c | 38 ++++++++++++++++---------------- M src/sound.c | 2 +- M src/tstring.c | 14 +++++++------- M src/tstring.h | 4 ++-- 11 files changed, 152 insertions(+), 151 deletions(-) --- (DIR) diff --git a/src/curses_client/curses_client.c b/src/curses_client/curses_client.c t@@ -294,7 +294,7 @@ void display_intro(void) "possible (and stay alive)!")); mvaddcentstr(8, _("You have one month of game time to make your fortune.")); - g_string_sprintf(text, _("Version %-8s Copyright (C) 1998-2015 Ben Webb " + g_string_printf(text, _("Version %-8s Copyright (C) 1998-2015 Ben Webb " "benwebb@users.sf.net"), VERSION); mvaddcentstr(10, text->str); g_string_assign(text, _("dopewars is released under the GNU " t@@ -434,23 +434,23 @@ static gboolean SelectServerFromMetaServer(Player *Play, GString *errstr) attrset(TextAttr); clear_bottom(); /* Printout of metaserver information in curses client */ - g_string_sprintf(text, _("Server : %s"), ThisServer->Name); + g_string_printf(text, _("Server : %s"), ThisServer->Name); mvaddstr(top + 1, 1, text->str); - g_string_sprintf(text, _("Port : %d"), ThisServer->Port); + g_string_printf(text, _("Port : %d"), ThisServer->Port); mvaddstr(top + 2, 1, text->str); - g_string_sprintf(text, _("Version : %s"), ThisServer->Version); + g_string_printf(text, _("Version : %s"), ThisServer->Version); mvaddstr(top + 2, 40, text->str); if (ThisServer->CurPlayers == -1) { - g_string_sprintf(text, _("Players: -unknown- (maximum %d)"), + g_string_printf(text, _("Players: -unknown- (maximum %d)"), ThisServer->MaxPlayers); } else { - g_string_sprintf(text, _("Players: %d (maximum %d)"), + g_string_printf(text, _("Players: %d (maximum %d)"), ThisServer->CurPlayers, ThisServer->MaxPlayers); } mvaddstr(top + 3, 1, text->str); - g_string_sprintf(text, _("Up since : %s"), ThisServer->UpSince); + g_string_printf(text, _("Up since : %s"), ThisServer->UpSince); mvaddstr(top + 3, 40, text->str); - g_string_sprintf(text, _("Comment: %s"), ThisServer->Comment); + g_string_printf(text, _("Comment: %s"), ThisServer->Comment); mvaddstr(top + 4, 1, text->str); attrset(PromptAttr); mvaddstr(top + 5, 1, t@@ -513,14 +513,14 @@ static void DisplayConnectStatus(NetworkBuffer *netbuf, case NBS_SOCKSCONNECT: switch (sockstat) { case NBSS_METHODS: - g_string_sprintf(text, _("Connected to SOCKS server %s..."), + g_string_printf(text, _("Connected to SOCKS server %s..."), Socks.name); break; case NBSS_USERPASSWD: g_string_assign(text, _("Authenticating with SOCKS server")); break; case NBSS_CONNECT: - g_string_sprintf(text, _("Asking SOCKS for connect to %s..."), + g_string_printf(text, _("Asking SOCKS for connect to %s..."), ServerName); break; } t@@ -813,11 +813,11 @@ static gboolean jet(Player *Play, gboolean AllowReturn) do { c = bgetch(); if (c >= '1' && c < '1' + NumLocation) { - dpg_string_sprintf(str, _("%/Location display/%tde"), + dpg_string_printf(str, _("%/Location display/%tde"), Location[c - '1'].Name); addstr(str->str); if (Play->IsAt != c - '1') { - g_string_sprintf(str, "%d", c - '1'); + g_string_printf(str, "%d", c - '1'); DisplayMode = DM_NONE; SendClientMessage(Play, C_NONE, C_REQUESTJET, NULL, str->str); } else { t@@ -846,7 +846,7 @@ static void DropDrugs(Player *Play) attrset(TextAttr); clear_bottom(); text = g_string_new(""); - dpg_string_sprintf(text, + dpg_string_printf(text, /* List of drugs that you can drop (%tde = "drugs" by * default) */ _("You can\'t get any cash for the following " t@@ -855,7 +855,7 @@ static void DropDrugs(Player *Play) NumDrugs = 0; for (i = 0; i < NumDrug; i++) { if (Play->Drugs[i].Carried > 0 && Play->Drugs[i].Price == 0) { - g_string_sprintf(text, "%c. %-10s %-8d", NumDrugs + 'A', + g_string_printf(text, "%c. %-10s %-8d", NumDrugs + 'A', Drug[i].Name, Play->Drugs[i].Carried); mvaddstr(top + NumDrugs / 3, (NumDrugs % 3) * 25 + 4, text->str); NumDrugs++; t@@ -877,7 +877,7 @@ static void DropDrugs(Player *Play) num = atoi(buf); g_free(buf); if (num > 0) { - g_string_sprintf(text, "drug^%d^%d", i, -num); + g_string_printf(text, "drug^%d^%d", i, -num); SendClientMessage(Play, C_NONE, C_BUYOBJECT, NULL, text->str); } } t@@ -979,17 +979,17 @@ static void GiveErrand(Player *Play) /* Prompt for sending your bitches out to spy etc. (%tde = "bitches" by * default) */ - dpg_string_sprintf(text, + dpg_string_printf(text, _("Choose an errand to give one of your %tde..."), Names.Bitches); mvaddstr(y++, 1, text->str); attrset(PromptAttr); if (Play->Bitches.Carried > 0) { - dpg_string_sprintf(text, + dpg_string_printf(text, _(" S>py on another dealer " "(cost: %P)"), Prices.Spy); mvaddstr(y++, 2, text->str); - dpg_string_sprintf(text, + dpg_string_printf(text, _(" T>ip off the cops to another dealer " "(cost: %P)"), Prices.Tipoff); mvaddstr(y++, 2, text->str); t@@ -1976,40 +1976,40 @@ void print_status(Player *Play, gboolean DispDrug) /* Display of the player's cash in the stats window (careful to keep the * formatting if you change the length of the "Cash" word) */ - dpg_string_sprintf(text, _("Cash %17P"), Play->Cash); + dpg_string_printf(text, _("Cash %17P"), Play->Cash); mvaddstr(3, 9, text->str); /* Display of the total number of guns carried (%Tde="Guns" by default) */ - dpg_string_sprintf(text, _("%-19Tde%3d"), Names.Guns, + dpg_string_printf(text, _("%-19Tde%3d"), Names.Guns, TotalGunsCarried(Play)); mvaddstr(Network ? 4 : 5, 9, text->str); /* Display of the player's health */ - g_string_sprintf(text, _("Health %3d"), Play->Health); + g_string_printf(text, _("Health %3d"), Play->Health); mvaddstr(Network ? 5 : 7, 9, text->str); /* Display of the player's bank balance */ - dpg_string_sprintf(text, _("Bank %17P"), Play->Bank); + dpg_string_printf(text, _("Bank %17P"), Play->Bank); mvaddstr(Network ? 6 : 9, 9, text->str); if (Play->Debt > 0) attrset(DebtAttr); /* Display of the player's debt */ - dpg_string_sprintf(text, _("Debt %17P"), Play->Debt); + dpg_string_printf(text, _("Debt %17P"), Play->Debt); mvaddstr(Network ? 7 : 11, 9, text->str); attrset(TitleAttr); /* Display of the player's trenchcoat size (antique mode only) */ if (WantAntique) - g_string_sprintf(text, _("Space %6d"), Play->CoatSize); + g_string_printf(text, _("Space %6d"), Play->CoatSize); else { /* Display of the player's number of bitches, and available space * (%Tde="Bitches" by default) */ - dpg_string_sprintf(text, _("%Tde %3d Space %6d"), Names.Bitches, + dpg_string_printf(text, _("%Tde %3d Space %6d"), Names.Bitches, Play->Bitches.Carried, Play->CoatSize); } mvaddstr(0, Width - 2 - strlen(text->str), text->str); - dpg_string_sprintf(text, _("%/Current location/%tde"), + dpg_string_printf(text, _("%/Current location/%tde"), Location[Play->IsAt].Name); print_location(text->str); attrset(StatsAttr); t@@ -2024,7 +2024,7 @@ void print_status(Player *Play, gboolean DispDrug) * string is the "%Tde" which is "Drugs" by default; the %/.../ part * is ignored, so you don't need to translate it; see doc/i18n.html) */ - dpg_string_sprintf(text, _("%/Stats: Drugs/%Tde"), Names.Drugs); + dpg_string_printf(text, _("%/Stats: Drugs/%Tde"), Names.Drugs); mvaddstr(1, Width * 3 / 4 - strlen(text->str) / 2, text->str); } for (i = 0; i < NumDrug; i++) { t@@ -2032,14 +2032,14 @@ void print_status(Player *Play, gboolean DispDrug) /* Display of carried drugs with price (%tde="Opium", etc. by * default) */ if (HaveAbility(Play, A_DRUGVALUE)) { - dpg_string_sprintf(text, _("%-7tde %3d @ %P"), Drug[i].Name, + dpg_string_printf(text, _("%-7tde %3d @ %P"), Drug[i].Name, Play->Drugs[i].Carried, Play->Drugs[i].TotalValue / Play->Drugs[i].Carried); mvaddstr(3 + c, Width / 2 + 3, text->str); } else { /* Display of carried drugs (%tde="Opium", etc. by default) */ - dpg_string_sprintf(text, _("%-7tde %3d"), Drug[i].Name, + dpg_string_printf(text, _("%-7tde %3d"), Drug[i].Name, Play->Drugs[i].Carried); mvaddstr(3 + c / 2, Width / 2 + 3 + (c % 2) * 17, text->str); } t@@ -2049,12 +2049,12 @@ void print_status(Player *Play, gboolean DispDrug) } else { /* Title of the "guns" window (the only important bit in this string * is the "%Tde" which is "Guns" by default) */ - dpg_string_sprintf(text, _("%/Stats: Guns/%Tde"), Names.Guns); + dpg_string_printf(text, _("%/Stats: Guns/%Tde"), Names.Guns); mvaddstr(1, Width * 3 / 4 - strlen(text->str) / 2, text->str); for (i = 0; i < NumGun; i++) { if (Play->Guns[i].Carried > 0) { /* Display of carried guns (%tde="Baretta", etc. by default) */ - dpg_string_sprintf(text, _("%-22tde %3d"), Gun[i].Name, + dpg_string_printf(text, _("%-22tde %3d"), Gun[i].Name, Play->Guns[i].Carried); mvaddstr(3 + c, Width / 2 + 3, text->str); c++; t@@ -2428,7 +2428,7 @@ static void Curses_DoGame(Player *Play) g_string_append(text, _("R>un, ")); if (!RunHere || fp == F_LASTLEAVE) /* (%tde = "drugs" by default here) */ - dpg_string_sprintfa(text, _("D>eal %tde, "), Names.Drugs); + dpg_string_append_printf(text, _("D>eal %tde, "), Names.Drugs); g_string_append(text, _("or Q>uit? ")); mvaddcentstr(get_prompt_line(), text->str); attrset(TextAttr); (DIR) diff --git a/src/dopewars.c b/src/dopewars.c t@@ -1462,7 +1462,7 @@ void AddListEntry(DopeList *List, DopeEntry *NewEntry) List->Number++; List->Data = (DopeEntry *)g_realloc(List->Data, List->Number * sizeof(DopeEntry)); - g_memmove(&(List->Data[List->Number - 1]), NewEntry, sizeof(DopeEntry)); + memmove(&(List->Data[List->Number - 1]), NewEntry, sizeof(DopeEntry)); } /* t@@ -1474,7 +1474,7 @@ void RemoveListEntry(DopeList *List, int Index) return; if (Index < List->Number - 1) { - g_memmove(&(List->Data[Index]), &(List->Data[Index + 1]), + memmove(&(List->Data[Index]), &(List->Data[Index + 1]), (List->Number - 1 - Index) * sizeof(DopeEntry)); } List->Number--; t@@ -2146,12 +2146,12 @@ void PrintConfigValue(int GlobalIndex, int StructIndex, /* Display of the first part of an entire string list config. file * variable - e.g. "StoppedTo is { " (followed by "have a beer", * "smoke a joint" etc.) */ - g_string_sprintf(text, _("%s is { "), GlobalName); + g_string_printf(text, _("%s is { "), GlobalName); if (Globals[GlobalIndex].MaxIndex) { for (i = 0; i < *(Globals[GlobalIndex].MaxIndex); i++) { if (i > 0) g_string_append(text, ", "); - g_string_sprintfa(text, "\"%s\"", + g_string_append_printf(text, "\"%s\"", (*(Globals[GlobalIndex].StringList))[i]); } } (DIR) diff --git a/src/error.c b/src/error.c t@@ -114,7 +114,7 @@ void LookupErrorCode(GString *str, gint code, ErrTable *table, return; } } - g_string_sprintfa(str, fallbackstr, code); + g_string_append_printf(str, fallbackstr, code); } /* "Custom" error handling */ (DIR) diff --git a/src/gui_client/gtk_client.c b/src/gui_client/gtk_client.c t@@ -1212,14 +1212,14 @@ void DisplayStats(Player *Play, struct StatusWidgets *Status) text = g_string_new(NULL); - dpg_string_sprintf(text, _("%/Current location/%tde"), + dpg_string_printf(text, _("%/Current location/%tde"), Location[Play->IsAt].Name); gtk_label_set_text(GTK_LABEL(Status->Location), text->str); GetDateString(text, Play); gtk_label_set_text(GTK_LABEL(Status->Date), text->str); - g_string_sprintf(text, "%d", Play->CoatSize); + g_string_printf(text, "%d", Play->CoatSize); gtk_label_set_text(GTK_LABEL(Status->SpaceValue), text->str); prstr = FormatPrice(Play->Cash); t@@ -1236,25 +1236,25 @@ void DisplayStats(Player *Play, struct StatusWidgets *Status) /* Display of carried guns in GTK+ client status window (%Tde="Guns" by * default) */ - dpg_string_sprintf(text, _("%/GTK Stats: Guns/%Tde"), Names.Guns); + dpg_string_printf(text, _("%/GTK Stats: Guns/%Tde"), Names.Guns); gtk_label_set_text(GTK_LABEL(Status->GunsName), text->str); - g_string_sprintf(text, "%d", TotalGunsCarried(Play)); + g_string_printf(text, "%d", TotalGunsCarried(Play)); gtk_label_set_text(GTK_LABEL(Status->GunsValue), text->str); if (!WantAntique) { /* Display of number of bitches in GTK+ client status window * (%Tde="Bitches" by default) */ - dpg_string_sprintf(text, _("%/GTK Stats: Bitches/%Tde"), + dpg_string_printf(text, _("%/GTK Stats: Bitches/%Tde"), Names.Bitches); gtk_label_set_text(GTK_LABEL(Status->BitchesName), text->str); - g_string_sprintf(text, "%d", Play->Bitches.Carried); + g_string_printf(text, "%d", Play->Bitches.Carried); gtk_label_set_text(GTK_LABEL(Status->BitchesValue), text->str); } else { gtk_label_set_text(GTK_LABEL(Status->BitchesName), NULL); gtk_label_set_text(GTK_LABEL(Status->BitchesValue), NULL); } - g_string_sprintf(text, "%d", Play->Health); + g_string_printf(text, "%d", Play->Health); gtk_label_set_text(GTK_LABEL(Status->HealthValue), text->str); g_string_free(text, TRUE); t@@ -1526,21 +1526,21 @@ static void UpdateDealDialog(void) /* Display of the current price of the selected drug in 'Deal Drugs' * dialog */ - dpg_string_sprintf(text, _("at %P"), Play->Drugs[DrugInd].Price); + dpg_string_printf(text, _("at %P"), Play->Drugs[DrugInd].Price); gtk_label_set_text(GTK_LABEL(DealDialog.cost), text->str); CanDrop = Play->Drugs[DrugInd].Carried; /* Display of current inventory of the selected drug in 'Deal Drugs' * dialog (%tde="Opium" etc. by default) */ - dpg_string_sprintf(text, _("You are currently carrying %d %tde"), + dpg_string_printf(text, _("You are currently carrying %d %tde"), CanDrop, Drug[DrugInd].Name); gtk_label_set_text(GTK_LABEL(DealDialog.carrying), text->str); CanCarry = Play->CoatSize; /* Available space for drugs in 'Deal Drugs' dialog */ - g_string_sprintf(text, _("Available space: %d"), CanCarry); + g_string_printf(text, _("Available space: %d"), CanCarry); gtk_label_set_text(GTK_LABEL(DealDialog.space), text->str); if (DealDialog.Type == BT_BUY) { t@@ -1553,7 +1553,7 @@ static void UpdateDealDialog(void) /* Number of the selected drug that you can afford in 'Deal Drugs' * dialog */ - g_string_sprintf(text, _("You can afford %d"), CanAfford); + g_string_printf(text, _("You can afford %d"), CanAfford); gtk_label_set_text(GTK_LABEL(DealDialog.afford), text->str); MaxDrug = MIN(CanCarry, CanAfford); } else { t@@ -1693,7 +1693,7 @@ void DealDrugs(GtkWidget *widget, gpointer data) || (data == BT_SELL && Play->Drugs[i].Carried > 0 && Play->Drugs[i].Price != 0) || (data == BT_BUY && Play->Drugs[i].Price != 0)) { - dpg_string_sprintf(text, _("%/DealDrugs drug name/%tde"), Drug[i].Name); + dpg_string_printf(text, _("%/DealDrugs drug name/%tde"), Drug[i].Name); menuitem = gtk_menu_item_new_with_label(text->str); gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(DealSelectCallback), t@@ -1727,11 +1727,11 @@ void DealDrugs(GtkWidget *widget, gpointer data) hbox = gtk_hbox_new(FALSE, 7); if (data == BT_BUY) { /* Prompts for action in the "deal drugs" dialog */ - g_string_sprintf(text, _("Buy how many?")); + g_string_printf(text, _("Buy how many?")); } else if (data == BT_SELL) { - g_string_sprintf(text, _("Sell how many?")); + g_string_printf(text, _("Sell how many?")); } else { - g_string_sprintf(text, _("Drop how many?")); + g_string_printf(text, _("Drop how many?")); } label = gtk_label_new(text->str); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); t@@ -1814,23 +1814,23 @@ void DealGuns(GtkWidget *widget, gpointer data) text = g_string_new(""); if (data != BT_BUY && TotalGunsCarried(ClientData.Play) == 0) { - dpg_string_sprintf(text, _("You don't have any %tde to sell!"), + dpg_string_printf(text, _("You don't have any %tde to sell!"), Names.Guns); GtkMessageBox(dialog, text->str, Title, GTK_MESSAGE_WARNING, MB_OK); } else if (data == BT_BUY && TotalGunsCarried(ClientData.Play) >= ClientData.Play->Bitches.Carried + 2) { - dpg_string_sprintf(text, + dpg_string_printf(text, _("You'll need more %tde to carry any more %tde!"), Names.Bitches, Names.Guns); GtkMessageBox(dialog, text->str, Title, GTK_MESSAGE_WARNING, MB_OK); } else if (data == BT_BUY && Gun[GunInd].Space > ClientData.Play->CoatSize) { - dpg_string_sprintf(text, + dpg_string_printf(text, _("You don't have enough space to carry that %tde!"), Names.Gun); GtkMessageBox(dialog, text->str, Title, GTK_MESSAGE_WARNING, MB_OK); } else if (data == BT_BUY && Gun[GunInd].Price > ClientData.Play->Cash) { - dpg_string_sprintf(text, + dpg_string_printf(text, _("You don't have enough cash to buy that %tde!"), Names.Gun); GtkMessageBox(dialog, text->str, Title, GTK_MESSAGE_WARNING, MB_OK); t@@ -1838,7 +1838,7 @@ void DealGuns(GtkWidget *widget, gpointer data) GtkMessageBox(dialog, _("You don't have any to sell!"), Title, GTK_MESSAGE_WARNING, MB_OK); } else { - g_string_sprintf(text, "gun^%d^%d", GunInd, data == BT_BUY ? 1 : -1); + g_string_printf(text, "gun^%d^%d", GunInd, data == BT_BUY ? 1 : -1); SendClientMessage(ClientData.Play, C_NONE, C_BUYOBJECT, NULL, text->str); } t@@ -2561,11 +2561,11 @@ void TransferDialog(gboolean Debt) GTK_SIGNAL_FUNC(SendDoneMessage), NULL); if (Debt) { /* Title of loan shark dialog - (%Tde="The Loan Shark" by default) */ - dpg_string_sprintf(text, _("%/LoanShark window title/%Tde"), + dpg_string_printf(text, _("%/LoanShark window title/%Tde"), Names.LoanSharkName); } else { /* Title of bank dialog - (%Tde="The Bank" by default) */ - dpg_string_sprintf(text, _("%/BankName window title/%Tde"), + dpg_string_printf(text, _("%/BankName window title/%Tde"), Names.BankName); } gtk_window_set_title(GTK_WINDOW(dialog), text->str); t@@ -2581,16 +2581,16 @@ void TransferDialog(gboolean Debt) gtk_table_set_col_spacings(GTK_TABLE(table), 4); /* Display of player's cash in bank or loan shark dialog */ - dpg_string_sprintf(text, _("Cash: %P"), ClientData.Play->Cash); + dpg_string_printf(text, _("Cash: %P"), ClientData.Play->Cash); label = gtk_label_new(text->str); gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 3, 0, 1); if (Debt) { /* Display of player's debt in loan shark dialog */ - dpg_string_sprintf(text, _("Debt: %P"), ClientData.Play->Debt); + dpg_string_printf(text, _("Debt: %P"), ClientData.Play->Debt); } else { /* Display of player's bank balance in bank dialog */ - dpg_string_sprintf(text, _("Bank: %P"), ClientData.Play->Bank); + dpg_string_printf(text, _("Bank: %P"), ClientData.Play->Bank); } label = gtk_label_new(text->str); gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 3, 1, 2); t@@ -2727,7 +2727,7 @@ static void TalkSend(GtkWidget *widget, struct TalkStruct *TalkData) if (AllPlayers) { SendClientMessage(ClientData.Play, C_NONE, C_MSG, NULL, text); - g_string_sprintf(msg, "%s: %s", GetPlayerName(ClientData.Play), text); + g_string_printf(msg, "%s: %s", GetPlayerName(ClientData.Play), text); PrintMessage(msg->str, "talk"); } else { for (selection = GTK_CLIST(TalkData->clist)->selection; selection; t@@ -2736,7 +2736,7 @@ static void TalkSend(GtkWidget *widget, struct TalkStruct *TalkData) Play = (Player *)gtk_clist_get_row_data(GTK_CLIST(TalkData->clist), row); if (Play) { SendClientMessage(ClientData.Play, C_NONE, C_MSGTO, Play, text); - g_string_sprintf(msg, "%s->%s: %s", GetPlayerName(ClientData.Play), + g_string_printf(msg, "%s->%s: %s", GetPlayerName(ClientData.Play), GetPlayerName(Play), text); PrintMessage(msg->str, "page"); } t@@ -3036,13 +3036,13 @@ void CreateInventory(GtkWidget *hbox, gchar *Objects, if (CreateHere) { /* Title of the display of available drugs/guns (%Tde = "Guns" or * "Drugs" by default) */ - dpg_string_sprintf(text, _("%Tde here"), Objects); + dpg_string_printf(text, _("%Tde here"), Objects); widgets->HereFrame = frame[0] = gtk_frame_new(text->str); } /* Title of the display of carried drugs/guns (%Tde = "Guns" or "Drugs" * by default) */ - dpg_string_sprintf(text, _("%Tde carried"), Objects); + dpg_string_printf(text, _("%Tde carried"), Objects); widgets->CarriedFrame = frame[1] = gtk_frame_new(text->str); (DIR) diff --git a/src/log.c b/src/log.c t@@ -96,7 +96,7 @@ GString *GetLogString(GLogLevelFlags log_level, const gchar *message) g_string_free(text, TRUE); return NULL; } - g_string_sprintfa(text, "%d: ", i); + g_string_append_printf(text, "%d: ", i); } g_string_append(text, message); return text; (DIR) diff --git a/src/message.c b/src/message.c t@@ -145,10 +145,10 @@ void DoSendClientMessage(Player *From, AICode AI, MsgCode Code, text = g_string_new(NULL); if (HaveAbility(BufOwn, A_PLAYERID)) { if (To) - g_string_sprintfa(text, "%d", To->ID); - g_string_sprintfa(text, "^%c%c%s", AI, Code, Data ? Data : ""); + g_string_append_printf(text, "%d", To->ID); + g_string_append_printf(text, "^%c%c%s", AI, Code, Data ? Data : ""); } else { - g_string_sprintf(text, "%s^%s^%c%c%s", From ? GetPlayerName(From) : "", + g_string_printf(text, "%s^%s^%c%c%s", From ? GetPlayerName(From) : "", To ? GetPlayerName(To) : "", AI, Code, Data ? Data : ""); } t@@ -206,10 +206,10 @@ void SendServerMessage(Player *From, AICode AI, MsgCode Code, text = g_string_new(NULL); if (HaveAbility(To, A_PLAYERID)) { if (From) - g_string_sprintfa(text, "%d", From->ID); - g_string_sprintfa(text, "^%c%c%s", AI, Code, Data ? Data : ""); + g_string_append_printf(text, "%d", From->ID); + g_string_append_printf(text, "^%c%c%s", AI, Code, Data ? Data : ""); } else { - g_string_sprintf(text, "%s^%s^%c%c%s", From ? GetPlayerName(From) : "", + g_string_printf(text, "%s^%s^%c%c%s", From ? GetPlayerName(From) : "", To ? GetPlayerName(To) : "", AI, Code, Data ? Data : ""); } t@@ -413,15 +413,15 @@ static void MetaAppendError(GString *str, LastError *error) { switch (error->code) { case MEC_INTERNAL: - g_string_sprintfa(str, _("Internal metaserver error \"%s\""), + g_string_append_printf(str, _("Internal metaserver error \"%s\""), (gchar *)error->data); break; case MEC_BADREPLY: - g_string_sprintfa(str, _("Bad metaserver reply \"%s\""), + g_string_append_printf(str, _("Bad metaserver reply \"%s\""), (gchar *)error->data); break; default: - g_string_sprintfa(str, _("Unknown metaserver error code %d"), + g_string_append_printf(str, _("Unknown metaserver error code %d"), error->code); break; } t@@ -554,7 +554,7 @@ void AddURLEnc(GString *str, gchar *unenc) } else if (unenc[i] == ' ') { g_string_append_c(str, '+'); } else { - g_string_sprintfa(str, "%%%02X", unenc[i]); + g_string_append_printf(str, "%%%02X", unenc[i]); } } } t@@ -590,10 +590,10 @@ void SendInventory(Player *From, AICode AI, MsgCode Code, text = g_string_new(NULL); for (i = 0; i < NumGun; i++) { - g_string_sprintfa(text, "%d:", Guns ? Guns[i].Carried : 0); + g_string_append_printf(text, "%d:", Guns ? Guns[i].Carried : 0); } for (i = 0; i < NumDrug; i++) { - g_string_sprintfa(text, "%d:", Drugs ? Drugs[i].Carried : 0); + g_string_append_printf(text, "%d:", Drugs ? Drugs[i].Carried : 0); } SendServerMessage(From, AI, Code, To, text->str); g_string_free(text, TRUE); t@@ -641,7 +641,7 @@ void SendSpyReport(Player *To, Player *SpiedOn) int i; text = g_string_new(NULL); - g_string_sprintf(text, "%s^%s^%s^%d^%d^%d^%d^%d^", + g_string_printf(text, "%s^%s^%s^%d^%d^%d^%d^%d^", (cashstr = pricetostr(SpiedOn->Cash)), (debtstr = pricetostr(SpiedOn->Debt)), (bankstr = pricetostr(SpiedOn->Bank)), t@@ -651,23 +651,24 @@ void SendSpyReport(Player *To, Player *SpiedOn) g_free(debtstr); g_free(bankstr); if (HaveAbility(SpiedOn, A_DATE)) { - g_string_sprintfa(text, "%d^%d^%d^", g_date_day(SpiedOn->date), - g_date_month(SpiedOn->date), g_date_year(SpiedOn->date)); + g_string_append_printf(text, "%d^%d^%d^", g_date_get_day(SpiedOn->date), + g_date_get_month(SpiedOn->date), + g_date_get_year(SpiedOn->date)); } for (i = 0; i < NumGun; i++) { - g_string_sprintfa(text, "%d^", SpiedOn->Guns[i].Carried); + g_string_append_printf(text, "%d^", SpiedOn->Guns[i].Carried); } for (i = 0; i < NumDrug; i++) { - g_string_sprintfa(text, "%d^", SpiedOn->Drugs[i].Carried); + g_string_append_printf(text, "%d^", SpiedOn->Drugs[i].Carried); } if (HaveAbility(To, A_DRUGVALUE)) for (i = 0; i < NumDrug; i++) { - g_string_sprintfa(text, "%s^", + g_string_append_printf(text, "%s^", (cashstr = pricetostr(SpiedOn->Drugs[i].TotalValue))); g_free(cashstr); } - g_string_sprintfa(text, "%d", SpiedOn->Bitches.Carried); + g_string_append_printf(text, "%d", SpiedOn->Bitches.Carried); if (To != SpiedOn) SendServerMessage(SpiedOn, C_NONE, C_UPDATE, To, text->str); else t@@ -695,7 +696,7 @@ void SendInitialData(Player *To) LocalNames[i] = GetDefaultTString(LocalNames[i]); } text = g_string_new(""); - g_string_sprintf(text, "%s^%d^%d^%d^", VERSION, NumLocation, NumGun, + g_string_printf(text, "%s^%d^%d^%d^", VERSION, NumLocation, NumGun, NumDrug); for (i = 0; i < 6; i++) { g_string_append(text, LocalNames[i]); t@@ -706,11 +707,11 @@ void SendInitialData(Player *To) g_string_append(text, LocalNames[6]); g_string_append_c(text, '^'); } else { - g_string_sprintfa(text, "%d-^-%d^", StartDate.month, StartDate.year); + g_string_append_printf(text, "%d-^-%d^", StartDate.month, StartDate.year); } if (HaveAbility(To, A_PLAYERID)) - g_string_sprintfa(text, "%d^", To->ID); + g_string_append_printf(text, "%d^", To->ID); /* Player ID is expected after the first 7 names, so send the rest now */ for (i = 7; i < NUMNAMES; i++) { t@@ -723,7 +724,7 @@ void SendInitialData(Player *To) g_free(LocalNames[i]); } - g_string_sprintfa(text, "%c%s^", Currency.Prefix ? '1' : '0', + g_string_append_printf(text, "%c%s^", Currency.Prefix ? '1' : '0', Currency.Symbol); SendServerMessage(NULL, C_NONE, C_INIT, To, text->str); g_string_free(text, TRUE); t@@ -1301,7 +1302,7 @@ void SendFightMessage(Player *Attacker, Player *Defender, } } else BitchName = ""; - g_string_sprintf(text, "%s^%s^%d^%d^%s^%d^%d^%c%c%c%c^", + g_string_printf(text, "%s^%s^%d^%d^%s^%d^%d^%c%c%c%c^", Attacker == To ? "" : GetPlayerName(Attacker), (Defender == To || Defender == NULL) ? "" : GetPlayerName(Defender), t@@ -1369,29 +1370,29 @@ void FormatFightMessage(Player *To, GString *text, Player *Attacker, if (DefendName[0]) { if (IsCop(Defender) && !AttackName[0]) { if (Bitches == 0) { - dpg_string_sprintfa(text, _("%s - %s - is chasing you, man!"), + dpg_string_append_printf(text, _("%s - %s - is chasing you, man!"), DefendName, Armament); } else { - dpg_string_sprintfa(text, + dpg_string_append_printf(text, _("%s and %d %tde - %s - are chasing you, man!"), DefendName, Bitches, BitchesName, Armament); } } else { - dpg_string_sprintfa(text, _("%s arrives with %d %tde, %s!"), + dpg_string_append_printf(text, _("%s arrives with %d %tde, %s!"), DefendName, Bitches, BitchesName, Armament); } } break; case F_STAND: if (AttackName[0]) { - g_string_sprintfa(text, _("%s stands and takes it"), AttackName); + g_string_append_printf(text, _("%s stands and takes it"), AttackName); } else { g_string_append(text, _("You stand there like a dummy.")); } break; case F_FAILFLEE: if (AttackName[0]) { - g_string_sprintfa(text, _("%s tries to get away, but fails."), + g_string_append_printf(text, _("%s tries to get away, but fails."), AttackName); } else { g_string_append(text, _("Panic! You can't get away!")); t@@ -1403,13 +1404,13 @@ void FormatFightMessage(Player *To, GString *text, Player *Attacker, if (AttackName[0]) { if (!IsCop(Attacker) && brandom(0, 100) < 70 && Attacker->IsAt >= 0) { - dpg_string_sprintfa(text, _("%s has got away to %tde!"), AttackName, + dpg_string_append_printf(text, _("%s has got away to %tde!"), AttackName, Location[Attacker->IsAt].Name); } else { - g_string_sprintfa(text, _("%s has got away!"), AttackName); + g_string_append_printf(text, _("%s has got away!"), AttackName); } } else { - g_string_sprintfa(text, _("You got away!")); + g_string_append_printf(text, _("You got away!")); } } break; t@@ -1420,49 +1421,49 @@ void FormatFightMessage(Player *To, GString *text, Player *Attacker, break; case F_MISS: if (AttackName[0] && DefendName[0]) { - g_string_sprintfa(text, _("%s shoots at %s... and misses!"), + g_string_append_printf(text, _("%s shoots at %s... and misses!"), AttackName, DefendName); } else if (AttackName[0]) { - g_string_sprintfa(text, _("%s shoots at you... and misses!"), + g_string_append_printf(text, _("%s shoots at you... and misses!"), AttackName); } else if (DefendName[0]) { - g_string_sprintfa(text, _("You missed %s!"), DefendName); + g_string_append_printf(text, _("You missed %s!"), DefendName); } break; case F_HIT: if (AttackName[0] && DefendName[0]) { if (Health == 0 && Bitches == 0) { - g_string_sprintfa(text, _("%s shoots %s dead."), + g_string_append_printf(text, _("%s shoots %s dead."), AttackName, DefendName); } else if (BitchesKilled) { - dpg_string_sprintfa(text, _("%s shoots at %s and kills a %tde!"), + dpg_string_append_printf(text, _("%s shoots at %s and kills a %tde!"), AttackName, DefendName, BitchName); } else { - g_string_sprintfa(text, _("%s shoots at %s."), + g_string_append_printf(text, _("%s shoots at %s."), AttackName, DefendName); } } else if (AttackName[0]) { if (Health == 0 && Bitches == 0) { - g_string_sprintfa(text, _("%s wasted you, man! What a drag!"), + g_string_append_printf(text, _("%s wasted you, man! What a drag!"), AttackName); } else if (BitchesKilled) { - dpg_string_sprintfa(text, + dpg_string_append_printf(text, _("%s shoots at you... and kills a %tde!"), AttackName, BitchName); } else { - g_string_sprintfa(text, _("%s hits you, man!"), AttackName); + g_string_append_printf(text, _("%s hits you, man!"), AttackName); } } else if (DefendName[0]) { if (Health == 0 && Bitches == 0) { - g_string_sprintfa(text, _("You killed %s!"), DefendName); + g_string_append_printf(text, _("You killed %s!"), DefendName); } else if (BitchesKilled) { - dpg_string_sprintfa(text, _("You hit %s, and killed a %tde!"), + dpg_string_append_printf(text, _("You hit %s, and killed a %tde!"), DefendName, BitchName); } else { - g_string_sprintfa(text, _("You hit %s!"), DefendName); + g_string_append_printf(text, _("You hit %s!"), DefendName); } if (Loot > 0) { - dpg_string_sprintfa(text, _(" You find %P on the body!"), Loot); + dpg_string_append_printf(text, _(" You find %P on the body!"), Loot); } else if (Loot < 0) { g_string_append(text, _(" You loot the body!")); } (DIR) diff --git a/src/network.c b/src/network.c t@@ -420,13 +420,13 @@ static void HTTPAppendError(GString *str, LastError *error) g_string_append(str, _("Number of tries exceeded")); break; case HEC_BADAUTH: - g_string_sprintfa(str, _("Bad auth header: %s"), (gchar *)error->data); + g_string_append_printf(str, _("Bad auth header: %s"), (gchar *)error->data); break; case HEC_BADREDIR: - g_string_sprintfa(str, _("Bad redirect: %s"), (gchar *)error->data); + g_string_append_printf(str, _("Bad redirect: %s"), (gchar *)error->data); break; case HEC_BADSTATUS: - g_string_sprintfa(str, _("Invalid HTTP status line: %s"), + g_string_append_printf(str, _("Invalid HTTP status line: %s"), (gchar *)error->data); break; case HEC_FORBIDDEN: t@@ -447,13 +447,13 @@ static void HTTPAppendError(GString *str, LastError *error) break; default: if (error->code < HEC_REDIRECT || error->code >= 600) { - g_string_sprintfa(str, _("Unknown HTTP error %d"), error->code); + g_string_append_printf(str, _("Unknown HTTP error %d"), error->code); } else if (error->code < HEC_CLIENTERR) { - g_string_sprintfa(str, _("%d: redirect error"), error->code); + g_string_append_printf(str, _("%d: redirect error"), error->code); } else if (error->code < HEC_SERVERERR) { - g_string_sprintfa(str, _("%d: HTTP client error"), error->code); + g_string_append_printf(str, _("%d: HTTP client error"), error->code); } else { - g_string_sprintfa(str, _("%d: HTTP server error"), error->code); + g_string_append_printf(str, _("%d: HTTP server error"), error->code); } break; } t@@ -1142,11 +1142,11 @@ static void SendHttpRequest(HttpConnection *conn) text = g_string_new(""); - g_string_sprintf(text, "%s %s HTTP/1.0", + g_string_printf(text, "%s %s HTTP/1.0", conn->Method, conn->Query); QueueMessageForSend(&conn->NetBuf, text->str); - g_string_sprintf(text, "Host: %s", conn->HostName); + g_string_printf(text, "Host: %s", conn->HostName); QueueMessageForSend(&conn->NetBuf, text->str); if (conn->Headers) t@@ -1168,7 +1168,7 @@ static void SendHttpRequest(HttpConnection *conn) QueueMessageForSend(&conn->NetBuf, text->str); } - g_string_sprintf(text, "User-Agent: dopewars/%s", VERSION); + g_string_printf(text, "User-Agent: dopewars/%s", VERSION); QueueMessageForSend(&conn->NetBuf, text->str); /* Insert a blank line between headers and body */ (DIR) diff --git a/src/serverside.c b/src/serverside.c t@@ -254,9 +254,9 @@ void RegisterWithMetaServer(gboolean Up, gboolean SendData, g_string_assign(body, "output=text&"); - g_string_sprintfa(body, "up=%d&port=%d&version=", Up ? 1 : 0, Port); + g_string_append_printf(body, "up=%d&port=%d&version=", Up ? 1 : 0, Port); AddURLEnc(body, VERSION); - g_string_sprintfa(body, "&players=%d&maxplay=%d&comment=", + g_string_append_printf(body, "&players=%d&maxplay=%d&comment=", CountPlayers(FirstServer), MaxClients); AddURLEnc(body, MetaServer.Comment); t@@ -272,11 +272,11 @@ void RegisterWithMetaServer(gboolean Up, gboolean SendData, if (SendData && HighScoreRead(ScoreFP, MultiScore, AntiqueScore, TRUE)) { for (i = 0; i < NUMHISCORE; i++) { if (MultiScore[i].Name && MultiScore[i].Name[0]) { - g_string_sprintfa(body, "&nm[%d]=", i); + g_string_append_printf(body, "&nm[%d]=", i); AddURLEnc(body, MultiScore[i].Name); - g_string_sprintfa(body, "&dt[%d]=", i); + g_string_append_printf(body, "&dt[%d]=", i); AddURLEnc(body, MultiScore[i].Time); - g_string_sprintfa(body, "&st[%d]=%s&sc[%d]=", i, + g_string_append_printf(body, "&st[%d]=%s&sc[%d]=", i, MultiScore[i].Dead ? "dead" : "alive", i); AddURLEnc(body, prstr = FormatPrice(MultiScore[i].Money)); g_free(prstr); t@@ -284,7 +284,7 @@ void RegisterWithMetaServer(gboolean Up, gboolean SendData, } } - g_string_sprintf(headers, + g_string_printf(headers, "Content-Type: application/x-www-form-urlencoded\n" "Content-Length: %d", (int)strlen(body->str)); t@@ -351,7 +351,7 @@ void SendPlayerDetails(Player *Play, Player *To, MsgCode Code) text = g_string_new(GetPlayerName(Play)); if (HaveAbility(To, A_PLAYERID)) { - g_string_sprintfa(text, "^%d", Play->ID); + g_string_append_printf(text, "^%d", Play->ID); } SendServerMessage(NULL, C_NONE, Code, To, text->str); g_string_free(text, TRUE); t@@ -735,7 +735,7 @@ void PrintHelpTo(FILE *fp) fprintf(fp, _(HelpText), VERSION); for (i = 0; i < NUMGLOB; i++) { if (Globals[i].NameStruct[0]) { - g_string_sprintf(VarName, "%s%s.%s", Globals[i].NameStruct, + g_string_printf(VarName, "%s%s.%s", Globals[i].NameStruct, Globals[i].StructListPt ? "[x]" : "", Globals[i].Name); } else { t@@ -759,7 +759,7 @@ void ServerHelp(void) g_print(_(HelpText), VERSION); for (i = 0; i < NUMGLOB; i++) { if (Globals[i].NameStruct[0]) { - g_string_sprintf(VarName, "%s%s.%s", Globals[i].NameStruct, + g_string_printf(VarName, "%s%s.%s", Globals[i].NameStruct, Globals[i].StructListPt ? "[x]" : "", Globals[i].Name); } else { t@@ -2985,11 +2985,11 @@ void ResolveTipoff(Player *Play) RemoveListPlayer(&(Play->TipList), Play->OnBehalfOf); text = g_string_new(""); if (Play->Health == 0) { - g_string_sprintf(text, + g_string_printf(text, _("Following your tipoff, the cops ambushed %s, " "who was shot dead!"), GetPlayerName(Play)); } else { - dpg_string_sprintf(text, + dpg_string_printf(text, _("Following your tipoff, the cops ambushed %s, " "who escaped with %d %tde. "), GetPlayerName(Play), Play->Bitches.Carried, Names.Bitches); t@@ -3096,13 +3096,13 @@ int RandomOffer(Player *To) } if (ind == -1) { ind = brandom(0, NumDrug); - dpg_string_sprintf(text, + dpg_string_printf(text, _("You meet a friend! He gives you %d %tde."), amount, Drug[ind].Name); To->Drugs[ind].Carried += amount; To->CoatSize -= amount; } else { - dpg_string_sprintf(text, + dpg_string_printf(text, _("You meet a friend! You give him %d %tde."), amount, Drug[ind].Name); To->Drugs[ind].TotalValue = t@@ -3121,7 +3121,7 @@ int RandomOffer(Player *To) amount = brandom(3, 7); ind = IsCarryingRandom(To, amount); if (ind != -1) { - dpg_string_sprintf(text, _("Police dogs chase you for %d blocks! " + dpg_string_printf(text, _("Police dogs chase you for %d blocks! " "You dropped some %tde! That's a drag, man!"), brandom(3, 7), Names.Drugs); To->Drugs[ind].TotalValue = To->Drugs[ind].TotalValue * t@@ -3137,7 +3137,7 @@ int RandomOffer(Player *To) g_string_free(text, TRUE); return 0; } - dpg_string_sprintf(text, + dpg_string_printf(text, _("You find %d %tde on a dead dude in the subway!"), amount, Drug[ind].Name); To->Drugs[ind].Carried += amount; t@@ -3152,7 +3152,7 @@ int RandomOffer(Player *To) amount = brandom(2, 6); if (amount > To->Drugs[ind].Carried) amount = To->Drugs[ind].Carried; - dpg_string_sprintf(text, + dpg_string_printf(text, _("Your mama made brownies with some of your %tde! " "They were great!"), Drug[ind].Name); To->Drugs[ind].TotalValue = To->Drugs[ind].TotalValue * t@@ -3170,7 +3170,7 @@ int RandomOffer(Player *To) g_string_free(text, TRUE); return 1; } else if (NumStoppedTo > 0) { - g_string_sprintf(text, _("You stopped to %s."), + g_string_printf(text, _("You stopped to %s."), StoppedTo[brandom(0, NumStoppedTo)]); amount = brandom(1, 10); if (To->Cash >= amount) t@@ -3309,7 +3309,7 @@ void SendDrugsHere(Player *To, gboolean DisplayBusts) if (Deal[i] == DT_CHEAP) { g_string_append(text, Drug[i].CheapStr); } else { - dpg_string_sprintfa(text, brandom(0, 100) < 50 + dpg_string_append_printf(text, brandom(0, 100) < 50 ? Drugs.ExpensiveStr1 : Drugs.ExpensiveStr2, Drug[i].Name); } t@@ -3323,7 +3323,7 @@ void SendDrugsHere(Player *To, gboolean DisplayBusts) SendPrintMessage(NULL, C_NONE, To, text->str); g_string_truncate(text, 0); for (i = 0; i < NumDrug; i++) { - g_string_sprintfa(text, "%s^", + g_string_append_printf(text, "%s^", (prstr = pricetostr(To->Drugs[i].Price))); g_free(prstr); } (DIR) diff --git a/src/sound.c b/src/sound.c t@@ -60,7 +60,7 @@ gchar *GetPluginList(void) SoundDriver *drivpt = (SoundDriver *)listpt->data; if (drivpt && drivpt->name) { - g_string_sprintfa(plugins, ", \"%s\"", drivpt->name); + g_string_append_printf(plugins, ", \"%s\"", drivpt->name); } } retstr = plugins->str; (DIR) diff --git a/src/tstring.c b/src/tstring.c t@@ -238,24 +238,24 @@ gchar *HandleTFmt(gchar *format, va_list va) g_error("Unmatched types!"); switch (Type) { case 'd': - g_string_sprintfa(string, tmpfmt->str, fdat->data.IntVal); + g_string_append_printf(string, tmpfmt->str, fdat->data.IntVal); break; case 'c': - g_string_sprintfa(string, tmpfmt->str, fdat->data.CharVal); + g_string_append_printf(string, tmpfmt->str, fdat->data.CharVal); break; case 'P': fstr = FormatPrice(fdat->data.PriceVal); - g_string_sprintfa(string, tmpfmt->str, fstr); + g_string_append_printf(string, tmpfmt->str, fstr); g_free(fstr); break; case 't': case 'T': fstr = GetTranslatedString(fdat->data.StrVal, Code, Type == 'T'); - g_string_sprintfa(string, tmpfmt->str, fstr); + g_string_append_printf(string, tmpfmt->str, fstr); g_free(fstr); break; case 's': - g_string_sprintfa(string, tmpfmt->str, fdat->data.StrVal); + g_string_append_printf(string, tmpfmt->str, fdat->data.StrVal); break; case '%': g_string_append_c(string, '%'); t@@ -292,7 +292,7 @@ gchar *dpg_strdup_printf(gchar *format, ...) return retstr; } -void dpg_string_sprintf(GString *string, gchar *format, ...) +void dpg_string_printf(GString *string, gchar *format, ...) { va_list ap; gchar *newstr; t@@ -304,7 +304,7 @@ void dpg_string_sprintf(GString *string, gchar *format, ...) va_end(ap); } -void dpg_string_sprintfa(GString *string, gchar *format, ...) +void dpg_string_append_printf(GString *string, gchar *format, ...) { va_list ap; gchar *newstr; (DIR) diff --git a/src/tstring.h b/src/tstring.h t@@ -31,8 +31,8 @@ void dpg_print(gchar *format, ...); gchar *dpg_strdup_printf(gchar *format, ...); -void dpg_string_sprintf(GString *string, gchar *format, ...); -void dpg_string_sprintfa(GString *string, gchar *format, ...); +void dpg_string_printf(GString *string, gchar *format, ...); +void dpg_string_append_printf(GString *string, gchar *format, ...); gchar *GetDefaultTString(gchar *tstring);