summaryrefslogtreecommitdiff
path: root/sys/src/cmd/iconv.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2022-12-03 00:25:58 +0000
committercinap_lenrek <cinap_lenrek@felloff.net>2022-12-03 00:25:58 +0000
commit3932622c292dbf4ce5f65fa2a6fb6b3a3c77f174 (patch)
treea594d880893d22b9c0763267b6cc862492eb9260 /sys/src/cmd/iconv.c
parent032d64429f21143141dfa9646a73dfe6f1008b3b (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.c23
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);
}