diff options
author | J.R. Mauro <jrm8005@gmail.com> | 2009-08-20 14:38:31 -0400 |
---|---|---|
committer | J.R. Mauro <jrm8005@gmail.com> | 2009-08-20 14:38:31 -0400 |
commit | 2fb0c4447ef493da81703dd20090676ed8cae834 (patch) | |
tree | a308d23de5314957225cecad4300d1ef1f23f36b /src/cmd/page | |
parent | 8ff457f56db9f94f4baf68f53d87e791584d1dfe (diff) | |
download | plan9port-2fb0c4447ef493da81703dd20090676ed8cae834.tar.gz plan9port-2fb0c4447ef493da81703dd20090676ed8cae834.tar.bz2 plan9port-2fb0c4447ef493da81703dd20090676ed8cae834.zip |
page: remove temporary file at program exit; fixes reading from stdin
http://codereview.appspot.com/105097
Diffstat (limited to 'src/cmd/page')
-rw-r--r-- | src/cmd/page/page.c | 9 | ||||
-rw-r--r-- | src/cmd/page/page.h | 3 | ||||
-rw-r--r-- | src/cmd/page/util.c | 9 |
3 files changed, 16 insertions, 5 deletions
diff --git a/src/cmd/page/page.c b/src/cmd/page/page.c index 23da4b91..e4a9c762 100644 --- a/src/cmd/page/page.c +++ b/src/cmd/page/page.c @@ -21,6 +21,7 @@ int truecolor; int imagemode; int notewatcher; int notegp; +char tempfile[40]; int watcher(void *v, char *x) @@ -84,6 +85,12 @@ usage(void) } void +cleanup(void) +{ + remove(tempfile); +} + +void threadmain(int argc, char **argv) { Document *doc; @@ -173,6 +180,8 @@ threadmain(int argc, char **argv) fprint(2, "page: short read reading %s\n", argv[0]); wexits("read"); } + + atexit(cleanup); }else if(argc != 0){ if(!(b = Bopen(argv[0], OREAD))) { fprint(2, "page: cannot open \"%s\"\n", argv[0]); diff --git a/src/cmd/page/page.h b/src/cmd/page/page.h index e4b320e5..93e0da79 100644 --- a/src/cmd/page/page.h +++ b/src/cmd/page/page.h @@ -99,9 +99,12 @@ Image* convert(Graphic *g); Image* cachedpage(Document*, int, int); void cacheflush(void); +extern char tempfile[40]; + extern int stdinfd; extern int truecolor; + /* BUG BUG BUG BUG BUG: cannot use new draw operations in drawterm, * or in vncs, and there is a bug in the kernel for copying images * from cpu memory -> video memory (memmove is not being used). diff --git a/src/cmd/page/util.c b/src/cmd/page/util.c index 74dd9bfe..f10ef6db 100644 --- a/src/cmd/page/util.c +++ b/src/cmd/page/util.c @@ -50,12 +50,11 @@ spooltodisk(uchar *ibuf, int in, char **name) { uchar buf[8192]; int fd, n; - char temp[40]; - - strcpy(temp, "/tmp/pagespoolXXXXXXXXX"); - fd = opentemp(temp, ORDWR|ORCLOSE); + + strcpy(tempfile, "/tmp/pagespoolXXXXXXXXX"); + fd = opentemp(tempfile, ORDWR); if(name) - *name = estrdup(temp); + *name = estrdup(tempfile); if(write(fd, ibuf, in) != in){ fprint(2, "error writing temporary file\n"); |