aboutsummaryrefslogtreecommitdiffstats
path: root/format_result.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2024-08-28 16:42:05 +0200
committerMattias Andrée <maandree@kth.se>2024-08-28 16:42:05 +0200
commita24071ae913b223487df78859c8d830f9e69f580 (patch)
treee2ec712cc29461c82cfdd477e8b1ba961b50018d /format_result.c
parentFirst commit (diff)
downloadanysum-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)