- if (read(0, p, data) < data)
- {
- gw_log (GW_LOG_FATAL, prog, "Failed to read input");
- fatal("Internal error in server");
+ int j, i = 0;
+ while (i < data)
+ {
+ j = read(0, p + i, data - i);
+ if (j == -1)
+ {
+ gw_log (GW_LOG_ERRNO|GW_LOG_FATAL, prog,
+ "Failed to read input");
+ fatal("Internal error in server");
+ }
+ else if (j == 0)
+ {
+ gw_log (GW_LOG_ERRNO, prog, "Failed to read input");
+ fatal("Internal error in server");
+ }
+ i += j;