version 1.33, 2020/03/08 14:52:20 |
version 1.34, 2020/04/25 05:03:54 |
|
|
void |
void |
sock_close(struct sock *f) |
sock_close(struct sock *f) |
{ |
{ |
|
struct dev *d; |
struct sock **pf; |
struct sock **pf; |
|
unsigned int tags, i; |
|
|
for (pf = &sock_list; *pf != f; pf = &(*pf)->next) { |
for (pf = &sock_list; *pf != f; pf = &(*pf)->next) { |
#ifdef DEBUG |
#ifdef DEBUG |
|
|
f->slot = NULL; |
f->slot = NULL; |
} |
} |
if (f->midi) { |
if (f->midi) { |
|
tags = midi_tags(f->midi); |
|
for (i = 0; i < DEV_NMAX; i++) { |
|
if ((tags & (1 << i)) && (d = dev_bynum(i)) != NULL) |
|
dev_unref(d); |
|
} |
midi_del(f->midi); |
midi_del(f->midi); |
f->midi = NULL; |
f->midi = NULL; |
} |
} |
|
|
if (p->devnum < 16) { |
if (p->devnum < 16) { |
d = dev_bynum(p->devnum); |
d = dev_bynum(p->devnum); |
if (d == NULL) |
if (d == NULL) |
|
return 0; |
|
if (!dev_ref(d)) |
return 0; |
return 0; |
midi_tag(f->midi, p->devnum); |
midi_tag(f->midi, p->devnum); |
} else if (p->devnum < 32) { |
} else if (p->devnum < 32) { |