@@ -61,6 +61,11 @@
static char *whitespace = " \t";
+inline char *get_next_arg(char *args, char *nextarg)
+{
+ return nextarg ? nextarg + strspn(nextarg, whitespace) : args + strlen(args);
+}
+
/*
* =========================================================================
*/
@@ -146,7 +151,7 @@ static int get_range(char *args, range_t * range, char **nextarg)
range->offset = get_scaled_value(args, "offset");
if (range->offset == BOGUS_SIZE)
return CMD_ERROR;
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
/*
* <length> ... only if offset specified
@@ -160,7 +165,7 @@ static int get_range(char *args, range_t * range, char **nextarg)
return CMD_ERROR;
} else
range->length = 0; /* map to end of file */
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
}
}
@@ -669,7 +674,7 @@ static int anon_seg(char *args)
range.length = get_scaled_value(args, "size");
if (range.length == BOGUS_SIZE)
return CMD_ERROR;
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
if (*args != '\0') {
segflag = get_shared(args);
@@ -699,7 +704,7 @@ static int file_seg(char *args)
if (!required_arg(args, "<path-name>"))
return CMD_ERROR;
pathname = strtok_r(args, whitespace, &nextarg);
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
/*
* offset, length are optional
@@ -757,7 +762,7 @@ static int touch_seg(char *args)
if (!required_arg(args, "<seg-name>"))
return CMD_ERROR;
segname = strtok_r(args, whitespace, &nextarg);
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
/*
* offset, length are optional
@@ -788,7 +793,7 @@ static int unmap_seg(char *args)
if (!required_arg(args, "<seg-name>"))
return CMD_ERROR;
segname = strtok_r(args, whitespace, &nextarg);
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
if (!segment_unmap(segname))
return CMD_ERROR;
@@ -812,7 +817,7 @@ static int map_seg(char *args)
if (!required_arg(args, "<seg-name>"))
return CMD_ERROR;
segname = strtok_r(args, whitespace, &nextarg);
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
/*
* offset, length are optional
@@ -856,7 +861,7 @@ static int mbind_seg(char *args)
if (!required_arg(args, "<seg-name>"))
return CMD_ERROR;
segname = strtok_r(args, whitespace, &nextarg);
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
/*
* offset, length are optional
@@ -871,7 +876,7 @@ static int mbind_seg(char *args)
if (policy < 0)
return CMD_ERROR;
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
if (*args == '+') {
flags = get_mbind_flags(++args, &nextarg);
if (flags == -1)
@@ -914,7 +919,7 @@ static int shmem_seg(char *args)
if (!required_arg(args, "<seg-name>"))
return CMD_ERROR;
segname = strtok_r(args, whitespace, &nextarg);
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
if (!required_arg(args, "<size>"))
return CMD_ERROR;
@@ -922,7 +927,7 @@ static int shmem_seg(char *args)
range.length = get_scaled_value(args, "size");
if (range.length == BOGUS_SIZE)
return CMD_ERROR;
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
if (!segment_register(SEGT_SHM, segname, &range, MAP_SHARED))
return CMD_ERROR;
@@ -954,7 +959,7 @@ static int where_seg(char *args)
if (!required_arg(args, "<seg-name>"))
return CMD_ERROR;
segname = strtok_r(args, whitespace, &nextarg);
- args = nextarg + strspn(nextarg, whitespace);
+ args = get_next_arg(args, nextarg);
/*
* offset, length are optional