On 27 July 2012 23:45, Andrew Boie <andrew.p.b...@intel.com> wrote: > These indicate to the compiler that additional command line options > should be read from a text file. If encountered, read the file, > tokenize any arguments, and if any are found, do an in-place replacement > of the '@' parameter with the arguments within the file.
Thanks for working on this! > + file_args = args_init_from_string(argdata); Isn't args_init_from_string too simplistic for parsing the contents? According to GCC documentation, "Options in file are separated by whitespace. A whitespace character may be included in an option by surrounding the entire option in either single or double quotes. Any character (including a backslash) may be included by prefixing the character to be included with a backslash.The file may itself contain additional @file options; any such options will be processed recursively." > + /* Expand argv to hold both current and file > + * arguments */ > + orig_args->argv = (char**)x_realloc(orig_args->argv, > + (orig_args->argc + file_args->argc) * > + sizeof(char *)); > + /* Move all unprocessed arguments to the end of the > + * new list */ > + for (j = orig_args->argc; j > i; j--) { > + orig_args->argv[j + file_args->argc - 1] = > + orig_args->argv[j]; > + } > + /* Fill in the space we just made with the > + * new arguments. Current '@' argument gets > + * replaced */ > + for (j = 0; j < file_args->argc; j++) { > + orig_args->argv[j + i] = > + x_strdup(file_args->argv[j]); > + } It would be nice if this code could be extracted to a new args_insert(struct args *args, struct args *to_insert, int pos) function or so. (There's a test suite for args_* in test/test_args.c.) -- Joel _______________________________________________ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache