eth: fix colors (+param struct)
This commit is contained in:
parent
48d817a653
commit
5760a1d53f
10
i3status.c
10
i3status.c
|
@ -704,7 +704,15 @@ int main(int argc, char *argv[]) {
|
||||||
interface = first_eth_interface(NET_TYPE_ETHERNET);
|
interface = first_eth_interface(NET_TYPE_ETHERNET);
|
||||||
if (interface == NULL)
|
if (interface == NULL)
|
||||||
interface = title;
|
interface = title;
|
||||||
print_eth_info(json_gen, buffer, interface, cfg_getstr(sec, "format_up"), cfg_getstr(sec, "format_down"));
|
eth_info_ctx_t ctx = {
|
||||||
|
.json_gen = json_gen,
|
||||||
|
.buf = buffer,
|
||||||
|
.buflen = sizeof(buffer),
|
||||||
|
.interface = interface,
|
||||||
|
.format_up = cfg_getstr(sec, "format_up"),
|
||||||
|
.format_down = cfg_getstr(sec, "format_down"),
|
||||||
|
};
|
||||||
|
print_eth_info(&ctx);
|
||||||
SEC_CLOSE_MAP;
|
SEC_CLOSE_MAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -254,7 +254,18 @@ void print_run_watch(yajl_gen json_gen, char *buffer, const char *title, const c
|
||||||
void print_path_exists(yajl_gen json_gen, char *buffer, const char *title, const char *path, const char *format, const char *format_down);
|
void print_path_exists(yajl_gen json_gen, char *buffer, const char *title, const char *path, const char *format, const char *format_down);
|
||||||
void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const char *path, const char *format, const char *format_above_threshold, int);
|
void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const char *path, const char *format, const char *format_above_threshold, int);
|
||||||
void print_cpu_usage(yajl_gen json_gen, char *buffer, const char *format, const char *format_above_threshold, const char *format_above_degraded_threshold, const char *path, const float max_threshold, const float degraded_threshold);
|
void print_cpu_usage(yajl_gen json_gen, char *buffer, const char *format, const char *format_above_threshold, const char *format_above_degraded_threshold, const char *path, const float max_threshold, const float degraded_threshold);
|
||||||
void print_eth_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down);
|
|
||||||
|
typedef struct {
|
||||||
|
yajl_gen json_gen;
|
||||||
|
char *buf;
|
||||||
|
const size_t buflen;
|
||||||
|
const char *interface;
|
||||||
|
const char *format_up;
|
||||||
|
const char *format_down;
|
||||||
|
} eth_info_ctx_t;
|
||||||
|
|
||||||
|
void print_eth_info(eth_info_ctx_t *ctx);
|
||||||
|
|
||||||
void print_load(yajl_gen json_gen, char *buffer, const char *format, const char *format_above_threshold, const float max_threshold);
|
void print_load(yajl_gen json_gen, char *buffer, const char *format, const char *format_above_threshold, const float max_threshold);
|
||||||
void print_memory(yajl_gen json_gen, char *buffer, const char *format, const char *format_degraded, const char *threshold_degraded, const char *threshold_critical, const char *memory_used_method, const char *unit, const int decimals);
|
void print_memory(yajl_gen json_gen, char *buffer, const char *format, const char *format_degraded, const char *threshold_degraded, const char *threshold_critical, const char *memory_used_method, const char *unit, const int decimals);
|
||||||
void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *fmt_muted, const char *device, const char *mixer, int mixer_idx);
|
void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *fmt_muted, const char *device, const char *mixer, int mixer_idx);
|
||||||
|
|
|
@ -136,16 +136,17 @@ static int print_eth_speed(char *outwalk, const char *interface) {
|
||||||
* | 127.0.0.1 | no IP | IPv4 | ok |
|
* | 127.0.0.1 | no IP | IPv4 | ok |
|
||||||
* | 127.0.0.1 | ::1/128 | IPv4 | ok |
|
* | 127.0.0.1 | ::1/128 | IPv4 | ok |
|
||||||
*/
|
*/
|
||||||
void print_eth_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down) {
|
void print_eth_info(eth_info_ctx_t *ctx) {
|
||||||
const char *format = format_down; // default format
|
const char *format = ctx->format_down; // default format
|
||||||
|
#define json_gen ctx->json_gen
|
||||||
|
|
||||||
char *outwalk = buffer;
|
char *outwalk = ctx->buf;
|
||||||
size_t num = 0;
|
size_t num = 0;
|
||||||
|
|
||||||
INSTANCE(interface);
|
INSTANCE(ctx->interface);
|
||||||
|
|
||||||
char *ipv4_address = sstrdup(get_ip_addr(interface, AF_INET));
|
char *ipv4_address = sstrdup(get_ip_addr(ctx->interface, AF_INET));
|
||||||
char *ipv6_address = sstrdup(get_ip_addr(interface, AF_INET6));
|
char *ipv6_address = sstrdup(get_ip_addr(ctx->interface, AF_INET6));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Removing '%' and following characters from IPv6 since the interface identifier is redundant,
|
* Removing '%' and following characters from IPv6 since the interface identifier is redundant,
|
||||||
|
@ -170,7 +171,7 @@ void print_eth_info(yajl_gen json_gen, char *buffer, const char *interface, cons
|
||||||
prefer_ipv4 = false;
|
prefer_ipv4 = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
format = format_up;
|
format = ctx->format_up;
|
||||||
|
|
||||||
const char *ip_address = (prefer_ipv4) ? ipv4_address : ipv6_address;
|
const char *ip_address = (prefer_ipv4) ? ipv4_address : ipv6_address;
|
||||||
if (BEGINS_WITH(ip_address, "no IP")) {
|
if (BEGINS_WITH(ip_address, "no IP")) {
|
||||||
|
@ -183,20 +184,22 @@ void print_eth_info(yajl_gen json_gen, char *buffer, const char *interface, cons
|
||||||
char string_speed[STRING_SIZE];
|
char string_speed[STRING_SIZE];
|
||||||
char string_interface[STRING_SIZE];
|
char string_interface[STRING_SIZE];
|
||||||
snprintf(string_ip, STRING_SIZE, "%s", ip_address);
|
snprintf(string_ip, STRING_SIZE, "%s", ip_address);
|
||||||
print_eth_speed(string_speed, interface);
|
print_eth_speed(string_speed, ctx->interface);
|
||||||
snprintf(string_interface, STRING_SIZE, "%s", interface);
|
snprintf(string_interface, STRING_SIZE, "%s", ctx->interface);
|
||||||
placeholder_t placeholders[] = {
|
placeholder_t placeholders[] = {
|
||||||
{.name = "%ip", .value = string_ip},
|
{.name = "%ip", .value = string_ip},
|
||||||
{.name = "%speed", .value = string_speed},
|
{.name = "%speed", .value = string_speed},
|
||||||
{.name = "%interface", .value = string_interface}};
|
{.name = "%interface", .value = string_interface}};
|
||||||
num = sizeof(placeholders) / sizeof(placeholder_t);
|
num = sizeof(placeholders) / sizeof(placeholder_t);
|
||||||
|
|
||||||
out:
|
out : {
|
||||||
buffer = format_placeholders(format, &placeholders[0], num);
|
char *formatted = format_placeholders(format, &placeholders[0], num);
|
||||||
|
OUTPUT_FORMATTED;
|
||||||
|
free(formatted);
|
||||||
|
|
||||||
END_COLOR;
|
END_COLOR;
|
||||||
free(ipv4_address);
|
free(ipv4_address);
|
||||||
free(ipv6_address);
|
free(ipv6_address);
|
||||||
OUTPUT_FULL_TEXT(buffer);
|
OUTPUT_FULL_TEXT(ctx->buf);
|
||||||
free(buffer);
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user