use n flag in xargs
This commit is contained in:
parent
82e55dde69
commit
14c7e19442
1 changed files with 5 additions and 2 deletions
|
@ -47,6 +47,7 @@ static int short_arg(char c, char* next) {
|
|||
if (n < 1) {
|
||||
error("error: max arg count must be at least 1");
|
||||
}
|
||||
flags.max_args = n;
|
||||
return ARG_USED;
|
||||
}
|
||||
return ARG_UNUSED;
|
||||
|
@ -54,7 +55,7 @@ static int short_arg(char c, char* next) {
|
|||
|
||||
char* read_next(FILE* file, int arg_count) {
|
||||
|
||||
if (arg_count == flags.max_args) return NULL;
|
||||
if (flags.max_args != -1 && arg_count == flags.max_args) return NULL;
|
||||
|
||||
int size = 0;
|
||||
int capacity = 8;
|
||||
|
@ -83,12 +84,14 @@ char* read_next(FILE* file, int arg_count) {
|
|||
|
||||
void read_args(FILE* file, char*** args, int* size, int* capacity) {
|
||||
char* arg;
|
||||
while (arg = read_next(file, *size), true) {
|
||||
static int read = 0;
|
||||
while (arg = read_next(file, read), true) {
|
||||
if (*size == *capacity) {
|
||||
*capacity *= 2;
|
||||
*args = realloc(*args, sizeof(char*) * *capacity);
|
||||
}
|
||||
(*args)[(*size)++] = arg;
|
||||
read++;
|
||||
if (arg == NULL) break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue