From f75ef244c4ad57ca637051c8b7a61473f792c62a Mon Sep 17 00:00:00 2001 From: "Christopher J. Morrone" <morrone2@llnl.gov> Date: Wed, 16 Aug 2006 22:32:19 +0000 Subject: [PATCH] Have sbatch set SLURM_UMASK in the users environment to pass test17.13. --- src/sbatch/sbatch.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/sbatch/sbatch.c b/src/sbatch/sbatch.c index 453464461c4..4189608239b 100644 --- a/src/sbatch/sbatch.c +++ b/src/sbatch/sbatch.c @@ -47,6 +47,7 @@ static int fill_job_desc_from_opts(job_desc_msg_t *desc); static void *get_script_buffer(const char *filename, int *size); +static int set_umask_env(void); int main(int argc, char *argv[]) { @@ -68,6 +69,7 @@ int main(int argc, char *argv[]) log_alter(logopt, 0, NULL); } + set_umask_env(); slurm_init_job_desc_msg(&desc); if (fill_job_desc_from_opts(&desc) == -1) { exit(1); @@ -191,6 +193,23 @@ static int fill_job_desc_from_opts(job_desc_msg_t *desc) return 0; } +/* Set SLURM_UMASK environment variable with current state */ +static int set_umask_env(void) +{ + char mask_char[5]; + mode_t mask = (int)umask(0); + umask(mask); + + sprintf(mask_char, "0%d%d%d", + ((mask>>6)&07), ((mask>>3)&07), mask&07); + if (setenvf(NULL, "SLURM_UMASK", "%s", mask_char) < 0) { + error ("unable to set SLURM_UMASK in environment"); + return SLURM_FAILURE; + } + debug ("propagating UMASK=%s", mask_char); + return SLURM_SUCCESS; +} + /* * Checks if the buffer starts with a shebang (#!). */ -- GitLab