#include #include #ifdef _WIN32 #include #include #else #include #endif static char ibuffer[512]; static char obuffer[512]; int main(int argc, char *argv[]) { int cc = 1; int bytes = 0; int uobuffer = 0; int canwrite = 1; int exval = 0; int i; int written = 0; #ifdef _WIN32 int oldin = 0, oldout = 0; #endif #ifdef _WIN32 oldin = _setmode(0, _O_BINARY); oldout = _setmode(1, _O_BINARY); #endif while(cc) { bytes = read(0, (void *)ibuffer, sizeof(ibuffer)); if(bytes > 0) { for(i = 0; i < bytes; i++) { obuffer[uobuffer++] = ibuffer[i]; if(uobuffer >= sizeof(obuffer)) { if(canwrite) { written = write(1, (void *)obuffer, uobuffer); if(written != uobuffer) { canwrite = 0; exval = 1; fprintf(stderr, "blks: ERROR: Problem in write operation!\n"); fflush(stderr); } } uobuffer = 0; } } } else { cc = 0; } } if(uobuffer) { if(canwrite) { written = write(1, (void *)obuffer, uobuffer); if(written != uobuffer) { exval = 1; fprintf(stderr, "blks: ERROR: Problem in write operation!\n"); fflush(stderr); } } } #ifdef _WIN32 _setmode(1, oldout); _setmode(0, oldin); #endif exit(exval); return exval; }