Mandatory ----- Highly desirable ----- - Option for launching using sudo - Allow the specification of commands to be run immediately before the shutdown (i.e.: At the scheduled time, with the shutdown proceeding upon the completion of the command) - Investigate the "The next four (...)" bit in K&R2, p 256, re: gmtime() - Support the sending of a warning message to logged-on users - Add a "Do not show me this again" checkbox on the "You might not be able to successfully perform a shutdown" warning. If the user elects to not be shown this, still print the warning to stderr, but don't display a GUI dialog - Error checking for fprintf() calls in save_settings(). To make this less messy, it may be worthwhile to pasprintf() the whole contents of the configuration file to memory then fprintf() the resulting string once to the file - Re-examine the use of error codes (in particular EX_OSERR) that may be used inappropriately - Properly XML-ify the DownTime configuration file and improve its parsing (is there an existing XML library we can use?) Desirable ----- - Provide the option to allow specification of shutdown time in "absolute" form, e.g.: "at 23:00 today" - "Wait for process to end" and similar options? - Allow relatively complex expressions for when a shutdown should occur. For instance when ((23 minutes has passed) && (PID number 9833 is no more)) || (All processes entitled "bam" are no more) - Look at the "pure", "nothrow", "format" "nonnull", "deprecated", "warn_unused_result", "malloc", "visibility" and "noreturn" function attributes - Custom image for the application - Option to whack progress information in system notification area - Look at using (thread safe, re-entrant) getpwuid_r() rather than getpwuid() in storage.c. The main problem here is knowing the relevant buffer size required (sysconf(_SC_GETPW_R_SIZE_MAX) looks like the way to go, but apparently _SC_GETPW_R_SIZE_MAX may not be defined on all platforms)