From f8cf1934272912871d57ed37ca73079ad1c20bb2 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 17 Sep 2004 11:10:09 +0000 Subject: [PATCH] Bugfix (introduced in rev 1.83) : ferror() does not return an errno value (or any useful error number). It just returns a "non-zero" value, the same "non-zero" value regardless of the cause of failure. Still not positive if fread() sets errno in any/all CRTLs or not. :-( --- src/smblib/smbadd.c | 12 ++++++------ src/smblib/smballoc.c | 18 +++++++++--------- src/smblib/smbfile.c | 2 +- src/smblib/smblib.c | 36 ++++++++++++++++++------------------ 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/smblib/smbadd.c b/src/smblib/smbadd.c index 32bf734d9b..9ed1e037fc 100644 --- a/src/smblib/smbadd.c +++ b/src/smblib/smbadd.c @@ -171,7 +171,7 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash if(smb_fwrite(smb,&xlat,sizeof(xlat),smb->sdt_fp)!=sizeof(xlat)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing body xlat string" - ,ferror(smb->sdt_fp),STRERROR(ferror(smb->sdt_fp))); + ,get_errno(),STRERROR(get_errno())); retval=SMB_ERR_WRITE; break; } @@ -181,7 +181,7 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash if(smb_fwrite(smb,&xlat,sizeof(xlat),smb->sdt_fp)!=sizeof(xlat)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing body xlat terminator" - ,ferror(smb->sdt_fp),STRERROR(ferror(smb->sdt_fp))); + ,get_errno(),STRERROR(get_errno())); retval=SMB_ERR_WRITE; break; } @@ -190,7 +190,7 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash if(smb_fwrite(smb,body,bodylen,smb->sdt_fp)!=bodylen) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing body (%ld bytes)" - ,ferror(smb->sdt_fp),STRERROR(ferror(smb->sdt_fp)) + ,get_errno(),STRERROR(get_errno()) ,bodylen); retval=SMB_ERR_WRITE; break; @@ -205,7 +205,7 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash if(smb_fwrite(smb,&xlat,sizeof(xlat),smb->sdt_fp)!=sizeof(xlat)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing tail xlat terminator" - ,ferror(smb->sdt_fp),STRERROR(ferror(smb->sdt_fp))); + ,get_errno(),STRERROR(get_errno())); retval=SMB_ERR_WRITE; break; } @@ -213,7 +213,7 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash if(smb_fwrite(smb,tail,taillen-sizeof(xlat),smb->sdt_fp)!=taillen-sizeof(xlat)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing tail (%ld bytes)" - ,ferror(smb->sdt_fp),STRERROR(ferror(smb->sdt_fp)) + ,get_errno(),STRERROR(get_errno()) ,taillen-sizeof(xlat)); retval=SMB_ERR_WRITE; break; @@ -227,7 +227,7 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash if(l%SDT_BLOCK_LEN) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing data padding" - ,ferror(smb->sdt_fp),STRERROR(ferror(smb->sdt_fp))); + ,get_errno(),STRERROR(get_errno())); retval=SMB_ERR_WRITE; break; } diff --git a/src/smblib/smballoc.c b/src/smblib/smballoc.c index cc508a065d..a1948b8c17 100644 --- a/src/smblib/smballoc.c +++ b/src/smblib/smballoc.c @@ -83,7 +83,7 @@ long SMBCALL smb_allocdat(smb_t* smb, ulong length, ushort refs) if(!fwrite(&refs,sizeof(refs),1,smb->sda_fp)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing allocation bytes at offset %ld" - ,ferror(smb->sda_fp),STRERROR(ferror(smb->sda_fp)) + ,get_errno(),STRERROR(get_errno()) ,((offset/SDT_BLOCK_LEN)+l)*sizeof(refs)); return(SMB_ERR_WRITE); } @@ -122,7 +122,7 @@ long SMBCALL smb_fallocdat(smb_t* smb, ulong length, ushort refs) if(l<blocks) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing allocation bytes" - ,ferror(smb->sda_fp),STRERROR(ferror(smb->sda_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); } return(offset); @@ -165,7 +165,7 @@ int SMBCALL smb_freemsgdat(smb_t* smb, ulong offset, ulong length, ushort refs) if(smb_fread(smb,&i,sizeof(i),smb->sda_fp)!=sizeof(i)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading allocation bytes at offset %ld" - ,ferror(smb->sda_fp),STRERROR(ferror(smb->sda_fp)) + ,get_errno(),STRERROR(get_errno()) ,sda_offset); retval=SMB_ERR_READ; break; @@ -184,7 +184,7 @@ int SMBCALL smb_freemsgdat(smb_t* smb, ulong offset, ulong length, ushort refs) if(!fwrite(&i,sizeof(i),1,smb->sda_fp)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing allocation bytes at offset %ld" - ,ferror(smb->sda_fp),STRERROR(ferror(smb->sda_fp)) + ,get_errno(),STRERROR(get_errno()) ,sda_offset); retval=SMB_ERR_WRITE; break; @@ -218,7 +218,7 @@ int SMBCALL smb_incdat(smb_t* smb, ulong offset, ulong length, ushort refs) if(smb_fread(smb,&i,sizeof(i),smb->sda_fp)!=sizeof(i)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading allocation record at offset %ld" - ,ferror(smb->sda_fp),STRERROR(ferror(smb->sda_fp)) + ,get_errno(),STRERROR(get_errno()) ,((offset/SDT_BLOCK_LEN)+l)*sizeof(i)); return(SMB_ERR_READ); } @@ -229,7 +229,7 @@ int SMBCALL smb_incdat(smb_t* smb, ulong offset, ulong length, ushort refs) if(!fwrite(&i,sizeof(i),1,smb->sda_fp)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing allocation record at offset %ld" - ,ferror(smb->sda_fp),STRERROR(ferror(smb->sda_fp)) + ,get_errno(),STRERROR(get_errno()) ,((offset/SDT_BLOCK_LEN)+l)*sizeof(i)); return(SMB_ERR_WRITE); } @@ -290,7 +290,7 @@ int SMBCALL smb_freemsghdr(smb_t* smb, ulong offset, ulong length) if(!fwrite(&c,1,1,smb->sha_fp)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing allocation record" - ,ferror(smb->sha_fp),STRERROR(ferror(smb->sha_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); } fflush(smb->sha_fp); @@ -373,7 +373,7 @@ long SMBCALL smb_allochdr(smb_t* smb, ulong length) if(fputc(1,smb->sha_fp)!=1) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing allocation record" - ,ferror(smb->sha_fp),STRERROR(ferror(smb->sha_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); } fflush(smb->sha_fp); @@ -403,7 +403,7 @@ long SMBCALL smb_fallochdr(smb_t* smb, ulong length) if(!fwrite(&c,1,1,smb->sha_fp)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing allocation record" - ,ferror(smb->sha_fp),STRERROR(ferror(smb->sha_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); } fflush(smb->sha_fp); diff --git a/src/smblib/smbfile.c b/src/smblib/smbfile.c index 65a53ebd5d..e1641dd91b 100644 --- a/src/smblib/smbfile.c +++ b/src/smblib/smbfile.c @@ -102,7 +102,7 @@ size_t SMBCALL smb_fread(smb_t* smb, void* buf, size_t bytes, FILE* fp) while(1) { if((ret=fread(buf,sizeof(char),bytes,fp))==bytes) return(ret); - if(ferror(fp)!=EDEADLOCK) + if(errno!=EDEADLOCK) return(ret); if(!start) start=time(NULL); diff --git a/src/smblib/smblib.c b/src/smblib/smblib.c index 75c77ff613..9b79908ffc 100644 --- a/src/smblib/smblib.c +++ b/src/smblib/smblib.c @@ -114,7 +114,7 @@ int SMBCALL smb_open(smb_t* smb) if(smb_fread(smb,&hdr,sizeof(smbhdr_t),smb->shd_fp)!=sizeof(smbhdr_t)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading header" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,get_errno(),STRERROR(get_errno())); smb_close(smb); return(SMB_ERR_READ); } @@ -135,7 +135,7 @@ int SMBCALL smb_open(smb_t* smb) if(smb_fread(smb,&(smb->status),sizeof(smbstatus_t),smb->shd_fp)!=sizeof(smbstatus_t)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading status" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,get_errno(),STRERROR(get_errno())); smb_close(smb); return(SMB_ERR_READ); } @@ -380,7 +380,7 @@ int SMBCALL smb_getstatus(smb_t* smb) if(i==sizeof(smbstatus_t)) return(SMB_SUCCESS); safe_snprintf(smb->last_error,sizeof(smb->last_error) - ,"%d (%s) reading status",ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,"%d (%s) reading status",get_errno(),STRERROR(get_errno())); return(SMB_ERR_READ); } @@ -407,7 +407,7 @@ int SMBCALL smb_putstatus(smb_t* smb) if(i==sizeof(smbstatus_t)) return(SMB_SUCCESS); safe_snprintf(smb->last_error,sizeof(smb->last_error) - ,"%d (%s) writing status",ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,"%d (%s) writing status",get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); } @@ -526,7 +526,7 @@ int SMBCALL smb_getmsgidx(smb_t* smb, smbmsg_t* msg) if(smb_fread(smb,&msg->idx,sizeof(idxrec_t),smb->sid_fp)!=sizeof(idxrec_t)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading index at offset %lu (byte %lu)" - ,ferror(smb->sid_fp),STRERROR(ferror(smb->sid_fp)) + ,get_errno(),STRERROR(get_errno()) ,msg->offset,msg->offset*sizeof(idxrec_t)); return(SMB_ERR_READ); } @@ -552,7 +552,7 @@ int SMBCALL smb_getmsgidx(smb_t* smb, smbmsg_t* msg) if(smb_fread(smb,&idx,sizeof(idxrec_t),smb->sid_fp)!=sizeof(idxrec_t)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading index at offset %lu (byte %lu)" - ,ferror(smb->sid_fp),STRERROR(ferror(smb->sid_fp)),l,l*sizeof(idxrec_t)); + ,get_errno(),STRERROR(get_errno()),l,l*sizeof(idxrec_t)); return(SMB_ERR_READ); } if(bot==top-1 && idx.number!=msg->hdr.number) { @@ -596,7 +596,7 @@ int SMBCALL smb_getfirstidx(smb_t* smb, idxrec_t *idx) if(smb_fread(smb,idx,sizeof(idxrec_t),smb->sid_fp)!=sizeof(idxrec_t)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading first index" - ,ferror(smb->sid_fp),STRERROR(ferror(smb->sid_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_READ); } return(SMB_SUCCESS); @@ -630,7 +630,7 @@ int SMBCALL smb_getlastidx(smb_t* smb, idxrec_t *idx) if(smb_fread(smb,idx,sizeof(idxrec_t),smb->sid_fp)!=sizeof(idxrec_t)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading last index" - ,ferror(smb->sid_fp),STRERROR(ferror(smb->sid_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_READ); } return(SMB_SUCCESS); @@ -870,7 +870,7 @@ int SMBCALL smb_getmsghdr(smb_t* smb, smbmsg_t* msg) if(smb_fread(smb,&msg->hdr,sizeof(msghdr_t),smb->shd_fp)!=sizeof(msghdr_t)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading msg header" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_READ); } if(memcmp(msg->hdr.id,SHD_HEADER_ID,LEN_HEADER_ID)) { @@ -900,7 +900,7 @@ int SMBCALL smb_getmsghdr(smb_t* smb, smbmsg_t* msg) smb_freemsgmem(msg); safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading data field %d" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp)),i); + ,get_errno(),STRERROR(get_errno()),i); return(SMB_ERR_READ); } i++; @@ -936,7 +936,7 @@ int SMBCALL smb_getmsghdr(smb_t* smb, smbmsg_t* msg) smb_freemsgmem(msg); safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading header field" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_READ); } l+=sizeof(hfield_t); @@ -955,7 +955,7 @@ int SMBCALL smb_getmsghdr(smb_t* smb, smbmsg_t* msg) smb_freemsgmem(msg); safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) reading header field data" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_READ); } set_convenience_ptr(msg,msg->hfield[i].type,msg->hfield_dat[i]); @@ -1443,7 +1443,7 @@ int SMBCALL smb_putmsgidx(smb_t* smb, smbmsg_t* msg) if(!fwrite(&msg->idx,sizeof(idxrec_t),1,smb->sid_fp)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing index" - ,ferror(smb->sid_fp),STRERROR(ferror(smb->sid_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); } fflush(smb->sid_fp); @@ -1507,7 +1507,7 @@ int SMBCALL smb_putmsghdr(smb_t* smb, smbmsg_t* msg) if(!fwrite(&msg->hdr,sizeof(msghdr_t),1,smb->shd_fp)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing fixed portion of header record" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); } @@ -1518,7 +1518,7 @@ int SMBCALL smb_putmsghdr(smb_t* smb, smbmsg_t* msg) if(!fwrite(&msg->dfield[i],sizeof(dfield_t),1,smb->shd_fp)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing data field" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); } @@ -1529,14 +1529,14 @@ int SMBCALL smb_putmsghdr(smb_t* smb, smbmsg_t* msg) if(!fwrite(&msg->hfield[i],sizeof(hfield_t),1,smb->shd_fp)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing header field" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); } if(msg->hfield[i].length /* more then 0 bytes long */ && !fwrite(msg->hfield_dat[i],msg->hfield[i].length,1,smb->shd_fp)) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) writing header field data" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); } } @@ -1545,7 +1545,7 @@ int SMBCALL smb_putmsghdr(smb_t* smb, smbmsg_t* msg) if(fputc(0,smb->shd_fp)!=0) { safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"%d (%s) padding header block" - ,ferror(smb->shd_fp),STRERROR(ferror(smb->shd_fp))); + ,get_errno(),STRERROR(get_errno())); return(SMB_ERR_WRITE); /* pad block with NULL */ } hdrlen++; -- GitLab