int get_window(void) { FvwmPacket* packet; struct ConfigWinPacket *cfgpacket; int last = 0; fd_set infds; FD_ZERO(&infds); FD_SET(fd[1], &infds); select(fd_width, SELECT_FD_SET_CAST &infds, 0, 0, NULL); if ( (packet = ReadFvwmPacket(fd[1])) == NULL ) DeadPipe(0); else { cfgpacket = (struct ConfigWinPacket*) packet->body; switch (packet->type) { case M_CONFIGURE_WINDOW: if (is_suitable_window(packet->body)) { window_item *wi = (window_item*)safemalloc(sizeof( window_item )); wi->frame = cfgpacket->frame; wi->th = cfgpacket->title_height; wi->bw = cfgpacket->border_width; wi->width = cfgpacket->frame_width; wi->height = cfgpacket->frame_height; if (!wins_tail) wins_tail = wi; insert_window_list(&wins, wi); ++wins_count; } last = 1; break; case M_END_WINDOWLIST: break; default: fprintf(console, "%s: internal inconsistency: unknown message 0x%08x\n", module->name, (int)packet->type); break; } } return last; }
int get_window(void) { unsigned long header[HEADER_SIZE], *body; int count, last = 0; fd_set infds; FD_ZERO(&infds); FD_SET(fd[1], &infds); select(fd_width,&infds, 0, 0, NULL); if ((count = ReadFvwmPacket(fd[1],header,&body)) > 0) { switch (header[1]) { case M_CONFIGURE_WINDOW: if (is_suitable_window(body)) { window_item *wi = (window_item*)safemalloc(sizeof( window_item )); wi->frame = (Window)body[1]; wi->th = (int)body[9]; wi->bw = (int)body[10]; wi->width = body[5]; wi->height = body[6]; if (!wins_tail) wins_tail = wi; insert_window_list(&wins, wi); ++wins_count; } last = 1; break; case M_END_WINDOWLIST: break; default: fprintf(console, "%s: internal inconsistency: unknown message\n", argv0); break; } free(body); } return last; }