commit - 531c239673c159514ba6035b670a1e650d7ef2a0
commit + 91d449e4dd54dcb76dde2962e292de425072bc2e
blob - f7db47470d293159c6d88d9e53cee0dcaef584ec
blob + 0e1c49acde83fd31d00b9abca3f8d76fe159368e
--- Makefile
+++ Makefile
MAN=
CFLAGS += -I/usr/X11R6/include -I/usr/local/include
-LDFLAGS += -L/usr/X11R6/lib -lsndio -lX11
+LDFLAGS += -lsndio
.include <bsd.subdir.mk>
blob - 4012d5ff7fc8d537bd7a071745f16b5298bc13c2
blob + 8bf34584a10a16109475d9e906cd131a37ed59bc
--- include/statbar.h
+++ include/statbar.h
extern void read_config(void);
extern int open_command_interface(void);
-extern void close_command_interface(void);
+extern int open_output(void);
+extern void close_fifos(void);
/* Clock */
extern char clock_string[26];
blob - ac4d36b22ac3fb5df1e313c49572466b3f557c7f
blob + 4952920f95c0803025a7b58870ca6d3d1e261a3f
--- modules/Makefile
+++ modules/Makefile
MAN=
CFLAGS += -I../include -I/usr/local/include
-LDFLAGS += -L/usr/local/lib -lsndio
+LDFLAGS += -lsndio
.include <bsd.lib.mk>
blob - 49d8a4846e5fa567b4e7a4568411d1182c218d7f
blob + 175d3d70c05ffd87103e5998e7d558076d45a62b
--- src/Makefile
+++ src/Makefile
MAN=
CFLAGS += -I../include -I/usr/X11R6/include -I/usr/local/include
-LDFLAGS += -L/usr/local/lib -L/usr/X11R6/lib -L../modules -lsndio -lX11 -lstatbar_modules
+LDFLAGS += -L../modules -lsndio -lstatbar_modules
.include <bsd.prog.mk>
blob - cc7751e57650ee33fa7bbd84596ce844f64b7149
blob + 4f58a5ada29f8649fdd13eb38c8510099cb3298a
--- src/fs.c
+++ src/fs.c
#include "statbar.h"
-static int fifo_rdfd;
-static int fifo_wrfd;
-static char *fifopath;
+static int cmd_rdfd;
+static int cmd_wrfd;
+static char *cmdpath;
+static int out_rdfd;
+static int out_wrfd;
+static char *outpath;
static int
mkdir_recursive(char *path)
(void)fclose(file);
}
-int
-open_command_interface(void)
+static int
+open_fifo(int *rdfd, int *wrfd, char **path, const char *pathstr, int wr)
{
uid_t uid;
struct passwd *pw;
return -1;
}
- if (asprintf(&fifopath, "%s/.local/state/statbarcmd", pw->pw_dir) == -1)
+ if (asprintf(path, "%s%s", pw->pw_dir, pathstr) == -1)
{
perror("asprintf");
return -1;
}
- if (mkfifo(fifopath, 0600) != 0 && errno != EEXIST)
+ if (mkfifo(*path, 0600) != 0 && errno != EEXIST)
{
perror("mkfifo");
- free(fifopath);
+ free(path);
return -1;
}
- fifo_rdfd = open(fifopath, O_RDONLY | O_NONBLOCK);
- if (fifo_rdfd == -1)
+ *rdfd = open(*path, O_RDONLY | O_NONBLOCK);
+ if (*rdfd == -1)
{
perror("open");
- free(fifopath);
+ free(*path);
return -1;
}
- fifo_wrfd = open(fifopath, O_WRONLY);
- if (fifo_wrfd == -1)
+ *wrfd = open(*path, O_WRONLY);
+ if (*wrfd == -1)
{
perror("open");
- (void)close(fifo_rdfd);
- free(fifopath);
+ (void)close(*rdfd);
+ free(*path);
return -1;
}
- return fifo_rdfd;
+ return wr ? *wrfd : *rdfd;
}
+int
+open_command_interface(void)
+{
+ return open_fifo(&cmd_rdfd, &cmd_wrfd, &cmdpath, "/.local/state/statbarcmd", 0);
+}
+
+int
+open_output(void)
+{
+ return open_fifo(&out_rdfd, &out_wrfd, &outpath, "/.local/state/statbarout", 1);
+}
+
void
-close_command_interface(void)
+close_fifos(void)
{
- (void)close(fifo_rdfd);
- (void)close(fifo_wrfd);
- (void)remove(fifopath);
- free(fifopath);
+ (void)close(cmd_rdfd);
+ (void)close(cmd_wrfd);
+ (void)remove(cmdpath);
+ free(cmdpath);
+ (void)close(out_rdfd);
+ (void)close(out_wrfd);
+ (void)remove(outpath);
+ free(outpath);
}
blob - 92680bf0f31b186e21edb4298305a38a480d615f
blob + 01276ea7f9874a7eb8c8dbbdbb0c5883d5e4ca0b
--- src/main.c
+++ src/main.c
#include <sys/types.h>
#include <sys/wait.h>
-#include <X11/Xlib.h>
-
#include "statbar.h"
-#define MAX_STATBAR_LEN 128
#define NFDS 5
enum clocks_e
int
main(void)
{
- Display *display;
- Window root;
- char statbar_text[MAX_STATBAR_LEN];
bool dirty = true;
+ int output_fd;
int batt_fd;
int vol_fd;
int network_fd;
ssize_t n;
(void)setvbuf(stdout, NULL, _IOLBF, 0);
+ output_fd = open_output();
+ printf("Got fd %d\n", output_fd);
+ if (output_fd == -1)
+ {
+ (void)puts("Failed to open output FIFO");
+
+ return -1;
+ }
install_signal_handlers();
- statbar_text[0] = '\0';
(void)puts("Welcome to statbar");
/* Init components */
}
get_mail();
- display = XOpenDisplay(NULL);
- if (display == NULL)
- {
- (void)puts("Failed to get display");
-
- return -1;
- }
- root = DefaultRootWindow(display);
-
if (pledge("stdio rpath cpath proc exec", NULL) == -1)
{
perror("pledge");
if (dirty)
{
- (void)snprintf(statbar_text, MAX_STATBAR_LEN - 1, "%s%s| %s | %s | %s | %s | %s | %s",
- mail_string,
- network_string,
- weather_string,
- fanspeed_string,
- cputemp_string,
- volume_string,
+ (void)dprintf(output_fd, "%s | %s | %s | %s | %s | %s | %s%s\n",
+ clock_string,
battery_string,
- clock_string);
- (void)XStoreName(display, root, statbar_text);
- (void)XFlush(display);
+ volume_string,
+ cputemp_string,
+ fanspeed_string,
+ weather_string,
+ network_string,
+ mail_string);
dirty = false;
}
}
if (network_pid > 0) (void)kill(network_pid, SIGTERM);
if (weather_loc_valid) close_weather();
close_mail();
- (void)XCloseDisplay(display);
if (weather_pfd)
{
weather_pfd = NULL;
(void)close(weather_pipe[0]);
(void)close(weather_pipe[1]);
}
- close_command_interface();
+ close_fifos();
return 0;
}