int fill,xsize,size;
+ if(!(bmp->mode&WRITE)) {
+ dprintf(bmp->outfd,"[bmp] write mode not specified\n");
+ return B_WRONG_MODE;
+ }
+
xsize=bmp->width*3;
fill=(4-(xsize%4))%4;
size=(xsize+fill)*bmp->height;
bmp->info.ic=0;
/* write it */
- ...
+ if((bmp->fd=open(bmp->file,O_WRONLY)<0) {
+ dprintf(bmp->outfd,"[bmp] unable to open file %s\n",bmp->file);
+ return B_NO_FILE;
+ }
+
+ if(write(bmp->fd,&(bmp->hdr),BMP_H_SIZE)<BMP_H_SIZE) {
+ dprintf(bmp->outfd,"[bmp] unable to write bmp header\n");
+ return B_E_WRITE_DATA;
+ }
+
+ if(write(bmp->fd,&(bmp->info),BMP_I_SIZE)<BMP_I_SIZE) {
+ dprintf(bmp->outfd,"[bmp] unable to write bmp info\n");
+ return B_E_WRITE_DATA;
+ }
return B_SUCCESS;
if(!(bmp->mode&READ)) {
dprintf(bmp->outfd,"[bmp] read mode not specified");
- return B_NO_READ_MODE;
+ return B_WRONG_MODE;
}
if((bmp->fd=open(bmp->file,O_RDONLY))<0) {
/* defines */
#define B_SUCCESS 1
#define B_ERROR -1
-#define B_NO_READ_MODE -2
+#define B_WRONG_MODE -2
#define B_NO_FILE -3
#define B_NO_HI -4
#define B_NO_SUPPORT -5
#define B_HI_FAIL -6
#define B_E_MEM -7
-#define B_E_READ_DATA -8;
+#define B_E_READ_DATA -8
+#define B_E_WRITE_DATA -9
#define MAX_CHARS_FILE 32
#define BMP_H_SIZE 14
#define BMP_I_SIZE 40