* 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:
* 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
* 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);
* 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
}