extern char * danCGIReplacedCRLF(char * szFixMe){ int i,j,iLen=0,iNewLen=0; int iCRLFcount=0; char* szResult=NULL; iLen=strlen(szFixMe); for (i=0;i<=iLen;i++){ /* this should be i < len */ if (szFixMe[i]==(int) '\n' || szFixMe[i]==(int) '\r') iCRLFcount++; /* and here you're counting how many \r or \n you see, not how many "\r\n" sequences */ } /* you don't need the
+NULL+text, you need
+text */ // need space for first
+NULL+ text // + replace each CR &LF + last " <\p>" iNewLen=3+1+strlen(szFixMe)+(iCRLFcount*8)+5; szResult = malloc(iNewLen); if (szResult){ /* what's wrong with strcpy(szResult, "
"); ? */ szResult[0]='<'; szResult[1]='p'; szResult[2]='>'; szResult[3]='\0'; i=0; j=3; while (i<=iLen) if (szFixMe[i]==(int) '\n' || szFixMe[i]==(int) '\r'){ /* here again, you're checking for \r or \n, now the pair */ strcat(szResult,"
"); j+=8; /* and now I'm completely lost!, why are you looking for \n\r? I thought we were looking for \r\n. */ // deal with Newline CR pairs if(szFixMe[i]==(int) '\n' && szFixMe[i+1]==(int) '\r' || szFixMe[i]==(int) '\r' || szFixMe[i+1]==(int) ' +\n') i+=2; else i++; }else{ szResult[j]=szFixMe[i]; j++; szResult[j]='\0'; //dest string in strcat needs termin +ating \0 i++; } //outer loop & if statement //end of new document needs
to match at start strcat(szResult," "); } // if(szResult !=NULL ) return szResult; } ####
/*********************************************************/
#if 0
we want to do the following:
sub MakePtag{
my ($fixme)=@_; # take in our parameters
$fixme=''.$fixme; # Prepend a
tag to our string
$fixme=~s|(\r\n)|
|g; # replace all \r\n with <\p>
$fixme.='
'; # Append closing tag
return $fixme;
}
#endif
char* make_p_tag(char* str){
int len = 0;
int cr = 0; /* this will tell you if we found \r */
char *s = str;
char *newstr, *s2;
/* s#\r\n##, increases len by 5 (7-2)*/
while(*s != '\0'){ /* while we have more data */
++len;
if(*s == '\r'){
cr = 1; /* we found one */
} else if(*s == '\n' && cr){
/* we found \n and \r in the prev step */
cr = 0; /* forget we found a \r */
len += 5;
} else {
cr = 0; /* also forget we found an isolated \r*/
}
++s;
}
s = str;
s2 = newstr = calloc(len+8, sizeof(char));
strcpy(s2,"");
s2 += 3;
while(*s != '\0'){
*s2 = *s; /* copy this char to the output string */
if(*s == '\r'){
cr = 1; /* mark that we put a \r */
} else if(*s == '\n' && cr){ /* now we placed \r\n */
cr = 0;
strcpy(s2-1,"
"); /* put
*/
s2 += 5; /* and advance */
} else {
cr = 0; /* forget it */
}
++s;
++s2;
}
strcpy(s2,"
"); /* put terminating */
s2+=4;
*s2 = '\0';
return newstr;
}
####
/* what's wrong with strcpy(szResult, ""); ? */