- opt=strlen(*argv);
- len_args_from_cmdline = (opt > 10)? opt : 10;
- args_from_cmdline = xcalloc(len_args_from_cmdline, sizeof(char));
- while (argc-- > 0) {
- if (strlen(*argv) + strlen(args_from_cmdline) >
- len_args_from_cmdline) {
- len_args_from_cmdline += strlen(*argv);
- args_from_cmdline =
- xrealloc(args_from_cmdline,
- len_args_from_cmdline+1);
- }
- strcat(args_from_cmdline, *argv);
- strcat(args_from_cmdline, " ");
+ /* concatenate all the arguments passed to xargs together */
+ int i;
+ int len = 1; /* for the '\0' */
+ for (i = 1; i < argc; i++) {
+ len += strlen(argv[i]);
+ len += 1; /* for the space between the args */
+ cmd_to_be_executed = xrealloc(cmd_to_be_executed, len);
+ strcat(cmd_to_be_executed, argv[i]);
+ strcat(cmd_to_be_executed, " ");