Add warn() and die()
Given slstatus is a tool that runs in the background, most likely run from .xinitrc, it's important to prepend the name of the tool to error messages so it becomes clear where the error is coming from. To make this much more consistent, this commit adds warn() and die() utility functions consistent with other suckless projects and adapts all calls to fprintf(stderr, *) to the warn() and die() functions, greatly increasing the readability of the code.
This commit is contained in:
		
				
					committed by
					
						
						Aaron Marcher
					
				
			
			
				
	
			
			
			
						parent
						
							a4fe8c9741
						
					
				
				
					commit
					80fc20d1d6
				
			@@ -59,13 +59,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		fd = open("/dev/apm", O_RDONLY);
 | 
							fd = open("/dev/apm", O_RDONLY);
 | 
				
			||||||
		if (fd < 0) {
 | 
							if (fd < 0) {
 | 
				
			||||||
			fprintf(stderr, "open '/dev/apm': %s\n", strerror(errno));
 | 
								warn("open '/dev/apm':");
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (ioctl(fd, APM_IOC_GETPOWER, &apm_info) < 0) {
 | 
							if (ioctl(fd, APM_IOC_GETPOWER, &apm_info) < 0) {
 | 
				
			||||||
			fprintf(stderr, "ioctl 'APM_IOC_GETPOWER': %s\n",
 | 
								warn("ioctl 'APM_IOC_GETPOWER':");
 | 
				
			||||||
			        strerror(errno));
 | 
					 | 
				
			||||||
			close(fd);
 | 
								close(fd);
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -90,13 +89,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		fd = open("/dev/apm", O_RDONLY);
 | 
							fd = open("/dev/apm", O_RDONLY);
 | 
				
			||||||
		if (fd < 0) {
 | 
							if (fd < 0) {
 | 
				
			||||||
			fprintf(stderr, "open '/dev/apm': %s\n", strerror(errno));
 | 
								warn("open '/dev/apm':");
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (ioctl(fd, APM_IOC_GETPOWER, &apm_info) < 0) {
 | 
							if (ioctl(fd, APM_IOC_GETPOWER, &apm_info) < 0) {
 | 
				
			||||||
			fprintf(stderr, "ioctl 'APM_IOC_GETPOWER': %s\n",
 | 
								warn("ioctl 'APM_IOC_GETPOWER':");
 | 
				
			||||||
			        strerror(errno));
 | 
					 | 
				
			||||||
			close(fd);
 | 
								close(fd);
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,7 +57,7 @@
 | 
				
			|||||||
		size = sizeof(freq);
 | 
							size = sizeof(freq);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (sysctl(mib, 2, &freq, &size, NULL, 0) < 0) {
 | 
							if (sysctl(mib, 2, &freq, &size, NULL, 0) < 0) {
 | 
				
			||||||
			fprintf(stderr, "sysctl 'HW_CPUSPEED': %s\n", strerror(errno));
 | 
								warn("sysctl 'HW_CPUSPEED':");
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -80,7 +80,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		memcpy(b, a, sizeof(b));
 | 
							memcpy(b, a, sizeof(b));
 | 
				
			||||||
		if (sysctl(mib, 2, &a, &size, NULL, 0) < 0) {
 | 
							if (sysctl(mib, 2, &a, &size, NULL, 0) < 0) {
 | 
				
			||||||
			fprintf(stderr, "sysctl 'KERN_CPTIME': %s\n", strerror(errno));
 | 
								warn("sysctl 'KERN_CPTIME':");
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (!valid) {
 | 
							if (!valid) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@ datetime(const char *fmt)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	t = time(NULL);
 | 
						t = time(NULL);
 | 
				
			||||||
	if (!strftime(buf, sizeof(buf), fmt, localtime(&t))) {
 | 
						if (!strftime(buf, sizeof(buf), fmt, localtime(&t))) {
 | 
				
			||||||
		fprintf(stderr, "strftime: Result string exceeds buffer size\n");
 | 
							warn("strftime: Result string exceeds buffer size");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@ disk_free(const char *mnt)
 | 
				
			|||||||
	struct statvfs fs;
 | 
						struct statvfs fs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (statvfs(mnt, &fs) < 0) {
 | 
						if (statvfs(mnt, &fs) < 0) {
 | 
				
			||||||
		fprintf(stderr, "statvfs '%s': %s\n", mnt, strerror(errno));
 | 
							warn("statvfs '%s':", mnt);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -26,7 +26,7 @@ disk_perc(const char *mnt)
 | 
				
			|||||||
	struct statvfs fs;
 | 
						struct statvfs fs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (statvfs(mnt, &fs) < 0) {
 | 
						if (statvfs(mnt, &fs) < 0) {
 | 
				
			||||||
		fprintf(stderr, "statvfs '%s': %s\n", mnt, strerror(errno));
 | 
							warn("statvfs '%s':", mnt);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,7 +40,7 @@ disk_total(const char *mnt)
 | 
				
			|||||||
	struct statvfs fs;
 | 
						struct statvfs fs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (statvfs(mnt, &fs) < 0) {
 | 
						if (statvfs(mnt, &fs) < 0) {
 | 
				
			||||||
		fprintf(stderr, "statvfs '%s': %s\n", mnt, strerror(errno));
 | 
							warn("statvfs '%s':", mnt);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -54,7 +54,7 @@ disk_used(const char *mnt)
 | 
				
			|||||||
	struct statvfs fs;
 | 
						struct statvfs fs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (statvfs(mnt, &fs) < 0) {
 | 
						if (statvfs(mnt, &fs) < 0) {
 | 
				
			||||||
		fprintf(stderr, "statvfs '%s': %s\n", mnt, strerror(errno));
 | 
							warn("statvfs '%s':", mnt);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@ const char *
 | 
				
			|||||||
hostname(void)
 | 
					hostname(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (gethostname(buf, sizeof(buf)) < 0) {
 | 
						if (gethostname(buf, sizeof(buf)) < 0) {
 | 
				
			||||||
		fprintf(stderr, "gethostbyname: %s\n", strerror(errno));
 | 
							warn("gethostbyname:");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ ipv4(const char *iface)
 | 
				
			|||||||
	char host[NI_MAXHOST];
 | 
						char host[NI_MAXHOST];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (getifaddrs(&ifaddr) < 0) {
 | 
						if (getifaddrs(&ifaddr) < 0) {
 | 
				
			||||||
		fprintf(stderr, "getifaddrs: %s\n", strerror(errno));
 | 
							warn("getifaddrs:");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,7 +32,7 @@ ipv4(const char *iface)
 | 
				
			|||||||
		if (!strcmp(ifa->ifa_name, iface) &&
 | 
							if (!strcmp(ifa->ifa_name, iface) &&
 | 
				
			||||||
		    (ifa->ifa_addr->sa_family == AF_INET)) {
 | 
							    (ifa->ifa_addr->sa_family == AF_INET)) {
 | 
				
			||||||
			if (s != 0) {
 | 
								if (s != 0) {
 | 
				
			||||||
				fprintf(stderr, "getnameinfo: %s\n", gai_strerror(s));
 | 
									warn("getnameinfo: %s", gai_strerror(s));
 | 
				
			||||||
				return NULL;
 | 
									return NULL;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return bprintf("%s", host);
 | 
								return bprintf("%s", host);
 | 
				
			||||||
@@ -52,7 +52,7 @@ ipv6(const char *iface)
 | 
				
			|||||||
	char host[NI_MAXHOST];
 | 
						char host[NI_MAXHOST];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (getifaddrs(&ifaddr) < 0) {
 | 
						if (getifaddrs(&ifaddr) < 0) {
 | 
				
			||||||
		fprintf(stderr, "getifaddrs: %s\n", strerror(errno));
 | 
							warn("getifaddrs:");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -65,7 +65,7 @@ ipv6(const char *iface)
 | 
				
			|||||||
		if (!strcmp(ifa->ifa_name, iface) &&
 | 
							if (!strcmp(ifa->ifa_name, iface) &&
 | 
				
			||||||
		    (ifa->ifa_addr->sa_family == AF_INET6)) {
 | 
							    (ifa->ifa_addr->sa_family == AF_INET6)) {
 | 
				
			||||||
			if (s != 0) {
 | 
								if (s != 0) {
 | 
				
			||||||
				fprintf(stderr, "getnameinfo: %s\n", gai_strerror(s));
 | 
									warn("getnameinfo: %s", gai_strerror(s));
 | 
				
			||||||
				return NULL;
 | 
									return NULL;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return bprintf("%s", host);
 | 
								return bprintf("%s", host);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@ kernel_release(void)
 | 
				
			|||||||
	struct utsname udata;
 | 
						struct utsname udata;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (uname(&udata) < 0) {
 | 
						if (uname(&udata) < 0) {
 | 
				
			||||||
		fprintf(stderr, "uname: %s\n", strerror(errno));
 | 
							warn("uname:");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@ keyboard_indicators(void)
 | 
				
			|||||||
	XKeyboardState state;
 | 
						XKeyboardState state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!(dpy = XOpenDisplay(NULL))) {
 | 
						if (!(dpy = XOpenDisplay(NULL))) {
 | 
				
			||||||
		fprintf(stderr, "Cannot open display\n");
 | 
							warn("XOpenDisplay: Failed to open display");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	XGetKeyboardControl(dpy, &state);
 | 
						XGetKeyboardControl(dpy, &state);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@ load_avg(const char *fmt)
 | 
				
			|||||||
	double avgs[3];
 | 
						double avgs[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (getloadavg(avgs, 3) < 0) {
 | 
						if (getloadavg(avgs, 3) < 0) {
 | 
				
			||||||
		fprintf(stderr, "getloadavg: Could not obtain load average.\n");
 | 
							warn("getloadavg: Failed to obtain load average");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ num_files(const char *dir)
 | 
				
			|||||||
	int num;
 | 
						int num;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!(fd = opendir(dir))) {
 | 
						if (!(fd = opendir(dir))) {
 | 
				
			||||||
		fprintf(stderr, "opendir '%s': %s\n", dir, strerror(errno));
 | 
							warn("opendir '%s':", dir);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@ run_command(const char *cmd)
 | 
				
			|||||||
	FILE *fp;
 | 
						FILE *fp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!(fp = popen(cmd, "r"))) {
 | 
						if (!(fp = popen(cmd, "r"))) {
 | 
				
			||||||
		fprintf(stderr, "popen '%s': %s\n", cmd, strerror(errno));
 | 
							warn("popen '%s':", cmd);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	p = fgets(buf, sizeof(buf) - 1, fp);
 | 
						p = fgets(buf, sizeof(buf) - 1, fp);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,11 +13,11 @@
 | 
				
			|||||||
		size_t bytes_read;
 | 
							size_t bytes_read;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!(fp = fopen(path, "r"))) {
 | 
							if (!(fp = fopen(path, "r"))) {
 | 
				
			||||||
			fprintf(stderr, "fopen '%s': %s\n", path, strerror(errno));
 | 
								warn("fopen '%s':", path);
 | 
				
			||||||
			return 0;
 | 
								return 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (!(bytes_read = fread(buf, sizeof(char), bufsiz, fp))) {
 | 
							if (!(bytes_read = fread(buf, sizeof(char), bufsiz, fp))) {
 | 
				
			||||||
			fprintf(stderr, "fread '%s': %s\n", path, strerror(errno));
 | 
								warn("fread '%s':", path);
 | 
				
			||||||
			fclose(fp);
 | 
								fclose(fp);
 | 
				
			||||||
			return 0;
 | 
								return 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -139,21 +139,21 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		nswap = swapctl(SWAP_NSWAP, 0, 0);
 | 
							nswap = swapctl(SWAP_NSWAP, 0, 0);
 | 
				
			||||||
		if (nswap < 1) {
 | 
							if (nswap < 1) {
 | 
				
			||||||
			fprintf(stderr, "swaptctl 'SWAP_NSWAP': %s\n", strerror(errno));
 | 
								warn("swaptctl 'SWAP_NSWAP':");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		fsep = sep = calloc(nswap, sizeof(*sep));
 | 
							fsep = sep = calloc(nswap, sizeof(*sep));
 | 
				
			||||||
		if (!sep) {
 | 
							if (!sep) {
 | 
				
			||||||
			fprintf(stderr, "calloc 'nswap': %s\n", strerror(errno));
 | 
								warn("calloc 'nswap':");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		rnswap = swapctl(SWAP_STATS, (void *)sep, nswap);
 | 
							rnswap = swapctl(SWAP_STATS, (void *)sep, nswap);
 | 
				
			||||||
		if (rnswap < 0) {
 | 
							if (rnswap < 0) {
 | 
				
			||||||
			fprintf(stderr, "swapctl 'SWAP_STATA': %s\n", strerror(errno));
 | 
								warn("swapctl 'SWAP_STATA':");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (nswap != rnswap) {
 | 
							if (nswap != rnswap) {
 | 
				
			||||||
			fprintf(stderr, "SWAP_STATS != SWAP_NSWAP\n");
 | 
								warn("getstats: SWAP_STATS != SWAP_NSWAP");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		*total = 0;
 | 
							*total = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,8 +36,7 @@
 | 
				
			|||||||
		size = sizeof(temp);
 | 
							size = sizeof(temp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (sysctl(mib, 5, &temp, &size, NULL, 0) < 0) {
 | 
							if (sysctl(mib, 5, &temp, &size, NULL, 0) < 0) {
 | 
				
			||||||
			fprintf(stderr, "sysctl 'SENSOR_TEMP': %s\n",
 | 
								warn("sysctl 'SENSOR_TEMP':");
 | 
				
			||||||
			        strerror(errno));
 | 
					 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@ format(int uptime)
 | 
				
			|||||||
		size = sizeof(boottime);
 | 
							size = sizeof(boottime);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (sysctl(mib, 2, &boottime, &size, NULL, 0) < 0) {
 | 
							if (sysctl(mib, 2, &boottime, &size, NULL, 0) < 0) {
 | 
				
			||||||
			fprintf(stderr, "sysctl 'KERN_BOOTTIME': %s\n", strerror(errno));
 | 
								warn("sysctl 'KERN_BOOTTIME':");
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ username(void)
 | 
				
			|||||||
	struct passwd *pw;
 | 
						struct passwd *pw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!(pw = getpwuid(geteuid()))) {
 | 
						if (!(pw = getpwuid(geteuid()))) {
 | 
				
			||||||
		fprintf(stderr, "getpwuid '%d': %s\n", geteuid(), strerror(errno));
 | 
							warn("getpwuid '%d':", geteuid());
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,21 +21,19 @@ vol_perc(const char *card)
 | 
				
			|||||||
	char *vnames[] = SOUND_DEVICE_NAMES;
 | 
						char *vnames[] = SOUND_DEVICE_NAMES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((afd = open(card, O_RDONLY | O_NONBLOCK)) < 0) {
 | 
						if ((afd = open(card, O_RDONLY | O_NONBLOCK)) < 0) {
 | 
				
			||||||
		fprintf(stderr, "open '%s': %s\n", card, strerror(errno));
 | 
							warn("open '%s':", card);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ioctl(afd, (int)SOUND_MIXER_READ_DEVMASK, &devmask) < 0) {
 | 
						if (ioctl(afd, (int)SOUND_MIXER_READ_DEVMASK, &devmask) < 0) {
 | 
				
			||||||
		fprintf(stderr, "ioctl 'SOUND_MIXER_READ_DEVMASK': %s\n",
 | 
							warn("ioctl 'SOUND_MIXER_READ_DEVMASK':");
 | 
				
			||||||
		        strerror(errno));
 | 
					 | 
				
			||||||
		close(afd);
 | 
							close(afd);
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for (i = 0; i < LEN(vnames); i++) {
 | 
						for (i = 0; i < LEN(vnames); i++) {
 | 
				
			||||||
		if (devmask & (1 << i) && !strcmp("vol", vnames[i])) {
 | 
							if (devmask & (1 << i) && !strcmp("vol", vnames[i])) {
 | 
				
			||||||
			if (ioctl(afd, MIXER_READ(i), &v) < 0) {
 | 
								if (ioctl(afd, MIXER_READ(i), &v) < 0) {
 | 
				
			||||||
				fprintf(stderr, "ioctl 'MIXER_READ(%ld)': %s\n", i,
 | 
									warn("ioctl 'MIXER_READ(%ld)':", i);
 | 
				
			||||||
				        strerror(errno));
 | 
					 | 
				
			||||||
				close(afd);
 | 
									close(afd);
 | 
				
			||||||
				return NULL;
 | 
									return NULL;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,8 +26,7 @@
 | 
				
			|||||||
		snprintf(path, sizeof(path), "%s%s%s", "/sys/class/net/", iface,
 | 
							snprintf(path, sizeof(path), "%s%s%s", "/sys/class/net/", iface,
 | 
				
			||||||
		         "/operstate");
 | 
							         "/operstate");
 | 
				
			||||||
		if (!(fp = fopen(path, "r"))) {
 | 
							if (!(fp = fopen(path, "r"))) {
 | 
				
			||||||
			fprintf(stderr, "fopen '%s': %s\n", path,
 | 
								warn("fopen '%s':", path);
 | 
				
			||||||
			        strerror(errno));
 | 
					 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		p = fgets(status, 5, fp);
 | 
							p = fgets(status, 5, fp);
 | 
				
			||||||
@@ -37,8 +36,7 @@
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!(fp = fopen("/proc/net/wireless", "r"))) {
 | 
							if (!(fp = fopen("/proc/net/wireless", "r"))) {
 | 
				
			||||||
			fprintf(stderr, "fopen '/proc/net/wireless': %s\n",
 | 
								warn("fopen '/proc/net/wireless':");
 | 
				
			||||||
			        strerror(errno));
 | 
					 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -74,13 +72,12 @@
 | 
				
			|||||||
		snprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", iface);
 | 
							snprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", iface);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
 | 
							if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
 | 
				
			||||||
			fprintf(stderr, "socket 'AF_INET': %s\n",
 | 
								warn("socket 'AF_INET':");
 | 
				
			||||||
			        strerror(errno));
 | 
					 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		wreq.u.essid.pointer = id;
 | 
							wreq.u.essid.pointer = id;
 | 
				
			||||||
		if (ioctl(sockfd,SIOCGIWESSID, &wreq) < 0) {
 | 
							if (ioctl(sockfd,SIOCGIWESSID, &wreq) < 0) {
 | 
				
			||||||
			fprintf(stderr, "ioctl 'SIOCGIWESSID': %s\n", strerror(errno));
 | 
								warn("ioctl 'SIOCGIWESSID':");
 | 
				
			||||||
			close(sockfd);
 | 
								close(sockfd);
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -111,22 +108,19 @@
 | 
				
			|||||||
		memset(&bssid, 0, sizeof(bssid));
 | 
							memset(&bssid, 0, sizeof(bssid));
 | 
				
			||||||
		memset(nr, 0, sizeof(struct ieee80211_nodereq));
 | 
							memset(nr, 0, sizeof(struct ieee80211_nodereq));
 | 
				
			||||||
		if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
 | 
							if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
 | 
				
			||||||
			fprintf(stderr, "socket 'AF_INET': %s\n",
 | 
								warn("socket 'AF_INET':");
 | 
				
			||||||
				strerror(errno));
 | 
					 | 
				
			||||||
			return 0;
 | 
								return 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		strlcpy(bssid.i_name, iface, sizeof(bssid.i_name));
 | 
							strlcpy(bssid.i_name, iface, sizeof(bssid.i_name));
 | 
				
			||||||
		if ((ioctl(sockfd, SIOCG80211BSSID, &bssid)) < 0) {
 | 
							if ((ioctl(sockfd, SIOCG80211BSSID, &bssid)) < 0) {
 | 
				
			||||||
			fprintf(stderr, "ioctl 'SIOCG80211BSSID': %s\n",
 | 
								warn("ioctl 'SIOCG80211BSSID':");
 | 
				
			||||||
				strerror(errno));
 | 
					 | 
				
			||||||
			close(sockfd);
 | 
								close(sockfd);
 | 
				
			||||||
			return 0;
 | 
								return 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		strlcpy(nr->nr_ifname, iface, sizeof(nr->nr_ifname));
 | 
							strlcpy(nr->nr_ifname, iface, sizeof(nr->nr_ifname));
 | 
				
			||||||
		memcpy(&nr->nr_macaddr, bssid.i_bssid, sizeof(nr->nr_macaddr));
 | 
							memcpy(&nr->nr_macaddr, bssid.i_bssid, sizeof(nr->nr_macaddr));
 | 
				
			||||||
		if ((ioctl(sockfd, SIOCG80211NODE, nr)) < 0 && nr->nr_rssi) {
 | 
							if ((ioctl(sockfd, SIOCG80211NODE, nr)) < 0 && nr->nr_rssi) {
 | 
				
			||||||
			fprintf(stderr, "ioctl 'SIOCG80211NODE': %s\n",
 | 
								warn("ioctl 'SIOCG80211NODE':");
 | 
				
			||||||
				strerror(errno));
 | 
					 | 
				
			||||||
			close(sockfd);
 | 
								close(sockfd);
 | 
				
			||||||
			return 0;
 | 
								return 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										31
									
								
								slstatus.c
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								slstatus.c
									
									
									
									
									
								
							@@ -17,7 +17,6 @@ struct arg {
 | 
				
			|||||||
	const char *args;
 | 
						const char *args;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char *argv0;
 | 
					 | 
				
			||||||
char buf[1024];
 | 
					char buf[1024];
 | 
				
			||||||
static int done;
 | 
					static int done;
 | 
				
			||||||
static Display *dpy;
 | 
					static Display *dpy;
 | 
				
			||||||
@@ -43,8 +42,7 @@ difftimespec(struct timespec *res, struct timespec *a, struct timespec *b)
 | 
				
			|||||||
static void
 | 
					static void
 | 
				
			||||||
usage(void)
 | 
					usage(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	fprintf(stderr, "usage: %s [-s]\n", argv0);
 | 
						die("usage: %s [-s]", argv0);
 | 
				
			||||||
	exit(1);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int
 | 
					int
 | 
				
			||||||
@@ -80,14 +78,12 @@ main(int argc, char *argv[])
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!sflag && !(dpy = XOpenDisplay(NULL))) {
 | 
						if (!sflag && !(dpy = XOpenDisplay(NULL))) {
 | 
				
			||||||
		fprintf(stderr, "XOpenDisplay: Failed to open display\n");
 | 
							die("XOpenDisplay: Failed to open display");
 | 
				
			||||||
		return 1;
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while (!done) {
 | 
						while (!done) {
 | 
				
			||||||
		if (clock_gettime(CLOCK_MONOTONIC, &start) < 0) {
 | 
							if (clock_gettime(CLOCK_MONOTONIC, &start) < 0) {
 | 
				
			||||||
			fprintf(stderr, "clock_gettime: %s\n", strerror(errno));
 | 
								die("clock_gettime:");
 | 
				
			||||||
			return 1;
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		status[0] = '\0';
 | 
							status[0] = '\0';
 | 
				
			||||||
@@ -97,11 +93,10 @@ main(int argc, char *argv[])
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			if ((ret = snprintf(status + len, sizeof(status) - len,
 | 
								if ((ret = snprintf(status + len, sizeof(status) - len,
 | 
				
			||||||
			                    args[i].fmt, res)) < 0) {
 | 
								                    args[i].fmt, res)) < 0) {
 | 
				
			||||||
				fprintf(stderr, "snprintf: %s\n",
 | 
									warn("snprintf:");
 | 
				
			||||||
				        strerror(errno));
 | 
					 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			} else if ((size_t)ret >= sizeof(status) - len) {
 | 
								} else if ((size_t)ret >= sizeof(status) - len) {
 | 
				
			||||||
				fprintf(stderr, "snprintf: Output truncated\n");
 | 
									warn("snprintf: Output truncated");
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			len += ret;
 | 
								len += ret;
 | 
				
			||||||
@@ -111,18 +106,14 @@ main(int argc, char *argv[])
 | 
				
			|||||||
			printf("%s\n", status);
 | 
								printf("%s\n", status);
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			if (XStoreName(dpy, DefaultRootWindow(dpy), status) < 0) {
 | 
								if (XStoreName(dpy, DefaultRootWindow(dpy), status) < 0) {
 | 
				
			||||||
				fprintf(stderr,
 | 
									die("XStoreName: Allocation failed");
 | 
				
			||||||
				        "XStoreName: Allocation failed\n");
 | 
					 | 
				
			||||||
				return 1;
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			XFlush(dpy);
 | 
								XFlush(dpy);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!done) {
 | 
							if (!done) {
 | 
				
			||||||
			if (clock_gettime(CLOCK_MONOTONIC, ¤t) < 0) {
 | 
								if (clock_gettime(CLOCK_MONOTONIC, ¤t) < 0) {
 | 
				
			||||||
				fprintf(stderr, "clock_gettime: %s\n",
 | 
									die("clock_gettime:");
 | 
				
			||||||
				        strerror(errno));
 | 
					 | 
				
			||||||
				return 1;
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			difftimespec(&diff, ¤t, &start);
 | 
								difftimespec(&diff, ¤t, &start);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -133,9 +124,7 @@ main(int argc, char *argv[])
 | 
				
			|||||||
			if (wait.tv_sec >= 0) {
 | 
								if (wait.tv_sec >= 0) {
 | 
				
			||||||
				if (nanosleep(&wait, NULL) < 0 &&
 | 
									if (nanosleep(&wait, NULL) < 0 &&
 | 
				
			||||||
				    errno != EINTR) {
 | 
									    errno != EINTR) {
 | 
				
			||||||
					fprintf(stderr, "nanosleep: %s\n",
 | 
										die("nanosleep:");
 | 
				
			||||||
					        strerror(errno));
 | 
					 | 
				
			||||||
					return 1;
 | 
					 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -144,9 +133,7 @@ main(int argc, char *argv[])
 | 
				
			|||||||
	if (!sflag) {
 | 
						if (!sflag) {
 | 
				
			||||||
		XStoreName(dpy, DefaultRootWindow(dpy), NULL);
 | 
							XStoreName(dpy, DefaultRootWindow(dpy), NULL);
 | 
				
			||||||
		if (XCloseDisplay(dpy) < 0) {
 | 
							if (XCloseDisplay(dpy) < 0) {
 | 
				
			||||||
			fprintf(stderr,
 | 
								die("XCloseDisplay: Failed to close display");
 | 
				
			||||||
			        "XCloseDisplay: Failed to close display\n");
 | 
					 | 
				
			||||||
			return 1;
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										48
									
								
								util.c
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								util.c
									
									
									
									
									
								
							@@ -2,10 +2,52 @@
 | 
				
			|||||||
#include <errno.h>
 | 
					#include <errno.h>
 | 
				
			||||||
#include <stdarg.h>
 | 
					#include <stdarg.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "util.h"
 | 
					#include "util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char *argv0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					verr(const char *fmt, va_list ap)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (argv0 && strncmp(fmt, "usage", sizeof("usage") - 1)) {
 | 
				
			||||||
 | 
							fprintf(stderr, "%s: ", argv0);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						vfprintf(stderr, fmt, ap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (fmt[0] && fmt[strlen(fmt) - 1] == ':') {
 | 
				
			||||||
 | 
							fputc(' ', stderr);
 | 
				
			||||||
 | 
							perror(NULL);
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							fputc('\n', stderr);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					warn(const char *fmt, ...)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						va_list ap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						va_start(ap, fmt);
 | 
				
			||||||
 | 
						verr(fmt, ap);
 | 
				
			||||||
 | 
						va_end(ap);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					die(const char *fmt, ...)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						va_list ap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						va_start(ap, fmt);
 | 
				
			||||||
 | 
						verr(fmt, ap);
 | 
				
			||||||
 | 
						va_end(ap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						exit(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const char *
 | 
					const char *
 | 
				
			||||||
bprintf(const char *fmt, ...)
 | 
					bprintf(const char *fmt, ...)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -14,9 +56,9 @@ bprintf(const char *fmt, ...)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	va_start(ap, fmt);
 | 
						va_start(ap, fmt);
 | 
				
			||||||
	if ((ret = vsnprintf(buf, sizeof(buf), fmt, ap)) < 0) {
 | 
						if ((ret = vsnprintf(buf, sizeof(buf), fmt, ap)) < 0) {
 | 
				
			||||||
		fprintf(stderr, "vsnprintf: %s\n", strerror(errno));
 | 
							warn("vsnprintf:");
 | 
				
			||||||
	} else if ((size_t)ret >= sizeof(buf)) {
 | 
						} else if ((size_t)ret >= sizeof(buf)) {
 | 
				
			||||||
		fprintf(stderr, "vsnprintf: Output truncated\n");
 | 
							warn("vsnprintf: Output truncated");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	va_end(ap);
 | 
						va_end(ap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -31,7 +73,7 @@ pscanf(const char *path, const char *fmt, ...)
 | 
				
			|||||||
	int n;
 | 
						int n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!(fp = fopen(path, "r"))) {
 | 
						if (!(fp = fopen(path, "r"))) {
 | 
				
			||||||
		fprintf(stderr, "fopen '%s': %s\n", path, strerror(errno));
 | 
							warn("fopen '%s':", path);
 | 
				
			||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	va_start(ap, fmt);
 | 
						va_start(ap, fmt);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								util.h
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								util.h
									
									
									
									
									
								
							@@ -3,5 +3,10 @@ extern char buf[1024];
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define LEN(x) (sizeof (x) / sizeof *(x))
 | 
					#define LEN(x) (sizeof (x) / sizeof *(x))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern char *argv0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void warn(const char *, ...);
 | 
				
			||||||
 | 
					void die(const char *, ...);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const char *bprintf(const char *fmt, ...);
 | 
					const char *bprintf(const char *fmt, ...);
 | 
				
			||||||
int pscanf(const char *path, const char *fmt, ...);
 | 
					int pscanf(const char *path, const char *fmt, ...);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user