X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=src%2Fsel.c;fp=src%2Fsel.c;h=f476ed744784db6bd4d9394a4442f1c85d1c815a;hb=8e6d10121beaa001ea97b8c0225a938d6b189965;hp=4856dda33e068f46479d10f2f3ec62c219594341;hpb=61148e50735498a356ffd95b5a79faf1dc6b9d82;p=spider.git diff --git a/src/sel.c b/src/sel.c index 4856dda3..f476ed74 100755 --- a/src/sel.c +++ b/src/sel.c @@ -81,6 +81,16 @@ sel_t *sel_open(int cnum, void *fcb, char *name, int (*handler)(), int sort, int return sp; } +/* + * post a close handler for this connection, to do special things + * in the event of this cnum closing, the default is just to close + */ + +void sel_closehandler(sel_t *sp, void (*handler)()) +{ + sp->closehandler = handler; +} + /* * close (and thus clear down) a slot, it is assumed that you have done whatever * you need to do to close the actual device already @@ -89,6 +99,11 @@ sel_t *sel_open(int cnum, void *fcb, char *name, int (*handler)(), int sort, int void sel_close(sel_t *sp) { if (sp->sort) { + if (sp->closehandler) { + (sp->closehandler)(sp); + } else { + close(sp->cnum); + } chain_flush(sp->msgbase); free(sp->msgbase); free(sp->name); @@ -188,7 +203,10 @@ int sel_error(sel_t *sp, int err) /* * $Log$ - * Revision 1.4 2000-07-20 14:16:00 minima + * Revision 1.5 2002-01-27 15:35:33 minima + * try to fix EOF on standard input problems + * + * Revision 1.4 2000/07/20 14:16:00 minima * can use Sourceforge now! * added user->qra cleaning * added 4 digit qra to user broadcast dxspots if available