- /* open wifi file */
- if (!(fp = fopen("/proc/net/wireless", "r"))) {
- fprintf(stderr, "Error opening wireless file.\n");
- return smprintf(unknowntext);
- }
-
- /* extract the signal strength */
- strcpy(needle, wificard);
- strcat(needle, ":");
- fgets(buf, bufsize, fp);
- fgets(buf, bufsize, fp);
- fgets(buf, bufsize, fp);
- if ((datastart = strstr(buf, needle)) != NULL) {
- datastart = strstr(buf, ":");
- sscanf(datastart + 1, " %*d %d %*d %*d %*d %*d %*d %*d %*d %*d", &strength);
- }
-
- /* close wifi file */
- fclose(fp);
-
- /* return strength in percent */
- return smprintf("%d%%", strength);
-}
-
-/* wifi essid */
-char *
-wifi_essid(const char *wificard)
-{
- char id[IW_ESSID_MAX_SIZE+1];
- int sockfd;
- struct iwreq wreq;
-
- /* prepare */
- memset(&wreq, 0, sizeof(struct iwreq));
- wreq.u.essid.length = IW_ESSID_MAX_SIZE+1;
-
- /* set the interface */
- sprintf(wreq.ifr_name, wificard);
-
- /* check */
- if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
- fprintf(stderr, "Cannot open socket for interface: %s\n", wificard);
- return smprintf(unknowntext);
- }
- wreq.u.essid.pointer = id;
- if (ioctl(sockfd,SIOCGIWESSID, &wreq) == -1) {
- fprintf(stderr, "Get ESSID ioctl failed for interface %s\n", wificard);
- return smprintf(unknowntext);
- }
-
- /* return the essid */
- if (strcmp((char *)wreq.u.essid.pointer, "") == 0) {
- return smprintf(unknowntext);
- } else {
- return smprintf("%s", (char *)wreq.u.essid.pointer);
- }
-}
-
-/* main function */
-int
-main(void)
-{
- char status_string[1024];
- struct arg argument;
-
- /* try to open display */
- if (!(dpy = XOpenDisplay(0x0))) {
- fprintf(stderr, "Cannot open display!\n");
- exit(1);
- }
-
- /* return status every interval */
- for (;;) {
- /* clear the string */
- memset(status_string, 0, sizeof(status_string));
-
- /* generate status_string */
- for (size_t i = 0; i < sizeof(args) / sizeof(args[0]); ++i) {
- argument = args[i];
- char *res = argument.func(argument.args);
- char *element = smprintf(argument.format, res);
- if (element == NULL) {
- element = smprintf(unknowntext);
- fprintf(stderr, "Failed to format output.\n");