int main(void) { Display *dpy; struct iwreq wreq; snd_mixer_t *handle; snd_mixer_elem_t *elem; snd_mixer_selem_id_t *vol_info; int sockfd, loops = 60; char *status, *mpd, *net, *vol, *bat, *clk; if(!(dpy = XOpenDisplay(NULL))) { fprintf(stderr, "dwmst: cannot open display.\n"); exit(EXIT_FAILURE); } memset(&wreq, 0, sizeof(struct iwreq)); snprintf(wreq.ifr_name, sizeof(WIRELESS_DEVICE), WIRELESS_DEVICE); sockfd = socket(AF_INET, SOCK_DGRAM, 0); snd_mixer_open(&handle, 0); snd_mixer_attach(handle, "default"); snd_mixer_selem_register(handle, NULL, NULL); snd_mixer_load(handle); snd_mixer_selem_id_malloc(&vol_info); snd_mixer_selem_id_set_name(vol_info, VOL_CH); elem = snd_mixer_find_selem(handle, vol_info); if(elem == NULL) { fprintf(stderr, "dwmst: can not open device.\n"); cleanup(dpy, sockfd, handle, vol_info); exit(EXIT_FAILURE); } for(;;sleep(INTERVAL)) { if(++loops > 60) { loops = 0; mpd = get_mpd(); net = get_net(wreq, sockfd); bat = get_bat(); clk = get_time(); } vol = get_vol(handle, elem); status = smprintf("%s %s %s %s %s", mpd, net, vol, bat, clk); setstatus(dpy, status); free(vol); free(status); } free(mpd); free(net); free(bat); free(clk); cleanup(dpy, sockfd, handle, vol_info); exit(EXIT_SUCCESS); }
int main(void) { Display *dpy; Window root; char status[201], net[30], vol[14], cpu[14], mem[14], bat[48]; int netloops = 60; dpy = XOpenDisplay(NULL); if(dpy == NULL) { fprintf(stderr, "ERROR: could not open display\n"); return 1; } root = XRootWindow(dpy, DefaultScreen(dpy)); winfo = malloc(sizeof(struct wireless_info)); memset(winfo, 0, sizeof(struct wireless_info)); skfd = iw_sockets_open(); infile = fopen(CPU_F, "r"); fscanf(infile, "cpu %ld %ld %ld %ld", &jif1, &jif2, &jif3, &jif4); fclose(infile); while(1) { if(++netloops > 60) { netloops = 0; get_wifi(net); } get_vol(vol); get_cpu(cpu); get_mem(mem); get_bat(bat); sprintf(status, "%s %s %s %s %s", net, vol, cpu, mem, bat); XStoreName(dpy, root, status); XFlush(dpy); sleep(INTERVAL); } /* NEXT LINES SHOULD NEVER EXECUTE! */ XCloseDisplay(dpy); iw_sockets_close(skfd); return 0; }
static int process_data(server *srv, connection *con, plugin_data *p, buffer *filename, chunkqueue *cq, off_t range_start) { int err; size_t len; //off_t *abs_off; vhd_state_t *state; vhd_context_t *vhd; err = 0; state = &p->state; vhd = &state->vhd; //abs_off = range_start + con->range_offset; //abs_off = state->abs_off; DEBUGLOG("so", "Absolute Offset", state->abs_off); DEBUGLOG("sd", "Current Virtual Block = ", state->curr_virt_blk); if (state->curr_virt_blk != -1) { DEBUGLOG("s", "Process Block"); err = process_block(srv, cq, state, &(state->abs_off)); goto done; } if (state->abs_off < 0 + sizeof(vhd_footer_t)) { err = get_footer(srv, cq, state, &(state->abs_off)); goto done; } if (((off_t)state->abs_off) < vhd->footer.data_offset + sizeof(vhd_header_t)) { err = get_header(srv, cq, state, &(state->abs_off)); goto done; } if (((off_t)state->abs_off) < vhd->header.table_offset + state->bat_buf_size) { err = get_bat(srv, cq, state, &(state->abs_off)); if (err) goto done; if (state->vhd_ready) err = prepare_for_write(srv, state, filename, state->abs_off); goto done; } if (state->blocks_written < state->blocks_allocated) { LOG("sdd", "BUG!", state->blocks_written, state->blocks_allocated); err = -EINVAL; goto done; } // TODO: we could actually validate the primary footer at the end len = chunkqueue_avail(cq); DEBUGLOG("sd", "Discarding the remainder", len); discard_bytes(srv, cq, len); state->abs_off += len; if (state->zero_unalloc) { err = zero_unallocated(srv, state); state->zero_unalloc = 0; } done: con->range_offset = state->abs_off - range_start; return err; }