Update of /cvsroot/netrek/client/netrekxp/src In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv13780/src Modified Files: parsemeta.c Log Message: parsemeta.c: fixed all color issues. Padded metaserver string in case of servers with statuslevel > statusNull, so that ping column lines up properly. Fixed metaStatusLevel option so that it works with the UDP metaserver - broken in COW too. Turned off verbose variable (was only on for testing purposes). Index: parsemeta.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/parsemeta.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- parsemeta.c 27 Nov 2006 07:08:41 -0000 1.12 +++ parsemeta.c 29 Nov 2006 10:13:29 -0000 1.13 @@ -68,10 +68,21 @@ static int msock = -1; /* the socket to talk to the metaservers */ static int sent = 0; /* number of solicitations sent */ static int seen = 0; /* number of replies seen */ -static int verbose = 1; /* whether to talk a lot about it all */ +static int verbose = 0; /* whether to talk a lot about it all */ static int type; /* type of connection requested */ #define RTT_AVG_BUFLEN 5 /* number of samples used for average rtt time */ + /* from meta.h of metaserver code */ +#define SS_WORKING 0 +#define SS_QUEUE 1 +#define SS_OPEN 2 +#define SS_EMPTY 3 +#define SS_NOCONN 4 +#define SS_INIT 5 + /* not a real metaserver number, but overcomes a limitation of dropping text */ + /* description of sp->why_dead */ +#define SS_TOUT 6 + /* Local Types */ struct servers @@ -112,7 +123,7 @@ * particular point. * * The strings after statusNull are internal status types and are formatted - * separatly from the other strings. + * separately from the other strings. * * The string corresponding to "statusNull" is assigned to those servers which * have "statusNobody" or earlier strings in old, cached, meta-server data. */ @@ -491,6 +502,7 @@ struct servers *sp = NULL; char *host, type; int port, status, age, players, queue, throwaway; + int tempstatus = 0; throwaway = 0; @@ -505,8 +517,31 @@ if (p == NULL) continue; status = atoi(p); - /* ignore servers based on status */ - if (status > statusLevel) + /* Metaserver and client define status level differently, must convert + status so that client option metaStatusLevel works properly */ + switch (status) { + case SS_QUEUE: + tempstatus = statusWait; + break; + case SS_OPEN: + tempstatus = statusOpen; + break; + case SS_EMPTY: + tempstatus = statusNobody; + break; + case SS_TOUT: + tempstatus = statusTout; + break; + case SS_NOCONN: /* no connection */ + case SS_WORKING: /* metaserver should not return this */ + case SS_INIT: /* nor this */ + default: + tempstatus = statusNoConnect; + break; + } + + /* ignore servers based on converted status */ + if (tempstatus > statusLevel) throwaway++; /* the sp->why_dead workaround */ if (status == 6) @@ -564,16 +599,6 @@ } sp->refresh = 1; - /* from meta.h of metaserver code */ -#define SS_WORKING 0 -#define SS_QUEUE 1 -#define SS_OPEN 2 -#define SS_EMPTY 3 -#define SS_NOCONN 4 -#define SS_INIT 5 - /* not a real metaserver number, but overcomes a limitation of dropping text */ - /* description of sp->why_dead */ -#define SS_TOUT 6 switch (status) { case SS_QUEUE: sp->status = statusWait; @@ -1299,6 +1324,10 @@ strcat (buf, " "); } } + else { + /* Pad string with spaces for formatting purposes */ + strcat (buf, " "); + } #ifdef METAPING @@ -1384,7 +1413,7 @@ W_WriteText(metaWin, 0, metaHeight-3, W_Yellow, "Refresh", 7, 0); /* Add quit option */ - W_WriteText (metaWin, 0, metaHeight-2, textColor, "Quit", 4, 0); + W_WriteText (metaWin, 0, metaHeight-2, W_Yellow, "Quit", 4, 0); /* Additional Help Options */ W_WriteText (metaWin, 0, metaHeight-1, W_Yellow,