aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/page
diff options
context:
space:
mode:
authorJ.R. Mauro <jrm8005@gmail.com>2009-08-20 14:38:31 -0400
committerJ.R. Mauro <jrm8005@gmail.com>2009-08-20 14:38:31 -0400
commit2fb0c4447ef493da81703dd20090676ed8cae834 (patch)
treea308d23de5314957225cecad4300d1ef1f23f36b /src/cmd/page
parent8ff457f56db9f94f4baf68f53d87e791584d1dfe (diff)
downloadplan9port-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.c9
-rw-r--r--src/cmd/page/page.h3
-rw-r--r--src/cmd/page/util.c9
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");