Rev 3545 | Rev 4060 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3545 | Rev 3981 | ||
---|---|---|---|
Line 132... | Line 132... | ||
132 | dec esi |
132 | dec esi |
Line 133... | Line 133... | ||
133 | 133 | ||
Line 134... | Line -... | ||
134 | ret |
- | |
135 | - | ||
136 | - | ||
137 | align 4 |
- | |
138 | find_window: ; esi is ptr to windowname |
- | |
139 | - | ||
140 | push esi |
- | |
141 | - | ||
142 | mov edi, esi |
- | |
143 | call compare_to_nick |
- | |
144 | jne .nochat |
- | |
145 | - | ||
146 | mov esi, servercommand+1 |
- | |
147 | .nochat: |
- | |
148 | - | ||
149 | ; now search for window in list |
- | |
150 | mov ebx, windows |
- | |
151 | mov [window_print], ebx ; set first window (server window) as default output window |
- | |
152 | .scanloop: |
- | |
153 | cmp [ebx + window.data_ptr], 0 |
- | |
154 | je .create_it |
- | |
155 | push esi |
- | |
156 | lea edi, [ebx + window.name] |
- | |
157 | mov ecx, MAX_WINDOWNAME_LEN |
- | |
158 | repe cmpsb |
- | |
159 | pop esi |
- | |
160 | cmp byte[edi-1], 0 |
- | |
161 | je .got_it |
- | |
162 | add ebx, sizeof.window |
- | |
163 | ; TODO: check buffer limits ? |
- | |
164 | jmp .scanloop |
- | |
165 | - | ||
166 | ; create channel window - search for empty slot |
- | |
167 | .create_it: |
- | |
168 | mov ebx, windows |
- | |
169 | mov ecx, MAX_WINDOWS |
- | |
170 | .scanloop2: |
- | |
171 | cmp [ebx + window.data_ptr], 0 |
- | |
172 | je .free_found |
- | |
173 | add ebx, sizeof.window |
- | |
174 | dec ecx |
- | |
175 | jnz .scanloop2 |
- | |
176 | ; Error: no more available windows! |
- | |
177 | jmp .just_skip |
- | |
178 | - | ||
179 | .free_found: |
- | |
180 | push ebx |
- | |
181 | call window_create |
- | |
182 | pop ebx |
- | |
183 | test eax, eax |
- | |
184 | jz .just_skip |
- | |
185 | mov [ebx + window.data_ptr], eax |
- | |
186 | mov [ebx + window.type], WINDOWTYPE_CHAT |
- | |
187 | mov [ebx + window.flags], 0 |
- | |
188 | - | ||
189 | call window_set_name |
- | |
190 | - | ||
191 | mov [window_open], ebx |
- | |
192 | mov [window_print], ebx |
- | |
193 | call window_refresh |
- | |
194 | - | ||
195 | call draw_windownames |
- | |
196 | jmp .just_skip |
- | |
197 | - | ||
198 | ; found it! |
- | |
199 | .got_it: |
- | |
200 | mov [window_print], ebx |
- | |
201 | call window_refresh |
- | |
202 | - | ||
203 | .just_skip: |
- | |
204 | pop esi |
- | |
205 | .skip1: |
- | |
206 | ; skip text |
- | |
207 | lodsb |
- | |
208 | test al, al |
- | |
209 | jz .quit |
- | |
210 | cmp al, ' ' |
- | |
211 | jne .skip1 |
- | |
212 | dec esi |
- | |
213 | ; now skip trailing spaces and semicolons |
- | |
214 | .skip2: |
- | |
215 | lodsb |
- | |
216 | test al, al |
- | |
217 | jz .quit |
- | |
218 | cmp al, ' ' |
- | |
219 | je .skip2 |
- | |
220 | cmp al, ':' |
- | |
221 | je .skip2 |
- | |
222 | dec esi |
- | |
223 | - | ||
224 | .quit: |
- | |
225 | ret |
- | |
226 | - | ||
227 | - | ||
Line 228... | Line 134... | ||
228 | 134 | ret |
|
229 | 135 | ||
230 | 136 | ||
231 | 137 | ||
Line 305... | Line 211... | ||
305 | 211 | ||
Line 306... | Line 212... | ||
306 | 212 | ||
307 | cmd_privmsg: |
213 | cmd_privmsg: |
Line 308... | Line 214... | ||
308 | 214 | ||
309 | add esi, 8 ; skip 'PRIVMSG ' |
215 | add esi, 8 ; skip 'PRIVMSG ' |
Line 310... | Line 216... | ||
310 | call find_window ; esi now points to end of destination name |
216 | call window_open ; esi now points to end of destination name |
Line 366... | Line 272... | ||
366 | mov bl, 10 |
272 | mov bl, 10 |
367 | call print_character |
273 | call print_character |
Line 368... | Line 274... | ||
368 | 274 | ||
Line -... | Line 275... | ||
- | 275 | ret |
|
- | 276 | ||
369 | ret |
277 | |
370 | 278 | ||
Line 371... | Line 279... | ||
371 | cmd_ctcp: |
279 | cmd_ctcp: |
372 | inc esi |
280 | inc esi |
Line 518... | Line 426... | ||
518 | 426 | ||
519 | cmd_part: |
427 | cmd_part: |
520 | add esi, 5 ; skip 'PART ' |
428 | add esi, 5 ; skip 'PART ' |
521 | push esi |
429 | push esi |
522 | call skip_nick |
430 | call skip_nick |
523 | call find_window |
431 | call window_open |
Line 524... | Line 432... | ||
524 | pop esi |
432 | pop esi |
525 | 433 | ||
526 | ; Is it me who parted? |
434 | ; Is it me who parted? |
Line 593... | Line 501... | ||
593 | mov [ebx + window.type], WINDOWTYPE_CHANNEL |
501 | mov [ebx + window.type], WINDOWTYPE_CHANNEL |
594 | mov [ebx + window.flags], 0 |
502 | mov [ebx + window.flags], 0 |
Line 595... | Line 503... | ||
595 | 503 | ||
Line 596... | Line 504... | ||
596 | call window_set_name |
504 | call window_set_name |
597 | 505 | ||
598 | mov [window_open], ebx |
506 | mov [window_active], ebx |
Line 599... | Line 507... | ||
599 | mov [window_print], ebx |
507 | mov [window_print], ebx |
600 | call window_refresh |
508 | call window_refresh |
Line 617... | Line 525... | ||
617 | 525 | ||
Line 618... | Line 526... | ||
618 | ret |
526 | ret |
619 | 527 | ||
620 | .no_new_window: |
528 | .no_new_window: |
Line 621... | Line 529... | ||
621 | push esi |
529 | push esi |
622 | call find_window |
530 | call window_open |
Line 623... | Line 531... | ||
623 | 531 | ||
Line 724... | Line 632... | ||
724 | 632 | ||
725 | .not_me: |
633 | .not_me: |
726 | ; find the channel user has been kicked from |
634 | ; find the channel user has been kicked from |
727 | push esi |
635 | push esi |
728 | call skip_nick |
636 | call skip_nick |
Line 729... | Line 637... | ||
729 | call find_window |
637 | call window_open |
730 | 638 | ||
Line 731... | Line 639... | ||
731 | mov esi, action_header_short |
639 | mov esi, action_header_short |
Line 804... | Line 712... | ||
804 | 712 | ||
805 | add esi, 4 ; skip '353 ' |
713 | add esi, 4 ; skip '353 ' |
806 | call skip_nick |
714 | call skip_nick |
807 | inc esi ; channel type '*', '=' or '@' |
715 | inc esi ; channel type '*', '=' or '@' |
808 | inc esi ; ' ' |
716 | inc esi ; ' ' |
Line 809... | Line 717... | ||
809 | call find_window |
717 | call window_open |
810 | 718 | ||
811 | ; now find window ptr and check if this is the first 353 message |
719 | ; now find window ptr and check if this is the first 353 message |
812 | mov ebx, [window_print] |
720 | mov ebx, [window_print] |
Line 841... | Line 749... | ||
841 | 749 | ||
Line 842... | Line 750... | ||
842 | cmd_366: ; channel usernames end |
750 | cmd_366: ; channel usernames end |
843 | 751 | ||
844 | add esi, 4 ; skip '366 ' |
752 | add esi, 4 ; skip '366 ' |
Line 845... | Line 753... | ||
845 | call skip_nick |
753 | call skip_nick |
846 | call find_window |
754 | call window_open |
Line 847... | Line 755... | ||
847 | 755 | ||
Line 855... | Line 763... | ||
855 | 763 | ||
Line 856... | Line 764... | ||
856 | cmd_topic: |
764 | cmd_topic: |
857 | 765 | ||
858 | add esi, 4 ; skip '332 ' |
766 | add esi, 4 ; skip '332 ' |
Line 859... | Line 767... | ||
859 | call skip_nick |
767 | call skip_nick |
860 | call find_window |
768 | call window_open |
861 | 769 | ||
Line 877... | Line 785... | ||
877 | 785 | ||
Line 878... | Line 786... | ||
878 | cmd_333: |
786 | cmd_333: |
879 | 787 | ||
880 | add esi, 4 ; skip '333 ' |
788 | add esi, 4 ; skip '333 ' |
Line 881... | Line 789... | ||
881 | call skip_nick ;;;; |
789 | call skip_nick ;;;; |
882 | call find_window |
790 | call window_open |
883 | 791 | ||
884 | ; mov ecx, 2 ; number of spaces to find ;;; CHECKME |
792 | ; mov ecx, 2 ; number of spaces to find ;;; CHECKME |