Index: client/climisc.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/climisc.c,v retrieving revision 1.82 diff -u -r1.82 climisc.c --- client/climisc.c 2002/02/24 11:50:32 1.82 +++ client/climisc.c 2002/02/24 13:46:44 @@ -327,8 +327,6 @@ packet.city_id = pcity->id; packet.build_id = to_id; packet.is_build_id_unit_id = to_is_unit; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request (&aconnection, &packet, PACKET_CITY_CHANGE); } Index: client/agents/cma_core.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/agents/cma_core.c,v retrieving revision 1.13 diff -u -r1.13 cma_core.c --- client/agents/cma_core.c 2002/02/24 11:50:35 1.13 +++ client/agents/cma_core.c 2002/02/24 13:46:46 @@ -410,9 +410,6 @@ pcity->name, pcity->id, x, y, set_clear ? "set" : "clear"); packet.city_id = pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; - packet.worker_x = x; packet.worker_y = y; return send_packet_city_request(&aconnection, &packet, @@ -515,8 +512,6 @@ connection_do_buffer(&aconnection); packet.city_id = pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; /* Do checks */ worker = count_worker(pcity, result); Index: client/gui-gtk/citydlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/citydlg.c,v retrieving revision 1.123 diff -u -r1.123 citydlg.c --- client/gui-gtk/citydlg.c 2002/02/21 08:56:18 1.123 +++ client/gui-gtk/citydlg.c 2002/02/24 13:46:49 @@ -2820,8 +2820,6 @@ } packet.city_id = pdialog->pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; packet.specialist_from = type; switch (type) { @@ -2877,8 +2875,6 @@ packet.city_id = pcity->id; packet.worker_x = xtile; packet.worker_y = ytile; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; if (pcity->city_map[xtile][ytile] == C_TILE_WORKER) send_packet_city_request(&aconnection, &packet, @@ -3007,8 +3003,6 @@ pdialog = (struct city_dialog *) data; packet.city_id = pdialog->pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_BUY); destroy_message_dialog(w); @@ -3167,8 +3161,6 @@ (selection->data)); packet.city_id = pdialog->pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; packet.build_id = cid_id(cid); packet.is_build_id_unit_id = cid_is_unit(cid); @@ -3284,8 +3276,6 @@ packet.city_id = pdialog->pcity->id; packet.build_id = pdialog->sell_id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_SELL); destroy_message_dialog(w); @@ -3352,7 +3342,7 @@ { struct packet_city_request packet; struct city_dialog *pdialog = (struct city_dialog *) data; - int i, k, id, is_unit; + int k, id, is_unit; /* Update the worklist. Remember, though -- the current build target really isn't in the worklist; don't send it to the server @@ -3386,8 +3376,6 @@ /* Change the current target */ packet.city_id = pdialog->pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; packet.build_id = id; packet.is_build_id_unit_id = is_unit; send_packet_city_request(&aconnection, &packet, @@ -3403,14 +3391,8 @@ /* Send the rest of the worklist on its way. */ packet.city_id = pdialog->pcity->id; - packet.name[0] = '\0'; + copy_worklist(&packet.worklist, pwl); packet.worklist.name[0] = '\0'; - packet.worklist.is_valid = 1; - for (i = 0; i < MAX_LEN_WORKLIST; i++) { - packet.worklist.wlefs[i] = pwl->wlefs[i]; - packet.worklist.wlids[i] = pwl->wlids[i]; - } - send_packet_city_request(&aconnection, &packet, PACKET_CITY_WORKLIST); } @@ -3474,7 +3456,6 @@ if (pdialog) { packet.city_id = pdialog->pcity->id; - packet.worklist.name[0] = '\0'; sz_strlcpy(packet.name, input_dialog_get_input(w)); send_packet_city_request(&aconnection, &packet, PACKET_CITY_RENAME); Index: client/gui-gtk/cityrep.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/cityrep.c,v retrieving revision 1.53 diff -u -r1.53 cityrep.c --- client/gui-gtk/cityrep.c 2002/02/19 15:20:59 1.53 +++ client/gui-gtk/cityrep.c 2002/02/24 13:46:50 @@ -273,8 +273,6 @@ struct packet_city_request packet; packet.city_id=city_from_glist(selection)->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; packet.build_id=id; packet.is_build_id_unit_id=is_unit; send_packet_city_request(&aconnection, &packet, PACKET_CITY_CHANGE); @@ -1109,8 +1107,6 @@ { struct packet_city_request packet; packet.city_id=pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_BUY); } else Index: client/gui-gtk/mapctrl.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/mapctrl.c,v retrieving revision 1.59 diff -u -r1.59 mapctrl.c --- client/gui-gtk/mapctrl.c 2002/02/22 13:14:40 1.59 +++ client/gui-gtk/mapctrl.c 2002/02/24 13:46:50 @@ -370,8 +370,6 @@ packet.city_id=pcity->id; packet.worker_x=x; packet.worker_y=y; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; wrk = get_worker_city(pcity, x, y); if(wrk==C_TILE_WORKER) Index: client/gui-gtk/repodlgs.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/repodlgs.c,v retrieving revision 1.51 diff -u -r1.51 repodlgs.c --- client/gui-gtk/repodlgs.c 2002/02/11 10:37:56 1.51 +++ client/gui-gtk/repodlgs.c 2002/02/24 13:46:51 @@ -697,8 +697,6 @@ count++; gold+=improvement_value(i); packet.city_id=pcity->id; packet.build_id=i; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_SELL); } } Index: client/gui-mui/citydlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-mui/citydlg.c,v retrieving revision 1.44 diff -u -r1.44 citydlg.c --- client/gui-mui/citydlg.c 2002/02/21 08:56:19 1.44 +++ client/gui-mui/citydlg.c 2002/02/24 13:46:54 @@ -270,8 +270,6 @@ struct packet_city_request packet; packet.city_id = pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; packet.build_id = id; packet.is_build_id_unit_id = is_unit_id; @@ -285,8 +283,6 @@ struct packet_city_request packet; packet.city_id = pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; packet.specialist_from = from; packet.specialist_to = to; @@ -303,8 +299,6 @@ packet.city_id = pcity->id; packet.worker_x = xtile; packet.worker_y = ytile; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; if (pcity->city_map[xtile][ytile] == C_TILE_WORKER) send_packet_city_request(&aconnection, &packet, PACKET_CITY_MAKE_SPECIALIST); @@ -319,8 +313,6 @@ { struct packet_city_request packet; packet.city_id = pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_BUY); } /**************************************************************** @@ -332,8 +324,6 @@ packet.city_id = pcity->id; packet.build_id = sell_id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_SELL); } @@ -828,7 +818,6 @@ struct packet_city_request packet; packet.city_id=pdialog->pcity->id; - packet.worklist.name[0] = '\0'; sz_strlcpy(packet.name, (char*)xget(pdialog->name_transparentstring, MUIA_TransparentString_Contents)); send_packet_city_request(&aconnection, &packet, PACKET_CITY_RENAME); } @@ -896,8 +885,7 @@ worklist is actually just the current build target; don't send it to the server as part of the worklist. */ packet.city_id=pdialog->pcity->id; - packet.name[0] = '\0'; - packet.worklist.is_valid = 1; + packet.worklist.is_valid = TRUE; packet.worklist.name[0] = '\0'; for (i = 0; i < MAX_LEN_WORKLIST-1; i++) { packet.worklist.wlefs[i] = pwl->wlefs[i+1]; Index: client/gui-mui/cityrep.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-mui/cityrep.c,v retrieving revision 1.16 diff -u -r1.16 cityrep.c --- client/gui-mui/cityrep.c 2001/12/11 16:16:32 1.16 +++ client/gui-mui/cityrep.c 2002/02/24 13:46:54 @@ -181,8 +181,6 @@ { struct packet_city_request packet; packet.city_id=pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_BUY); } else Index: client/gui-mui/repodlgs.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-mui/repodlgs.c,v retrieving revision 1.18 diff -u -r1.18 repodlgs.c --- client/gui-mui/repodlgs.c 2002/02/02 09:55:37 1.18 +++ client/gui-mui/repodlgs.c 2002/02/24 13:46:55 @@ -549,8 +549,6 @@ packet.city_id = pcity->id; packet.build_id = i; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_SELL); } city_list_iterate_end Index: client/gui-win32/citydlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-win32/citydlg.c,v retrieving revision 1.13 diff -u -r1.13 citydlg.c --- client/gui-win32/citydlg.c 2002/02/21 08:56:19 1.13 +++ client/gui-win32/citydlg.c 2002/02/24 13:46:56 @@ -916,8 +916,6 @@ pdialog=(struct city_dialog *)data; packet.city_id=pdialog->pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_BUY); destroy_message_dialog(w); @@ -980,8 +978,6 @@ packet.city_id=pdialog->pcity->id; packet.build_id=pdialog->sell_id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_SELL); destroy_message_dialog(w); @@ -1095,8 +1091,6 @@ { struct packet_city_request packet; packet.city_id=pdialog->pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; packet.build_id=idx; packet.is_build_id_unit_id=is_unit; @@ -1281,8 +1275,6 @@ /* Change the current target */ packet.city_id = pdialog->pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; packet.build_id = id; packet.is_build_id_unit_id = is_unit; send_packet_city_request(&aconnection, &packet, @@ -1298,14 +1290,8 @@ /* Send the rest of the worklist on its way. */ packet.city_id = pdialog->pcity->id; - packet.name[0] = '\0'; + copy_worklist(&packet.worklist, pwl); packet.worklist.name[0] = '\0'; - packet.worklist.is_valid = 1; - for (i = 0; i < MAX_LEN_WORKLIST; i++) { - packet.worklist.wlefs[i] = pwl->wlefs[i]; - packet.worklist.wlids[i] = pwl->wlids[i]; - } - send_packet_city_request(&aconnection, &packet, PACKET_CITY_WORKLIST); } @@ -1331,7 +1317,6 @@ if((pdialog=(struct city_dialog *)data)) { packet.city_id=pdialog->pcity->id; - packet.worklist.name[0] = '\0'; sz_strlcpy(packet.name, input_dialog_get_input(w)); send_packet_city_request(&aconnection, &packet, PACKET_CITY_RENAME); } @@ -1720,8 +1705,6 @@ packet.city_id=pcity->id; packet.worker_x=x; packet.worker_y=y; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; if(pcity->city_map[x][y]==C_TILE_WORKER) send_packet_city_request(&aconnection, &packet, @@ -1744,8 +1727,6 @@ if (pdialog->citizen_type[n]>2) return; packet.city_id=pdialog->pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0]='\0'; switch (pdialog->citizen_type[n]) { case 0: /* elvis */ Index: client/gui-win32/cityrep.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-win32/cityrep.c,v retrieving revision 1.7 diff -u -r1.7 cityrep.c --- client/gui-win32/cityrep.c 2002/02/19 15:21:02 1.7 +++ client/gui-win32/cityrep.c 2002/02/24 13:46:57 @@ -370,8 +370,6 @@ { struct packet_city_request packet; packet.city_id=pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_BUY); } else @@ -520,8 +518,6 @@ ID_CITYREP_LIST), cityids[i]); packet.city_id=pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; packet.build_id=number; packet.is_build_id_unit_id=is_unit; send_packet_city_request(&aconnection, &packet, PACKET_CITY_CHANGE); Index: client/gui-win32/repodlgs.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-win32/repodlgs.c,v retrieving revision 1.8 diff -u -r1.8 repodlgs.c --- client/gui-win32/repodlgs.c 2002/02/21 20:28:24 1.8 +++ client/gui-win32/repodlgs.c 2002/02/24 13:46:58 @@ -406,8 +406,6 @@ count++; gold+=improvement_value(i); packet.city_id=pcity->id; packet.build_id=i; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_SELL); } } Index: client/gui-xaw/citydlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-xaw/citydlg.c,v retrieving revision 1.65 diff -u -r1.65 citydlg.c --- client/gui-xaw/citydlg.c 2002/02/21 08:56:20 1.65 +++ client/gui-xaw/citydlg.c 2002/02/24 13:46:59 @@ -1400,8 +1400,7 @@ if((pdialog=(struct city_dialog *)client_data)) { packet.city_id=pdialog->pcity->id; - packet.worklist.name[0] = '\0'; - sz_strlcpy(packet.name, input_dialog_get_input(w)); + sz_strlcpy(packet.name, input_dialog_get_input(w)); send_packet_city_request(&aconnection, &packet, PACKET_CITY_RENAME); } input_dialog_destroy(w); @@ -1967,8 +1966,6 @@ packet.city_id=pcity->id; packet.worker_x=xtile; packet.worker_y=ytile; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; if(pcity->city_map[xtile][ytile]==C_TILE_WORKER) send_packet_city_request(&aconnection, &packet, @@ -1989,8 +1986,6 @@ pdialog=(struct city_dialog *)client_data; packet.city_id=pdialog->pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; packet.specialist_from=SP_ELVIS; packet.specialist_to=SP_SCIENTIST; @@ -2009,8 +2004,6 @@ pdialog=(struct city_dialog *)client_data; packet.city_id=pdialog->pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; packet.specialist_from=SP_SCIENTIST; packet.specialist_to=SP_TAXMAN; @@ -2029,8 +2022,6 @@ pdialog=(struct city_dialog *)client_data; packet.city_id=pdialog->pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; packet.specialist_from=SP_TAXMAN; packet.specialist_to=SP_ELVIS; @@ -2050,8 +2041,6 @@ pdialog=(struct city_dialog *)client_data; packet.city_id=pdialog->pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_BUY); destroy_message_dialog(w); @@ -2201,8 +2190,6 @@ struct packet_city_request packet; packet.city_id=pdialog->pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; packet.build_id=pdialog->change_list_ids[ret->list_index]; packet.is_build_id_unit_id= (ret->list_index >= pdialog->change_list_num_improvements); @@ -2458,8 +2445,6 @@ /* Change the current target */ packet.city_id=pdialog->pcity->id; - packet.name[0] = '\0'; - packet.worklist.name[0] = '\0'; packet.build_id = id; packet.is_build_id_unit_id = is_unit; send_packet_city_request(&aconnection, &packet, PACKET_CITY_CHANGE); @@ -2474,14 +2459,8 @@ /* Send the rest of the worklist on its way. */ packet.city_id=pdialog->pcity->id; - packet.name[0] = '\0'; + copy_worklist(&packet.worklist, pwl); packet.worklist.name[0] = '\0'; - packet.worklist.is_valid = 1; - for (i = 0; i < MAX_LEN_WORKLIST; i++) { - packet.worklist.wlefs[i] = pwl->wlefs[i]; - packet.worklist.wlids[i] = pwl->wlids[i]; - } - send_packet_city_request(&aconnection, &packet, PACKET_CITY_WORKLIST); pdialog->worklist_shell = NULL; @@ -2506,8 +2485,6 @@ packet.city_id=pdialog->pcity->id; packet.build_id=pdialog->sell_id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_SELL); destroy_message_dialog(w); Index: client/gui-xaw/cityrep.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-xaw/cityrep.c,v retrieving revision 1.35 diff -u -r1.35 cityrep.c --- client/gui-xaw/cityrep.c 2002/02/19 15:21:03 1.35 +++ client/gui-xaw/cityrep.c 2002/02/24 13:47:00 @@ -381,8 +381,6 @@ build_nr = cid_id(my_cid); packet.city_id=pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; packet.build_id=build_nr; packet.is_build_id_unit_id=unit; send_packet_city_request(&aconnection, &packet, PACKET_CITY_CHANGE); @@ -414,8 +412,6 @@ { struct packet_city_request packet; packet.city_id=pcity->id; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_BUY); } else Index: client/gui-xaw/mapctrl.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-xaw/mapctrl.c,v retrieving revision 1.52 diff -u -r1.52 mapctrl.c --- client/gui-xaw/mapctrl.c 2002/02/22 13:14:42 1.52 +++ client/gui-xaw/mapctrl.c 2002/02/24 13:47:00 @@ -343,8 +343,6 @@ packet.city_id=pcity->id; packet.worker_x=x; packet.worker_y=y; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; wrk = get_worker_city(pcity, x, y); if(wrk==C_TILE_WORKER) Index: client/gui-xaw/repodlgs.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-xaw/repodlgs.c,v retrieving revision 1.32 diff -u -r1.32 repodlgs.c --- client/gui-xaw/repodlgs.c 2002/02/02 09:55:38 1.32 +++ client/gui-xaw/repodlgs.c 2002/02/24 13:47:01 @@ -757,8 +757,6 @@ count++; gold+=improvement_value(i); packet.city_id=pcity->id; packet.build_id=i; - packet.name[0]='\0'; - packet.worklist.name[0] = '\0'; send_packet_city_request(&aconnection, &packet, PACKET_CITY_SELL); } } Index: common/packets.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/packets.c,v retrieving revision 1.184 diff -u -r1.184 packets.c --- common/packets.c 2002/02/24 11:56:13 1.184 +++ common/packets.c 2002/02/24 13:47:04 @@ -1388,7 +1388,7 @@ buffer = put_bool8(buffer, pwl->is_valid); if ((short_wls && pwl->is_valid) || !short_wls) { - if (real_wl) { + if (real_wl && pwl->is_valid) { buffer = put_string(buffer, pwl->name); } else { buffer = put_string(buffer, "\0"); @@ -1754,6 +1754,17 @@ enum packet_type req_type) { unsigned char buffer[MAX_LEN_PACKET], *cptr; + + /* can't modify the packet directly */ + struct worklist copy; + + if (req_type == PACKET_CITY_WORKLIST) { + assert(packet->worklist.is_valid); + copy_worklist(©, &packet->worklist); + } else { + copy.is_valid = FALSE; + } + cptr=put_uint8(buffer+2, req_type); cptr=put_uint16(cptr, packet->city_id); cptr=put_uint8(cptr, packet->build_id); @@ -1762,8 +1773,12 @@ cptr=put_uint8(cptr, packet->worker_y); cptr=put_uint8(cptr, packet->specialist_from); cptr=put_uint8(cptr, packet->specialist_to); - cptr = put_worklist(pc, cptr, &packet->worklist, TRUE); - cptr=put_string(cptr, packet->name); + cptr = put_worklist(pc, cptr, ©, TRUE); + if (req_type == PACKET_CITY_RENAME) { + cptr = put_string(cptr, packet->name); + } else { + cptr = put_string(cptr, ""); + } put_uint16(buffer, cptr-buffer); return send_packet_data(pc, buffer, cptr-buffer);