diff --git a/mx_proc.c b/mx_proc.c index 4ffbaa70..72330df4 100644 --- a/mx_proc.c +++ b/mx_proc.c @@ -10,8 +10,7 @@ #include "mx_proc.h" static long long int get_rss_anon(pid_t pid) { - _mx_cleanup_free_ char *fname; - mx_asprintf_forever(&fname, "/proc/%d/status", pid); + _mx_cleanup_free_ char *fname = mx_asprintf_forever("/proc/%d/status", pid); _mx_cleanup_fclose_ FILE *file = fopen(fname, "r"); if (file == NULL) return -errno; @@ -131,7 +130,6 @@ int mx_proc_pid_stat(struct mx_proc_pid_stat **pps, pid_t pid) int mx_proc_pid_stat_read(struct mx_proc_pid_stat *pps, char *fmt, ...) { - _mx_cleanup_free_ char *fname = NULL; _mx_cleanup_free_ char *line = NULL; va_list ap; int res; @@ -139,7 +137,7 @@ int mx_proc_pid_stat_read(struct mx_proc_pid_stat *pps, char *fmt, ...) assert(pps); va_start(ap, fmt); - mx_vasprintf_forever(&fname, fmt, ap); + _mx_cleanup_free_ char *fname = fname = mx_vasprintf_forever(fmt, ap); va_end(ap); res = mx_read_first_line_from_file(fname, &line); diff --git a/mx_util.c b/mx_util.c index 6d72f4a0..2d41bf59 100644 --- a/mx_util.c +++ b/mx_util.c @@ -580,28 +580,28 @@ char *mx_strdup_forever(char *str) return dup; } -int mx_vasprintf_forever(char **strp, const char *fmt, va_list ap) +char *mx_vasprintf_forever(const char *fmt, va_list ap) { int len; + char *strp; do { - len = vasprintf(strp, fmt, ap); + len = vasprintf(&strp, fmt, ap); } while (len < 0); - return len; + return strp; } -int mx_asprintf_forever(char **strp, const char *fmt, ...) +char *mx_asprintf_forever(const char *fmt, ...) { va_list ap; - int len; va_start(ap, fmt); - len = mx_vasprintf_forever(strp, fmt, ap); + char *strp = mx_vasprintf_forever(fmt, ap); va_end(ap); - return len; + return strp; } char *mx_hostname(void) @@ -721,11 +721,10 @@ int mx_setenvf_forever(const char *name, char *fmt, ...) assert(fmt); va_list ap; - char *value = NULL; int res; va_start(ap, fmt); - mx_vasprintf_forever(&value, fmt, ap); + char *value = mx_vasprintf_forever(fmt, ap); va_end(ap); res = mx_setenv_forever(name, value); @@ -1217,9 +1216,9 @@ char *mx_cpuset_to_str(cpu_set_t* cpuset_ptr) } cpu_high=cpu-1; if (cpu_low==cpu_high) { - mx_asprintf_forever(&str,"%d",cpu_low); + str = mx_asprintf_forever("%d", cpu_low); } else { - mx_asprintf_forever(&str,"%d-%d",cpu_low,cpu_high); + str = mx_asprintf_forever("%d-%d", cpu_low, cpu_high); } res=mx_strvec_push_str(&strvec,str); if (!res) { diff --git a/mx_util.h b/mx_util.h index e7971261..92747f9a 100644 --- a/mx_util.h +++ b/mx_util.h @@ -125,8 +125,8 @@ int mx_strtoi64(char *str, int64_t *to); void *mx_malloc_forever(size_t size); char *mx_strdup_forever(char *str); -int mx_vasprintf_forever(char **strp, const char *fmt, va_list ap); -int mx_asprintf_forever(char **strp, const char *fmt, ...) __attribute__ ((format(printf, 2, 3))); +char *mx_vasprintf_forever(const char *fmt, va_list ap); +char *mx_asprintf_forever(const char *fmt, ...) __attribute__ ((format(printf, 1, 2))); char *mx_hostname(void); char *mx_dirname(char *path); diff --git a/mxq_job.c b/mxq_job.c index 0a02f3d9..ba8a606a 100644 --- a/mxq_job.c +++ b/mxq_job.c @@ -426,7 +426,6 @@ int mxq_unassign_jobs_of_server(struct mx_mysql *mysql, struct mxq_daemon *daemo static int mxq_set_job_status_loaded_on_server(struct mx_mysql *mysql, struct mxq_job *job) { struct mx_mysql_bind param = {0}; - char *host_id; int res; int idx; @@ -435,7 +434,7 @@ static int mxq_set_job_status_loaded_on_server(struct mx_mysql *mysql, struct mx assert(job->job_id); assert(job->daemon_id); - mx_asprintf_forever(&host_id, "%u", job->daemon_id); + char *host_id = mx_asprintf_forever("%u", job->daemon_id); char *query = "UPDATE" @@ -655,7 +654,7 @@ int mxq_job_set_tmpfilenames(struct mxq_group *g, struct mxq_job *j) dir = mx_dirname_forever(j->job_stdout); - mx_asprintf_forever(&j->tmp_stdout, "%s/mxq.%u.%lu.%lu.%s.%s.%d.stdout.tmp", + j->tmp_stdout = mx_asprintf_forever("%s/mxq.%u.%lu.%lu.%s.%s.%d.stdout.tmp", dir, g->user_uid, g->group_id, j->job_id, j->host_hostname, j->daemon_name, j->host_pid); } @@ -669,7 +668,7 @@ int mxq_job_set_tmpfilenames(struct mxq_group *g, struct mxq_job *j) } dir = mx_dirname_forever(j->job_stderr); - mx_asprintf_forever(&j->tmp_stderr, "%s/mxq.%u.%lu.%lu.%s.%s.%d.stderr.tmp", + j->tmp_stderr = mx_asprintf_forever("%s/mxq.%u.%lu.%lu.%s.%s.%d.stderr.tmp", dir, g->user_uid, g->group_id, j->job_id, j->host_hostname, j->daemon_name, j->host_pid); } diff --git a/mxqd.c b/mxqd.c index 008a447f..379489bc 100644 --- a/mxqd.c +++ b/mxqd.c @@ -666,7 +666,7 @@ static int server_init(struct mxq_server *server, int argc, char *argv[]) return -EX_UNAVAILABLE; } - mx_asprintf_forever(&server->finished_jobsdir,"%s/%s",MXQ_FINISHED_JOBSDIR,server->daemon_name); + server->finished_jobsdir = mx_asprintf_forever("%s/%s", MXQ_FINISHED_JOBSDIR, server->daemon_name); res=mx_mkdir_p(server->finished_jobsdir,0700); if (res<0) { mx_log_err("MAIN: mkdir %s failed: %m. Exiting.",MXQ_FINISHED_JOBSDIR); @@ -746,7 +746,7 @@ static int server_init(struct mxq_server *server, int argc, char *argv[]) server->starttime = pps->starttime; mx_proc_pid_stat_free_content(pps); - mx_asprintf_forever(&server->host_id, "%s-%llx-%x", server->boot_id, server->starttime, getpid()); + server->host_id = mx_asprintf_forever("%s-%llx-%x", server->boot_id, server->starttime, getpid()); mx_setenv_forever("MXQ_HOSTID", server->host_id); server->slots = arg_threads_total; @@ -895,17 +895,14 @@ static int init_child_process(struct mxq_group_list *glist, struct mxq_job *job) if (group->job_tmpdir_size == 0) { mx_setenv_forever("TMPDIR", server->initial_tmpdir); } else { - char *mxq_job_tmpdir; - mx_asprintf_forever(&mxq_job_tmpdir, "%s/%lu", MXQ_JOB_TMPDIR_MNTDIR, job->job_id); + char *mxq_job_tmpdir = mx_asprintf_forever("%s/%lu", MXQ_JOB_TMPDIR_MNTDIR, job->job_id); mx_setenv_forever("MXQ_JOB_TMPDIR", mxq_job_tmpdir); mx_setenv_forever("TMPDIR", mxq_job_tmpdir); free(mxq_job_tmpdir); } if (group->job_gpu) { - char *pid; - char *uid; - mx_asprintf_forever(&pid, "%d", job->host_pid); - mx_asprintf_forever(&uid, "%u", group->user_uid); + char *pid = mx_asprintf_forever("%d", job->host_pid); + char *uid = mx_asprintf_forever("%u", group->user_uid); char *gpu_uuid = mx_call_external(gpu_setup_script, "job-init", pid, uid, NULL); if (!gpu_uuid) { mx_log_err("gpu-setup job-init: %m"); @@ -1231,8 +1228,8 @@ static int reaper_process(struct mxq_server *server,struct mxq_group_list *glist return(res); } - mx_asprintf_forever(&finished_job_filename, "%s/%lu.stat", server->finished_jobsdir, job->job_id); - mx_asprintf_forever(&finished_job_tmpfilename, "%s.tmp", finished_job_filename); + finished_job_filename = mx_asprintf_forever("%s/%lu.stat", server->finished_jobsdir, job->job_id); + finished_job_tmpfilename = mx_asprintf_forever("%s.tmp", finished_job_filename); out=fopen(finished_job_tmpfilename,"w"); if (!out) { @@ -1312,9 +1309,9 @@ static unsigned long start_job(struct mxq_group_list *glist) char *envp[4]; argv[0] = create_job_tmpdir_script, argv[1] = NULL; - mx_asprintf_forever(&envp[0], "MXQ_JOBID=%lu", job->job_id); - mx_asprintf_forever(&envp[1], "MXQ_SIZE=%u", group->job_tmpdir_size); - mx_asprintf_forever(&envp[2], "MXQ_UID=%d", group->user_uid); + envp[0] = mx_asprintf_forever("MXQ_JOBID=%lu", job->job_id); + envp[1] = mx_asprintf_forever("MXQ_SIZE=%u", group->job_tmpdir_size); + envp[2] = mx_asprintf_forever("MXQ_UID=%d", group->user_uid); envp[3] = NULL; execve(create_job_tmpdir_script,argv,envp); mx_log_fatal("exec %s : %m",create_job_tmpdir_script); @@ -2022,9 +2019,7 @@ static void rename_outfiles(struct mxq_server *server, struct mxq_group *group, } static char *job_tmpdir_path(unsigned long job_id) { - char *pathname; - mx_asprintf_forever(&pathname, "%s/%lu", MXQ_JOB_TMPDIR_MNTDIR, job_id); - return pathname; + return mx_asprintf_forever("%s/%lu", MXQ_JOB_TMPDIR_MNTDIR, job_id); } static int unmount_and_remove(char *pathname) { @@ -2050,8 +2045,7 @@ static void unmount_job_tmpdir(unsigned long job_id) { static void release_gpu(struct mxq_server *server, struct mxq_group *group, struct mxq_job *job) { if (group->job_gpu) { - char *pid; - mx_asprintf_forever(&pid, "%d", job->host_pid); + char *pid = mx_asprintf_forever("%d", job->host_pid); char *gpu_uuid = mx_call_external(gpu_setup_script, "job-release", pid, NULL); free(pid); if (!gpu_uuid) { @@ -2111,9 +2105,7 @@ static int job_is_lost(struct mxq_server *server,struct mxq_group *group, struct static char *fspool_get_filename (struct mxq_server *server,long unsigned int job_id) { - char *fspool_filename; - mx_asprintf_forever(&fspool_filename,"%s/%lu.stat",server->finished_jobsdir,job_id); - return fspool_filename; + return mx_asprintf_forever("%s/%lu.stat", server->finished_jobsdir, job_id); } static int fspool_process_file(struct mxq_server *server,char *filename, uint64_t job_id) { @@ -2244,7 +2236,7 @@ static int fspool_scan(struct mxq_server *server) { } for (i=0;ifinished_jobsdir,namelist[i]->d_name); + filename = mx_asprintf_forever("%s/%s", server->finished_jobsdir, namelist[i]->d_name); if (fspool_is_valid_name_parse(namelist[i]->d_name,&job_id)) { res=fspool_process_file(server,filename,job_id); if (res>0) {