aboutsummaryrefslogtreecommitdiff
path: root/battery.c
diff options
context:
space:
mode:
authorInqiyad Sabr <sabr@ariamath.xyz>2025-10-20 11:55:26 +0600
committerInqiyad Sabr <sabr@ariamath.xyz>2025-10-20 11:55:26 +0600
commit658b660be1c6bd0eb2b75d51de36422a2a306dc8 (patch)
tree2643d593fd2c502e1b62332b1694b43bb605a333 /battery.c
parentea5380fccb9f962203726540d69cb490048de7c0 (diff)
Changed every global variable to explicit variables
Diffstat (limited to 'battery.c')
-rw-r--r--battery.c80
1 files changed, 38 insertions, 42 deletions
diff --git a/battery.c b/battery.c
index 20283fd..f3f7b99 100644
--- a/battery.c
+++ b/battery.c
@@ -1,49 +1,45 @@
#include <stdio.h>
-#include <string.h>
#include "block.h"
-#define DIR "/sys/class/power_supply/BAT0"
-#define EN DIR"/energy_now"
-#define EF DIR"/energy_full"
-#define ST DIR"/status"
-FILE *en;
-FILE *ef;
-FILE *st;
-int c, state, bat_delay = 6;
-float en_n, ef_n;
-float p;
-char pch[13], icon[5];
+#define BATDIR "/sys/class/power_supply/BAT0"
+#define bat_val(f, n)\
+ while((c = fgetc(f)) != '\n') n = 10 * n + (c - '0')
+#define bat_open(f,F) if (!f) f = fopen(BATDIR"/"F,"r")
+#define EN fenergy_now
+#define EF fenergy_full
+#define ST fbat_status
+FILE *EN, *EF, *ST;
+float bat_p;
+int bat_state, bat_delay = 6;
+char bat_str[13];
void battery(void) {
if (bat_delay++ < 6) goto show_stat;
else bat_delay = 0;
- if (!en) en = fopen(EN,"r");
- if (!ef) ef = fopen(EF,"r");
- if (!st) st = fopen(ST,"r");
- if (en && ef && st) {
- rewind(en);
- rewind(ef);
- rewind(st);
+ bat_open(EN,"energy_now");
+ bat_open(EF,"energy_full");
+ bat_open(ST,"status");
+ if (fenergy_now) {
+ int c, en_n, ef_n;
+ rewind(EN); rewind(EF); rewind(ST);
en_n = ef_n = 0;
- while((c = fgetc(en)) != '\n')
- en_n = 10 * en_n + (c - '0');
- while((c = fgetc(ef)) != '\n')
- ef_n = 10 * ef_n + (c - '0');
- p = en_n * 100 / ef_n;
- state = fgetc(st);
- switch(state) {
- case 'N': strncpy(icon,"",4); break;
- case 'C': strncpy(icon,"󱐋",5); break;
- case 'D': if (p > 0 && p <= 10) strncpy(icon," ",5);
- else if (p > 10 && p <= 30) strncpy(icon," ",5);
- else if (p > 30 && p <= 50) strncpy(icon," ",5);
- else if (p > 50 && p <= 79) strncpy(icon," ",5);
- else if (p > 79) strncpy(icon," ",5);
- } snprintf(pch,13,"%s %02.2f%%",icon,p);
- }
-show_stat:
- if (state == 'D')
- block(pch,"#222222","#83a59899","#83a59899");
- else if (p < 30)
- block(pch,"#222222","#ea544399","#ea544399");
- else if (state == 'N' || state == 'C')
- block(pch,"#222222","#dfb24999","#dfb24999");
+ bat_val(fenergy_now, en_n);
+ bat_val(fenergy_full, ef_n);
+ bat_p = (float)en_n * 100 / ef_n;
+ char *icon;
+ bat_state = fgetc(fbat_status);
+ switch(bat_state) {
+ case 'N': icon = ""; break;
+ case 'C': icon = "󱐋"; break;
+ case 'D': if (bat_p > 79) icon = " ";
+ else if (bat_p > 50) icon = " ";
+ else if (bat_p > 30) icon = " ";
+ else if (bat_p > 10) icon = " ";
+ else icon = " ";
+ } snprintf(bat_str,13,"%s %02.2f%%",icon,bat_p);
+ } show_stat:
+ if (bat_state == 'D' && bat_p >= 30)
+ block(bat_str,"#222222","#83a59899","#83a59899");
+ else if (bat_p < 30)
+ block(bat_str,"#222222","#ea544399","#ea544399");
+ else if (bat_state == 'N' || bat_state == 'C')
+ block(bat_str,"#222222","#dfb24999","#dfb24999");
}