 80fc20d1d6
			
		
	
	80fc20d1d6
	
	
	
		
			
			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.
		
			
				
	
	
		
			62 lines
		
	
	
		
			925 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			925 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* See LICENSE file for copyright and license details. */
 | |
| #include <stdio.h>
 | |
| 
 | |
| #include "../util.h"
 | |
| 
 | |
| const char *
 | |
| format(int uptime)
 | |
| {
 | |
| 	int h, m;
 | |
| 
 | |
| 	h = uptime / 3600;
 | |
| 	m = (uptime - h * 3600) / 60;
 | |
| 
 | |
| 	return bprintf("%dh %dm", h, m);
 | |
| }
 | |
| 
 | |
| #if defined(__linux__)
 | |
| 	#include <sys/sysinfo.h>
 | |
| 
 | |
| 	const char *
 | |
| 	uptime(void)
 | |
| 	{
 | |
| 		int uptime;
 | |
| 		struct sysinfo info;
 | |
| 
 | |
| 		sysinfo(&info);
 | |
| 		uptime = info.uptime;
 | |
| 
 | |
| 		return format(uptime);
 | |
| 	}
 | |
| #elif defined(__OpenBSD__)
 | |
| 	#include <errno.h>
 | |
| 	#include <string.h>
 | |
| 	#include <sys/sysctl.h>
 | |
| 	#include <sys/time.h>
 | |
| 
 | |
| 	const char *
 | |
| 	uptime(void)
 | |
| 	{
 | |
| 		int mib[2], uptime;
 | |
| 		size_t size;
 | |
| 		time_t now;
 | |
| 		struct timeval boottime;
 | |
| 
 | |
| 		time(&now);
 | |
| 
 | |
| 		mib[0] = CTL_KERN;
 | |
| 		mib[1] = KERN_BOOTTIME;
 | |
| 
 | |
| 		size = sizeof(boottime);
 | |
| 
 | |
| 		if (sysctl(mib, 2, &boottime, &size, NULL, 0) < 0) {
 | |
| 			warn("sysctl 'KERN_BOOTTIME':");
 | |
| 			return NULL;
 | |
| 		}
 | |
| 
 | |
| 		uptime = now - boottime.tv_sec;
 | |
| 
 | |
| 		return format(uptime);
 | |
| 	}
 | |
| #endif
 |