diff --git a/mx_flock.c b/mx_flock.c index 269ea1d..eb522ad 100644 --- a/mx_flock.c +++ b/mx_flock.c @@ -17,8 +17,8 @@ #define FLOCK_MODE 0600 -#ifndef free_null -#define free_null(a) do { free((a)); (a) = NULL; } while(0) +#if !defined mx_free_null +# define mx_free_null(a) do { free((a)); (a) = NULL; } while(0) #endif static inline int _flock_open(struct mx_flock *lock, mode_t mode) @@ -59,7 +59,7 @@ static inline void _flock_free(struct mx_flock *lock) return; if (lock->fname) - free_null(lock->fname); + mx_free_null(lock->fname); if (lock->fd >= 0) _flock_close(lock); diff --git a/mxq_group.c b/mxq_group.c index 39047aa..70a2b3d 100644 --- a/mxq_group.c +++ b/mxq_group.c @@ -9,7 +9,7 @@ #include "mxq_group.h" #include "mxq_job.h" -#include "mxq_util.h" +#include "mx_util.h" #include "mx_mysql.h" #define GROUP_FIELDS_CNT 26 @@ -88,16 +88,16 @@ static int bind_result_group_fields(struct mx_mysql_bind *result, struct mxq_gro void mxq_group_free_content(struct mxq_group *g) { - free_null(g->group_name); + mx_free_null(g->group_name); g->_group_name_length = 0; - free_null(g->user_name); + mx_free_null(g->user_name); g->_user_name_length = 0; - free_null(g->user_group); + mx_free_null(g->user_group); g->_user_group_length = 0; - free_null(g->job_command); + mx_free_null(g->job_command); g->_job_command_length = 0; } diff --git a/mxq_job.c b/mxq_job.c index fcc550e..78c4343 100644 --- a/mxq_job.c +++ b/mxq_job.c @@ -15,7 +15,6 @@ #include "mxq_group.h" #include "mxq_job.h" -#include "mxq_util.h" #define JOB_FIELDS_CNT 34 #define JOB_FIELDS \ @@ -148,35 +147,35 @@ char *mxq_job_status_to_name(uint64_t status) void mxq_job_free_content(struct mxq_job *j) { - free_null(j->job_workdir); + mx_free_null(j->job_workdir); j->_job_workdir_length = 0; - free_null(j->job_argv_str); + mx_free_null(j->job_argv_str); j->_job_argv_str_length = 0; - free_null(j->job_stdout); + mx_free_null(j->job_stdout); j->_job_stdout_length = 0; - free_null(j->job_stderr); + mx_free_null(j->job_stderr); j->_job_stderr_length = 0; if (j->tmp_stderr == j->tmp_stdout) { j->tmp_stdout = NULL; } else { - free_null(j->tmp_stdout); + mx_free_null(j->tmp_stdout); } - free_null(j->tmp_stderr); + mx_free_null(j->tmp_stderr); - free_null(j->host_submit); + mx_free_null(j->host_submit); j->_host_submit_length = 0; - free_null(j->server_id); + mx_free_null(j->server_id); j->_server_id_length = 0; - free_null(j->host_hostname); + mx_free_null(j->host_hostname); j->_host_hostname_length = 0; - free_null(j->job_argv); + mx_free_null(j->job_argv); j->job_argv = NULL; } @@ -513,7 +512,7 @@ int mxq_set_job_status_exited(struct mx_mysql *mysql, struct mxq_job *job) int mxq_job_set_tmpfilenames(struct mxq_group *g, struct mxq_job *j) { - if (!streq(j->job_stdout, "/dev/null")) { + if (!mx_streq(j->job_stdout, "/dev/null")) { _mx_cleanup_free_ char *dir = NULL; dir = mx_dirname_forever(j->job_stdout); @@ -523,10 +522,10 @@ int mxq_job_set_tmpfilenames(struct mxq_group *g, struct mxq_job *j) j->server_id, j->host_pid); } - if (!streq(j->job_stderr, "/dev/null")) { + if (!mx_streq(j->job_stderr, "/dev/null")) { _mx_cleanup_free_ char *dir = NULL; - if (streq(j->job_stderr, j->job_stdout)) { + if (mx_streq(j->job_stderr, j->job_stdout)) { j->tmp_stderr = j->tmp_stdout; return 1; } diff --git a/mxq_util.c b/mxq_util.c index a44335a..2279bdd 100644 --- a/mxq_util.c +++ b/mxq_util.c @@ -27,28 +27,6 @@ mode_t getumask(void) return mask; } -size_t timetag(char *buf, size_t max) -{ - time_t t; - struct tm *ltime; - - *buf = 0; - - t = time(NULL); - if (t == ((time_t) -1)) { - perror("timetag::time"); - return 0; - } - - ltime = localtime(&t); - if (ltime == NULL) { - perror("timetag::localtime"); - return 0; - } - - return strftime(buf, max, "%F %T %z", ltime); -} - char *mxq_hostname(void) { static char hostname[1024] = ""; @@ -67,33 +45,6 @@ char *mxq_hostname(void) return hostname; } -void *realloc_or_free(void *ptr, size_t size) -{ - void *new_ptr; - - new_ptr = realloc(ptr, size); - if (new_ptr) - return new_ptr; - - free(ptr); - return NULL; -} - -void *realloc_forever(void *ptr, size_t size) -{ - void *new_ptr; - - assert(size > 0); - - do { - new_ptr = realloc(ptr, size); - if (new_ptr) - return new_ptr; - - sleep(1); - } while (1); -} - char **strvec_new(void) { char **strvec; @@ -288,113 +239,3 @@ char **str_to_strvec(char *str) return strvec; } - -char *stringvectostring(int argc, char *argv[]) -{ - int i,j,k; - char *buf; - char *s; - size_t len = 1; - - for (i=0; i < argc; i++) { - len += strlen(argv[i]); - len += chrcnt(argv[i], '\\'); - len += 2; - } - - buf = malloc(len); - if (!buf) - return NULL; - - for (i=0, k=0; i < argc; i++) { - s = argv[i]; - for (j=0; j < strlen(s); j++) { - buf[k++] = s[j]; - if (s[j] == '\\') - buf[k++] = '\\'; - } - buf[k++] = '\\'; - buf[k++] = '0'; - } - - assert(k == len-1); - buf[k] = 0; - - return buf; -} - -char **stringtostringvec(int argc, char *s) -{ - int i; - char *p; - char **argv; - - argv = calloc(argc+1, sizeof(*argv)); - if (!argv) - return NULL; - - for (i=0, p=s; i < argc; i++) { - argv[i] = p; - p = strstr(p, "\\0"); /* search "\0" */ - if (!p) { - errno = EINVAL; /* "\0" need to be there or string is invalid */ - return NULL; - } - *p = 0; /* add end of string */ - p += 2; /* skip "\0" */ - } - - return argv; -} - -int mxq_setenv(const char *name, const char *value) -{ - int res; - - res = setenv(name, value, 1); - if (res == -1) { - mx_log_err("mxq_setenv(%s, %s) failed! (%s)", name, value, strerror(errno)); - return 0; - } - - return 1; -} - - -int mxq_setenvf(const char *name, char *fmt, ...) -{ - va_list ap; - _mx_cleanup_free_ char *value = NULL; - size_t len; - int res; - - assert(name); - assert(*name); - assert(fmt); - - va_start(ap, fmt); - len = vasprintf(&value, fmt, ap); - va_end(ap); - - if (len == -1) { - mx_log_err("mxq_setenvf(%s, %s, ...) failed! (%s)", name, fmt, strerror(errno)); - return 0; - } - - return mxq_setenv(name, value); -} - -int chrcnt(char *s, char c) -{ - int i = 0; - char *p; - - p = s; - - while ((p = strchr(p, c))) { - i++; - p++; - } - - return i; -} diff --git a/mxq_util.h b/mxq_util.h index a0cb2a3..e2c1512 100644 --- a/mxq_util.h +++ b/mxq_util.h @@ -8,13 +8,6 @@ char *mxq_hostname(void); -char **stringtostringvec(int argc, char *s); -char *stringvectostring(int argc, char *argv[]); -int chrcnt(char *s, char c); - -void *realloc_or_free(void *ptr, size_t size); -void *realloc_forever(void *ptr, size_t size); - char** strvec_new(void); size_t strvec_length(char **strvec); int strvec_push_str(char ***strvecp, char *str); @@ -23,11 +16,4 @@ char* strvec_to_str(char **strvec); char** str_to_strvec(char *str); void strvec_free(char **strvec); -#define streq(a, b) (strcmp((a), (b)) == 0) - -#define free_null(a) do { free((a)); (a) = NULL; } while(0) - -int mxq_setenv(const char *name, const char *value); -int mxq_setenvf(const char *name, char *fmt, ...); - #endif diff --git a/mxqd.c b/mxqd.c index 76c81f8..17b4e07 100644 --- a/mxqd.c +++ b/mxqd.c @@ -743,7 +743,7 @@ static int init_child_process(struct mxq_group_list *group, struct mxq_job *j) return 0; } - if (!streq(passwd->pw_name, g->user_name)) { + if (!mx_streq(passwd->pw_name, g->user_name)) { mx_log_err("job=%s(%d):%lu:%lu user_uid=%d does not map to user_name=%s but to pw_name=%s: Invalid user mapping", g->user_name, g->user_uid, g->group_id, j->job_id, g->user_uid, g->user_name, passwd->pw_name); @@ -874,7 +874,7 @@ int mxq_redirect_open(char *fname) if (!fname) { fname = "/dev/null"; - } else if (!streq(fname, "/dev/null")) { + } else if (!mx_streq(fname, "/dev/null")) { res = unlink(fname); if (res == -1 && errno != ENOENT) { mx_log_err("unlink() failed: %m"); @@ -1240,7 +1240,7 @@ int remove_orphaned_groups(struct mxq_server *server) server->group_cnt--; cnt++; mxq_group_free_content(&group->group); - free_null(group); + mx_free_null(group); } if(user->groups) { uprev = user; @@ -1254,7 +1254,7 @@ int remove_orphaned_groups(struct mxq_server *server) server->users = unext; } server->user_cnt--; - free_null(user); + mx_free_null(user); mx_log_info("Removed orphaned user. %lu users left.", server->user_cnt); } @@ -1466,7 +1466,7 @@ int catchall(struct mxq_server *server) { mxq_job_set_tmpfilenames(g, j); - if (!streq(j->job_stdout, "/dev/null")) { + if (!mx_streq(j->job_stdout, "/dev/null")) { res = rename(j->tmp_stdout, j->job_stdout); if (res == -1) { mx_log_err(" job=%s(%d):%lu:%lu host_pid=%d :: rename(stdout) failed: %m", @@ -1474,7 +1474,7 @@ int catchall(struct mxq_server *server) { } } - if (!streq(j->job_stderr, "/dev/null") && !streq(j->job_stderr, j->job_stdout)) { + if (!mx_streq(j->job_stderr, "/dev/null") && !mx_streq(j->job_stderr, j->job_stdout)) { res = rename(j->tmp_stderr, j->job_stderr); if (res == -1) { mx_log_err(" job=%s(%d):%lu:%lu host_pid=%d :: rename(stderr) failed: %m", diff --git a/mxqsub.c b/mxqsub.c index 92e37bc..8682140 100644 --- a/mxqsub.c +++ b/mxqsub.c @@ -509,12 +509,12 @@ int main(int argc, char *argv[]) break; case 'r': - if (!optctl.optarg || streq(optctl.optarg, "always")) { + if (!optctl.optarg || mx_streq(optctl.optarg, "always")) { arg_jobflags |= MXQ_JOB_FLAGS_RESTART_ON_HOSTFAIL; arg_jobflags |= MXQ_JOB_FLAGS_REQUEUE_ON_HOSTFAIL; - } else if (streq(optctl.optarg, "samehost")) { + } else if (mx_streq(optctl.optarg, "samehost")) { arg_jobflags |= MXQ_JOB_FLAGS_RESTART_ON_HOSTFAIL; - } else if (streq(optctl.optarg, "never")) { + } else if (mx_streq(optctl.optarg, "never")) { arg_jobflags &= ~(MXQ_JOB_FLAGS_RESTART_ON_HOSTFAIL|MXQ_JOB_FLAGS_REQUEUE_ON_HOSTFAIL); } else { mx_log_crit("--restart '%s': restartmode unknown.", optctl.optarg); @@ -666,7 +666,7 @@ int main(int argc, char *argv[]) arg_stdout = arg_stdout_absolute; } - if (streq(arg_stderr, "stdout")) { + if (mx_streq(arg_stderr, "stdout")) { arg_stderr = arg_stdout; }