📄 pop3__client_8c-source.html
字号:
00450 <span class="keywordflow">if</span>( pop3_client.<a class="code" href="structpop3c__struct.html#m0">state</a> == <a class="code" href="pop3__client_8h.html#a18">POP3C_RECEIVING_HEADER</a>) {00451 00452 <span class="keywordflow">if</span>( ch == <span class="charliteral">'\r'</span>) {00453 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> = 0;00454 <span class="keywordflow">continue</span>;00455 }00456 00457 <span class="keywordflow">if</span>( ch == <span class="charliteral">'\n'</span>) {00458 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> = 0;00459 <span class="keywordflow">continue</span>;00460 }00461 00462 <span class="keywordflow">if</span>( ch == <span class="charliteral">' '</span>) <span class="comment">/* Remove spaces */</span>00463 <span class="keywordflow">continue</span>;00464 00465 <span class="comment">/* Buffer already full for this line? */</span>00466 00467 <span class="keywordflow">if</span>(pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> > 8)00468 <span class="keywordflow">continue</span>;00469 00470 <span class="comment">/* End of header? (parsing of that is not absolutely correct) */</span>00471 <span class="comment">/* We detect it from CRLF. or LFCR. or CR. or LF. */</span>00472 <span class="comment">/* the correct indication being CRLF.CRLF */</span>00473 00474 <span class="keywordflow">if</span>( (ch == <span class="charliteral">'.'</span>) && (pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> == 0) ) {00475 <span class="comment">/* Remove CRLF.CRLF from header length */</span>00476 00477 <span class="keywordflow">if</span>( pop3_client.<a class="code" href="structpop3c__struct.html#m9">curmsghlen</a> >= 5 )00478 pop3_client.<a class="code" href="structpop3c__struct.html#m9">curmsghlen</a> -= 5;00479 00480 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a21">POP3C_TOP0_GET</a>);00481 <span class="keywordflow">break</span>;00482 }00483 00484 00485 ch = tolower(ch);00486 00487 pop3_client.<a class="code" href="structpop3c__struct.html#m10">headerbuf</a>[pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>] = ch;00488 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>++;00489 pop3_client.<a class="code" href="structpop3c__struct.html#m10">headerbuf</a>[pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>] = <span class="charliteral">'\0'</span>;00490 00491 <span class="comment">/* Is it 'from:' ? */</span>00492 00493 <span class="keywordflow">if</span>(bufsearch(&pop3_client.<a class="code" href="structpop3c__struct.html#m10">headerbuf</a>[0],pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>,<span class="stringliteral">"from:"</span>) == 0) {00494 <span class="comment">/* Continue imidiately to read sender */</span>00495 00496 pop3_client.<a class="code" href="structpop3c__struct.html#m12">from</a>[0] = <span class="charliteral">'\0'</span>;00497 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> = 0;00498 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a19">POP3C_RECEIVING_HDR_FROM</a>); 00499 <span class="keywordflow">continue</span>;00500 }00501 00502 <span class="comment">/* Is it 'subject:' ? */</span>00503 00504 <span class="keywordflow">if</span>(bufsearch(&pop3_client.<a class="code" href="structpop3c__struct.html#m10">headerbuf</a>[0],pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>,<span class="stringliteral">"subject:"</span>) == 0) {00505 <span class="comment">/* Continue imidiately to read subject */</span>00506 00507 pop3_client.<a class="code" href="structpop3c__struct.html#m13">subject</a>[0] = <span class="charliteral">'\0'</span>;00508 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> = 0;00509 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a20">POP3C_RECEIVING_HDR_SUBJ</a>); 00510 <span class="keywordflow">continue</span>;00511 }00512 00513 } <span class="comment">/* of RECEIVING_HEADER */</span>00514 00515 00516 <span class="keywordflow">if</span>( pop3_client.<a class="code" href="structpop3c__struct.html#m0">state</a> == <a class="code" href="pop3__client_8h.html#a19">POP3C_RECEIVING_HDR_FROM</a>) {00517 <span class="keywordflow">if</span>( ch == <span class="charliteral">' '</span>){ <span class="comment">/* Remove spaces */</span>00518 <span class="keywordflow">if</span>(pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> == 0)00519 <span class="keywordflow">continue</span>;00520 }00521 00522 <span class="keywordflow">if</span>( ch == <span class="charliteral">'\r'</span>) {00523 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> = 0;00524 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a18">POP3C_RECEIVING_HEADER</a>);00525 <span class="keywordflow">continue</span>;00526 }00527 00528 <span class="keywordflow">if</span>( ch == <span class="charliteral">'\n'</span>) {00529 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> = 0;00530 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a18">POP3C_RECEIVING_HEADER</a>);00531 <span class="keywordflow">continue</span>;00532 }00533 00534 <span class="comment">/* Store it */</span>00535 00536 pop3_client.<a class="code" href="structpop3c__struct.html#m12">from</a>[pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>] = ch;00537 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>++;00538 pop3_client.<a class="code" href="structpop3c__struct.html#m12">from</a>[pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>] = <span class="charliteral">'\0'</span>;00539 00540 <span class="keywordflow">if</span>(pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> >= <a class="code" href="pop3__client_8h.html#a0">POP3C_SENDERMAXLEN</a>) {00541 <span class="comment">/* The buffer is exeeded */</span>00542 <span class="comment">/* Mark it corrupted */</span>00543 00544 pop3_client.<a class="code" href="structpop3c__struct.html#m12">from</a>[0] = <span class="charliteral">'\0'</span>;00545 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a18">POP3C_RECEIVING_HEADER</a>);00546 <span class="keywordflow">continue</span>;00547 } 00548 00549 } <span class="comment">/* of RECEIVING_HDR_FROM */</span>00550 00551 00552 <span class="keywordflow">if</span>( pop3_client.<a class="code" href="structpop3c__struct.html#m0">state</a> == <a class="code" href="pop3__client_8h.html#a20">POP3C_RECEIVING_HDR_SUBJ</a>) {00553 <span class="keywordflow">if</span>( ch == <span class="charliteral">' '</span>){ <span class="comment">/* Remove spaces */</span>00554 <span class="keywordflow">if</span>(pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> == 0)00555 <span class="keywordflow">continue</span>;00556 }00557 00558 <span class="keywordflow">if</span>( ch == <span class="charliteral">'\r'</span>) {00559 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> = 0;00560 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a18">POP3C_RECEIVING_HEADER</a>);00561 <span class="keywordflow">continue</span>;00562 }00563 00564 <span class="keywordflow">if</span>( ch == <span class="charliteral">'\n'</span>) {00565 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> = 0;00566 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a18">POP3C_RECEIVING_HEADER</a>);00567 <span class="keywordflow">continue</span>;00568 }00569 00570 <span class="comment">/* Store it */</span>00571 00572 pop3_client.<a class="code" href="structpop3c__struct.html#m13">subject</a>[pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>] = ch;00573 pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>++;00574 pop3_client.<a class="code" href="structpop3c__struct.html#m13">subject</a>[pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a>] = <span class="charliteral">'\0'</span>;00575 00576 <span class="keywordflow">if</span>(pop3_client.<a class="code" href="structpop3c__struct.html#m11">charsinheaderbuf</a> >= <a class="code" href="pop3__client_8h.html#a1">POP3C_SUBJECTMAXLEN</a>) {00577 <span class="comment">/* The buffer is exeeded */</span>00578 <span class="comment">/* Mark it corrupted */</span>00579 00580 pop3_client.<a class="code" href="structpop3c__struct.html#m13">subject</a>[0] = <span class="charliteral">'\0'</span>;00581 pop3c_changestate(<a class="code" href="pop3__client_8h.html#a18">POP3C_RECEIVING_HEADER</a>);00582 <span class="keywordflow">continue</span>;00583 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -