Merge pull request #16 from R41z/master
several improvements && memory leak fix.
This commit is contained in:
		
							
								
								
									
										28
									
								
								slstatus.c
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								slstatus.c
									
									
									
									
									
								
							@@ -66,9 +66,8 @@ static char *wifi_perc(const char *);
 | 
			
		||||
static char *wifi_essid(const char *);
 | 
			
		||||
static void sighandler(const int);
 | 
			
		||||
 | 
			
		||||
static unsigned short int delay;
 | 
			
		||||
static unsigned short int delay, done;
 | 
			
		||||
static Display *dpy;
 | 
			
		||||
static int done = 0;
 | 
			
		||||
 | 
			
		||||
#include "config.h"
 | 
			
		||||
 | 
			
		||||
@@ -117,22 +116,16 @@ battery_perc(const char *battery)
 | 
			
		||||
static char *
 | 
			
		||||
battery_state(const char *battery)
 | 
			
		||||
{
 | 
			
		||||
	char *state = malloc(sizeof(char)*12);
 | 
			
		||||
	char state[12]; 
 | 
			
		||||
	FILE *fp;
 | 
			
		||||
 | 
			
		||||
	if (!state) {
 | 
			
		||||
		warn("Failed to get battery state.");
 | 
			
		||||
		return smprintf(UNKNOWN_STR);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	ccat(3, "/sys/class/power_supply/", battery, "/status");
 | 
			
		||||
	fp = fopen(concat, "r");
 | 
			
		||||
	if (fp == NULL) {
 | 
			
		||||
		warn("Error opening battery file: %s", concat);
 | 
			
		||||
		return smprintf(UNKNOWN_STR);
 | 
			
		||||
	}
 | 
			
		||||
	fscanf(fp, "%s", state);
 | 
			
		||||
	fscanf(fp, "%12s", state);
 | 
			
		||||
	fclose(fp);
 | 
			
		||||
 | 
			
		||||
	if (strcmp(state, "Charging") == 0)
 | 
			
		||||
@@ -280,7 +273,7 @@ hostname(void)
 | 
			
		||||
 | 
			
		||||
	fgets(hostname, sizeof(hostname), fp);
 | 
			
		||||
	/* FIXME: needs improvement */
 | 
			
		||||
	memset(&hostname[strlen(hostname)-1], '\0',
 | 
			
		||||
	memset(&hostname[strlen(hostname)], '\0',
 | 
			
		||||
		sizeof(hostname) - strlen(hostname));
 | 
			
		||||
	fclose(fp);
 | 
			
		||||
 | 
			
		||||
@@ -509,7 +502,7 @@ vol_perc(const char *soundcard)
 | 
			
		||||
	if (elem == NULL) {
 | 
			
		||||
		snd_mixer_selem_id_free(s_elem);
 | 
			
		||||
		snd_mixer_close(handle);
 | 
			
		||||
		warn("Failed to get volume percentage for: %s.", soundcard);
 | 
			
		||||
		warn("Failed to get volume percentage for: %s", soundcard);
 | 
			
		||||
		return smprintf(UNKNOWN_STR);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -599,17 +592,16 @@ wifi_essid(const char *wificard)
 | 
			
		||||
static void
 | 
			
		||||
sighandler(const int signo)
 | 
			
		||||
{
 | 
			
		||||
	if (signo == SIGTERM || signo == SIGINT) {
 | 
			
		||||
	if (signo == SIGTERM || signo == SIGINT)
 | 
			
		||||
		done = 1;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main(void)
 | 
			
		||||
{
 | 
			
		||||
	size_t i;
 | 
			
		||||
	unsigned short int i;
 | 
			
		||||
	char status_string[4096];
 | 
			
		||||
	char *res, *element, *status_old;
 | 
			
		||||
	char *res, *element;
 | 
			
		||||
	struct arg argument;
 | 
			
		||||
	struct sigaction act;
 | 
			
		||||
 | 
			
		||||
@@ -620,8 +612,6 @@ main(void)
 | 
			
		||||
 | 
			
		||||
	dpy = XOpenDisplay(NULL);
 | 
			
		||||
 | 
			
		||||
	XFetchName(dpy, DefaultRootWindow(dpy), &status_old);
 | 
			
		||||
 | 
			
		||||
	while (!done) {
 | 
			
		||||
		status_string[0] = '\0';
 | 
			
		||||
		for (i = 0; i < sizeof(args) / sizeof(args[0]); ++i) {
 | 
			
		||||
@@ -649,7 +639,7 @@ main(void)
 | 
			
		||||
		delay = 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	XStoreName(dpy, DefaultRootWindow(dpy), status_old);
 | 
			
		||||
	XStoreName(dpy, DefaultRootWindow(dpy), NULL);
 | 
			
		||||
	XSync(dpy, False);
 | 
			
		||||
 | 
			
		||||
	XCloseDisplay(dpy);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user