diff options
author | Mattias Andrée <maandree@kth.se> | 2024-08-28 16:42:05 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2024-08-28 16:42:05 +0200 |
commit | a24071ae913b223487df78859c8d830f9e69f580 (patch) | |
tree | e2ec712cc29461c82cfdd477e8b1ba961b50018d /format_result.c | |
parent | First commit (diff) | |
download | anysum-a24071ae913b223487df78859c8d830f9e69f580.tar.gz anysum-a24071ae913b223487df78859c8d830f9e69f580.tar.bz2 anysum-a24071ae913b223487df78859c8d830f9e69f580.tar.xz |
Second commit
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
-rw-r--r-- | write.c (renamed from format_result.c) | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/format_result.c b/write.c index bb0bd29..b3eaa56 100644 --- a/format_result.c +++ b/write.c @@ -3,7 +3,36 @@ void -format_result(struct algorithm *algorithm, const char *file, enum format format) +writeall(int fd, const void *data, size_t n, const char *fname) +{ + const char *text = data; + ssize_t r; + while (n) { + r = write(fd, text, n); + if (r < 0) { + if (errno == EINTR) + continue; + eprintf("write %s:", fname); + } + n -= (size_t)r; + text = &text[r]; + } +} + + +char * +hex(char *out, const unsigned char *in, size_t n, const char *xdigits) +{ + for (; n--; in++) { + *out++ = xdigits[(*in >> 4) & 15]; + *out++ = xdigits[(*in >> 0) & 15]; + } + return out; +} + + +void +format_result(struct algorithm *algorithm, const char *file, enum format format, int hexinput) { char *p; size_t size = algorithm->hasher.hash_size + 1U; @@ -34,7 +63,7 @@ format_result(struct algorithm *algorithm, const char *file, enum format format) abort(); } if (format & WITH_FILENAME) - p = stpcpy(stpcpy(p, " "), file); + p = stpcpy(stpcpy(p, hexinput ? " #" : " "), file); if (format & WITH_NUL) *p++ = '\0'; if (format & WITH_LF) |