X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=stat.c;h=33fdb8c1d0fec0596482820f447fb57c3754b003;hp=7346f097e61e9933759563d64af7e7b2dedd3eb6;hb=8a8cd0f5bb40dcfad68608193e8c57decd90b25e;hpb=d7cda933daa35663b2b9b61d62cb514afa37fd18 diff --git a/stat.c b/stat.c index 7346f097..33fdb8c1 100644 --- a/stat.c +++ b/stat.c @@ -31,25 +31,20 @@ #define MAX_STAT_CLIENTS 50 /** - * The structure associated with a connected client that sent the 'stat' command -* + * describes a status client of para_audiod + * + * There's one such structure per audiod client that sent the 'stat' command. * * A status client is identified by its file descriptor. para_audiod * keeps a list of connected status clients. */ struct stat_client { -/** - * - * - * the stat client's file descriptor - */ -int fd; -long unsigned item_mask; -/** - * - * its entry in the list of stat clients -*/ -struct list_head node; + /** the stat client's file descriptor */ + int fd; + /** bitmask of those status items the client is interested in */ + long unsigned item_mask; + /** its entry in the list of stat clients */ + struct list_head node; }; static struct list_head client_list; @@ -129,7 +124,6 @@ int stat_client_add(int fd, long unsigned mask) new_client = para_malloc(sizeof(struct stat_client)); new_client->fd = fd; new_client->item_mask = mask; - add_close_on_fork_list(fd); list_add(&new_client->node, &client_list); dump_stat_client_list(); num_clients++; @@ -171,7 +165,6 @@ void stat_client_write(char *msg, int itemnum) } /* write error or fd not ready for writing */ close(fd); - del_close_on_fork_list(fd); num_clients--; PARA_INFO_LOG("deleting client on fd %d\n", fd); list_del(&sc->node); @@ -211,8 +204,10 @@ void dump_empty_status(void) int stat_item_valid(const char *item) { int i; - if (!item || !*item) + if (!item || !*item) { + PARA_ERROR_LOG("%s\n", "no item"); return -E_UNKNOWN_STAT_ITEM; + } FOR_EACH_STAT_ITEM(i) if (!strcmp(status_item_list[i], item)) return i; @@ -267,6 +262,7 @@ unsigned for_each_line(char *buf, int n, void (*line_handler)(char *)) char *start = buf, *end; int i, num_lines = 0; +// PARA_INFO_LOG("buf: %s", buf); while (start < buf + n) { char *next_null; char *next_cr; @@ -284,6 +280,7 @@ unsigned for_each_line(char *buf, int n, void (*line_handler)(char *)) num_lines++; if (line_handler) { *end = '\0'; +// PARA_INFO_LOG("calling line handler: %s\n", start); line_handler(start); start = ++end; } else