- fp = fopen("/proc/net/wireless", "r");
- if (fp == NULL) {
- fprintf(stderr, "Error opening wireless file: %s\n",
- strerror(errno));
- return smprintf(UNKNOWN_STR);
- }
-
- ccat(2, wificard, ":");
- fgets(buf, sizeof(buf), fp);
- fgets(buf, sizeof(buf), fp);
- fgets(buf, sizeof(buf), fp);
-
- datastart = strstr(buf, concat);
- if (datastart != NULL) {
- datastart = strstr(buf, ":");
- sscanf(datastart + 1, " %*d %d %*d %*d %*d %*d %*d %*d %*d %*d", &strength);
- }
-
- fclose(fp);
- return smprintf("%d%%", strength);
-}
-
-static char *
-wifi_essid(const char *wificard)
-{
- char id[IW_ESSID_MAX_SIZE+1];
- int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- struct iwreq wreq;
-
- memset(&wreq, 0, sizeof(struct iwreq));
- wreq.u.essid.length = IW_ESSID_MAX_SIZE+1;
- sprintf(wreq.ifr_name, wificard);
- if(sockfd == -1) {
- fprintf(stderr, "Cannot open socket for interface: %s: %s\n",
- wificard, strerror(errno));
- return smprintf(UNKNOWN_STR);
- }
- wreq.u.essid.pointer = id;
- if (ioctl(sockfd,SIOCGIWESSID, &wreq) == -1) {
- fprintf(stderr, "Get ESSID ioctl failed for interface %s: %s\n",
- wificard, strerror(errno));
- return smprintf(UNKNOWN_STR);
- }
-
- if (strcmp((char *)wreq.u.essid.pointer, "") == 0)
- return smprintf(UNKNOWN_STR);
- else
- return smprintf("%s", (char *)wreq.u.essid.pointer);
-}
-
-int
-main(void)
-{
- size_t i;
- char status_string[4096];
- char *res, *element;
- struct arg argument;
-
- dpy = XOpenDisplay(NULL);
-
- for (;;) {
- memset(status_string, 0, sizeof(status_string));
- for (i = 0; i < sizeof(args) / sizeof(args[0]); ++i) {
- argument = args[i];
- if (argument.args == NULL)
- res = argument.func();
- else
- res = argument.func(argument.args);
- element = smprintf(argument.format, res);
- if (element == NULL) {
- element = smprintf(UNKNOWN_STR);
- fprintf(stderr, "Failed to format output.\n");