+// For vasprintf
+#define _GNU_SOURCE
+
#include "chart.h"
#include <ctype.h>
#include <errno.h>
#include <gtk/gtk.h>
#include <math.h>
+#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
+char *sasprintf(const char *fmt, ...) {
+ char *result;
+ va_list args;
+ va_start(args, fmt);
+ if (vasprintf(&result, fmt, args) == -1) {
+ fprintf(stderr, "Can't allocate memory!?\n");
+ abort();
+ }
+ va_end(args);
+ return result;
+}
+
struct State {
char *voltage_filename;
char *current_filename;
}
int main(int argc, char **argv) {
+ char *battery_dir = "/sys/class/power_supply/BAT0";
struct State state = {
- .voltage_filename = "/sys/class/power_supply/BAT0/voltage_now",
- .current_filename = "/sys/class/power_supply/BAT0/current_now",
+ .voltage_filename = sasprintf("%s/voltage_now", battery_dir),
+ .current_filename = sasprintf("%s/current_now", battery_dir),
};
GtkApplication *app = gtk_application_new("com.scottworley.batteryviewer",