diff options
| author | Tommie Gannert | 2016-08-01 20:28:16 +0100 | 
|---|---|---|
| committer | Tommie Gannert | 2016-08-14 12:20:43 +0100 | 
| commit | a937693cefd664b7f259713ed1fdddc4cc7ad188 (patch) | |
| tree | b803904806e251ba2b32d69fbbc1a562e9e97544 | |
| parent | Make print_disk_info, print_eth_info and print_wireless_info compile on NetBS... (diff) | |
Simplify string comparisons in slurp_battery_info for NetBSD.
Doing strlen(a) == strlen(b) && strncmp(a, b, N) seems to have no
benefits compared to just strcmp(a, b). The NetBSD cstring properties
come from the kernel, not the user.
The test for units did a prefix match, but that looked like a bug, the
unit is "Watt hour" in my Virtual box.
| -rw-r--r-- | src/print_battery_info.c | 58 | 
1 files changed, 11 insertions, 47 deletions
| diff --git a/src/print_battery_info.c b/src/print_battery_info.c index c18c725..3e97528 100644 --- a/src/print_battery_info.c +++ b/src/print_battery_info.c @@ -272,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 */      while ((obj = prop_object_iterator_next(iter)) != NULL) {          /* skip this dict if it's not what we're looking for */ -        if ((strlen(prop_dictionary_keysym_cstring_nocopy(obj)) == strlen(sensor_desc)) && -            (strncmp(sensor_desc, -                     prop_dictionary_keysym_cstring_nocopy(obj), -                     strlen(sensor_desc)) != 0)) +        if (strcmp(sensor_desc, +                   prop_dictionary_keysym_cstring_nocopy(obj)) != 0)              continue;          is_found = true; @@ -300,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) {              obj3 = prop_dictionary_get(obj2, "description"); -            if (obj3 && -                strlen(prop_string_cstring_nocopy(obj3)) == 8 && -                strncmp("charging", -                        prop_string_cstring_nocopy(obj3), -                        8) == 0) { +            if (obj3 == NULL) +                continue; + +            if (strcmp("charging", prop_string_cstring_nocopy(obj3)) == 0) {                  obj3 = prop_dictionary_get(obj2, "cur-value");                  if (prop_number_integer_value(obj3))                      batt_info->status = CS_CHARGING;                  else                      batt_info->status = CS_DISCHARGING; - -                continue; -            } - -            if (obj3 && -                strlen(prop_string_cstring_nocopy(obj3)) == 6 && -                strncmp("charge", -                        prop_string_cstring_nocopy(obj3), -                        6) == 0) { +            } else if (strcmp("charge", prop_string_cstring_nocopy(obj3)) == 0) {                  obj3 = prop_dictionary_get(obj2, "cur-value");                  obj4 = prop_dictionary_get(obj2, "max-value");                  obj5 = prop_dictionary_get(obj2, "type"); @@ -330,44 +319,19 @@ static bool slurp_battery_info(struct battery_info *batt_info, yajl_gen json_gen                  if (remaining == full_design)                      is_full = true; -                if (strncmp("Ampere hour", -                            prop_string_cstring_nocopy(obj5), -                            11) == 0) +                if (strcmp("Ampere hour", prop_string_cstring_nocopy(obj5)) == 0)                      watt_as_unit = false;                  else                      watt_as_unit = true; - -                continue; -            } - -            if (obj3 && -                strlen(prop_string_cstring_nocopy(obj3)) == 14 && -                strncmp("discharge rate", -                        prop_string_cstring_nocopy(obj3), -                        14) == 0) { +            } else if (strcmp("discharge rate", prop_string_cstring_nocopy(obj3)) == 0) {                  obj3 = prop_dictionary_get(obj2, "cur-value");                  batt_info->present_rate = prop_number_integer_value(obj3); -                continue; -            } - -            if (obj3 && -                strlen(prop_string_cstring_nocopy(obj3)) == 13 && -                strncmp("last full cap", -                        prop_string_cstring_nocopy(obj3), -                        13) == 0) { +            } else if (strcmp("last full cap", prop_string_cstring_nocopy(obj3)) == 0) {                  obj3 = prop_dictionary_get(obj2, "cur-value");                  last_full_cap = prop_number_integer_value(obj3); -                continue; -            } - -            if (obj3 && -                strlen(prop_string_cstring_nocopy(obj3)) == 7 && -                strncmp("voltage", -                        prop_string_cstring_nocopy(obj3), -                        7) == 0) { +            } else if (strcmp("voltage", prop_string_cstring_nocopy(obj3)) == 0) {                  obj3 = prop_dictionary_get(obj2, "cur-value");                  voltage = prop_number_integer_value(obj3); -                continue;              }          }          prop_object_iterator_release(iter2); | 
