From: Junio C Hamano Date: Sun, 2 Apr 2006 20:54:28 +0000 (-0700) Subject: Merge branch 'lt/fix-sol-pack' into next X-Git-Tag: v1.3.0-rc4~49 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=f0c979f4dbbb7d6d9565d945c540f0a5748f1b80;p=git.git Merge branch 'lt/fix-sol-pack' into next * lt/fix-sol-pack: pack-objects: be incredibly anal about stdio semantics Fix Solaris stdio signal handling stupidities Signed-off-by: Junio C Hamano --- f0c979f4dbbb7d6d9565d945c540f0a5748f1b80 diff --cc pack-objects.c index ccfaa5f6,084c2006..0ea16ad6 --- a/pack-objects.c +++ b/pack-objects.c @@@ -1090,24 -901,28 +1106,29 @@@ int main(int argc, char **argv prepare_packed_git(); if (progress) { - struct itimerval v; - v.it_interval.tv_sec = 1; - v.it_interval.tv_usec = 0; - v.it_value = v.it_interval; - signal(SIGALRM, progress_interval); - setitimer(ITIMER_REAL, &v, NULL); fprintf(stderr, "Generating pack...\n"); + setup_progress_signal(); } - while (fgets(line, sizeof(line), stdin) != NULL) { + for (;;) { - unsigned int hash; - char *p; unsigned char sha1[20]; + if (!fgets(line, sizeof(line), stdin)) { + if (feof(stdin)) + break; + if (!ferror(stdin)) + die("fgets returned NULL, not EOF, not error!"); + if (errno == EINTR) + continue; + die("fgets: %s", strerror(errno)); + } + - if (progress_update) { - fprintf(stderr, "Counting objects...%d\r", nr_objects); - progress_update = 0; + if (line[0] == '-') { + if (get_sha1_hex(line+1, sha1)) + die("expected edge sha1, got garbage:\n %s", + line+1); + add_preferred_base(sha1); + continue; } if (get_sha1_hex(line, sha1)) die("expected sha1, got garbage:\n %s", line);