]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/jpg/toppm.c
toppm: no need to initialize err
[plan9front.git] / sys / src / cmd / jpg / toppm.c
1 #include <u.h>
2 #include <libc.h>
3 #include <draw.h>
4 #include <memdraw.h>
5 #include <ctype.h>
6 #include <bio.h>
7 #include "imagefile.h"
8
9 void
10 usage(void)
11 {
12         fprint(2, "usage: toppm [-c 'comment'] [-r] [file]\n");
13         exits("usage");
14 }
15
16 void
17 main(int argc, char *argv[])
18 {
19         Biobuf bout;
20         Memimage *i, *ni;
21         int fd, rflag;
22         char buf[256];
23         char *err, *comment;
24
25         rflag = 0;
26         comment = nil;
27         ARGBEGIN{
28         case 'c':
29                 comment = ARGF();
30                 if(comment == nil)
31                         usage();
32                 if(strchr(comment, '\n') != nil){
33                         fprint(2, "ppm: comment cannot contain newlines\n");
34                         usage();
35                 }
36                 break;
37         case 'r':
38                 rflag = 1;
39                 break;
40         default:
41                 usage();
42         }ARGEND
43
44         if(argc > 1)
45                 usage();
46
47         if(Binit(&bout, 1, OWRITE) < 0)
48                 sysfatal("Binit failed: %r");
49
50         memimageinit();
51
52         if(argc == 0){
53                 i = readmemimage(0);
54                 if(i == nil)
55                         sysfatal("reading input: %r");
56                 ni = memmultichan(i);
57                 if(ni == nil)
58                         sysfatal("converting image to RGBV: %r");
59                 if(i != ni){
60                         freememimage(i);
61                         i = ni;
62                 }
63                 err = memwriteppm(&bout, i, comment, rflag);
64         }else{
65                 fd = open(argv[0], OREAD);
66                 if(fd < 0)
67                         sysfatal("can't open %s: %r", argv[0]);
68                 i = readmemimage(fd);
69                 if(i == nil)
70                         sysfatal("can't readimage %s: %r", argv[0]);
71                 close(fd);
72                 ni = memmultichan(i);
73                 if(ni == nil)
74                         sysfatal("converting image to RGB24: %r");
75                 if(i != ni){
76                         freememimage(i);
77                         i = ni;
78                 }
79                 if(comment)
80                         err = memwriteppm(&bout, i, comment, rflag);
81                 else{
82                         snprint(buf, sizeof buf, "Converted by Plan 9 from %s", argv[0]);
83                         err = memwriteppm(&bout, i, buf, rflag);
84                 }
85                 freememimage(i);
86         }
87
88         if(err != nil)
89                 fprint(2, "toppm: %s\n", err);
90         exits(err);
91 }