util-linux/include/strutils.h
Francesco Cosoleto 5d2a98490e This adds a second parameter to size_to_human_string() to return a
string with a different format based on the following flags:

        SIZE_SUFFIX_1LETTER  = "1K"
        SIZE_SUFFIX_3LETTER  = "1KiB",
        SIZE_SUFFIX_SPACE    = "1 KiB" or "1 K"

[kzak@redhat.com: - rename flags to SIZE_SUFFIX_* format,
                  - fix suffix[] buffer size
                  - add 3 letter version to the test]

Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
2011-05-26 15:32:33 +02:00

41 lines
971 B
C

#ifndef UTIL_LINUX_STRUTILS
#define UTIL_LINUX_STRUTILS
#include <inttypes.h>
#include <string.h>
#include <sys/types.h>
extern int strtosize(const char *str, uintmax_t *res);
extern long strtol_or_err(const char *str, const char *errmesg);
extern long long strtoll_or_err(const char *str, const char *errmesg);
#ifndef HAVE_STRNLEN
extern size_t strnlen(const char *s, size_t maxlen);
#endif
#ifndef HAVE_STRNDUP
extern char *strndup(const char *s, size_t n);
#endif
#ifndef HAVE_STRNCHR
extern char *strnchr(const char *s, size_t maxlen, int c);
#endif
/* caller guarantees n > 0 */
static inline void xstrncpy(char *dest, const char *src, size_t n)
{
strncpy(dest, src, n-1);
dest[n-1] = 0;
}
extern void strmode(mode_t mode, char *str);
/* Options for size_to_human_string() */
enum
{
SIZE_SUFFIX_1LETTER = 0,
SIZE_SUFFIX_3LETTER = 1,
SIZE_SUFFIX_SPACE = 2
};
extern char *size_to_human_string(int options, uint64_t bytes);
#endif