mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-30 05:40:58 +01:00
27755: add "zsystem supports" to zsh/system
This commit is contained in:
parent
bec3de98df
commit
a3b971a27e
3 changed files with 47 additions and 1 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2010-02-25 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 27755: Doc/Zsh/mod_system.yo, Src/Modules/system.c:
|
||||
add "zsystem supports" to test what zsystem supports.
|
||||
|
||||
2010-02-24 Peter Stephenson <p.w.stephenson@ntlworld.com>
|
||||
|
||||
* 27754: NEWS (unposted), Doc/Zsh/mod_system.yo, Src/exec.c,
|
||||
|
|
@ -12819,5 +12824,5 @@
|
|||
|
||||
*****************************************************
|
||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||
* $Revision: 1.4914 $
|
||||
* $Revision: 1.4915 $
|
||||
*****************************************************
|
||||
|
|
|
|||
|
|
@ -148,6 +148,16 @@ If the option tt(-r) is given, the lock is only for reading, otherwise
|
|||
it is for reading and writing. The file descriptor is opened
|
||||
accordingly.
|
||||
)
|
||||
item(tt(zsystem supports) var(subcommand))(
|
||||
The builtin tt(zsystem)'s subcommand tt(supports) tests whether a
|
||||
given subcommand is supported. It returns status 0 if so, else
|
||||
status 1. It operates silently unless there was a syntax error
|
||||
(i.e. the wrong number of arguments), in which case status 255
|
||||
is returned. Status 1 can indicate one of two things: var(subcommand)
|
||||
is known but not supported by the current operating system, or
|
||||
var(subcommand) is not known (possibly because this is an older
|
||||
version of the shell before it was implemented).
|
||||
)
|
||||
enditem()
|
||||
|
||||
subsect(Parameters)
|
||||
|
|
|
|||
|
|
@ -491,6 +491,35 @@ bin_zsystem_flock(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* Return status zero if the zsystem feature is supported, else 1.
|
||||
* Operates silently for future-proofing.
|
||||
*/
|
||||
/**/
|
||||
static int
|
||||
bin_zsystem_supports(char *nam, char **args,
|
||||
UNUSED(Options ops), UNUSED(int func))
|
||||
{
|
||||
if (!args[0]) {
|
||||
zwarnnam(nam, "supports: not enough arguments");
|
||||
return 255;
|
||||
}
|
||||
if (args[1]) {
|
||||
zwarnnam(nam, "supports: too many arguments");
|
||||
return 255;
|
||||
}
|
||||
|
||||
/* stupid but logically this should work... */
|
||||
if (!strcmp(*args, "supports"))
|
||||
return 0;
|
||||
#ifdef HAVE_FCNTL_H
|
||||
if (!strcmp(*args, "flock"))
|
||||
return 0;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/**/
|
||||
static int
|
||||
bin_zsystem(char *nam, char **args, Options ops, int func)
|
||||
|
|
@ -498,6 +527,8 @@ bin_zsystem(char *nam, char **args, Options ops, int func)
|
|||
/* If more commands are implemented, this can be more sophisticated */
|
||||
if (!strcmp(*args, "flock")) {
|
||||
return bin_zsystem_flock(nam, args+1, ops, func);
|
||||
} else if (!strcmp(*args, "supports")) {
|
||||
return bin_zsystem_supports(nam, args+1, ops, func);
|
||||
}
|
||||
zwarnnam(nam, "unknown subcommand: %s", *args);
|
||||
return 1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue