Rev 4060 | Rev 4477 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4060 | Rev 4143 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;; ;; |
2 | ;; ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2013. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2013. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
- | 6 | ;; Written by hidnplayr@kolibrios.org ;; |
|
6 | ;; ;; |
7 | ;; ;; |
7 | ;; GNU GENERAL PUBLIC LICENSE ;; |
8 | ;; GNU GENERAL PUBLIC LICENSE ;; |
8 | ;; Version 2, June 1991 ;; |
9 | ;; Version 2, June 1991 ;; |
9 | ;; ;; |
10 | ;; ;; |
10 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
11 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 46... | Line 47... | ||
46 | 47 | ||
Line 47... | Line 48... | ||
47 | server_commands: |
48 | server_commands: |
48 | 49 | ||
- | 50 | dd '322 ', cmd_322 ; RPL_LIST |
|
49 | dd '322 ', cmd_322 ; RPL_LIST |
51 | dd '323 ', cmd_323 ; RPL_LISTEND |
- | 52 | dd '324 ', cmd_324 ;;;; |
|
50 | dd '323 ', cmd_323 ; RPL_LISTEND |
53 | dd '328 ', cmd_328 ; RPL_CHANNEL_URL |
51 | dd '328 ', cmd_328 ; RPL_CHANNEL_URL |
54 | dd '329 ', cmd_329 |
52 | dd '332 ', cmd_topic |
55 | dd '332 ', cmd_topic |
53 | dd '333 ', cmd_333 ; nickname and time of topic |
56 | dd '333 ', cmd_333 ; nickname and time of topic |
54 | dd '353 ', cmd_353 ; name reply |
57 | dd '353 ', cmd_353 ; name reply |
Line 108... | Line 111... | ||
108 | .not_equal: |
111 | .not_equal: |
109 | or eax, -1 |
112 | or eax, -1 |
110 | pop esi |
113 | pop esi |
111 | ret |
114 | ret |
Line -... | Line 115... | ||
- | 115 | ||
- | 116 | ||
112 | 117 | ||
113 | align 4 |
118 | align 4 |
Line 114... | Line 119... | ||
114 | skip_nick: |
119 | skip_nick: |
115 | 120 | ||
Line 133... | Line 138... | ||
133 | 138 | ||
Line -... | Line 139... | ||
- | 139 | ret |
|
- | 140 | ||
134 | ret |
141 | |
135 | 142 | ||
136 | 143 | cmd_324: |
|
137 | 144 | cmd_329: |
|
138 | cmd_328: |
145 | cmd_328: |
Line 147... | Line 154... | ||
147 | 154 | ||
148 | cmp byte[servercommand], ':' |
155 | cmp byte[servercommand], ':' |
Line 149... | Line 156... | ||
149 | jne .gogogo |
156 | jne .gogogo |
- | 157 | ||
- | 158 | mov byte [esi-1], 0 |
|
- | 159 | if TIMESTAMP |
|
- | 160 | call print_timestamp |
|
150 | 161 | end if |
|
151 | mov byte [esi-1], 0 |
162 | |
152 | push esi |
163 | push esi |
153 | mov esi, str_1 |
164 | mov esi, str_1 |
- | 165 | call print_text2 |
|
154 | call print_text2 |
166 | mov eax, servercommand+1 |
155 | mov esi, servercommand+1 |
167 | mov dl, '!' |
156 | call print_text2 |
168 | call print_text |
157 | mov esi, str_2 |
169 | mov esi, str_2 |
Line 158... | Line 170... | ||
158 | call print_text2 |
170 | call print_text2 |
Line 175... | Line 187... | ||
175 | cmp byte [esi], ' ' |
187 | cmp byte [esi], ' ' |
176 | je .loop2 |
188 | je .loop2 |
177 | cmp byte [esi], ':' |
189 | cmp byte [esi], ':' |
178 | je .loop2 |
190 | je .loop2 |
Line -... | Line 191... | ||
- | 191 | ||
179 | 192 | .fail: |
|
180 | call print_text2 |
193 | call print_text2 |
181 | mov esi, str_newline |
194 | mov esi, str_newline |
Line 182... | Line -... | ||
182 | call print_text2 |
- | |
183 | - | ||
184 | .fail: |
195 | call print_text2 |
Line 185... | Line 196... | ||
185 | 196 | ||
Line 210... | Line 221... | ||
210 | 221 | ||
Line -... | Line 222... | ||
- | 222 | ||
- | 223 | ||
- | 224 | cmd_privmsg: |
|
- | 225 | ||
211 | 226 | mov eax, dword[esi+4] |
|
212 | 227 | or eax, 0x20202020 |
|
Line 213... | Line 228... | ||
213 | cmd_privmsg: |
228 | cmp eax, 'msg ' |
214 | 229 | jne .fail |
|
Line 215... | Line -... | ||
215 | add esi, 8 ; skip 'PRIVMSG ' |
- | |
216 | call window_open ; esi now points to end of destination name |
- | |
217 | - | ||
218 | cmp byte[esi], 1 |
230 | add esi, 8 ; skip 'PRIVMSG ' |
219 | je cmd_ctcp |
231 | call window_open ; esi now points to end of destination name |
220 | 232 | ||
221 | cmp dword[esi], 'ACTI' ; Action? |
233 | cmp byte[esi], 1 ; Client to Client protocol? |
Line 222... | Line 234... | ||
222 | je .action |
234 | je cmd_ctcp |
Line 247... | Line 259... | ||
247 | call print_character |
259 | call print_character |
Line 248... | Line 260... | ||
248 | 260 | ||
249 | .fail: |
261 | .fail: |
Line 250... | Line -... | ||
250 | ret |
- | |
251 | - | ||
252 | .action: |
- | |
253 | add esi, 8 |
- | |
254 | push esi |
- | |
255 | if TIMESTAMP |
- | |
256 | call print_timestamp |
- | |
257 | end if |
- | |
258 | - | ||
259 | mov esi, action_header_short |
- | |
260 | call print_text2 |
- | |
261 | - | ||
262 | mov eax, servercommand+1 |
- | |
263 | mov dl, ' ' |
- | |
264 | call print_text |
- | |
265 | - | ||
266 | mov bl, ' ' |
- | |
267 | call print_character |
- | |
268 | - | ||
269 | pop esi |
- | |
270 | call print_text2 |
- | |
271 | - | ||
272 | mov bl, 10 |
- | |
273 | call print_character |
- | |
Line 274... | Line 262... | ||
274 | 262 | ret |
|
- | 263 | ||
- | 264 | ||
- | 265 | ||
275 | ret |
266 | |
- | 267 | cmd_ctcp: |
|
- | 268 | ||
Line 276... | Line 269... | ||
276 | 269 | cmp byte [esi+4], ' ' |
|
277 | 270 | jne .fail |
|
278 | - | ||
279 | cmd_ctcp: |
271 | inc esi |
280 | inc esi |
272 | mov eax, dword[esi] |
281 | - | ||
282 | cmp dword[esi], 'VERS' |
273 | or eax, 0x20202020 |
283 | je .version |
274 | |
- | 275 | cmp eax, 'vers' |
|
- | 276 | je .version |
|
- | 277 | cmp eax, 'time' |
|
- | 278 | je .time |
|
- | 279 | cmp eax, 'ping' |
|
- | 280 | je .ping |
|
- | 281 | cmp eax, 'acti' |
|
- | 282 | je .action |
|
Line 284... | Line 283... | ||
284 | 283 | ; cmp eax, 'dcc ' ; TODO |
|
Line 285... | Line 284... | ||
285 | cmp dword[esi], 'TIME' |
284 | ; je cmd_dcc |
286 | je .time |
285 | |
Line 373... | Line 372... | ||
373 | mov esi, ctcp_ping |
372 | mov esi, ctcp_ping |
374 | call print_text2 |
373 | call print_text2 |
Line 375... | Line 374... | ||
375 | 374 | ||
Line -... | Line 375... | ||
- | 375 | ret |
|
- | 376 | ||
- | 377 | .action: |
|
- | 378 | add esi, 7 |
|
- | 379 | push esi |
|
- | 380 | ||
- | 381 | if TIMESTAMP |
|
- | 382 | call print_timestamp |
|
- | 383 | end if |
|
- | 384 | ||
- | 385 | mov esi, action_header |
|
- | 386 | call print_text2 |
|
- | 387 | ||
- | 388 | mov eax, servercommand+1 ; print nickname |
|
- | 389 | mov dl, '!' |
|
- | 390 | call print_text |
|
- | 391 | ||
- | 392 | mov bl, ' ' |
|
- | 393 | call print_character |
|
- | 394 | ||
- | 395 | pop esi |
|
- | 396 | call print_text2 ; print message |
|
- | 397 | ||
- | 398 | mov bl, 10 |
|
- | 399 | call print_character |
|
- | 400 | ||
- | 401 | ret |
|
- | 402 | ||
- | 403 | ||
- | 404 | cmd_dcc: |
|
- | 405 | add esi, 4 |
|
- | 406 | mov eax, dword[esi] |
|
- | 407 | or eax, 0x202020 |
|
- | 408 | ||
- | 409 | cmp eax, 'send' |
|
- | 410 | je .send |
|
- | 411 | ||
- | 412 | ret |
|
- | 413 | ||
- | 414 | .send: |
|
- | 415 | ||
Line 376... | Line 416... | ||
376 | ret |
416 | ret |
Line 377... | Line 417... | ||
377 | 417 | ||
378 | - | ||
379 | 418 | ||
380 | ctcp_reply: |
419 | |
Line 381... | Line 420... | ||
381 | 420 | ctcp_reply: |
|
382 | push esi |
421 | |
Line 423... | Line 462... | ||
423 | ret |
462 | ret |
Line 424... | Line 463... | ||
424 | 463 | ||
- | 464 | ||
- | 465 | ||
- | 466 | cmd_part: |
|
425 | 467 | ||
426 | - | ||
427 | cmd_part: |
- | |
428 | add esi, 5 ; skip 'PART ' |
- | |
429 | push esi |
- | |
Line 430... | Line 468... | ||
430 | call skip_nick |
468 | cmp byte [esi+4], ' ' |
431 | call window_open |
469 | jne .fail |
432 | pop esi |
470 | add esi, 5 ; skip 'PART ' |
433 | 471 | ||
Line 434... | Line 472... | ||
434 | ; Is it me who parted? |
472 | ; Is it me who parted? |
435 | mov edi, servercommand+1 |
473 | mov edi, servercommand+1 |
- | 474 | call compare_to_nick |
|
- | 475 | jne .dont_close |
|
436 | call compare_to_nick |
476 | |
- | 477 | ; yes, close the window (if its open) |
|
- | 478 | call window_find |
|
Line 437... | Line 479... | ||
437 | jne .dont_close |
479 | test ebx, ebx |
Line -... | Line 480... | ||
- | 480 | jz @f |
|
438 | 481 | call window_close |
|
439 | ; yes, close the window |
482 | @@: |
440 | mov edi, [window_print] |
483 | .fail: |
- | 484 | ||
- | 485 | ret |
|
- | 486 | ||
441 | mov [edi + window.flags], FLAG_UPDATED + FLAG_CLOSE |
487 | |
442 | 488 | ; somebody else parted, just print message |
|
Line 443... | Line 489... | ||
443 | ret |
489 | .dont_close: |
444 | 490 | push esi |
|
445 | ; somebody else parted, just print message |
491 | call skip_nick |
Line 469... | Line 515... | ||
469 | ret |
515 | ret |
Line 470... | Line 516... | ||
470 | 516 | ||
- | 517 | ||
- | 518 | ||
- | 519 | cmd_join: |
|
471 | 520 | ||
Line 472... | Line 521... | ||
472 | 521 | cmp byte [esi+4], ' ' |
|
473 | cmd_join: |
522 | jne .fail |
474 | add esi, 5 ; skip 'JOIN ' |
523 | add esi, 5 ; skip 'JOIN ' |
Line 486... | Line 535... | ||
486 | je .free_found |
535 | je .free_found |
487 | add ebx, sizeof.window |
536 | add ebx, sizeof.window |
488 | dec ecx |
537 | dec ecx |
489 | jnz .loop |
538 | jnz .loop |
490 | ; Error: no more available windows!! ;;;;; TODO |
539 | ; Error: no more available windows!! ;;;;; TODO |
491 | .fail: |
540 | |
492 | ret |
541 | ret |
Line 493... | Line 542... | ||
493 | 542 | ||
494 | .free_found: |
- | |
495 | push ebx |
543 | .free_found: |
496 | call window_create |
- | |
497 | pop ebx |
544 | call window_create |
498 | test eax, eax |
545 | test eax, eax |
499 | jz .fail |
- | |
500 | mov [ebx + window.data_ptr], eax |
546 | jz .fail |
501 | mov [ebx + window.type], WINDOWTYPE_CHANNEL |
- | |
Line 502... | Line 547... | ||
502 | mov [ebx + window.flags], 0 |
547 | mov [ebx + window.type], WINDOWTYPE_CHANNEL |
Line 503... | Line 548... | ||
503 | 548 | ||
504 | call window_set_name |
549 | call window_set_name |
- | 550 | ||
- | 551 | mov [window_active], ebx |
|
505 | 552 | mov [window_print], ebx |
|
- | 553 | ||
Line 506... | Line 554... | ||
506 | mov [window_active], ebx |
554 | if TIMESTAMP |
507 | mov [window_print], ebx |
555 | call print_timestamp |
508 | call window_refresh |
556 | end if |
Line 509... | Line 557... | ||
509 | 557 | ||
510 | push esi |
558 | push esi |
Line 527... | Line 575... | ||
527 | 575 | ||
528 | .no_new_window: |
576 | .no_new_window: |
529 | push esi |
577 | push esi |
Line -... | Line 578... | ||
- | 578 | call window_open |
|
- | 579 | ||
- | 580 | if TIMESTAMP |
|
- | 581 | call print_timestamp |
|
530 | call window_open |
582 | end if |
531 | 583 | ||
Line 532... | Line 584... | ||
532 | mov esi, action_header |
584 | mov esi, join_header |
533 | call print_text2 |
585 | call print_text2 |
534 | 586 | ||
Line 547... | Line 599... | ||
547 | 599 | ||
548 | mov ebx, [window_print] |
600 | mov ebx, [window_print] |
549 | mov esi, servercommand+1 |
601 | mov esi, servercommand+1 |
Line -... | Line 602... | ||
- | 602 | call user_add |
|
- | 603 | ||
550 | call user_add |
604 | .fail: |
Line 551... | Line 605... | ||
551 | 605 | ||
552 | ret |
- | |
553 | - | ||
Line -... | Line 606... | ||
- | 606 | ret |
|
- | 607 | ||
554 | 608 | ||
- | 609 | ||
555 | 610 | ||
556 | 611 | cmd_nick: |
|
557 | cmd_nick: |
612 | |
Line 558... | Line -... | ||
558 | ; NOTE: This command applies to a user, and thus has no specific channel |
- | |
559 | add esi, 5 ; skip 'NICK ' |
- | |
560 | - | ||
561 | cmp byte[esi], ':' ; TODO: skip all spaces and semicolons? |
- | |
562 | jne @f |
- | |
563 | inc esi |
- | |
564 | @@: |
- | |
565 | - | ||
566 | ; Change the nick in the current userlist. TODO: check other channels too! |
- | |
567 | push esi |
- | |
568 | mov ebx, [window_print] |
- | |
569 | - | ||
570 | mov esi, servercommand+1 |
613 | cmp byte[esi+4], ' ' |
- | 614 | jne .fail |
|
571 | call user_remove |
615 | add esi, 5 ; skip 'NICK ' |
572 | 616 | cmp byte[esi], ':' |
|
573 | mov esi, [esp] |
- | |
574 | call user_add |
617 | jne @f |
Line 575... | Line 618... | ||
575 | 618 | inc esi |
|
576 | call redraw_channel_list |
619 | @@: |
577 | 620 | ||
578 | ; Is it me who changed nick? |
621 | ; Is it me who changed nick? |
579 | mov edi, servercommand+1 |
622 | push esi |
580 | call compare_to_nick |
623 | mov edi, servercommand+1 |
581 | pop esi |
624 | call compare_to_nick |
- | 625 | jne .not_me |
|
- | 626 | ||
582 | jne .not_me |
627 | mov ecx, MAX_NICK_LEN-1 |
- | 628 | mov esi, [esp] |
|
- | 629 | @@: |
|
583 | 630 | lodsb |
|
584 | mov ecx, MAX_NICK_LEN-1 |
631 | test al, al |
585 | push esi |
632 | jz @f |
586 | .copyloop: |
633 | cmp al, ' ' |
587 | lodsb |
634 | je @f |
588 | test al, al |
635 | cmp al, 10 |
589 | jz .copydone |
- | |
590 | cmp al, ' ' |
636 | je @f |
Line -... | Line 637... | ||
- | 637 | cmp al, 13 |
|
591 | je .copydone |
638 | je @f |
- | 639 | stosb |
|
592 | stosb |
640 | dec ecx |
- | 641 | jnz @r |
|
- | 642 | @@: |
|
- | 643 | xor al, al |
|
- | 644 | stosb |
|
- | 645 | .not_me: |
|
- | 646 | ||
- | 647 | mov ebx, windows |
|
- | 648 | mov ecx, MAX_WINDOWS |
|
- | 649 | .window_loop: |
|
- | 650 | push ecx ebx |
|
- | 651 | cmp [ebx + window.type], WINDOWTYPE_CHANNEL |
|
- | 652 | jne .next_window |
|
- | 653 | ||
- | 654 | mov esi, servercommand+1 |
|
- | 655 | call user_remove |
|
- | 656 | test edi, edi |
|
- | 657 | jz .next_window |
|
593 | dec ecx |
658 | |
594 | jnz .copyloop |
659 | mov esi, [esp + 8] |
Line 595... | Line 660... | ||
595 | .copydone: |
660 | call user_add |
596 | xor al, al |
661 | |
597 | stosb |
662 | mov [window_print], ebx |
Line 598... | Line 663... | ||
598 | pop esi |
663 | |
599 | .not_me: |
664 | if TIMESTAMP |
Line 600... | Line 665... | ||
600 | 665 | call print_timestamp |
|
601 | ; Now print a message on the current channel |
666 | end if |
Line 602... | Line 667... | ||
602 | push esi |
667 | |
603 | mov esi, action_header_short |
668 | mov esi, nick_header |
Line -... | Line 669... | ||
- | 669 | call print_text2 |
|
- | 670 | ||
- | 671 | mov eax, servercommand+1 |
|
- | 672 | mov dl, '!' |
|
- | 673 | call print_text |
|
- | 674 | ||
- | 675 | mov esi, is_now_known_as |
|
- | 676 | call print_text2 |
|
- | 677 | ||
- | 678 | mov esi, [esp + 8] ; FIXME: dont print the 0x0a0d!!! |
|
604 | call print_text2 |
679 | call print_text2 |
Line 605... | Line 680... | ||
605 | 680 | ||
- | 681 | mov esi, str_newline |
|
- | 682 | call print_text2 |
|
- | 683 | ||
606 | mov eax, servercommand+1 |
684 | .next_window: |
607 | mov dl, '!' |
685 | pop ebx ecx |
608 | call print_text |
686 | add ebx, sizeof.window |
609 | 687 | dec ecx |
|
610 | mov esi, is_now_known_as |
688 | jnz .window_loop |
Line 634... | Line 712... | ||
634 | ; find the channel user has been kicked from |
712 | ; find the channel user has been kicked from |
635 | push esi |
713 | push esi |
636 | call skip_nick |
714 | call skip_nick |
637 | call window_open |
715 | call window_open |
Line -... | Line 716... | ||
- | 716 | ||
- | 717 | if TIMESTAMP |
|
- | 718 | call print_timestamp |
|
- | 719 | end if |
|
638 | 720 | ||
639 | mov esi, action_header_short |
721 | mov esi, kick_header |
Line 640... | Line 722... | ||
640 | call print_text2 |
722 | call print_text2 |
641 | 723 | ||
642 | mov eax, servercommand+1 |
724 | mov eax, servercommand+1 |
Line 654... | Line 736... | ||
654 | 736 | ||
655 | mov ebx, [window_print] |
737 | mov ebx, [window_print] |
656 | mov esi, servercommand+1 |
738 | mov esi, servercommand+1 |
Line -... | Line 739... | ||
- | 739 | call user_remove |
|
- | 740 | ||
657 | call user_remove |
741 | .fail: |
Line 658... | Line 742... | ||
658 | 742 | ||
659 | ret |
- | |
Line -... | Line 743... | ||
- | 743 | ret |
|
- | 744 | ||
- | 745 | ||
- | 746 | ||
- | 747 | cmd_quit: |
|
- | 748 | ||
- | 749 | cmp byte [esi+4], ' ' |
|
- | 750 | jne .fail |
|
- | 751 | ||
- | 752 | mov ebx, windows |
|
- | 753 | mov ecx, MAX_WINDOWS |
|
- | 754 | ||
- | 755 | .window_loop: |
|
- | 756 | push ecx |
|
- | 757 | cmp [ebx + window.type], WINDOWTYPE_CHANNEL |
|
- | 758 | jne .next_window |
|
- | 759 | ||
- | 760 | mov esi, servercommand+1 |
|
- | 761 | call user_remove |
|
- | 762 | test edi, edi |
|
- | 763 | jz .next_window |
|
- | 764 | ||
- | 765 | push ebx |
|
660 | 766 | mov [window_print], ebx |
|
661 | 767 | ||
Line 662... | Line 768... | ||
662 | 768 | if TIMESTAMP |
|
663 | cmd_quit: |
769 | call print_timestamp |
664 | ; NOTE: This command applies to a user, and thus has no specific channel |
770 | end if |
Line 665... | Line 771... | ||
665 | 771 | ||
666 | mov esi, action_header |
772 | mov esi, quit_header |
Line 667... | Line 773... | ||
667 | call print_text2 |
773 | call print_text2 |
668 | 774 | ||
- | 775 | mov eax, servercommand+1 |
|
- | 776 | mov dl, '!' |
|
669 | mov eax, servercommand+1 |
777 | call print_text |
- | 778 | ||
670 | mov dl, '!' |
779 | mov esi, has_quit_irc |
- | 780 | call print_text2 |
|
- | 781 | ||
- | 782 | ; TODO: check if quit message was given, and print it to the window |
|
Line 671... | Line 783... | ||
671 | call print_text |
783 | pop ebx |
Line 672... | Line 784... | ||
672 | 784 | .next_window: |
|
Line -... | Line 785... | ||
- | 785 | pop ecx |
|
- | 786 | add ebx, sizeof.window |
|
673 | mov esi, has_quit_irc |
787 | dec ecx |
- | 788 | jnz .window_loop |
|
- | 789 | ||
- | 790 | .fail: |
|
Line -... | Line 791... | ||
- | 791 | ||
- | 792 | ||
- | 793 | ret |
|
- | 794 | ||
- | 795 | ||
- | 796 | ||
- | 797 | cmd_mode: |
|
- | 798 | ||
- | 799 | cmp byte [esi+4], ' ' |
|
- | 800 | jne .fail |
|
- | 801 | add esi, 5 ; skip 'MODE ' |
|
674 | call print_text2 |
802 | call window_find |
- | 803 | test ebx, ebx |
|
- | 804 | jz .fail |
|
- | 805 | ||
- | 806 | ; skip channel name |
|
- | 807 | @@: |
|
675 | 808 | lodsb |
|
676 | ; TODO: check other channels on same server too! |
809 | test al, al |
Line 677... | Line 810... | ||
677 | mov ebx, [window_print] |
810 | jz .fail |
678 | mov esi, servercommand+1 |
811 | cmp al, 10 |
679 | call user_remove |
812 | je .fail |
Line 680... | Line 813... | ||
680 | 813 | cmp al, 13 |
|
681 | ret |
814 | je .fail |
Line 703... | Line 836... | ||
703 | mov esi, str_newline |
836 | mov esi, str_newline |
704 | call print_text2 |
837 | call print_text2 |
Line 705... | Line 838... | ||
705 | 838 | ||
Line -... | Line 839... | ||
- | 839 | ;;; TODO: change username if needed |
|
- | 840 | ||
706 | ;;; TODO: change username if needed |
841 | .fail: |
Line 707... | Line 842... | ||
707 | 842 | ||
Line 737... | Line 872... | ||
737 | cmp al, ' ' ; names list is separated with spaces |
872 | cmp al, ' ' ; names list is separated with spaces |
738 | jne .namesloop |
873 | jne .namesloop |
739 | jmp .add |
874 | jmp .add |
Line 740... | Line 875... | ||
740 | 875 | ||
741 | .done: |
876 | .done: |
Line 742... | Line 877... | ||
742 | call redraw_channel_list |
877 | call draw_channel_list |
Line 765... | Line 900... | ||
765 | 900 | ||
766 | add esi, 4 ; skip '332 ' |
901 | add esi, 4 ; skip '332 ' |
767 | call skip_nick |
902 | call skip_nick |
Line -... | Line 903... | ||
- | 903 | call window_open |
|
- | 904 | ||
- | 905 | if TIMESTAMP |
|
- | 906 | call print_timestamp |
|
768 | call window_open |
907 | end if |
769 | 908 | ||
770 | push esi |
909 | push esi |
Line 771... | Line 910... | ||
771 | mov esi, action_header |
910 | mov esi, topic_header |
772 | call print_text2 |
911 | call print_text2 |
Line 797... | Line 936... | ||
797 | ; cmp al, ' ' |
936 | ; cmp al, ' ' |
798 | ; jne .loop |
937 | ; jne .loop |
799 | ; dec ecx |
938 | ; dec ecx |
800 | ; jnz .loop ; find some more spaces |
939 | ; jnz .loop ; find some more spaces |
Line -... | Line 940... | ||
- | 940 | ||
- | 941 | if TIMESTAMP |
|
- | 942 | call print_timestamp |
|
- | 943 | end if |
|
801 | 944 | ||
802 | push esi |
945 | push esi |
803 | mov esi, action_header |
946 | mov esi, topic_header |
Line 804... | Line 947... | ||
804 | call print_text2 |
947 | call print_text2 |
805 | 948 | ||
Line 817... | Line 960... | ||
817 | call print_text2 |
960 | call print_text2 |
Line 818... | Line 961... | ||
818 | 961 | ||
819 | .fail: |
962 | .fail: |
Line 820... | Line 963... | ||
820 | ret |
963 | ret |
- | 964 | ||
821 | 965 | cmd_322: ; LIST |
|
Line -... | Line 966... | ||
- | 966 | ||
822 | cmd_322: |
967 | add esi, 4 |
823 | add esi, 4 |
- | |
- | 968 | ||
- | 969 | mov [window_print], windows ; FIXME |
|
824 | 970 | call skip_nick |
|
825 | call skip_nick |
- | |
826 | 971 | mov eax, esi |
|
827 | call print_text2 |
972 | mov dl, 13 |
Line 828... | Line 973... | ||
828 | 973 | call print_text |
|
Line 829... | Line 974... | ||
829 | mov esi, str_newline |
974 | mov esi, str_newline |
Line 830... | Line 975... | ||
830 | call print_text2 |
975 | call print_text2 |
831 | 976 |