/programs/network/ircc/ircc.asm |
---|
13,7 → 13,7 |
;; ;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
version equ '0.35c' |
version equ '0.36' |
; connection status |
STATUS_DISCONNECTED = 0 |
572,6 → 572,8 |
window_active dd windows |
window_print dd windows |
cmd_remaining dd 0 |
align 4 |
@IMPORT: |
/programs/network/ircc/serverparser.inc |
---|
548,6 → 548,10 |
cmp byte [esi+4], ' ' |
jne .fail |
add esi, 5 ; skip 'PART ' |
cmp byte[esi], ':' |
jne @f |
inc esi |
@@: |
; Is it me who parted? |
mov edi, servercommand+1 |
610,6 → 614,10 |
cmp byte[esi+4], ' ' |
jne .fail |
add esi, 5 ; skip 'JOIN ' |
cmp byte[esi], ':' |
jne @f |
inc esi |
@@: |
; did we join a channel? |
mov edi, servercommand+1 |
982,22 → 990,19 |
; TODO: remove all users? |
.add: |
push esi |
call user_add |
pop esi |
.namesloop: |
lodsb |
test al, al |
jz .done |
cmp al, ' ' ; names list is separated with spaces |
jne .namesloop |
cmp al, ' ' |
je .add |
dec esi |
call user_add |
jmp .add |
.done: |
call draw_user_list |
.fail: |
ret |
/programs/network/ircc/socket.inc |
---|
210,9 → 210,7 |
pusha |
; FIXME: make this a proper stream! |
.nextpacket: |
.recv_more: |
mcall recv, [socketnum], packetbuf, PACKETBUF_SIZE, MSG_DONTWAIT ; read a packet |
inc eax ; check if we got any data |
jz .done ; TODO: handle errors! |
223,11 → 221,11 |
mov ecx, eax |
mov esi, packetbuf ; esi = start pointer |
.nextcommand: |
mov edi, servercommand |
add edi, [cmd_remaining] |
.byteloop: |
test ecx, ecx |
jz .nextpacket |
jz .recv_more |
lodsb |
dec ecx |
cmp al, 10 |
234,6 → 232,8 |
je .got_command |
cmp al, 13 |
je .got_command |
cmp edi, servercommand + SERVERCOMMAND_SIZE ; Prevent command buffer overflow |
jae .byteloop |
stosb |
jmp .byteloop |
249,8 → 249,12 |
sub ecx, servercommand ; put length in ecx |
call server_parser |
pop ecx esi |
jmp .nextcommand |
.nextcommand: |
mov edi, servercommand |
mov [cmd_remaining], ecx ; remaining bytes since last EOL |
jmp .byteloop |
.done: |
popa |
ret |
/programs/network/ircc/users.inc |
---|
1,6 → 1,6 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;; ;; |
;; Copyright (C) KolibriOS team 2004-2016. All rights reserved. ;; |
;; Copyright (C) KolibriOS team 2004-2024. All rights reserved. ;; |
;; Distributed under terms of the GNU General Public License ;; |
;; ;; |
;; Written by hidnplayr@kolibrios.org ;; |
24,6 → 24,7 |
cmp [ebx + window.users], MAX_USERS |
jae .fail |
; Check if user is already listed (case insensitive) |
mov edi, [ebx + window.data_ptr] |
add edi, window_data.names |
mov ebp, [ebx + window.users] |
107,6 → 108,8 |
je .done |
cmp al, 10 |
je .done |
cmp al, 0 |
je .done |
stosb |
loop .fill |
.done: |
115,6 → 118,7 |
inc [ebx + window.users] |
or [ebx + window.flags], FLAG_UPDATED |
dec esi |
.fail: |
ret |