void DLLCALL putextdesc(scfg_t* cfg, uint dirnum, ulong datoffset, char *ext) { char str[MAX_PATH+1],nulbuf[F_EXBSIZE]; int file; strip_invalid_attr(ext); /* eliminate bogus ctrl-a codes */ memset(nulbuf,0,sizeof(nulbuf)); SAFEPRINTF2(str,"%s%s.exb",cfg->dir[dirnum]->data_dir,cfg->dir[dirnum]->code); if((file=nopen(str,O_WRONLY|O_CREAT))==-1) return; lseek(file,0L,SEEK_END); while(filelength(file)<(long)(datoffset/F_LEN)*F_EXBSIZE) write(file,nulbuf,sizeof(nulbuf)); lseek(file,(datoffset/F_LEN)*F_EXBSIZE,SEEK_SET); write(file,ext,F_EXBSIZE); close(file); }
void sbbs_t::msgtotxt(smbmsg_t* msg, char *str, int header, int tails) { char *buf; char tmp[128]; int i; FILE *out; if((out=fnopen(&i,str,O_WRONLY|O_CREAT|O_APPEND))==NULL) { errormsg(WHERE,ERR_OPEN,str,0); return; } if(header) { fprintf(out,"\r\n"); fprintf(out,"Subj : %s\r\n",msg->subj); fprintf(out,"To : %s",msg->to); if(msg->to_ext) fprintf(out," #%s",msg->to_ext); if(msg->to_net.addr) fprintf(out," (%s)",smb_netaddrstr(&msg->to_net,tmp)); fprintf(out,"\r\nFrom : %s",msg->from); if(msg->from_ext && !(msg->hdr.attr&MSG_ANONYMOUS)) fprintf(out," #%s",msg->from_ext); if(msg->from_net.addr) fprintf(out," (%s)",smb_netaddrstr(&msg->from_net,tmp)); fprintf(out,"\r\nDate : %.24s %s" ,timestr(msg->hdr.when_written.time) ,smb_zonestr(msg->hdr.when_written.zone,NULL)); fprintf(out,"\r\n\r\n"); } buf=smb_getmsgtxt(&smb,msg,tails); if(buf!=NULL) { strip_invalid_attr(buf); fputs(buf,out); smb_freemsgtxt(buf); } else if(smb_getmsgdatlen(msg)>2) errormsg(WHERE,ERR_READ,smb.file,smb_getmsgdatlen(msg)); fclose(out); }