diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2022-12-03 00:25:58 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2022-12-03 00:25:58 +0000 |
commit | 3932622c292dbf4ce5f65fa2a6fb6b3a3c77f174 (patch) | |
tree | a594d880893d22b9c0763267b6cc862492eb9260 /sys/src/cmd/iconv.c | |
parent | 032d64429f21143141dfa9646a73dfe6f1008b3b (diff) |
iconv: revert copying extra data on input
I think this is better done by a shell script
doing the extra copying as it breaks use cases
where we want to consume bitmaps in a loop
from a file-descriptor.
Diffstat (limited to 'sys/src/cmd/iconv.c')
-rw-r--r-- | sys/src/cmd/iconv.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/sys/src/cmd/iconv.c b/sys/src/cmd/iconv.c index cf03d0268..5a9552005 100644 --- a/sys/src/cmd/iconv.c +++ b/sys/src/cmd/iconv.c @@ -40,10 +40,9 @@ void main(int argc, char *argv[]) { char *tostr, *file; - int fd, uncompressed, r; + int fd, uncompressed; ulong tochan; Memimage *m, *n; - uchar extra[8192]; tostr = nil; uncompressed = 0; @@ -61,20 +60,24 @@ main(int argc, char *argv[]) memimageinit(); file = "<stdin>"; - fd = 0; + m = nil; + switch(argc){ case 0: + m = readmemimage(0); break; case 1: - fd = open(file = argv[0], OREAD); + file = argv[0]; + fd = open(file, OREAD); if(fd < 0) sysfatal("can't open %s: %r", file); + m = readmemimage(fd); + close(fd); break; default: usage(); } - m = readmemimage(fd); if(m == nil) sysfatal("can't read %s: %r", file); @@ -95,15 +98,5 @@ main(int argc, char *argv[]) writeuncompressed(1, n); else writememimage(1, n); - - for(;;){ - if((r = read(fd, extra, sizeof(extra))) < 0) - sysfatal("read failed: %r"); - if(r == 0) - break; - if(write(1, extra, r) != r) - sysfatal("write failed: %r"); - } - exits(nil); } |