2007/7/12, Junio C Hamano <gitster@xxxxxxxxx>:
Carlos Rica <jasampler@xxxxxxxxx> writes: > @@ -28,52 +26,67 @@ static int cleanup(char *line, int len) > * Remove empty lines from the beginning and end > * and also trailing spaces from every line. > * > + * Note that the buffer will not be null-terminated. > + * The name of the sentinel character '\0' is NUL, not null (which is a different word, used to call a pointer that points nowhere). The buffer will not be "NUL-terminated".
Thank you Junio, I will use it on the future.
> int cmd_stripspace(int argc, const char **argv, const char *prefix) > { > - stripspace(stdin, stdout, 0); > + char *buffer; > + unsigned long size; > + > + size = 1024; > + buffer = xmalloc(size); > + if (read_pipe(0, &buffer, &size)) > + die("could not read the input"); The command used to be capable of streaming and filtering a few hundred gigabytes of text on a machine with small address space, as it operated one line at a time, but now it cannot as it has to hold everything in core before starting. I do not think we miss that loss of capability too much, but I wonder if we can be a bit more clever about it, perhaps feeding a chunk at a time. Not a very strong request, but just wondering if it is an easy change.
I did those changes because I was needing those tests that I had written before in order to develop the function. After that, we now can restore the previous function with file descriptors to make it capable of filter a few hundred gigabytes of text, provided that the text does not have long long lines on it. Indeed, the implementation for composing a tag (header, cleaned message and optional signature) in "builtin-tag.c", now pass it to the function write_sha1_file as a buffer on memory, so it won't support sizes bigger than memory available on the system. Messages should not be so big, but I don't know how to limit those. - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html