while (fgets(data,sizeof(data),fd->datatst)!=(char *)0) {
_Bool completed;
- completed=true;
+ completed=false;
(*numline)++;
(void) eml_removecrlf(data);
+ if (data[1]!=':') {
+ (void) rou_alert(0,"%s Unexpected data type <%s> (Bug?)",
+ OPEP,data);
+ continue;
+ }
switch (data[0]) {
- case 'D' :
+ case 'D' : //pure data
if ((strcmp(data+2,".")==0)&&(empty==true))
(void) strcat(data,".");
(void) dooutgoing(fd->socptr,data+2);
empty=(strlen(data+2)==0);
- completed=false;
break;
- case 'C' :
- if (data[2]=='.') {
- (void) dooutgoing(fd->socptr,"");
- (void) dooutgoing(fd->socptr,".");
+ case 'C' : //data marker
+ switch (data[2]) {
+ case '.' : //end of data marker
+ (void) dooutgoing(fd->socptr,"");
+ (void) dooutgoing(fd->socptr,".");
+ completed=true;
+ break;
+ case 'T' : //timer data
+ time_t isnow;
+ char ed[100];
+
+ isnow=time((time_t *)0);
+ (void) snprintf(ed,sizeof(ed),"Date: %s",rou_ascsysstamp(isnow));
+ (void) dooutgoing(fd->socptr,ed);
+ break;
+ default : //unexpected data marker
+ (void) rou_alert(0,"%s Unexpected data marker <%s> (Bug?)",
+ OPEP,data);
+ break;
}
- else
- (void) rou_alert(0,"%s Unexpected data close <%s> (Bug?)",
- OPEP,data);
break;
default :
(void) rou_alert(0,"%s Unexpected data to be send <%s> (Bug?)",