📄 interfac.c
字号:
#include "mail.h"struct message *msgp; MAIL *openfile(char *file){ MAIL *mail; if( (mail=mail_open(file, O_RDWR ,FILE_MODE))==NULL) err_sys("mail_open error");return mail;}MAIL *newfile(char *file){ MAIL *mail; if ( (mail = mail_open(file, O_RDWR | O_CREAT | O_TRUNC, FILE_MODE)) == NULL) err_sys("mail_new error");return mail;}int getmsgfrmdb(char *user){ FILE *fp; MAIL *mail; char key[1024],*ptr,ch; int i,j,keylen; mail=openfile(user); if((fp=fopen(TMPMSGFILE,"w+"))==NULL) err_sys("open MSGFILE error"); i=0; msgph=(struct message*)calloc(100,sizeof(struct message)); msgp=msgph; mail_rewind(mail); do { ptr=mail_nextrec(mail,key); if(ptr!=NULL) { for(j=0,msgp=msgph;j<i;j++,msgp++); msgp->messageid=(char*)malloc(strlen(key)); msgp->content=(char*)malloc(strlen(ptr)); strcpy(msgp->messageid,key); strcpy(msgp->content,ptr); if(i==0) { fprintf (fp,"You have mail.\n"); fprintf (fp,"\n"); } fprintf(fp,"%d\t%s\n",i+1,hint); i++; } }while(ptr!=NULL); if(i==0) fprintf(fp,"No mail for you!"); fclose(fp); mail_close(mail); return 0; }void showmsghdr(int fd,int sd){ char buf[MAXLINE]; int len; while((len=ReadLine(fd,buf,MAXLINE))>0) write(sd,buf,len); close(fd); }/*msgp can be set up when the client come into the systemand be free when the client leave the system*//*char *GetMail(int msgno){ return(msgp[msgno]->content); }*/int StoreMail(struct message *msg){ MAIL *mail; struct stat statbuf; char *name; int len; /*msg.to=ms->to; msg.from=ms->from; msg.subject=ms->subject; msg.content=ms->content; */ len=strlen(msg->to); name=(char *)malloc(len+4+1); strcpy(name,msg->to); strcat(name,".idx"); if(stat(name,&statbuf)<0) mail=newfile(msg->to); else mail=openfile(msg->to); if (mail_store(mail, msg) != 0) err_quit("mail_store error for"); mail_close(mail); free(name); return 0;}int DelMail(int msgno,char *user){ MAIL *mail; int i; msgp=msgph; for(i=1;i<msgno;i++)msgp++; mail=openfile(user); mail_delete(mail,msgp->messageid); mail_close(mail);}int GetMail(int msgno,char *buf){ int i; msgp=msgph; for(i=1;i<msgno;i++)msgp++; /*printf("in getmail content=%s",msgp->content);*/ strcpy(buf,msgp->content);}int client_close(int sd){ free(msgp); return close(sd);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -