]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
qrcode-util: add debug message to show why a qrcode wasn't printed
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 28 Oct 2024 12:15:32 +0000 (13:15 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 28 Oct 2024 13:04:06 +0000 (14:04 +0100)
src/shared/qrcode-util.c

index 36cd5dcd7cfefb2d2485c4855dcef72a5399b3c8..56eace395e30ee0eaba2012106f7fd00a931610a 100644 (file)
@@ -179,8 +179,10 @@ int print_qrcode_full(FILE *out, const char *header, const char *string, unsigne
 
         /* If this is not a UTF-8 system or ANSI colors aren't supported/disabled don't print any QR
          * codes */
-        if (!is_locale_utf8() || !colors_enabled())
-                return -EOPNOTSUPP;
+        if (!is_locale_utf8())
+                return log_debug_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "Not an UTF-8 system, cannot print qrcode");
+        if (!colors_enabled())
+                return log_debug_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "Colors are disabled, cannot print qrcode");
 
         r = dlopen_qrencode();
         if (r < 0)
@@ -188,21 +190,21 @@ int print_qrcode_full(FILE *out, const char *header, const char *string, unsigne
 
         qr = sym_QRcode_encodeString(string, 0, QR_ECLEVEL_L, QR_MODE_8, 1);
         if (!qr)
-                return -ENOMEM;
+                return log_oom_debug();
 
         if (row != UINT_MAX && column != UINT_MAX) {
-                int fd;
                 unsigned qr_code_width, qr_code_height;
-                fd = fileno(out);
+
+                int fd = fileno(out);
                 if (fd < 0)
                         return log_debug_errno(errno, "Failed to get file descriptor from the file stream: %m");
-                qr_code_width = qr_code_height = qr->width + 8;
 
+                qr_code_width = qr_code_height = qr->width + 8;
                 if (column + qr_code_width > tty_width)
                         column = tty_width - qr_code_width;
 
                 /* Terminal characters are twice as high as they are wide so it's qr_code_height / 2,
-                * our QR code prints an extra new line, so we have -1 as well */
+                 * our QR code prints an extra new line, so we have -1 as well */
                 if (row + qr_code_height > tty_height)
                         row = tty_height - (qr_code_height / 2 ) - 1;
 
@@ -218,7 +220,6 @@ int print_qrcode_full(FILE *out, const char *header, const char *string, unsigne
                         fprintf(out, "\n%s:\n\n", header);
 
         write_qrcode(out, qr, row, column);
-
         fputc('\n', out);
 
         sym_QRcode_free(qr);