Make some formats/paths configurable, add initscript

This commit is contained in:
Michael Stapelberg 2008-10-04 19:32:35 +02:00
parent e68449ee1d
commit e31a85eb3b
5 changed files with 62 additions and 12 deletions

View File

@ -1,2 +1,10 @@
all: wmiistatus: wmiistatus.c wmiistatus.h config.h Makefile
gcc -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wshadow -Wpointer-arith -Wcast-qual -Wsign-compare -g -O2 -o wmiistatus wmiistatus.c gcc -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wshadow -Wpointer-arith -Wcast-qual -Wsign-compare -g -O2 -o wmiistatus wmiistatus.c
install:
install -m 755 -d $(DESTDIR)/usr/bin
install -m 755 -d $(DESTDIR)/etc/init.d
install -m 755 wmiistatus $(DESTDIR)/usr/bin/wmiistatus
install -m 755 wmiistatus.init $(DESTDIR)/etc/init.d/wmiistatus
all: wmiistatus

View File

@ -1,5 +1,7 @@
const char *wlan_interface = "wlan0"; const char *wlan_interface = "wlan0";
const char *eth_interface = "eth0"; const char *eth_interface = "eth0";
const char *wmii_path = "/mnt/wmii/rbar/status"; const char *wmii_path = "/mnt/wmii/rbar/status";
const char *time_format = "%d.%m.%Y %H:%M:%S";
const char *battery = "/sys/class/power_supply/BAT0/uevent";
const char *run_watches[] = {"DHCP", "/var/run/dhclient*.pid", const char *run_watches[] = {"DHCP", "/var/run/dhclient*.pid",
"VPN", "/var/run/vpnc*.pid"}; "VPN", "/var/run/vpnc*.pid"};

View File

@ -38,6 +38,7 @@
#include <stdio.h> #include <stdio.h>
#include <time.h> #include <time.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdarg.h>
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#include <ctype.h> #include <ctype.h>
@ -63,8 +64,14 @@ static void write_to_statusbar(const char *message) {
* Write errormessage to statusbar and exit * Write errormessage to statusbar and exit
* *
*/ */
static void die(const char *message) { static void die(const char *fmt, ...) {
write_to_statusbar(message); char buffer[512];
va_list ap;
va_start(ap, fmt);
vsprintf(buffer, fmt, ap);
va_end(ap);
write_to_statusbar(buffer);
exit(-1); exit(-1);
} }
@ -97,9 +104,9 @@ static char *get_battery_info() {
char buf[1024]; char buf[1024];
static char part[512]; static char part[512];
char *walk, *last = buf; char *walk, *last = buf;
int fd = open("/sys/class/power_supply/BAT0/uevent", O_RDONLY); int fd = open(battery, O_RDONLY);
if (fd == -1) if (fd == -1)
die("Could not open /sys/class/power_supply/BAT0/uevent"); die("Could not open %s", battery);
int full_design = -1, int full_design = -1,
remaining = -1, remaining = -1,
present_rate = -1; present_rate = -1;
@ -237,7 +244,7 @@ static char *get_eth_info() {
* Checks if the PID in path is still valid by checking if /proc/<pid> exists * Checks if the PID in path is still valid by checking if /proc/<pid> exists
* *
*/ */
bool process_runs(const char *path) { static bool process_runs(const char *path) {
char pidbuf[512], char pidbuf[512],
procbuf[512]; procbuf[512];
static glob_t globbuf; static glob_t globbuf;
@ -291,12 +298,10 @@ int main(void) {
/* Get date & time */ /* Get date & time */
time_t current_time = time(NULL); time_t current_time = time(NULL);
struct tm *current_tm = localtime(&current_time); struct tm *current_tm = localtime(&current_time);
strftime(part, sizeof(part), "%d.%m.%Y %H:%M:%S", current_tm); strftime(part, sizeof(part), time_format, current_tm);
push_part(part, strlen(part)); push_part(part, strlen(part));
int fd = open("/mnt/wmii/rbar/status", O_RDWR); write_to_statusbar(output);
write(fd, output, strlen(output));
close(fd);
sleep(1); sleep(1);
} }

View File

@ -6,11 +6,11 @@ static bool first_push = true;
typedef enum { CS_DISCHARGING, CS_CHARGING, CS_FULL } charging_status_t; typedef enum { CS_DISCHARGING, CS_CHARGING, CS_FULL } charging_status_t;
static void write_to_statusbar(const char *message); static void write_to_statusbar(const char *message);
static void die(const char *message); static void die(const char *fmt, ...);
static char *skip_character(char *input, char character, int amount); static char *skip_character(char *input, char character, int amount);
static void push_part(const char *input, const int n); static void push_part(const char *input, const int n);
static char *get_battery_info(void); static char *get_battery_info(void);
static char *get_wireless_info(void); static char *get_wireless_info(void);
static char *get_ip_address(const char *interface); static char *get_ip_address(const char *interface);
static char *get_eth_info(void); static char *get_eth_info(void);
bool process_runs(const char *path); static bool process_runs(const char *path);

35
wmiistatus.init Executable file
View File

@ -0,0 +1,35 @@
#!/bin/sh
#
### BEGIN INIT INFO
# Provides: wmiistatus
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: little application to fill up wmii's status bar
# Description: little application to fill up wmii's status bar
### END INIT INFO
# For the pidfile, you must be root. wmiistatus itself runs as user just fine
[ $UID -eq 0 ] || { echo "You need to be root"; exit 1; }
. /lib/lsb/init-functions
case "$1" in
start) log_daemon_msg "Starting wmii status bar filler" "wmiistatus"
start-stop-daemon --start --background --quiet --make-pidfile --pidfile /var/run/wmiistatus.pid --name wmiistatus --startas /usr/bin/wmiistatus
log_end_msg $?
;;
stop) log_daemon_msg "Stopping wmii status bar filler" "wmiistatus"
start-stop-daemon --stop --quiet --pidfile /var/run/wmiistatus.pid --name wmiistatus
log_end_msg $?
;;
restart|reload|force-reload) log_daemon_msg "Restarting wmii status bar filler" "wmiistatus"
start-stop-daemon --stop --retry 5 --quiet --pidfile /var/run/wmiistatus.pid --name wmiistatus
start-stop-daemon --start --background --quiet --make-pidfile --pidfile /var/run/wmiistatus.pid --name wmiistatus --startas /usr/bin/wmiistatus
;;
*) log_action_msg "Usage: $0 {start|stop|restart|reload|force-reload}"
exit 2
;;
esac
exit 0