Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/teraterm/teraterm/checkeol.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9048 - (show annotations) (download) (as text)
Wed Dec 16 12:24:13 2020 UTC (3 years, 2 months ago) by nmaya
File MIME type: text/x-c++src
File size: 3280 byte(s)
ソースファイルの著作権表記の "最後の発行の年" を削除

ticket #40996
1 /*
2 * Copyright (C) 2020- TeraTerm Project
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #define _CRTDBG_MAP_ALLOC
30 #include <stdlib.h>
31 #include <crtdbg.h>
32 #include <windows.h>
33
34 #include "checkeol.h"
35
36 // tttypes.h
37 #define CR 0x0D
38 #define LF 0x0A
39
40 struct CheckEOLData_st {
41 BOOL cr_hold;
42 };
43
44 CheckEOLData_t *CheckEOLCreate(void)
45 {
46 CheckEOLData_t *self = (CheckEOLData_t *)calloc(sizeof(CheckEOLData_t), 1);
47 return self;
48 }
49
50 void CheckEOLDestroy(CheckEOLData_t *self)
51 {
52 free(self);
53 }
54
55 void CheckEOLClear(CheckEOLData_t *self)
56 {
57 self->cr_hold = FALSE;
58 }
59
60 /**
61 * ����EOL(���s), u32 ���o��������������
62 *
63 * �����l�� CheckEOLRet �� OR ������
64 *
65 * @retval CheckEOLNoOutput �����o��������
66 * @retval CheckEOLOutputEOL ���s�R�[�h���o������
67 * @retval CheckEOLOutputChar u32�����������o������
68 */
69 CheckEOLRet CheckEOLCheck(CheckEOLData_t *self, unsigned int u32)
70 {
71 // ���������s(CR or LF)�������A
72 // ���s������(CR or LF or CR+LF)����������������
73 // ���� CR hold ���s�o�� CR hold ���X
74 // +-------+-----------+-----------+------------
75 // CR ���� ������ �Z�b�g����
76 // LF ���� ���� ��������
77 // ������ ���� ������ ��������
78 // CR ���� ���� ��������(�z�[���h��������)
79 // LF ���� ���� �N���A����
80 // ������ ���� ���� �N���A����
81 if (self->cr_hold == FALSE) {
82 if (u32 == CR) {
83 self->cr_hold = TRUE;
84 return CheckEOLNoOutput;
85 }
86 else if (u32 == LF) {
87 return CheckEOLOutputEOL;
88 }
89 else {
90 return CheckEOLOutputChar;
91 }
92 }
93 else {
94 if (u32 == CR) {
95 return CheckEOLOutputEOL;
96 }
97 else if (u32 == LF) {
98 self->cr_hold = FALSE;
99 return CheckEOLOutputEOL;
100 }
101 else {
102 self->cr_hold = FALSE;
103 return (CheckEOLRet)(CheckEOLOutputEOL | CheckEOLOutputChar);
104 }
105 }
106 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26