add config checks on startup for better error handling
This commit is contained in:
		
							
								
								
									
										25
									
								
								slstatus.c
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								slstatus.c
									
									
									
									
									
								
							@@ -2,10 +2,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* global libraries */
 | 
					/* global libraries */
 | 
				
			||||||
#include <alsa/asoundlib.h>
 | 
					#include <alsa/asoundlib.h>
 | 
				
			||||||
 | 
					#include <fcntl.h>
 | 
				
			||||||
#include <stdarg.h>
 | 
					#include <stdarg.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					#include <sys/stat.h>
 | 
				
			||||||
#include <time.h>
 | 
					#include <time.h>
 | 
				
			||||||
#include <unistd.h>
 | 
					#include <unistd.h>
 | 
				
			||||||
#include <X11/Xlib.h>
 | 
					#include <X11/Xlib.h>
 | 
				
			||||||
@@ -15,6 +18,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* functions */
 | 
					/* functions */
 | 
				
			||||||
void setstatus(char *str);
 | 
					void setstatus(char *str);
 | 
				
			||||||
 | 
					int config_check();
 | 
				
			||||||
char *smprintf(char *fmt, ...);
 | 
					char *smprintf(char *fmt, ...);
 | 
				
			||||||
char *get_battery();
 | 
					char *get_battery();
 | 
				
			||||||
char *get_cpu_temperature();
 | 
					char *get_cpu_temperature();
 | 
				
			||||||
@@ -49,6 +53,22 @@ smprintf(char *fmt, ...)
 | 
				
			|||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CHECK_FILE(X,Y) do { \
 | 
				
			||||||
 | 
					    if (stat(X,&Y) < 0) return -1; \
 | 
				
			||||||
 | 
					    if (!S_ISREG(Y.st_mode)) return -1; \
 | 
				
			||||||
 | 
					} while (0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* check configured paths */
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					config_check()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    struct stat fs;
 | 
				
			||||||
 | 
					    CHECK_FILE(batterynowfile, fs);
 | 
				
			||||||
 | 
					    CHECK_FILE(batteryfullfile, fs);
 | 
				
			||||||
 | 
					    CHECK_FILE(tempfile, fs);
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* battery percentage */
 | 
					/* battery percentage */
 | 
				
			||||||
char *
 | 
					char *
 | 
				
			||||||
get_battery()
 | 
					get_battery()
 | 
				
			||||||
@@ -314,6 +334,11 @@ main()
 | 
				
			|||||||
    char *volume = NULL;
 | 
					    char *volume = NULL;
 | 
				
			||||||
    char *wifi_signal = NULL;
 | 
					    char *wifi_signal = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* check config for sanity */
 | 
				
			||||||
 | 
					    if (config_check() < 0) {
 | 
				
			||||||
 | 
					        fprintf(stderr, "Config error, please check paths and recompile\n");
 | 
				
			||||||
 | 
					        exit(1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    /* open display */
 | 
					    /* open display */
 | 
				
			||||||
    if (!(dpy = XOpenDisplay(0x0))) {
 | 
					    if (!(dpy = XOpenDisplay(0x0))) {
 | 
				
			||||||
        fprintf(stderr, "Cannot open display!\n");
 | 
					        fprintf(stderr, "Cannot open display!\n");
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user