diff options
Diffstat (limited to 'fmt.c')
-rw-r--r-- | fmt.c | 85 |
1 files changed, 0 insertions, 85 deletions
@@ -1,85 +0,0 @@ -#include "fmt.h" - -/** - @file fmt.c - @author djb - @source qmail - @brief formating differnt inputs format for output printing -*/ - -unsigned int fmt_str(register char *s,register char *t) -{ - register unsigned int len; - char ch; - len = 0; - if (s) { while ((ch = t[len])) s[len++] = ch; } - else while (t[len]) len++; - return len; -} - -unsigned int fmt_strn(register char *s,register char *t,register unsigned int n) -{ - register unsigned int len; - char ch; - len = 0; - if (s) { while (n-- && (ch = t[len])) s[len++] = ch; } - else while (n-- && t[len]) len++; - return len; -} - -unsigned int fmt_uint(register char *s,register unsigned int u) -{ - register unsigned long l; l = u; return fmt_ulong(s,l); -} - -unsigned int fmt_uint0(char *s,unsigned int u,unsigned int n) -{ - unsigned int len; - len = fmt_uint(FMT_LEN,u); - while (len < n) { if (s) *s++ = '0'; ++len; } - if (s) fmt_uint(s,u); - return len; -} - -unsigned int fmt_ulong(register char *s,register unsigned long u) -{ - register unsigned int len; register unsigned long q; - len = 1; q = u; - while (q > 9) { ++len; q /= 10; } - if (s) { - s += len; - do { *--s = '0' + (u % 10); u /= 10; } while(u); /* handles u == 0 */ - } - return len; -} - -unsigned int fmt_xlong(register char *s,register unsigned long u) -{ - register unsigned int len; register unsigned long q; - len = 1; q = u; - while (q > 15) { ++len; q /= 16; } - if (s) { - s += len; - do { *--s = tohex(u % 16); u /= 16; } while(u); /* handles u == 0 */ - } - return len; -} - -char tohex(char num) { - if (num < 10) - return num + '0'; - else if (num < 16) - return num - 10 + 'a'; - else - return -1; -} - -int fromhex(unsigned char c) { - if (c >= '0' && c <= '9') - return c-'0'; - else if (c >= 'A' && c <= 'F') - return c -'A' + 10; - else if (c >= 'a' && c <= 'f') - return c - 'a' + 10; - return -1; -} |