Commit graph

17 commits

Author SHA1 Message Date
Aaron Marcher
96ddf4e1de Consistency with 80 char limit and breaks 2018-07-08 17:42:58 +02:00
Aaron Marcher
43a12832a3 Change uint64_t to uintmax_t 2018-07-07 10:50:25 +02:00
Aaron Marcher
381c2fa12a fmt_human: Improve types
size_t may not be enough, use 64 bit integers
2018-07-06 07:56:46 +02:00
Laslo Hunhold
13d77cd268 Refactor snprintf-usage in util.c 2018-05-23 19:56:04 +02:00
Laslo Hunhold
ceb13206a4 Refactor fmt_human() and fix a bug
It is not necessary to copy memory or anything. Just keep a pointer to
the active prefix-array and assign the length of the arrays to a
variable.

Make the code more readable by using a switch, be more strict when an
invalid base is passed to it and fix a small oversight in the bottom of
the code where the base 1024 was forgotten to generalized.
2018-05-21 20:28:57 +02:00
Aaron Marcher
10dbc9543e Merge fmt_human_2 and fmt_human_10 to one function
Now only one function, fmt_human, takes an additional argument "base".
2018-05-21 14:44:21 +02:00
Aaron Marcher
ec5c35ec9f Remove units from numbers
This is a first step to decouple formatting from information because of
two reasons:

 1. The components should only gather and return the values by design
 2. Fine grained user control should be a focus

Scaling will be implemented in a different way in a later commit.
2018-05-21 00:16:54 +02:00
Laslo Hunhold
46c4540dd2 Implement fmt_human_2() and fmt_human_10()
These functions take the raw number and a unit and automatically
print it out "scaled down" to a proper SI-prefix, for powers of 2
and 10 respectively.

Apply them to the 2-power cases and keep the 10-power for a later
commit.
2018-05-19 22:58:21 +02:00
Laslo Hunhold
422cadfd5f Implement esnprintf() and make formatted calls more efficient
Within the components, snprintf() was unchecked and had inefficient
calls in some places.
We implement esnprintf() that does all the dirty laundry for us
and use it exclusively now.
2018-05-19 19:44:02 +02:00
Aaron Marcher
35219d39ca Add fmt_scaled util function 2018-05-18 23:14:10 +02:00
Laslo Hunhold
80fc20d1d6 Add warn() and die()
Given slstatus is a tool that runs in the background, most likely run
from .xinitrc, it's important to prepend the name of the tool to error
messages so it becomes clear where the error is coming from.

To make this much more consistent, this commit adds warn() and die()
utility functions consistent with other suckless projects and adapts all
calls to fprintf(stderr, *) to the warn() and die() functions, greatly
increasing the readability of the code.
2018-05-18 11:13:05 +02:00
Laslo Hunhold
c83b388a3f Properly handle *snprintf() errors
Posix guarantees that the resulting string is null-terminated, even if
we have an overflow. Instead of doing what has already been done,
properly warn when there has been an error or overflow, so the user can
do something about it.
2018-05-17 23:26:56 +02:00
Aaron Marcher
ee5ec75621 Fix coding style
- Use block for single statement ifs
- Keep lines to reasonable length (current debate as to reasonable)
- When functions return -1 for error test against 0 not -1
- Do not indent cases another level
- Do not test against NULL and 0 explicitly
- Use tabs for indentation, use spaces for alignment
2018-05-06 22:28:56 +02:00
Aaron Marcher
faa52bdcc0 Format error messages properly
Make use of strerror(errno) and format all errors equally:
function ['parameters']: error message
2018-03-28 19:46:27 +02:00
Aaron Marcher
96f3a8a54e Get rid of err.h as it is not portable
Replace warn() and warnx() with fprintf() and add <stdio.h> where
necessary.
2018-03-28 18:26:56 +02:00
Aaron Marcher
11d4bec648
Added LICENSE statements to all source files 2017-09-17 17:45:03 +02:00
Aaron Marcher
6820631175
Split into multiple files
For multiple reasons the program is now split:
- Make future porting to OpenBSD easier
- Assign header includes to individiual functions
- Make future program extensions easier
- Recompile only changed parts
2017-09-17 17:26:45 +02:00