{"thread":{"id":"15846","subject":"[PATCH] git-daemon: Worked around uclibc buffer problem","startedAt":"2008-10-09T22:51:52Z","lastAt":"2008-10-09T22:51:52Z","messageCount":1,"participants":["Lars Stoltenow"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"92718","messageId":"20081009225152.GB14957@derf.homelinux.org","threadId":"15846","inReplyTo":null,"subject":"[PATCH] git-daemon: Worked around uclibc buffer problem","fromName":"Lars Stoltenow","fromEmail":"penma@derf.homelinux.org","sentAt":"2008-10-09T22:51:52Z","receivedAt":"2008-10-09T22:51:52Z","isPatch":true,"sender":{"key":"penma@derf.homelinux.org","avatar":null},"body":"uclibc immediately write()s every string argument to fprintf, which causes\nsuperfluous 'remote: ' strings to appear when cloning repos. This patch\nmakes it write the message in one shot.\n\nSigned-off-by: Lars Stoltenow <penma@penma.de>\n---\n builtin-pack-objects.c |    7 +++++--\n progress.c             |    8 ++++++--\n 2 files changed, 11 insertions(+), 4 deletions(-)\n\ndiff --git a/builtin-pack-objects.c b/builtin-pack-objects.c\nindex 1158e42..94f7404 100644\n--- a/builtin-pack-objects.c\n+++ b/builtin-pack-objects.c\n@@ -2232,9 +2232,12 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)\n \tif (nr_result)\n \t\tprepare_pack(window, depth);\n \twrite_pack_file();\n-\tif (progress)\n-\t\tfprintf(stderr, \"Total %\"PRIu32\" (delta %\"PRIu32\"),\"\n+\tif (progress) {\n+\t\tchar message[128];\n+\t\tsnprintf(message, sizeof(message), \"Total %\"PRIu32\" (delta %\"PRIu32\"),\"\n \t\t\t\" reused %\"PRIu32\" (delta %\"PRIu32\")\\n\",\n \t\t\twritten, written_delta, reused, reused_delta);\n+\t\tfputs(message, stderr);\n+\t}\n \treturn 0;\n }\ndiff --git a/progress.c b/progress.c\nindex 55a8687..56c9134 100644\n--- a/progress.c\n+++ b/progress.c\n@@ -94,16 +94,20 @@ static int display(struct progress *progress, unsigned n, const char *done)\n \tif (progress->total) {\n \t\tunsigned percent = n * 100 / progress->total;\n \t\tif (percent != progress->last_percent || progress_update) {\n+\t\t\tchar message[128];\n \t\t\tprogress->last_percent = percent;\n-\t\t\tfprintf(stderr, \"%s: %3u%% (%u/%u)%s%s\",\n+\t\t\tsnprintf(message, sizeof(message), \"%s: %3u%% (%u/%u)%s%s\",\n \t\t\t\tprogress->title, percent, n,\n \t\t\t\tprogress->total, tp, eol);\n+\t\t\tfputs(message, stderr);\n \t\t\tfflush(stderr);\n \t\t\tprogress_update = 0;\n \t\t\treturn 1;\n \t\t}\n \t} else if (progress_update) {\n-\t\tfprintf(stderr, \"%s: %u%s%s\", progress->title, n, tp, eol);\n+\t\tchar message[128];\n+\t\tsnprintf(message, sizeof(message), \"%s: %u%s%s\", progress->title, n, tp, eol);\n+\t\tfputs(message, stderr);\n \t\tfflush(stderr);\n \t\tprogress_update = 0;\n \t\treturn 1;\n-- \n1.6.0.2.GIT\n"}]}