Skip to content

Commit

Permalink
mxq_util: Prepare to move to mx_util soon
Browse files Browse the repository at this point in the history
  • Loading branch information
mariux committed Jul 26, 2015
1 parent 255a585 commit e2b6780
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 205 deletions.
6 changes: 3 additions & 3 deletions mx_flock.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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);
Expand Down
10 changes: 5 additions & 5 deletions mxq_group.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
}

Expand Down
27 changes: 13 additions & 14 deletions mxq_job.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@

#include "mxq_group.h"
#include "mxq_job.h"
#include "mxq_util.h"

#define JOB_FIELDS_CNT 34
#define JOB_FIELDS \
Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -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);
Expand All @@ -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;
}
Expand Down
159 changes: 0 additions & 159 deletions mxq_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -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] = "";
Expand All @@ -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;
Expand Down Expand Up @@ -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;
}
14 changes: 0 additions & 14 deletions mxq_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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
12 changes: 6 additions & 6 deletions mxqd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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");
Expand Down Expand Up @@ -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;
Expand All @@ -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);
}
Expand Down Expand Up @@ -1466,15 +1466,15 @@ 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",
g->user_name, g->user_uid, g->group_id, j->job_id, pid);
}
}

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",
Expand Down
Loading

0 comments on commit e2b6780

Please sign in to comment.