mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-18 12:29:32 +08:00
* kill.cc (prog_name) New global variable.
(usage) Standardize usage output. Add descriptions. (print_version) New function. (longopts) Accomodate new version option. (opts) Ditto. (main) Ditto.
This commit is contained in:
parent
6f49bfb88f
commit
ef48a2cad3
@ -1,3 +1,12 @@
|
|||||||
|
2002-05-13 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
|
||||||
|
|
||||||
|
* kill.cc (prog_name) New global variable.
|
||||||
|
(usage) Standardize usage output. Add descriptions.
|
||||||
|
(print_version) New function.
|
||||||
|
(longopts) Accomodate new version option.
|
||||||
|
(opts) Ditto.
|
||||||
|
(main) Ditto.
|
||||||
|
|
||||||
2002-05-13 Christopher Faylor <cgf@redhat.com>
|
2002-05-13 Christopher Faylor <cgf@redhat.com>
|
||||||
|
|
||||||
* kill.cc (listsig): Display numeric id when given symbolic input.
|
* kill.cc (listsig): Display numeric id when given symbolic input.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* kill.cc
|
/* kill.cc
|
||||||
|
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001 Red Hat, Inc.
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
|
||||||
|
|
||||||
This file is part of Cygwin.
|
This file is part of Cygwin.
|
||||||
|
|
||||||
@ -18,27 +18,60 @@ details. */
|
|||||||
#include <sys/cygwin.h>
|
#include <sys/cygwin.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
|
||||||
|
static const char version[] = "$Revision$";
|
||||||
|
static char *prog_name;
|
||||||
|
|
||||||
static struct option longopts[] =
|
static struct option longopts[] =
|
||||||
{
|
{
|
||||||
{"help", no_argument, NULL, 'h' },
|
{"help", no_argument, NULL, 'h' },
|
||||||
{"list", optional_argument, NULL, 'l'},
|
{"list", optional_argument, NULL, 'l'},
|
||||||
{"force", no_argument, NULL, 'f'},
|
{"force", no_argument, NULL, 'f'},
|
||||||
{"signal", required_argument, NULL, 's'},
|
{"signal", required_argument, NULL, 's'},
|
||||||
|
{"version", no_argument, NULL, 'v'},
|
||||||
{NULL, 0, NULL, 0}
|
{NULL, 0, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
static char opts[] = "hl::fs:";
|
static char opts[] = "hl::fs:v";
|
||||||
|
|
||||||
extern "C" const char *strsigno (int);
|
extern "C" const char *strsigno (int);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
usage (FILE *where = stderr)
|
usage (FILE *where = stderr)
|
||||||
{
|
{
|
||||||
fputs ("usage: kill [-signal] [-s signal] pid1 [pid2 ...]\n"
|
fprintf (where , ""
|
||||||
" kill -l [signal]\n", where);
|
"Usage: %s [-f] [-signal] [-s signal] pid1 [pid2 ...]\n"
|
||||||
|
" %s -l [signal]\n"
|
||||||
|
" -f, --force force, using win32 interface if necessary\n"
|
||||||
|
" -l, --list print a list of signal names\n"
|
||||||
|
" -s, --signal send signal (use %s --list for a list)\n"
|
||||||
|
" -h, --help output usage information and exit\n"
|
||||||
|
" -v, --version output version information and exit\n"
|
||||||
|
"", prog_name, prog_name, prog_name);
|
||||||
exit (where == stderr ? 1 : 0);
|
exit (where == stderr ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
print_version ()
|
||||||
|
{
|
||||||
|
const char *v = strchr (version, ':');
|
||||||
|
int len;
|
||||||
|
if (!v)
|
||||||
|
{
|
||||||
|
v = "?";
|
||||||
|
len = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v += 2;
|
||||||
|
len = strchr (v, ' ') - v;
|
||||||
|
}
|
||||||
|
printf ("\
|
||||||
|
%s (cygwin) %.*s\n\
|
||||||
|
Process Signaller\n\
|
||||||
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.\n\
|
||||||
|
Compiled on %s", prog_name, len, v, __DATE__);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
getsig (const char *in_sig)
|
getsig (const char *in_sig)
|
||||||
{
|
{
|
||||||
@ -65,7 +98,7 @@ test_for_unknown_sig (int sig, const char *sigstr)
|
|||||||
{
|
{
|
||||||
if (sig < 0 || sig > NSIG)
|
if (sig < 0 || sig > NSIG)
|
||||||
{
|
{
|
||||||
fprintf (stderr, "kill: unknown signal: %s\n", sigstr);
|
fprintf (stderr, "%s: unknown signal: %s\n", prog_name, sigstr);
|
||||||
usage ();
|
usage ();
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
@ -111,6 +144,14 @@ main (int argc, char **argv)
|
|||||||
char *gotsig = NULL;
|
char *gotsig = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
prog_name = strrchr (argv[0], '/');
|
||||||
|
if (prog_name == NULL)
|
||||||
|
prog_name = strrchr (argv[0], '\\');
|
||||||
|
if (prog_name == NULL)
|
||||||
|
prog_name = argv[0];
|
||||||
|
else
|
||||||
|
prog_name++;
|
||||||
|
|
||||||
if (argc == 1)
|
if (argc == 1)
|
||||||
usage ();
|
usage ();
|
||||||
|
|
||||||
@ -147,6 +188,9 @@ main (int argc, char **argv)
|
|||||||
case 'h':
|
case 'h':
|
||||||
usage (stdout);
|
usage (stdout);
|
||||||
break;
|
break;
|
||||||
|
case 'v':
|
||||||
|
print_version ();
|
||||||
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
if (gotsig)
|
if (gotsig)
|
||||||
usage ();
|
usage ();
|
||||||
@ -170,7 +214,7 @@ main (int argc, char **argv)
|
|||||||
int pid = strtol (*argv, &p, 10);
|
int pid = strtol (*argv, &p, 10);
|
||||||
if (*p != '\0')
|
if (*p != '\0')
|
||||||
{
|
{
|
||||||
fprintf (stderr, "kill: illegal pid: %s\n", *argv);
|
fprintf (stderr, "%s: illegal pid: %s\n", prog_name, *argv);
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
else if (kill (pid, sig) == 0)
|
else if (kill (pid, sig) == 0)
|
||||||
@ -183,7 +227,7 @@ main (int argc, char **argv)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
char buf[1000];
|
char buf[1000];
|
||||||
sprintf (buf, "kill %d", pid);
|
sprintf (buf, "%s %d", prog_name, pid);
|
||||||
perror (buf);
|
perror (buf);
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user