used ccat() from concat.h for string concatenation
This commit is contained in:
parent
113979e5b8
commit
2afea97987
2 changed files with 35 additions and 25 deletions
19
concat.h
Normal file
19
concat.h
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Thanks to lloyd for contribution
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern char concat[8192];
|
||||||
|
|
||||||
|
extern void
|
||||||
|
ccat(const unsigned short int count, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
unsigned short int i;
|
||||||
|
concat[0] = '\0';
|
||||||
|
|
||||||
|
va_start(ap, count);
|
||||||
|
for(i = 0; i < count; i++)
|
||||||
|
strlcat(concat, va_arg(ap, char *), sizeof(concat));
|
||||||
|
va_end(ap);
|
||||||
|
return;
|
||||||
|
}
|
39
slstatus.c
39
slstatus.c
|
@ -26,6 +26,9 @@
|
||||||
|
|
||||||
#include "strlcat.h"
|
#include "strlcat.h"
|
||||||
#include "strlcpy.h"
|
#include "strlcpy.h"
|
||||||
|
#include "concat.h"
|
||||||
|
|
||||||
|
char concat[];
|
||||||
|
|
||||||
struct arg {
|
struct arg {
|
||||||
char *(*func)();
|
char *(*func)();
|
||||||
|
@ -91,24 +94,14 @@ static char *
|
||||||
battery_perc(const char *battery)
|
battery_perc(const char *battery)
|
||||||
{
|
{
|
||||||
int now, full, perc;
|
int now, full, perc;
|
||||||
char batterynowfile[64];
|
|
||||||
char batteryfullfile[64];
|
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
|
||||||
strlcpy(batterynowfile, BATTERY_PATH, sizeof(batterynowfile));
|
ccat(4, BATTERY_PATH, battery, "/", BATTERY_NOW);
|
||||||
strlcat(batterynowfile, battery, sizeof(batterynowfile));
|
|
||||||
strlcat(batterynowfile, "/", sizeof(batterynowfile));
|
|
||||||
strlcat(batterynowfile, BATTERY_NOW, sizeof(batterynowfile));
|
|
||||||
|
|
||||||
strlcpy(batteryfullfile, BATTERY_PATH, sizeof(batteryfullfile));
|
fp = fopen(concat, "r");
|
||||||
strlcat(batteryfullfile, battery, sizeof(batteryfullfile));
|
|
||||||
strlcat(batteryfullfile, "/", sizeof(batteryfullfile));
|
|
||||||
strlcat(batteryfullfile, BATTERY_FULL, sizeof(batteryfullfile));
|
|
||||||
|
|
||||||
fp = fopen(batterynowfile, "r");
|
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
fprintf(stderr, "Error opening battery file: %s: %s\n",
|
fprintf(stderr, "Error opening battery file: %s: %s\n",
|
||||||
batterynowfile,
|
concat,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
return smprintf(UNKNOWN_STR);
|
return smprintf(UNKNOWN_STR);
|
||||||
}
|
}
|
||||||
|
@ -116,9 +109,12 @@ battery_perc(const char *battery)
|
||||||
fscanf(fp, "%i", &now);
|
fscanf(fp, "%i", &now);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
fp = fopen(batteryfullfile, "r");
|
ccat(4, BATTERY_PATH, battery, "/", BATTERY_FULL);
|
||||||
|
|
||||||
|
fp = fopen(concat, "r");
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
fprintf(stderr, "Error opening battery file: %s\n",
|
fprintf(stderr, "Error opening battery file: %s: %s\n",
|
||||||
|
concat,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
return smprintf(UNKNOWN_STR);
|
return smprintf(UNKNOWN_STR);
|
||||||
}
|
}
|
||||||
|
@ -520,16 +516,12 @@ wifi_perc(const char *wificard)
|
||||||
int strength;
|
int strength;
|
||||||
char buf[255];
|
char buf[255];
|
||||||
char *datastart;
|
char *datastart;
|
||||||
char path[64];
|
|
||||||
char status[5];
|
char status[5];
|
||||||
char needle[strlen(wificard)+2];
|
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
|
||||||
strlcpy(path, "/sys/class/net/", sizeof(path));
|
ccat(3, "/sys/class/net", wificard, "/operstate");
|
||||||
strlcat(path, wificard, sizeof(path));
|
|
||||||
strlcat(path, "/operstate", sizeof(path));
|
|
||||||
|
|
||||||
fp = fopen(path, "r");
|
fp = fopen(concat, "r");
|
||||||
|
|
||||||
if(fp == NULL) {
|
if(fp == NULL) {
|
||||||
fprintf(stderr, "Error opening wifi operstate file: %s\n",
|
fprintf(stderr, "Error opening wifi operstate file: %s\n",
|
||||||
|
@ -549,13 +541,12 @@ wifi_perc(const char *wificard)
|
||||||
return smprintf(UNKNOWN_STR);
|
return smprintf(UNKNOWN_STR);
|
||||||
}
|
}
|
||||||
|
|
||||||
strlcpy(needle, wificard, sizeof(needle));
|
ccat(2, wificard, ":");
|
||||||
strlcat(needle, ":", sizeof(needle));
|
|
||||||
fgets(buf, sizeof(buf), fp);
|
fgets(buf, sizeof(buf), fp);
|
||||||
fgets(buf, sizeof(buf), fp);
|
fgets(buf, sizeof(buf), fp);
|
||||||
fgets(buf, sizeof(buf), fp);
|
fgets(buf, sizeof(buf), fp);
|
||||||
|
|
||||||
datastart = strstr(buf, needle);
|
datastart = strstr(buf, concat);
|
||||||
if (datastart != NULL) {
|
if (datastart != NULL) {
|
||||||
datastart = strstr(buf, ":");
|
datastart = strstr(buf, ":");
|
||||||
sscanf(datastart + 1, " %*d %d %*d %*d %*d %*d %*d %*d %*d %*d", &strength);
|
sscanf(datastart + 1, " %*d %d %*d %*d %*d %*d %*d %*d %*d %*d", &strength);
|
||||||
|
|
Loading…
Reference in a new issue