Merge pull request #149 from tommie/incremental_multibatt

Fix some compilation warnings on OpenBSD and NetBSD
This commit is contained in:
Michael Stapelberg 2016-08-14 06:29:20 -07:00 committed by GitHub
commit 6e4ca31aa5
4 changed files with 43 additions and 62 deletions

View File

@ -40,6 +40,7 @@ struct battery_info {
* *
* Assumes a constant (dis)charge rate. * Assumes a constant (dis)charge rate.
*/ */
#if defined(LINUX) || defined(__NetBSD__)
static int seconds_remaining_from_rate(charging_status_t status, float full_design, float remaining, float present_rate) { static int seconds_remaining_from_rate(charging_status_t status, float full_design, float remaining, float present_rate) {
if (status == CS_CHARGING) if (status == CS_CHARGING)
return 3600.0 * (full_design - remaining) / present_rate; return 3600.0 * (full_design - remaining) / present_rate;
@ -48,17 +49,18 @@ static int seconds_remaining_from_rate(charging_status_t status, float full_desi
else else
return 0; return 0;
} }
#endif
static bool slurp_battery_info(struct battery_info *batt_info, yajl_gen json_gen, char *buffer, int number, const char *path, const char *format_down, bool last_full_capacity) { static bool slurp_battery_info(struct battery_info *batt_info, yajl_gen json_gen, char *buffer, int number, const char *path, const char *format_down, bool last_full_capacity) {
char *outwalk = buffer;
#if defined(LINUX)
char buf[1024]; char buf[1024];
const char *walk, *last; const char *walk, *last;
char *outwalk = buffer;
bool watt_as_unit = false; bool watt_as_unit = false;
int full_design = -1, int full_design = -1,
remaining = -1, remaining = -1,
voltage = -1; voltage = -1;
#if defined(LINUX)
char batpath[512]; char batpath[512];
sprintf(batpath, path, number); sprintf(batpath, path, number);
INSTANCE(batpath); INSTANCE(batpath);
@ -177,8 +179,6 @@ static bool slurp_battery_info(struct battery_info *batt_info, yajl_gen json_gen
batt_info->status = CS_CHARGING; batt_info->status = CS_CHARGING;
else else
batt_info->status = CS_DISCHARGING; batt_info->status = CS_DISCHARGING;
full_design = sysctl_rslt;
#elif defined(__OpenBSD__) #elif defined(__OpenBSD__)
/* /*
* We're using apm(4) here, which is the interface to acpi(4) on amd64/i386 and * We're using apm(4) here, which is the interface to acpi(4) on amd64/i386 and
@ -228,6 +228,10 @@ static bool slurp_battery_info(struct battery_info *batt_info, yajl_gen json_gen
/* /*
* Using envsys(4) via sysmon(4). * Using envsys(4) via sysmon(4).
*/ */
bool watt_as_unit = false;
int full_design = -1,
remaining = -1,
voltage = -1;
int fd, rval, last_full_cap; int fd, rval, last_full_cap;
bool is_found = false; bool is_found = false;
char *sensor_desc; char *sensor_desc;
@ -268,10 +272,8 @@ static bool slurp_battery_info(struct battery_info *batt_info, yajl_gen json_gen
/* iterate over the dictionary returned by the kernel */ /* iterate over the dictionary returned by the kernel */
while ((obj = prop_object_iterator_next(iter)) != NULL) { while ((obj = prop_object_iterator_next(iter)) != NULL) {
/* skip this dict if it's not what we're looking for */ /* skip this dict if it's not what we're looking for */
if ((strlen(prop_dictionary_keysym_cstring_nocopy(obj)) == strlen(sensor_desc)) && if (strcmp(sensor_desc,
(strncmp(sensor_desc, prop_dictionary_keysym_cstring_nocopy(obj)) != 0)
prop_dictionary_keysym_cstring_nocopy(obj),
strlen(sensor_desc)) != 0))
continue; continue;
is_found = true; is_found = true;
@ -296,26 +298,17 @@ static bool slurp_battery_info(struct battery_info *batt_info, yajl_gen json_gen
while ((obj2 = prop_object_iterator_next(iter2)) != NULL) { while ((obj2 = prop_object_iterator_next(iter2)) != NULL) {
obj3 = prop_dictionary_get(obj2, "description"); obj3 = prop_dictionary_get(obj2, "description");
if (obj3 && if (obj3 == NULL)
strlen(prop_string_cstring_nocopy(obj3)) == 8 && continue;
strncmp("charging",
prop_string_cstring_nocopy(obj3), if (strcmp("charging", prop_string_cstring_nocopy(obj3)) == 0) {
8) == 0) {
obj3 = prop_dictionary_get(obj2, "cur-value"); obj3 = prop_dictionary_get(obj2, "cur-value");
if (prop_number_integer_value(obj3)) if (prop_number_integer_value(obj3))
batt_info->status = CS_CHARGING; batt_info->status = CS_CHARGING;
else else
batt_info->status = CS_DISCHARGING; batt_info->status = CS_DISCHARGING;
} else if (strcmp("charge", prop_string_cstring_nocopy(obj3)) == 0) {
continue;
}
if (obj3 &&
strlen(prop_string_cstring_nocopy(obj3)) == 6 &&
strncmp("charge",
prop_string_cstring_nocopy(obj3),
6) == 0) {
obj3 = prop_dictionary_get(obj2, "cur-value"); obj3 = prop_dictionary_get(obj2, "cur-value");
obj4 = prop_dictionary_get(obj2, "max-value"); obj4 = prop_dictionary_get(obj2, "max-value");
obj5 = prop_dictionary_get(obj2, "type"); obj5 = prop_dictionary_get(obj2, "type");
@ -326,44 +319,19 @@ static bool slurp_battery_info(struct battery_info *batt_info, yajl_gen json_gen
if (remaining == full_design) if (remaining == full_design)
is_full = true; is_full = true;
if (strncmp("Ampere hour", if (strcmp("Ampere hour", prop_string_cstring_nocopy(obj5)) == 0)
prop_string_cstring_nocopy(obj5),
11) == 0)
watt_as_unit = false; watt_as_unit = false;
else else
watt_as_unit = true; watt_as_unit = true;
} else if (strcmp("discharge rate", prop_string_cstring_nocopy(obj3)) == 0) {
continue;
}
if (obj3 &&
strlen(prop_string_cstring_nocopy(obj3)) == 14 &&
strncmp("discharge rate",
prop_string_cstring_nocopy(obj3),
14) == 0) {
obj3 = prop_dictionary_get(obj2, "cur-value"); obj3 = prop_dictionary_get(obj2, "cur-value");
batt_info->present_rate = prop_number_integer_value(obj3); batt_info->present_rate = prop_number_integer_value(obj3);
continue; } else if (strcmp("last full cap", prop_string_cstring_nocopy(obj3)) == 0) {
}
if (obj3 &&
strlen(prop_string_cstring_nocopy(obj3)) == 13 &&
strncmp("last full cap",
prop_string_cstring_nocopy(obj3),
13) == 0) {
obj3 = prop_dictionary_get(obj2, "cur-value"); obj3 = prop_dictionary_get(obj2, "cur-value");
last_full_cap = prop_number_integer_value(obj3); last_full_cap = prop_number_integer_value(obj3);
continue; } else if (strcmp("voltage", prop_string_cstring_nocopy(obj3)) == 0) {
}
if (obj3 &&
strlen(prop_string_cstring_nocopy(obj3)) == 7 &&
strncmp("voltage",
prop_string_cstring_nocopy(obj3),
7) == 0) {
obj3 = prop_dictionary_get(obj2, "cur-value"); obj3 = prop_dictionary_get(obj2, "cur-value");
voltage = prop_number_integer_value(obj3); voltage = prop_number_integer_value(obj3);
continue;
} }
} }
prop_object_iterator_release(iter2); prop_object_iterator_release(iter2);
@ -436,14 +404,14 @@ void print_battery_info(yajl_gen json_gen, char *buffer, int number, const char
} }
} }
#define EAT_SPACE_FROM_OUTPUT_IF_NO_OUTPUT() \ #define EAT_SPACE_FROM_OUTPUT_IF_NO_OUTPUT() \
do { \ do { \
if (outwalk == prevoutwalk) { \ if (outwalk == prevoutwalk) { \
if (outwalk > buffer && isspace(outwalk[-1])) \ if (outwalk > buffer && isspace((int)outwalk[-1])) \
outwalk--; \ outwalk--; \
else if (isspace(*(walk + 1))) \ else if (isspace((int)*(walk + 1))) \
walk++; \ walk++; \
} \ } \
} while (0) } while (0)
for (walk = format; *walk != '\0'; walk++) { for (walk = format; *walk != '\0'; walk++) {

View File

@ -10,6 +10,7 @@
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || (__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__) #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || (__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
#include <sys/param.h> #include <sys/param.h>
#include <sys/mount.h> #include <sys/mount.h>
#elif defined(__NetBSD__)
#else #else
#include <mntent.h> #include <mntent.h>
#endif #endif
@ -121,6 +122,11 @@ void print_disk_info(yajl_gen json_gen, char *buffer, const char *path, const ch
if (statfs(path, &buf) == -1) if (statfs(path, &buf) == -1)
return; return;
#elif defined(__NetBSD__)
struct statvfs buf;
if (statvfs(path, &buf) == -1)
return;
#else #else
struct statvfs buf; struct statvfs buf;

View File

@ -79,7 +79,7 @@ static int print_eth_speed(char *outwalk, const char *interface) {
ethspeed = (desc->ifmt_string != NULL ? desc->ifmt_string : "?"); ethspeed = (desc->ifmt_string != NULL ? desc->ifmt_string : "?");
return sprintf(outwalk, "%s", ethspeed); return sprintf(outwalk, "%s", ethspeed);
#elif defined(__OpenBSD__) || defined(__NetBSD__) #elif defined(__OpenBSD__) || defined(__NetBSD__)
char *ethspeed; const char *ethspeed;
struct ifmediareq ifmr; struct ifmediareq ifmr;
(void)memset(&ifmr, 0, sizeof(ifmr)); (void)memset(&ifmr, 0, sizeof(ifmr));

View File

@ -54,6 +54,13 @@
#include <netinet/if_ether.h> #include <netinet/if_ether.h>
#include <net80211/ieee80211.h> #include <net80211/ieee80211.h>
#include <net80211/ieee80211_ioctl.h> #include <net80211/ieee80211_ioctl.h>
#define IW_ESSID_MAX_SIZE IEEE80211_NWID_LEN
#endif
#ifdef __NetBSD__
#include <sys/types.h>
#include <net80211/ieee80211.h>
#define IW_ESSID_MAX_SIZE IEEE80211_NWID_LEN
#endif #endif
#include "i3status.h" #include "i3status.h"
@ -423,7 +430,7 @@ error1:
else else
len = IEEE80211_NWID_LEN + 1; len = IEEE80211_NWID_LEN + 1;
strncpy(&info->essid[0], nwid.i_nwid, len); strncpy(&info->essid[0], (char *)nwid.i_nwid, len);
info->essid[IW_ESSID_MAX_SIZE] = '\0'; info->essid[IW_ESSID_MAX_SIZE] = '\0';
info->flags |= WIRELESS_INFO_FLAG_HAS_ESSID; info->flags |= WIRELESS_INFO_FLAG_HAS_ESSID;
} }