]> git.tuebingen.mpg.de Git - dss.git/blobdiff - dss.c
Makefile: Replace dependencies on cmdline.h by Makefile.
[dss.git] / dss.c
diff --git a/dss.c b/dss.c
index 4a14c4b01289958657c1828091948709e0e0f8cf..cee0f07a7e2de5dd78af2da8aa6e8fd025958cb9 100644 (file)
--- a/dss.c
+++ b/dss.c
 #include "time.h"
 #include "snap.h"
 
-
+/** Command line and config file options. */
 static struct gengetopt_args_info conf;
+/** Non-NULL if we log to a file. */
 static FILE *logfile;
+/** The read end of the signal pipe */
 static int signal_pipe;
-
 /** Process id of current rsync process. */
 static pid_t rsync_pid;
 /** Whether the rsync process is currently stopped */
@@ -41,16 +42,16 @@ static int rsync_stopped;
 /** Process id of current rm process. */
 static pid_t rm_pid;
 /** When the next snapshot is due. */
-struct timeval next_snapshot_time;
+static struct timeval next_snapshot_time;
 /** The pid of the pre-create hook. */
-pid_t pre_create_hook_pid;
+static pid_t pre_create_hook_pid;
 /** The pid of the post-create hook. */
-pid_t post_create_hook_pid;
-/* Creation time of the snapshot currently being created. */
-int64_t current_snapshot_creation_time;
-
+static pid_t post_create_hook_pid;
+/** Creation time of the snapshot currently being created. */
+static int64_t current_snapshot_creation_time;
+/** Needed by the post-create hook. */
 static char *path_to_last_complete_snapshot;
-
+/** \sa \ref snap.h for details. */
 static unsigned snapshot_creation_status;
 
 
@@ -63,11 +64,11 @@ DEFINE_DSS_ERRLIST;
        COMMAND(create) \
        COMMAND(prune) \
        COMMAND(run)
-#define COMMAND(x) int com_ ##x(void);
+#define COMMAND(x) static int com_ ##x(void);
 COMMANDS
 #undef COMMAND
 #define COMMAND(x) if (conf.x ##_given) return com_ ##x();
