Make some formats/paths configurable, add initscript
This commit is contained in:
parent
e68449ee1d
commit
e31a85eb3b
10
Makefile
10
Makefile
@ -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
|
||||||
|
2
config.h
2
config.h
@ -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"};
|
||||||
|
23
wmiistatus.c
23
wmiistatus.c
@ -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(¤t_time);
|
struct tm *current_tm = localtime(¤t_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);
|
||||||
}
|
}
|
||||||
|
@ -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
35
wmiistatus.init
Executable 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
|
Loading…
Reference in New Issue
Block a user