diff --git a/src/srun/opt.c b/src/srun/opt.c
index a9f165bc3ddc76fbf132a8e2b34a4ae18db1e8f6..3f68f371bf3c270ed09778163e31791dbd313c01 100644
--- a/src/srun/opt.c
+++ b/src/srun/opt.c
@@ -107,6 +107,10 @@
 #define OPT_HOLD	0x1b
 #define OPT_RELATIVE    0x1c
 #define OPT_JOBID       0x1d
+#define OPT_NO_KILL	0x1e
+#define OPT_SHARE	0x1f
+#define OPT_LABELIO	0x20
+#define OPT_UNBUFFERED	0x21
 
 /* constraint type options */
 #define OPT_MINCPUS     0x50
@@ -128,7 +132,7 @@ struct poptOption attachTable[] = {
 	{"attach", 'a', POPT_ARG_STRING, &opt.attach, OPT_ATTACH,
 	 "attach to running job with job id = id",
 	 "id"},
-	{"join", 'j', POPT_ARG_NONE, &opt.join, OPT_JOIN,
+	{"join", 'j', POPT_ARG_NONE, NULL, OPT_JOIN,
 	 "When used with --attach, allow forwarding of signals and stdin",
 	},
 	POPT_TABLEEND
@@ -136,7 +140,7 @@ struct poptOption attachTable[] = {
 
 /* options directly related to allocate-only mode */
 struct poptOption allocateTable[] = {
-	{"allocate", 'A', POPT_ARG_NONE, &opt.allocate, OPT_ALLOCATE,
+	{"allocate", 'A', POPT_ARG_NONE, NULL, OPT_ALLOCATE,
 	 "allocate resources and spawn a shell",
 	 },
 	POPT_TABLEEND
@@ -156,7 +160,7 @@ struct poptOption constraintTable[] = {
 	{"constraint", 'C', POPT_ARG_STRING, &opt.constraints,
 	 OPT_CONSTRAINT, "specify a list of constraints",
 	 "list"},
-	{"contiguous", '\0', POPT_ARG_NONE, &opt.contiguous, OPT_CONTIG,
+	{"contiguous", '\0', POPT_ARG_NONE, NULL, OPT_CONTIG,
 	 "demand a contiguous range of nodes",
 	 },
 	{"nodelist", 'w', POPT_ARG_STRING, &opt.nodelist, OPT_NODELIST,
@@ -165,7 +169,7 @@ struct poptOption constraintTable[] = {
 	{"exclude", 'x', POPT_ARG_STRING, &opt.exc_nodes, OPT_EXC_NODES,
 	 "exclude a specific list of hosts",
 	 "hosts..."},
-	{"no-allocate", 'Z', POPT_ARG_NONE, &opt.no_alloc, OPT_NO_ALLOC,
+	{"no-allocate", 'Z', POPT_ARG_NONE, NULL, OPT_NO_ALLOC,
 	 "don't allocate nodes (must supply -w)",
 	},
 	POPT_TABLEEND
@@ -191,7 +195,7 @@ struct poptOption runTable[] = {
 	{"partition", 'p', POPT_ARG_STRING, &opt.partition, OPT_PARTITION,
 	 "partition requested",
 	 "partition"},
-	{"hold", 'H', POPT_ARG_NONE, &opt.hold, OPT_HOLD,
+	{"hold", 'H', POPT_ARG_NONE, NULL, OPT_HOLD,
 	 "submit job in held state",
 	 },
 	{"time", 't', POPT_ARG_INT, &opt.time_limit, OPT_TIME,
@@ -203,19 +207,19 @@ struct poptOption runTable[] = {
 	{"immediate", 'I', POPT_ARG_NONE, &opt.immediate, 0,
 	 "exit if resources are not immediately available",
 	 },
-	{"overcommit", 'O', POPT_ARG_NONE, &opt.overcommit, 0,
+	{"overcommit", 'O', POPT_ARG_NONE, NULL, OPT_OVERCOMMIT,
 	 "overcommit resources",
 	 },
-	{"no-kill", 'k', POPT_ARG_NONE, &opt.no_kill, 0,
+	{"no-kill", 'k', POPT_ARG_NONE, NULL, OPT_NO_KILL,
 	 "do not kill job on node failure",
 	 },
-	{"share", 's', POPT_ARG_NONE, &opt.share, 0,
+	{"share", 's', POPT_ARG_NONE, NULL, OPT_SHARE,
 	 "share node with other jobs",
 	 },
-	{"label", 'l', POPT_ARG_NONE, &opt.labelio, 0,
+	{"label", 'l', POPT_ARG_NONE, NULL, OPT_LABELIO,
 	 "prepend task number to lines of stdout/err",
 	 },
-	{"unbuffered", 'u',  POPT_ARG_NONE, &opt.unbuffered, 0,
+	{"unbuffered", 'u',  POPT_ARG_NONE, NULL, OPT_UNBUFFERED,
 	 "do not line-buffer stdout/err",
 	},
 	{"distribution", 'm', POPT_ARG_STRING, 0, OPT_DISTRIB,
@@ -235,10 +239,10 @@ struct poptOption runTable[] = {
 	{"error", 'e', POPT_ARG_STRING, 0, OPT_ERROR,
 	 "location of stderr redirection",
 	 "err"},
-	{"batch", 'b', POPT_ARG_NONE, &opt.batch, OPT_BATCH,
+	{"batch", 'b', POPT_ARG_NONE, NULL, OPT_BATCH,
 	 "submit as batch job for later execution",
 	 "err"},
-        {"verbose", 'v', 0, 0, OPT_VERBOSE,
+        {"verbose", 'v', POPT_ARG_NONE, NULL, OPT_VERBOSE,
 	 "verbose operation (multiple -v's increase verbosity)", },
         {"slurmd-debug", 'd', POPT_ARG_INT, &opt.slurmd_debug, OPT_DEBUG,
 	 "slurmd debug level", "value"},
@@ -707,6 +711,7 @@ _process_env_var(env_vars_t *e, const char *val)
 			    error("%s=%s invalid. ignoring...", e->var, val);
 	    }
 	    break;
+
 	case OPT_DEBUG:
 	    if (val != NULL) {
 		    _verbose = (int) strtol(val, &end, 10);
@@ -714,6 +719,7 @@ _process_env_var(env_vars_t *e, const char *val)
 			    error("%s=%s invalid", e->var, val);
 	    }
 	    break;
+
 	case OPT_DISTRIB:
 	    dt = _verify_dist_type(val);
 	    if (dt == SRUN_DIST_UNKNOWN) {
@@ -722,6 +728,7 @@ _process_env_var(env_vars_t *e, const char *val)
 	    } else 
 		    opt.distribution = dt;
 	    break;
+
 	case OPT_NODES:
 	    opt.nodes_set = _verify_node_count( val, 
 			                        &opt.min_nodes, 
@@ -731,9 +738,11 @@ _process_env_var(env_vars_t *e, const char *val)
 			  e->var, val);
 	    }
 	    break;
+
 	case OPT_OVERCOMMIT:
 	    opt.overcommit = true;
 	    break;
+	    
 	default:
 	    /* do nothing */
 	    break;
@@ -812,6 +821,7 @@ static void _opt_args(int ac, char **av)
 				exit(1);
 			}
 			mode = MODE_ALLOCATE;
+			opt.allocate = true;
 			break;
 
 		case OPT_BATCH:
@@ -821,6 +831,7 @@ static void _opt_args(int ac, char **av)
 				exit(1);
 			}
 			mode = MODE_BATCH;
+			opt.batch = true;
 			break;
 
 		default:
@@ -851,6 +862,34 @@ static void _opt_args(int ac, char **av)
 			opt.efname = xstrdup(arg);
 			break;
 
+		case OPT_JOIN:
+			opt.join = true;
+			break;
+
+		case OPT_HOLD:
+			opt.hold = true;
+			break;
+
+		case OPT_OVERCOMMIT:
+			opt.overcommit = true;
+			break;
+
+		case OPT_NO_KILL:
+			opt.no_kill = true;
+			break;
+
+		case OPT_SHARE:
+			opt.share = true;
+			break;
+
+		case OPT_LABELIO:
+			opt.labelio = true;
+			break;
+
+		case OPT_UNBUFFERED:
+			opt.unbuffered = true;
+			break;
+
 		case OPT_DISTRIB:
 			opt.distribution = _verify_dist_type(arg);
 			if (opt.distribution == SRUN_DIST_UNKNOWN) {
@@ -895,6 +934,14 @@ static void _opt_args(int ac, char **av)
 			}
 			break;
 
+		case OPT_CONTIG:
+			opt.contiguous = true;
+			break;
+
+		case OPT_NO_ALLOC:
+			opt.no_alloc = true;
+			break;
+
 		case OPT_TMPDISK:
 			opt.tmpdisk = _to_bytes(arg);
 			if (opt.tmpdisk < 0) {