-int call_command_handler(void)
+static int call_command_handler(void)
 {
        COMMANDS
        DSS_EMERG_LOG("BUG: did not find command handler\n");
@@ -76,6 +77,14 @@ int call_command_handler(void)
 #undef COMMAND
 #undef COMMANDS
 
+/**
+ * The log function of dss.
+ *
+ * \param ll Loglevel.
+ * \param fml Usual format string.
+ *
+ * All DSS_XXX_LOG() macros use this function.
+ */
 __printf_2_3 void dss_log(int ll, const char* fmt,...)
 {
        va_list argp;
@@ -101,7 +110,7 @@ __printf_2_3 void dss_log(int ll, const char* fmt,...)
 /**
  * Print a message either to stdout or to the log file.
  */
-__printf_1_2 void dss_msg(const char* fmt,...)
+static __printf_1_2 void dss_msg(const char* fmt,...)
 {
        FILE *outfd = conf.daemon_given? logfile : stdout;
        va_list argp;
@@ -111,7 +120,7 @@ __printf_1_2 void dss_msg(const char* fmt,...)
 }
 
 /* TODO: Also consider number of inodes. */
-int disk_space_low(void)
+static int disk_space_low(void)
 {
        struct disk_space ds;
        int ret = get_disk_space(".", &ds);
@@ -127,12 +136,12 @@ int disk_space_low(void)
        return 0;
 }
 
-void dss_get_snapshot_list(struct snapshot_list *sl)
+static void dss_get_snapshot_list(struct snapshot_list *sl)
 {
        get_snapshot_list(sl, conf.unit_interval_arg, conf.num_intervals_arg);
 }
 
-void compute_next_snapshot_time(void)
+static void compute_next_snapshot_time(void)
 {
        struct timeval now, unit_interval = {.tv_sec = 24 * 3600 * conf.unit_interval_arg},
                tmp, diff;
@@ -176,7 +185,7 @@ out:
 }
 
 
-int remove_snapshot(struct snapshot *s)
+static int remove_snapshot(struct snapshot *s)
 {
        int fds[3] = {0, 0, 0};
        assert(!rm_pid);
@@ -196,7 +205,7 @@ out:
 /*
  * return: 0: no redundant snapshots, 1: rm process started, negative: error
  */
-int remove_redundant_snapshot(struct snapshot_list *sl)
+static int remove_redundant_snapshot(struct snapshot_list *sl)
 {
        int ret, i, interval;
        struct snapshot *s;
@@ -254,7 +263,7 @@ int remove_redundant_snapshot(struct snapshot_list *sl)
        return 0;
 }
 
-int remove_outdated_snapshot(struct snapshot_list *sl)
+static int remove_outdated_snapshot(struct snapshot_list *sl)
 {
        int i, ret;
        struct snapshot *s;
@@ -277,7 +286,7 @@ int remove_outdated_snapshot(struct snapshot_list *sl)
        return 0;
 }
 
-int remove_oldest_snapshot(struct snapshot_list *sl)
+static int remove_oldest_snapshot(struct snapshot_list *sl)
 {
        struct snapshot *s = get_oldest_snapshot(sl);
 
@@ -289,7 +298,7 @@ int remove_oldest_snapshot(struct snapshot_list *sl)
        return remove_snapshot(s);
 }
 
-int rename_incomplete_snapshot(int64_t start)
+static int rename_incomplete_snapshot(int64_t start)
 {
        char *old_name;
        int ret;
@@ -308,7 +317,7 @@ int rename_incomplete_snapshot(int64_t start)
        return ret;
 }
 
-int try_to_free_disk_space(int low_disk_space)
+static int try_to_free_disk_space(int low_disk_space)
 {
        int ret;
        struct snapshot_list sl;
@@ -335,7 +344,7 @@ out:
        return ret;
 }
 
-int pre_create_hook(void)
+static int pre_create_hook(void)
 {
        int ret, fds[3] = {0, 0, 0};
 
@@ -352,7 +361,7 @@ int pre_create_hook(void)
        return ret;
 }
 
-int post_create_hook(void)
+static int post_create_hook(void)
 {
        int ret, fds[3] = {0, 0, 0};
        char *cmd;
@@ -373,7 +382,7 @@ int post_create_hook(void)
        return ret;
 }
 
-void kill_process(pid_t pid)
+static void kill_process(pid_t pid)
 {
        if (!pid)
                return;
@@ -381,7 +390,7 @@ void kill_process(pid_t pid)
        kill(pid, SIGTERM);
 }
 
-void stop_rsync_process(void)
+static void stop_rsync_process(void)
 {
        if (!rsync_pid || rsync_stopped)
                return;
@@ -389,7 +398,7 @@ void stop_rsync_process(void)
        rsync_stopped = 1;
 }
 
-void restart_rsync_process(void)
+static void restart_rsync_process(void)
 {
        if (!rsync_pid || !rsync_stopped)
                return;
@@ -401,7 +410,7 @@ void restart_rsync_process(void)
 /**
  * Print a log message about the exit status of a child.
  */
-void log_termination_msg(pid_t pid, int status)
+static void log_termination_msg(pid_t pid, int status)
 {
        if (WIFEXITED(status))
                DSS_INFO_LOG("child %i exited. Exit status: %i\n", (int)pid,
@@ -413,7 +422,7 @@ void log_termination_msg(pid_t pid, int status)
                DSS_WARNING_LOG("child %i terminated abormally\n", (int)pid);
 }
 
-int wait_for_process(pid_t pid, int *status)
+static int wait_for_process(pid_t pid, int *status)
 {
        int ret;
 
@@ -448,7 +457,8 @@ int wait_for_process(pid_t pid, int *status)
                log_termination_msg(pid, *status);
        return ret;
 }
-int handle_rm_exit(int status)
+
+static int handle_rm_exit(int status)
 {
        rm_pid = 0;
        if (!WIFEXITED(status))
@@ -458,7 +468,7 @@ int handle_rm_exit(int status)
        return 1;
 }
 
-int wait_for_rm_process(void)
+static int wait_for_rm_process(void)
 {
        int status, ret = wait_for_process(rm_pid, &status);
 
@@ -467,7 +477,7 @@ int wait_for_rm_process(void)
        return handle_rm_exit(status);
 }
 
-int handle_rsync_exit(int status)
+static int handle_rsync_exit(int status)
 {
        int es, ret;
 
@@ -496,7 +506,7 @@ out:
        return ret;
 }
 
-int handle_pre_create_hook_exit(int status)
+static int handle_pre_create_hook_exit(int status)
 {
        int es, ret;
 
@@ -520,7 +530,7 @@ out:
        return ret;
 }
 
-int handle_sigchld(void)
+static int handle_sigchld(void)
 {
        pid_t pid;
        int status, ret = reap_child(&pid, &status);
@@ -542,8 +552,7 @@ int handle_sigchld(void)
        exit(EXIT_FAILURE);
 }
 
-
-int check_config(void)
+static int check_config(void)
 {
        if (conf.unit_interval_arg <= 0) {
                DSS_ERROR_LOG("bad unit interval: %i\n", conf.unit_interval_arg);
@@ -559,7 +568,7 @@ int check_config(void)
 }
 
 /* exits on errors */
-void parse_config_file(int override)
+static void parse_config_file(int override)
 {
        int ret;
        char *config_file;
@@ -625,13 +634,13 @@ out:
        exit(EXIT_FAILURE);
 }
 
-void handle_sighup(void)
+static void handle_sighup(void)
 {
        DSS_NOTICE_LOG("SIGHUP\n");
        parse_config_file(1);
 }
 
-void handle_signal(void)
+static void handle_signal(void)
 {
        int sig, ret = next_signal();
 
@@ -658,7 +667,7 @@ out:
                DSS_ERROR_LOG("%s\n", dss_strerror(-ret));
 }
 
-void create_rsync_argv(char ***argv, int64_t *num)
+static void create_rsync_argv(char ***argv, int64_t *num)
 {
        char *logname, *newest;
        int i = 0, j;
@@ -700,7 +709,7 @@ void create_rsync_argv(char ***argv, int64_t *num)
                DSS_DEBUG_LOG("argv[%d] = %s\n", j, (*argv)[j]);
 }
 
-void free_rsync_argv(char **argv)
+static void free_rsync_argv(char **argv)
 {
        int i;
        for (i = 0; argv[i]; i++)
@@ -708,7 +717,7 @@ void free_rsync_argv(char **argv)
        free(argv);
 }
 
-int create_snapshot(char **argv)
+static int create_snapshot(char **argv)
 {
        int ret, fds[3] = {0, 0, 0};
        char *name;
@@ -723,7 +732,7 @@ int create_snapshot(char **argv)
        return ret;
 }
 
-int select_loop(void)
+static int select_loop(void)
 {
        int ret;
        struct timeval tv = {.tv_sec = 0, .tv_usec = 0};
@@ -793,7 +802,7 @@ out:
        return ret;
 }
 
-int com_run(void)
+static int com_run(void)
 {
        int ret;
 
@@ -808,7 +817,7 @@ int com_run(void)
        return select_loop();
 }
 
-int com_prune(void)
+static int com_prune(void)
 {
        int ret;
        struct snapshot_list sl;
@@ -847,7 +856,7 @@ out:
        return ret;
 }
 
-int com_create(void)
+static int com_create(void)
 {
        int ret, status;
        char **rsync_argv;
@@ -896,7 +905,7 @@ out:
        return ret;
 }
 
-int com_ls(void)
+static int com_ls(void)
 {
        int i;
        struct snapshot_list sl;
@@ -930,7 +939,12 @@ err:
        exit(EXIT_FAILURE);
 }
 
-
+/**
+ * The main function of dss.
+ *
+ * \param argc Usual argument count.
+ * \param argv Usual argument vector.
+ */
 int main(int argc, char **argv)
 {
        int ret;