Files
lcdproc/server/client_data.c
T

85 lines
1.6 KiB
C
Raw Normal View History

1999-12-09 23:15:14 +00:00
/*
client_data.c
Creates and destroys a client's data structures. These are mainly
its name, screen list, and menu list.
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "../shared/debug.h"
#include "client_data.h"
#include "screen.h"
#include "screenlist.h"
int
client_data_init (client_data * d)
1999-12-09 23:15:14 +00:00
{
2000-04-03 22:13:57 +00:00
if (!d)
return -1;
1999-12-09 23:15:14 +00:00
2000-04-03 22:13:57 +00:00
d->ack = 0;
d->name = NULL;
1999-12-09 23:15:14 +00:00
2000-04-03 22:13:57 +00:00
d->screenlist = LL_new ();
if (!d->screenlist) {
fprintf (stderr, "client_data_init: Error allocating screenlist\n");
return -1;
}
/* TODO: this section... (client menus)
d->menulist = LL_new();
if(!d->menulist)
{
fprintf(stderr, "client_data_init: Error allocating menulist\n");
return -1;
}
*/
return 0;
1999-12-09 23:15:14 +00:00
}
int
client_data_destroy (client_data * d)
1999-12-09 23:15:14 +00:00
{
2000-04-03 22:13:57 +00:00
screen *s;
1999-12-09 23:15:14 +00:00
2000-04-03 22:13:57 +00:00
debug ("client_data_destroy\n");
2000-04-03 22:13:57 +00:00
if (!d)
return -1;
1999-12-09 23:15:14 +00:00
2000-04-03 22:13:57 +00:00
d->ack = 0;
1999-12-09 23:15:14 +00:00
2000-04-03 22:13:57 +00:00
// Clean up the name...
if (d->name)
free (d->name);
1999-12-09 23:15:14 +00:00
2000-04-03 22:13:57 +00:00
// Clean up the screenlist...
debug ("client_data_destroy: Cleaning screenlist\n");
LL_Rewind (d->screenlist);
do {
s = (screen *) LL_Get (d->screenlist);
if (s) {
debug ("client_data_destroy: removing screen %s\n", s->id);
1999-12-09 23:15:14 +00:00
2000-04-03 22:13:57 +00:00
// FIXME? This shouldn't be handled here...
// Now, remove it from the screenlist...
if (screenlist_remove_all (s) < 0) {
// Not a serious error..
fprintf (stderr, "client_data_destroy: Error dequeueing screen\n");
return 0;
}
// Free its memory...
screen_destroy (s);
}
} while (LL_Next (d->screenlist) == 0);
LL_Destroy (d->screenlist);
2000-04-03 22:13:57 +00:00
// TODO: clean up the rest of the data...
1999-12-09 23:15:14 +00:00
2000-04-03 22:13:57 +00:00
return 0;
1999-12-09 23:15:14 +00:00
}