* zftp module cleanup
@ 2000-05-09 12:01 Sven Wischnowsky
2000-05-09 17:42 ` PATCH: " Peter Stephenson
0 siblings, 1 reply; 2+ messages in thread
From: Sven Wischnowsky @ 2000-05-09 12:01 UTC (permalink / raw)
To: zsh-workers
Which reminds me... shouldn't zftp probably use the exit-hook like
zpty does? To at least try to cleanly close ftp connections when the
shell exits?
Bye
Sven
--
Sven Wischnowsky wischnow@informatik.hu-berlin.de
^ permalink raw reply [flat|nested] 2+ messages in thread
* PATCH: zftp module cleanup
2000-05-09 12:01 zftp module cleanup Sven Wischnowsky
@ 2000-05-09 17:42 ` Peter Stephenson
0 siblings, 0 replies; 2+ messages in thread
From: Peter Stephenson @ 2000-05-09 17:42 UTC (permalink / raw)
To: Zsh hackers list
> Which reminds me... shouldn't zftp probably use the exit-hook like
> zpty does? To at least try to cleanly close ftp connections when the
> shell exits?
I thought that's what _cleanup() was for. Having FTP connections closed
cleanly isn't always what you want anyway, however.
Index: Src/Modules/zftp.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Modules/zftp.c,v
retrieving revision 1.1.1.22
diff -u -r1.1.1.22 zftp.c
--- Src/Modules/zftp.c 2000/02/23 15:18:47 1.1.1.22
+++ Src/Modules/zftp.c 2000/05/09 17:40:09
@@ -3195,6 +3195,39 @@
return ret;
}
+static void
+zftp_cleanup(void)
+{
+ /*
+ * There are various parameters hanging around, but they're
+ * all non-special so are entirely non-life-threatening.
+ */
+ LinkNode nptr;
+ Zftp_session cursess = zfsess;
+ for (zfsessno = 0, nptr = firstnode(zfsessions); nptr;
+ zfsessno++, incnode(nptr)) {
+ zfsess = (Zftp_session)nptr->dat;
+ zfclosedata();
+ /*
+ * When closing the current session, do the usual unsetting,
+ * otherwise don't.
+ */
+ zfclose(zfsess != cursess);
+ }
+ zsfree(lastmsg);
+ zfunsetparam("ZFTP_SESSION");
+ freelinklist(zfsessions, (FreeFunc) freesession);
+ zfree(zfstatusp, sizeof(int)*zfsesscnt);
+ deletebuiltins("zftp", bintab, sizeof(bintab)/sizeof(*bintab));
+}
+
+static int
+zftpexithook(Hookdef d, void *dummy)
+{
+ zftp_cleanup();
+ return 0;
+}
+
/* The load/unload routines required by the zsh library interface */
/**/
@@ -3209,7 +3242,7 @@
boot_(Module m)
{
int ret;
- if ((ret = addbuiltins(m->nam, bintab,
+ if ((ret = addbuiltins("zftp", bintab,
sizeof(bintab)/sizeof(*bintab))) == 1) {
/* if successful, set some default parameters */
off_t tmout_def = 60;
@@ -3221,6 +3254,8 @@
zfsessions = znewlinklist();
newsession("default");
+
+ addhookfunc("exit", zftpexithook);
}
return !ret;
@@ -3230,27 +3265,8 @@
int
cleanup_(Module m)
{
- /*
- * There are various parameters hanging around, but they're
- * all non-special so are entirely non-life-threatening.
- */
- LinkNode nptr;
- Zftp_session cursess = zfsess;
- for (zfsessno = 0, nptr = firstnode(zfsessions); nptr;
- zfsessno++, incnode(nptr)) {
- zfsess = (Zftp_session)nptr->dat;
- zfclosedata();
- /*
- * When closing the current session, do the usual unsetting,
- * otherwise don't.
- */
- zfclose(zfsess != cursess);
- }
- zsfree(lastmsg);
- zfunsetparam("ZFTP_SESSION");
- freelinklist(zfsessions, (FreeFunc) freesession);
- zfree(zfstatusp, sizeof(int)*zfsesscnt);
- deletebuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab));
+ deletehookfunc("exit", zftpexithook);
+ zftp_cleanup();
return 0;
}
--
Peter Stephenson <pws@cambridgesiliconradio.com>
Cambridge Silicon Radio, Unit 300, Science Park, Milton Road,
Cambridge, CB4 0XL, UK Tel: +44 (0)1223 392070
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2000-05-09 17:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-05-09 12:01 zftp module cleanup Sven Wischnowsky
2000-05-09 17:42 ` PATCH: " Peter Stephenson
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).