]> 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)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 13 Nov 2024 19:48:10 +0000 (19:48 +0000)
(cherry picked from commit f0764b98e5c136cb948a8034949064f610acca24)

src/shared/qrcode-util.c

index e62a5a863581b8adb776d9ee1aa548e16d19f998..9c24ca0cf0319121ed400906fafb773a7c7cd38c 100644 (file)
@@ -178,8 +178,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)
@@ -187,21 +189,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;
 
@@ -217,7 +219,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);