add DXCIDR, fix version no tracking
[spider.git] / src / sel.c
index e67a58d6b3ba04fb02333c85145c66c709c4d449..f476ed744784db6bd4d9394a4442f1c85d1c815a 100755 (executable)
--- 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);
@@ -183,12 +198,25 @@ int sel_error(sel_t *sp, int err)
        int r = sp->err;
        if (err >= 0)
                sp->err = err;
-       return err;
+       return r;
 }
 
 /*
  * $Log$
- * Revision 1.2  2000-03-26 14:22:59  djk
+ * 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
+ *
+ * Revision 1.3  2000/03/30 22:51:14  djk
+ * fixed connect code in client.pl so it doesn't falsely recognise /spider
+ * /src/client as a 'client' directive.
+ * Tidied up the C client a bit
+ *
+ * Revision 1.2  2000/03/26 14:22:59  djk
  * removed some irrelevant log info
  *
  * Revision 1.1  2000/03/26 00:03:30  djk