battery: Do not redefine strncat with different semantics
This commit is contained in:
parent
f9ad3cb029
commit
b5578ff5bc
1 changed files with 11 additions and 10 deletions
|
@ -128,7 +128,8 @@ void cleanup_battery()
|
||||||
battery_os_free();
|
battery_os_free();
|
||||||
}
|
}
|
||||||
|
|
||||||
char *strncat(char *dest, const char *addendum, size_t limit)
|
// Appends addendum to dest, and does not allow dest to grow over limit (including NULL terminator).
|
||||||
|
char *strnappend(char *dest, const char *addendum, size_t limit)
|
||||||
{
|
{
|
||||||
char *tmp = strdup(dest);
|
char *tmp = strdup(dest);
|
||||||
|
|
||||||
|
@ -164,7 +165,7 @@ void battery_update_text(char *dest, char *format)
|
||||||
switch (*c) {
|
switch (*c) {
|
||||||
case 's':
|
case 's':
|
||||||
// Append the appropriate status message to the string.
|
// Append the appropriate status message to the string.
|
||||||
strncat(dest,
|
strnappend(dest,
|
||||||
(battery_state.state == BATTERY_CHARGING)
|
(battery_state.state == BATTERY_CHARGING)
|
||||||
? "Charging"
|
? "Charging"
|
||||||
: (battery_state.state == BATTERY_DISCHARGING)
|
: (battery_state.state == BATTERY_DISCHARGING)
|
||||||
|
@ -174,38 +175,38 @@ void battery_update_text(char *dest, char *format)
|
||||||
break;
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
snprintf(buf, sizeof(buf), "%02d", battery_state.time.minutes);
|
snprintf(buf, sizeof(buf), "%02d", battery_state.time.minutes);
|
||||||
strncat(dest, buf, BATTERY_BUF_SIZE);
|
strnappend(dest, buf, BATTERY_BUF_SIZE);
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
snprintf(buf, sizeof(buf), "%02d", battery_state.time.hours);
|
snprintf(buf, sizeof(buf), "%02d", battery_state.time.hours);
|
||||||
strncat(dest, buf, BATTERY_BUF_SIZE);
|
strnappend(dest, buf, BATTERY_BUF_SIZE);
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
snprintf(buf, sizeof(buf), "%d%%", battery_state.percentage);
|
snprintf(buf, sizeof(buf), "%d%%", battery_state.percentage);
|
||||||
strncat(dest, buf, BATTERY_BUF_SIZE);
|
strnappend(dest, buf, BATTERY_BUF_SIZE);
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
if (battery_state.state == BATTERY_FULL) {
|
if (battery_state.state == BATTERY_FULL) {
|
||||||
snprintf(buf, sizeof(buf), "Full");
|
snprintf(buf, sizeof(buf), "Full");
|
||||||
strncat(dest, buf, BATTERY_BUF_SIZE);
|
strnappend(dest, buf, BATTERY_BUF_SIZE);
|
||||||
} else {
|
} else {
|
||||||
snprintf(buf, sizeof(buf), "%02d:%02d", battery_state.time.hours, battery_state.time.minutes);
|
snprintf(buf, sizeof(buf), "%02d:%02d", battery_state.time.hours, battery_state.time.minutes);
|
||||||
strncat(dest, buf, BATTERY_BUF_SIZE);
|
strnappend(dest, buf, BATTERY_BUF_SIZE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '%':
|
case '%':
|
||||||
case '\0':
|
case '\0':
|
||||||
strncat(dest, "%", BATTERY_BUF_SIZE);
|
strnappend(dest, "%", BATTERY_BUF_SIZE);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "Battery: unrecognised format specifier '%%%c'.\n", *c);
|
fprintf(stderr, "Battery: unrecognised format specifier '%%%c'.\n", *c);
|
||||||
buf[0] = *c;
|
buf[0] = *c;
|
||||||
strncat(dest, buf, BATTERY_BUF_SIZE);
|
strnappend(dest, buf, BATTERY_BUF_SIZE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
buf[0] = *c;
|
buf[0] = *c;
|
||||||
strncat(dest, buf, BATTERY_BUF_SIZE);
|
strnappend(dest, buf, BATTERY_BUF_SIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue