+ unsigned char Buffer[4*1024];
+ unsigned long Count;
+
+ Count = read(GzOut[0],Buffer,sizeof(Buffer));
+ if (Count < 0 && errno == EINTR)
+ continue;
+
+ if (Count < 0)
+ {
+ _error->Errno("read", _("Read error from %s process"),Prog);
+ Failed = true;
+ break;
+ }
+
+ if (Count == 0)
+ break;
+
+ Hash.Add(Buffer,Count);
+ if (To.Write(Buffer,Count) == false)
+ {
+ Failed = true;
+ FromGz.Close();
+ break;
+ }
+ }