Implement format_up/format_down for ethernet

This commit is contained in:
Michael Stapelberg 2009-10-16 20:14:40 +02:00
parent cb9bab4255
commit b88a55ffa6
4 changed files with 13 additions and 6 deletions

View File

@ -59,7 +59,8 @@ int main(int argc, char *argv[]) {
};
cfg_opt_t ethernet_opts[] = {
CFG_STR("format", "E: %ip (%speed)", CFGF_NONE),
CFG_STR("format_up", "E: %ip (%speed)", CFGF_NONE),
CFG_STR("format_down", "E: down", CFGF_NONE),
CFG_END()
};
@ -153,7 +154,7 @@ int main(int argc, char *argv[]) {
print_wireless_info(title, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down"));
CASE_SEC_TITLE("ethernet")
print_eth_info(title, cfg_getstr(sec, "format"));
print_eth_info(title, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down"));
CASE_SEC_TITLE("battery")
print_battery_info(atoi(title), cfg_getstr(sec, "format"));

View File

@ -21,7 +21,8 @@ wireless wlan0 {
ethernet eth0 {
# if you use %speed, i3status requires root privileges
format = "E: %ip (%speed)"
format_up = "E: %ip (%speed)"
format_down = "E: down"
}
battery 0 {

View File

@ -69,7 +69,7 @@ const char *get_ip_addr();
void print_wireless_info(const char *interface, const char *format_up, const char *format_down);
void print_run_watch(const char *title, const char *pidfile, const char *format);
void print_cpu_temperature_info(int zone, const char *format);
void print_eth_info(const char *interface, const char *format);
void print_eth_info(const char *interface, const char *format_up, const char *format_down);
void print_load();
bool process_runs(const char *path);

View File

@ -74,11 +74,16 @@ static void print_eth_speed(const char *interface) {
* Combines ethernet IP addresses and speed (if requested) for displaying
*
*/
void print_eth_info(const char *interface, const char *format) {
void print_eth_info(const char *interface, const char *format_up, const char *format_down) {
const char *walk;
const char *ip_address = get_ip_addr(interface);
for (walk = format; *walk != '\0'; walk++) {
if (ip_address == NULL) {
printf("%s", format_down);
return;
}
for (walk = format_up; *walk != '\0'; walk++) {
if (*walk != '%') {
putchar(*walk);
continue;