From a54cc5ef402ca4ba6202f13ee65e5f2fdcfd10c1 Mon Sep 17 00:00:00 2001 From: hackbard Date: Wed, 6 Oct 2004 18:40:57 +0000 Subject: [PATCH] some improvements to bmp_write_file function (still untested!) --- bmp/bmp.c | 22 ++++++++++++++++++++-- bmp/bmp.h | 5 +++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/bmp/bmp.c b/bmp/bmp.c index 2476140..4d8c7ac 100644 --- a/bmp/bmp.c +++ b/bmp/bmp.c @@ -59,6 +59,11 @@ int bmp_write_file(t_bmp *bmp) { 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; @@ -79,7 +84,20 @@ int bmp_write_file(t_bmp *bmp) { 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)outfd,"[bmp] unable to write bmp header\n"); + return B_E_WRITE_DATA; + } + + if(write(bmp->fd,&(bmp->info),BMP_I_SIZE)outfd,"[bmp] unable to write bmp info\n"); + return B_E_WRITE_DATA; + } return B_SUCCESS; @@ -94,7 +112,7 @@ int bmp_read_file(t_bmp *bmp) { 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) { diff --git a/bmp/bmp.h b/bmp/bmp.h index 58bee0a..f25007d 100644 --- a/bmp/bmp.h +++ b/bmp/bmp.h @@ -12,13 +12,14 @@ /* 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 -- 2.20.1