]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Fix backend logging from signal handlers (OpenPrinting #167)
authorMichael R Sweet <michael.r.sweet@gmail.com>
Fri, 9 Apr 2021 14:09:12 +0000 (10:09 -0400)
committerMichael R Sweet <michael.r.sweet@gmail.com>
Fri, 9 Apr 2021 14:09:12 +0000 (10:09 -0400)
backend/backend-private.h
backend/ipp.c
backend/snmp.c
backend/testbackend.c
backend/usb-darwin.c

index 85fb8aef8ae36f5ef2cc664d888d2e45601065e0..d19b06b823b6d77a8bb3e4861de8d0d59c174dfe 100644 (file)
@@ -1,7 +1,8 @@
 /*
  * Backend support definitions for CUPS.
  *
- * Copyright © 2007-2014 by Apple Inc.
+ * Copyright © 2021 by OpenPrinting
+ * Copyright © 2007-2021 by Apple Inc.
  * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
  *
  * Licensed under Apache License v2.0.  See the file "LICENSE" for more
@@ -52,6 +53,14 @@ extern "C" {
 #  endif /* __cplusplus */
 
 
+/*
+ * Log messages in backend signal handlers or other places where stdio cannot
+ * be used...
+ */
+
+#  define backendMessage(msg) {const char *s = msg; write(2, s, strlen(s));}
+
+
 /*
  * OID constants...
  */
@@ -320,7 +329,6 @@ extern int          backendSNMPSupplies(int snmp_fd, http_addr_t *addr,
 extern int             backendWaitLoop(int snmp_fd, http_addr_t *addr,
                                        int use_bc, _cups_sccb_t side_cb);
 
-
 #  ifdef __cplusplus
 }
 #  endif /* __cplusplus */
index 8b1976990dbb148027b9a5ce62eda72af2a73ff5..63353a66df48f6ae6075a0617286222134079204 100644 (file)
@@ -3418,7 +3418,7 @@ sigterm_handler(int sig)          /* I - Signal */
 {
   (void)sig;   /* remove compiler warnings... */
 
-  write(2, "DEBUG: Got SIGTERM.\n", 20);
+  backendMessage("DEBUG: Got SIGTERM.\n");
 
 #if defined(HAVE_GSSAPI) && defined(HAVE_XPC)
   if (child_pid)
@@ -3434,7 +3434,7 @@ sigterm_handler(int sig)          /* I - Signal */
     * Flag that the job should be canceled...
     */
 
-    write(2, "DEBUG: sigterm_handler: job_canceled = 1.\n", 25);
+    backendMessage("DEBUG: sigterm_handler: job_canceled = 1.\n");
 
     job_canceled = 1;
     return;
index 9572822a8e412c6e775f770ce50298621fbfd7a5..084c6f5118a28388c31000c68b6741ba40c38455 100644 (file)
@@ -424,7 +424,7 @@ alarm_handler(int sig)                      /* I - Signal number */
 #endif /* !HAVE_SIGSET && !HAVE_SIGACTION */
 
   if (DebugLevel)
-    write(2, "DEBUG: ALARM!\n", 14);
+    backendMessage("DEBUG: ALARM!\n");
 }
 
 
index 6dbd0abee691651678b3ca330e9cddec835a3c1f..6412a022b766fbda099b681d9d25150d1ca306f0 100644 (file)
@@ -19,6 +19,7 @@
 #include <fcntl.h>
 #include <sys/wait.h>
 #include <signal.h>
+#include "backend-private.h"
 
 
 /*
@@ -395,7 +396,7 @@ main(int  argc,                             /* I - Number of command-line args */
          data = ps_data;
 
         write(1, data, strlen(data));
-       write(2, "DEBUG: START\n", 13);
+       backendMessage("DEBUG: START\n");
        timeout = 60.0;
         while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer),
                                            timeout)) > 0)
@@ -403,7 +404,7 @@ main(int  argc,                             /* I - Number of command-line args */
          write(2, buffer, (size_t)bytes);
          timeout = 5.0;
        }
-       write(2, "\nDEBUG: END\n", 12);
+       backendMessage("\nDEBUG: END\n");
       }
 
       exit(0);
index 3f03630f01b9793f0095ef6fae379cf4c487f37a..3a8feffb65b26d3160cdc11b2a59e9cfb2b69143 100644 (file)
@@ -1,5 +1,7 @@
 /*
- * Copyright 2005-2016 Apple Inc. All rights reserved.
+ * USB backend for macOS.
+ *
+ * Copyright © 2005-2021 Apple Inc. All rights reserved.
  *
  * IMPORTANT:  This Apple software is supplied to you by Apple Computer,
  * Inc. ("Apple") in consideration of your agreement to the following
@@ -2230,7 +2232,7 @@ sigterm_handler(int sig)          /* I - Signal */
       _exit(0);
     else
     {
-      write(2, "DEBUG: Child crashed.\n", 22);
+      backendMessage("DEBUG: Child crashed.\n");
       _exit(CUPS_BACKEND_STOP);
     }
   }