chiark / gitweb /
unit: make unit casts typesafe
[elogind.git] / src / sd-daemon.h
index 0277b0fb5cbf32eabf2a0a59a7277d3d589f99aa..20c260c40dd764c19a8f36fed05d079520930a8c 100644 (file)
@@ -41,6 +41,12 @@ extern "C" {
  * algorithms described here, if they do not want to include these two
  * source files. */
 
+#ifdef __GNUC__
+#define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b)))
+#else
+#define _sd_printf_attr_(a,b)
+#endif
+
 /*
   Log levels for usage on stderr:
 
@@ -126,9 +132,9 @@ int sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t
  *                 little value in signalling non-readiness the only
  *                 value daemons should send is "READY=1".
  *
- *    STATUS=...   Passes a status string back to systemd that
- *                 describes the daemon state. This is free-from and
- *                 can be used for various purposes: general state
+ *    STATUS=...   Passes a single-line status string back to systemd
+ *                 that describes the daemon state. This is free-from
+ *                 and can be used for various purposes: general state
  *                 feedback, fsck-like programs could pass completion
  *                 percentages and failing programs could pass a human
  *                 readable error message. Example: "STATUS=Completed
@@ -143,6 +149,12 @@ int sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t
  *    MAINPID=...  The main pid of a daemon, in case systemd did not
  *                 fork off the process itself. Example: "MAINPID=4711"
  *
+ * Daemons can choose to send additional variables.
+ *
+ * Returns a negative errno-style error code on failure. Returns > 0
+ * if systemd could be notified, 0 if it couldn't possibly because
+ * systemd is not running.
+ *
  * See sd_notifyf() for more complete examples.
  */
 int sd_notify(int unset_environment, const char *state);
@@ -164,7 +176,7 @@ int sd_notify(int unset_environment, const char *state);
  *               strerror(errno),
  *               errno);
  */
-int sd_notifyf(int unset_environment, const char *format, ...);
+int sd_notifyf(int unset_environment, const char *format, ...) _sd_printf_attr_(2,3);
 
 #ifdef __cplusplus
 }