10 static int nextchar(int fd
)
12 unsigned char b
[4] = {0};
17 static int cutint(int fd
)
31 char *ppm_load(char *path
, int *h
, int *w
)
34 int fd
= open(path
, O_RDONLY
);
35 if (fd
< 0 || nextchar(fd
) != 'P' || nextchar(fd
) != '6')
37 *w
= cutint(fd
); /* image width */
38 *h
= cutint(fd
); /* image height */
39 cutint(fd
); /* max color val */
41 d
= malloc(*h
* *w
* 3);
42 read(fd
, d
, *h
* *w
* 3);
47 void ppm_save(char *path
, char *s
, int h
, int w
)
51 sprintf(sig
, "P6\n%d %d\n255\n", w
, h
);
52 fd
= open(path
, O_WRONLY
| O_TRUNC
| O_CREAT
, 0600);
53 write(fd
, sig
, strlen(sig
));
54 write(fd
, s
, h
* w
* 3);