From c5381b85ed6e5466a5eec780480b429878bdec5d Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 8 May 2002 13:13:52 +0000 Subject: 17081: New zselect module and documentation. --- Doc/Makefile.in | 57 +++++++++++++++++++------------------------ Doc/Zsh/mod_zselect.yo | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 32 deletions(-) create mode 100644 Doc/Zsh/mod_zselect.yo (limited to 'Doc') diff --git a/Doc/Makefile.in b/Doc/Makefile.in index 30cde758c..4b67ca875 100644 --- a/Doc/Makefile.in +++ b/Doc/Makefile.in @@ -61,7 +61,8 @@ Zsh/mod_deltochar.yo Zsh/mod_example.yo Zsh/mod_files.yo \ Zsh/mod_mapfile.yo Zsh/mod_mathfunc.yo Zsh/mod_parameter.yo Zsh/mod_pcre.yo \ Zsh/mod_sched.yo Zsh/mod_stat.yo Zsh/mod_termcap.yo Zsh/mod_terminfo.yo \ Zsh/mod_zftp.yo Zsh/mod_zle.yo Zsh/mod_zleparameter.yo \ -Zsh/mod_zprof.yo Zsh/mod_zpty.yo Zsh/mod_zutil.yo Zsh/mod_tcp.yo +Zsh/mod_zprof.yo Zsh/mod_zpty.yo Zsh/mod_zselect.yo \ +Zsh/mod_zutil.yo Zsh/mod_tcp.yo YODLSRC = zmacros.yo zman.yo ztexi.yo Zsh/arith.yo Zsh/builtins.yo \ Zsh/compat.yo Zsh/compctl.yo Zsh/compsys.yo Zsh/compwid.yo Zsh/cond.yo \ @@ -83,31 +84,27 @@ everything: all dvi ps html dvi: zsh.dvi .PHONY: dvi -zsh.dvi: $(sdir)/zsh.texi - $(TEXI2DVI) $(sdir)/zsh.texi +zsh.dvi: zsh.texi + $(TEXI2DVI) zsh.texi -texi: $(sdir)/zsh.texi +texi: zsh.texi .PHONY: texi -$(sdir)/zsh.texi: +zsh.texi: $(YODL) -o $@ -I$(sdir) -w ztexi.yo version.yo zsh.yo; \ test -f $@ info: zsh.info .PHONY: info -zsh.info: $(sdir)/zsh.texi - $(MAKEINFO) $(sdir)/zsh.texi +zsh.info: zsh.texi + $(MAKEINFO) zsh.texi .yo.1: - case $@ in \ - */*) target=$@ ;; \ - *) target=$(sdir)/$@ ;; \ - esac; \ case '$(YODL)' in :*) ;; *) \ - $(YODL) -I$(sdir) -w zman.yo version.yo $< | sed -e '1s/\\-/-/g' -e '/^\.'\''/d' > $$target \ + $(YODL) -I$(sdir) -w zman.yo version.yo $< | sed -e '1s/\\-/-/g' -e '/^\.'\''/d' > $@ \ ;; esac; \ - test -f $$target + test -f $@ ps: us_ps a4_ps .PHONY: ps @@ -127,28 +124,24 @@ zsh_a4.ps: zsh.dvi html: zsh_toc.html .PHONY: html -zsh_toc.html: $(sdir)/zsh.texi - $(TEXI2HTML) $(sdir)/zsh.texi +zsh_toc.html: zsh.texi + $(TEXI2HTML) zsh.texi zshall.1: zsh.yo - case $@ in \ - */*) target=$@ ;; \ - *) target=$(sdir)/$@ ;; \ - esac; \ case '$(YODL)' in :*) ;; *) \ - $(YODL) -I$(sdir) -DZSHALL -w zman.yo version.yo zsh.yo | sed -e '1s/\\-/-/g' -e '/^\.'\''/d' > $$target \ + $(YODL) -I$(sdir) -DZSHALL -w zman.yo version.yo zsh.yo | sed -e '1s/\\-/-/g' -e '/^\.'\''/d' > $@ \ ;; esac; \ - test -f $$target + test -f $@ ../META-FAQ: META-FAQ.yo Zsh/metafaq.yo case '$(YODL)' in :*) ;; *) \ - $(YODL) -I$(sdir) META-FAQ.yo | sed -e '/NEXTLINE/N' -e '/DELLINE/d' -e '/^SECTHEAD$$/{N;s/^SECTHEAD.//;h;s/./-/g;H;g;}' -e 's/ *$$//' > $(sdir_top)/META-FAQ \ + $(YODL) -I$(sdir) META-FAQ.yo | sed -e '/NEXTLINE/N' -e '/DELLINE/d' -e '/^SECTHEAD$$/{N;s/^SECTHEAD.//;h;s/./-/g;H;g;}' -e 's/ *$$//' > $@ \ ;; esac - test -f $(sdir_top)/META-FAQ + test -f $@ $(YODLDOC): version.yo -$(sdir)/zsh.texi: $(YODLSRC) +zsh.texi: $(YODLSRC) man: $(MAN) .PHONY: man @@ -190,7 +183,7 @@ version.yo: $(sdir_top)/Config/version.mk echo 'def(version)(0)('$(VERSION)')'; \ echo 'def(date)(0)('$(VERSION_DATE)')'; \ echo 'ENDDEF()#' | tr '#' '\\'; \ - ) > $(sdir)/version.yo + ) > $@ Zsh/modlist.yo: $(MODDOCSRC) ( \ @@ -218,7 +211,7 @@ Zsh/modlist.yo: $(MODDOCSRC) mod1=$$mod2; \ mod2=$$mod3; \ done \ - ) > $(sdir)/Zsh/modlist.yo + ) > $@ Zsh/modmenu.yo: $(MODDOCSRC) ( \ @@ -228,7 +221,7 @@ Zsh/modmenu.yo: $(MODDOCSRC) < $(sdir)/$$modfile; \ done; \ echo "endmenu()" \ - ) > $(sdir)/Zsh/modmenu.yo + ) > $@ Zsh/manmodmenu.yo: $(MODDOCSRC) ( \ @@ -236,7 +229,7 @@ Zsh/manmodmenu.yo: $(MODDOCSRC) sed -n '1{s|^COMMENT(!MOD!\(.*\)$$|menu(The \1 Module)|;p;q;}' \ < $(sdir)/$$modfile; \ done \ - ) > $(sdir)/Zsh/manmodmenu.yo + ) > $@ # ========== DEPENDENCIES FOR INSTALLING ========== @@ -252,7 +245,7 @@ uninstall: uninstall.man install.man: man ${SHELL} $(sdir_top)/mkinstalldirs $(DESTDIR)$(mandir)/man1 for file in $(MAN); do \ - $(INSTALL_DATA) $(sdir)/$$file $(DESTDIR)$(mandir)/man1/`echo $$file | sed 's|zsh|$(tzsh)|'` || exit 1; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(mandir)/man1/`echo $$file | sed 's|zsh|$(tzsh)|'` || exit 1; \ done .PHONY: install.man @@ -263,7 +256,7 @@ install.info: texi mkdir infodir if ( \ sed '/^@setfilename/s|zsh|$(tzsh)|' \ - < $(sdir)/zsh.texi > infodir/tzsh.texi && \ + < zsh.texi > infodir/tzsh.texi && \ (cd infodir && $(MAKEINFO) tzsh.texi) && \ for file in infodir/$(tzsh).info*; do \ $(INSTALL_DATA) $$file $(DESTDIR)$(infodir) || exit 1; \ @@ -321,8 +314,8 @@ distclean-here: clean-here .PHONY: distclean-here realclean-here: distclean-here - cd $(sdir) && rm -f Zsh/modlist.yo Zsh/modmenu.yo Zsh/manmodmenu.yo - cd $(sdir) && rm -f version.yo ../META-FAQ zsh.texi $(MAN) + rm -f Zsh/modlist.yo Zsh/modmenu.yo Zsh/manmodmenu.yo + rm -f version.yo ../META-FAQ zsh.texi $(MAN) .PHONY: realclean-here @CLEAN_MK@ diff --git a/Doc/Zsh/mod_zselect.yo b/Doc/Zsh/mod_zselect.yo new file mode 100644 index 000000000..506ef033c --- /dev/null +++ b/Doc/Zsh/mod_zselect.yo @@ -0,0 +1,66 @@ +COMMENT(!MOD!zsh/zselect +Block and return when file descriptors are ready. +!MOD!) +The tt(zsh/zselect) module makes available one builtin command: + +startitem() +findex(zselect) +cindex(select, system call) +cindex(file descriptors, waiting for) +item(tt(zselect) [ tt(-rwe) tt(-t) var(timeout) tt(-a) var(array) ] [ var(fd) ... ])( +The tt(zselect) builtin is a front-end to the `select' system call, which +blocks until a file descriptor is ready for reading or writing, or has an +error condition, with an optional timeout. If this is not available on +your system, the command prints an error message and returns status 2 +(normal errors return status 1). For more information, see your systems +documentation for manref(select)(3). Note there is no connection with the +shell builtin of the same name. + +Arguments and options may be intermingled in any order. Non-option +arguments are file descriptors, which must be decimal integers. By +default, file descriptors are to be tested for reading, i.e. tt(zselect) +will return when data is availble to be read from the file descriptor, or +more precisely, when a read operation from the file descriptor will not +block. After a tt(-r), tt(-w) and tt(-e), the given file descriptors are +to be tested for reading, writing, or error conditions. These options and +an arbitrary list of file descriptors may be given in any order. + +(The presence of an `error condition' is not well defined in the +documentation for many implementations of the select system call. +According to recent versions of the POSIX specification, it is really an +em(exception) condition, of which the only standard example is out-of-band +data received on a socket. So zsh users are unlikely to find the tt(-e) +option useful.) + +The option `tt(-t) var(timeout)' specifies a timeout in hundredths of a +second. This may be zero, in which case the file descriptors will simply +be polled and tt(zselect) will return immediately. It is possible to call +zselect with no file descriptors and a non-zero timeout for use as a +finer-grained replacement for `sleep'; not, however, the return status is +always 1 for a timeout. + +The option `tt(-a) var(array)' indicates that tt(array) should be set to +indicate the file descriptor(s) which are ready. If the option is not +given, the array tt(reply) will be used for this purpose. The array will +contain a string similar to the arguments for tt(zselect). For example, + +example(zselect -t 0 -r 0 -w 1) + +might return immediately with status 0 and tt($reply) containing `tt(-r 0 -w +1)' to show that both file descriptors are ready for the requested +operations. + +The option `tt(-A) var(assoc)' indicates that the associative array +tt(assoc) should be set to indicate the file descriptor(s) which are +ready. This option overrides the option tt(-a), nor will tt(reply) be +modified. The keys of tt(assoc) are the file descriptors, and the +corresponding values are any of the characters `tt(rwe)' to indicate the +condition. + +The command returns 0 if some file descriptors are ready for reading. If +the operation timed out, or a timeout of 0 was given and no file +descriptors were ready, or there was an error, it returns status 1 and +the array will not be set (nor modified in any way). If there was an error +in the select operation the appropriate error message is printed. +) +enditem() -- cgit 1.4.1