add signal name lookup support
This commit is contained in:
		
							parent
							
								
									247937d0bb
								
							
						
					
					
						commit
						123e14e283
					
				@ -318,6 +318,24 @@ JNIEXPORT void SIGAR_JNIx(kill)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					JNIEXPORT jint SIGAR_JNIx(getSigNum)
 | 
				
			||||||
 | 
					(JNIEnv *env, jclass cls_obj, jstring jname)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    jboolean is_copy;
 | 
				
			||||||
 | 
					    const char *name;
 | 
				
			||||||
 | 
					    int num;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    name = JENV->GetStringUTFChars(env, jname, &is_copy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    num = sigar_signum_get((char *)name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (is_copy) {
 | 
				
			||||||
 | 
					        JENV->ReleaseStringUTFChars(env, jname, name);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return num;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SetStringField(env, obj, fieldID, val) \
 | 
					#define SetStringField(env, obj, fieldID, val) \
 | 
				
			||||||
    SetObjectField(env, obj, fieldID, JENV->NewStringUTF(env, val))
 | 
					    SetObjectField(env, obj, fieldID, JENV->NewStringUTF(env, val))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -241,6 +241,37 @@ public class Sigar implements SigarProxy {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public native void kill(long pid, int signum) throws SigarException;
 | 
					    public native void kill(long pid, int signum) throws SigarException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Send a signal to a process.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param pid The process id.
 | 
				
			||||||
 | 
					     * @param signum The signal name.
 | 
				
			||||||
 | 
					     * @exception SigarException on failure.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void kill(long pid, String signame) throws SigarException {
 | 
				
			||||||
 | 
					        int signum;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (Character.isDigit(signame.charAt(0))) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                signum = Integer.parseInt(signame);
 | 
				
			||||||
 | 
					            } catch (NumberFormatException e) {
 | 
				
			||||||
 | 
					                signum = -1;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            signum = getSigNum(signame);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (signum < 0) {
 | 
				
			||||||
 | 
					            throw new SigarException(signame +
 | 
				
			||||||
 | 
					                                     ": invalid signal specification");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        kill(pid, signum);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static native int getSigNum(String name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Send a signal to a process.
 | 
					     * Send a signal to a process.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 | 
				
			|||||||
@ -50,18 +50,13 @@ public class Kill extends SigarCommandBase {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void output(String[] args) throws SigarException {
 | 
					    public void output(String[] args) throws SigarException {
 | 
				
			||||||
        int signum = 15; //SIGTERM
 | 
					        String signal = "SIGTERM";
 | 
				
			||||||
        long[] pids;
 | 
					        long[] pids;
 | 
				
			||||||
        String query;
 | 
					        String query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (args.length == 2) {
 | 
					        if (args.length == 2) {
 | 
				
			||||||
 | 
					            signal = args[0];
 | 
				
			||||||
            query = args[1];
 | 
					            query = args[1];
 | 
				
			||||||
            try {
 | 
					 | 
				
			||||||
                signum = Integer.parseInt(args[0]);
 | 
					 | 
				
			||||||
            } catch (NumberFormatException e) {
 | 
					 | 
				
			||||||
                //XXX convert SIGFOO to number
 | 
					 | 
				
			||||||
                throw new SigarException(e.getMessage());
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
            query = args[0];
 | 
					            query = args[0];
 | 
				
			||||||
@ -70,8 +65,8 @@ public class Kill extends SigarCommandBase {
 | 
				
			|||||||
        pids = this.shell.findPids(new String[] { query });
 | 
					        pids = this.shell.findPids(new String[] { query });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (int i=0; i<pids.length; i++) {
 | 
					        for (int i=0; i<pids.length; i++) {
 | 
				
			||||||
            println("kill " + signum + " " + pids[i]);
 | 
					            println("kill " + signal + " " + pids[i]);
 | 
				
			||||||
            this.sigar.kill(pids[i], signum);
 | 
					            this.sigar.kill(pids[i], signal);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -90,6 +90,8 @@ SIGAR_DECLARE(sigar_pid_t) sigar_pid_get(sigar_t *sigar);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
SIGAR_DECLARE(int) sigar_proc_kill(sigar_pid_t pid, int signum);
 | 
					SIGAR_DECLARE(int) sigar_proc_kill(sigar_pid_t pid, int signum);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SIGAR_DECLARE(int) sigar_signum_get(char *name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SIGAR_DECLARE(char *) sigar_strerror(sigar_t *sigar, int err);
 | 
					SIGAR_DECLARE(char *) sigar_strerror(sigar_t *sigar, int err);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* system memory info */
 | 
					/* system memory info */
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										40
									
								
								src/sigar.c
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								src/sigar.c
									
									
									
									
									
								
							@ -16,7 +16,6 @@
 | 
				
			|||||||
 * USA.
 | 
					 * USA.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <errno.h>
 | 
					#include <errno.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sigar.h"
 | 
					#include "sigar.h"
 | 
				
			||||||
@ -24,10 +23,6 @@
 | 
				
			|||||||
#include "sigar_util.h"
 | 
					#include "sigar_util.h"
 | 
				
			||||||
#include "sigar_os.h"
 | 
					#include "sigar_os.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef WIN32
 | 
					 | 
				
			||||||
#include <signal.h>
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SIGAR_DECLARE(int) sigar_open(sigar_t **sigar)
 | 
					SIGAR_DECLARE(int) sigar_open(sigar_t **sigar)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int status = sigar_os_open(sigar);
 | 
					    int status = sigar_os_open(sigar);
 | 
				
			||||||
@ -67,41 +62,6 @@ SIGAR_DECLARE(sigar_pid_t) sigar_pid_get(sigar_t *sigar)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SIGAR_DECLARE(int) sigar_proc_kill(sigar_pid_t pid, int signum)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
#ifdef WIN32
 | 
					 | 
				
			||||||
    int status = -1;
 | 
					 | 
				
			||||||
    HANDLE proc =
 | 
					 | 
				
			||||||
        OpenProcess(PROCESS_ALL_ACCESS,
 | 
					 | 
				
			||||||
                    TRUE, (DWORD)pid);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (proc) {
 | 
					 | 
				
			||||||
        switch (signum) {
 | 
					 | 
				
			||||||
          case 0:
 | 
					 | 
				
			||||||
            status = SIGAR_OK;
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
          default:
 | 
					 | 
				
			||||||
            if (TerminateProcess(proc, signum)) {
 | 
					 | 
				
			||||||
                status = SIGAR_OK;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        CloseHandle(proc);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (status == SIGAR_OK) {
 | 
					 | 
				
			||||||
            return SIGAR_OK;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return GetLastError();
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    if (kill(pid, signum) == -1) {
 | 
					 | 
				
			||||||
        return errno;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return SIGAR_OK;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static char *sigar_error_string(int err)
 | 
					static char *sigar_error_string(int err)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    switch (err) {
 | 
					    switch (err) {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										219
									
								
								src/sigar_signal.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										219
									
								
								src/sigar_signal.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,219 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
 | 
				
			||||||
 | 
					 * This file is part of SIGAR.
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * SIGAR is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms version 2 of the GNU General Public License as
 | 
				
			||||||
 | 
					 * published by the Free Software Foundation. This program is distributed
 | 
				
			||||||
 | 
					 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
				
			||||||
 | 
					 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
				
			||||||
 | 
					 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
				
			||||||
 | 
					 * details.
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					 * along with this program; if not, write to the Free Software
 | 
				
			||||||
 | 
					 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
				
			||||||
 | 
					 * USA.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sigar.h"
 | 
				
			||||||
 | 
					#include "sigar_private.h"
 | 
				
			||||||
 | 
					#include "sigar_util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef WIN32
 | 
				
			||||||
 | 
					#include <windows.h>
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#include <signal.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <errno.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SIGAR_DECLARE(int) sigar_proc_kill(sigar_pid_t pid, int signum)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifdef WIN32
 | 
				
			||||||
 | 
					    int status = -1;
 | 
				
			||||||
 | 
					    HANDLE proc =
 | 
				
			||||||
 | 
					        OpenProcess(PROCESS_ALL_ACCESS,
 | 
				
			||||||
 | 
					                    TRUE, (DWORD)pid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (proc) {
 | 
				
			||||||
 | 
					        switch (signum) {
 | 
				
			||||||
 | 
					          case 0:
 | 
				
			||||||
 | 
					            status = SIGAR_OK;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					          default:
 | 
				
			||||||
 | 
					            if (TerminateProcess(proc, signum)) {
 | 
				
			||||||
 | 
					                status = SIGAR_OK;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        CloseHandle(proc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (status == SIGAR_OK) {
 | 
				
			||||||
 | 
					            return SIGAR_OK;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return GetLastError();
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    if (kill(pid, signum) == -1) {
 | 
				
			||||||
 | 
					        return errno;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return SIGAR_OK;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SIGAR_DECLARE(int) sigar_signum_get(char *name)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (strnEQ(name, "SIG", 3)) {
 | 
				
			||||||
 | 
					        name += 3;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    switch (*name) {
 | 
				
			||||||
 | 
					      case 'A':
 | 
				
			||||||
 | 
					#ifdef SIGABRT
 | 
				
			||||||
 | 
					        if (strEQ(name, "ABRT")) return SIGABRT;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGALRM
 | 
				
			||||||
 | 
					        if (strEQ(name, "ALRM")) return SIGALRM;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'B':
 | 
				
			||||||
 | 
					#ifdef SIGBUS
 | 
				
			||||||
 | 
					        if (strEQ(name, "BUS")) return SIGBUS;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'C':
 | 
				
			||||||
 | 
					#ifdef SIGCONT
 | 
				
			||||||
 | 
					        if (strEQ(name, "CONT")) return SIGCONT;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGCHLD
 | 
				
			||||||
 | 
					        if (strEQ(name, "CHLD")) return SIGCHLD;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGCLD
 | 
				
			||||||
 | 
					        if (strEQ(name, "CLD")) return SIGCLD;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'E':
 | 
				
			||||||
 | 
					#ifdef SIGEMT
 | 
				
			||||||
 | 
					        if (strEQ(name, "EMT")) return SIGEMT;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'F':
 | 
				
			||||||
 | 
					#ifdef SIGFPE
 | 
				
			||||||
 | 
					        if (strEQ(name, "FPE")) return SIGFPE;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'H':
 | 
				
			||||||
 | 
					#ifdef SIGHUP
 | 
				
			||||||
 | 
					        if (strEQ(name, "HUP")) return SIGHUP;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'I':
 | 
				
			||||||
 | 
					#ifdef SIGINT
 | 
				
			||||||
 | 
					        if (strEQ(name, "INT")) return SIGINT;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGILL
 | 
				
			||||||
 | 
					        if (strEQ(name, "ILL")) return SIGILL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGIOT
 | 
				
			||||||
 | 
					        if (strEQ(name, "IOT")) return SIGIOT;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGIO
 | 
				
			||||||
 | 
					        if (strEQ(name, "IO")) return SIGIO;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGINFO
 | 
				
			||||||
 | 
					        if (strEQ(name, "INFO")) return SIGINFO;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'K':
 | 
				
			||||||
 | 
					#ifdef SIGKILL
 | 
				
			||||||
 | 
					        if (strEQ(name, "KILL")) return SIGKILL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'P':
 | 
				
			||||||
 | 
					#ifdef SIGPOLL
 | 
				
			||||||
 | 
					        if (strEQ(name, "POLL")) return SIGPOLL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGPIPE
 | 
				
			||||||
 | 
					        if (strEQ(name, "PIPE")) return SIGPIPE;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGPROF
 | 
				
			||||||
 | 
					        if (strEQ(name, "PROF")) return SIGPROF;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGPWR
 | 
				
			||||||
 | 
					        if (strEQ(name, "PWR")) return SIGPWR;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'Q':
 | 
				
			||||||
 | 
					#ifdef SIGQUIT
 | 
				
			||||||
 | 
					        if (strEQ(name, "QUIT")) return SIGQUIT;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'S':
 | 
				
			||||||
 | 
					#ifdef SIGSEGV
 | 
				
			||||||
 | 
					        if (strEQ(name, "SEGV")) return SIGSEGV;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGSYS
 | 
				
			||||||
 | 
					        if (strEQ(name, "SYS")) return SIGSYS;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGSTOP
 | 
				
			||||||
 | 
					        if (strEQ(name, "STOP")) return SIGSTOP;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGSTKFLT
 | 
				
			||||||
 | 
					        if (strEQ(name, "STKFLT")) return SIGSTKFLT;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'T':
 | 
				
			||||||
 | 
					#ifdef SIGTRAP
 | 
				
			||||||
 | 
					        if (strEQ(name, "TRAP")) return SIGTRAP;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGTERM
 | 
				
			||||||
 | 
					        if (strEQ(name, "TERM")) return SIGTERM;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGTSTP
 | 
				
			||||||
 | 
					        if (strEQ(name, "TSTP")) return SIGTSTP;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGTTIN
 | 
				
			||||||
 | 
					        if (strEQ(name, "TTIN")) return SIGTTIN;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGTTOU
 | 
				
			||||||
 | 
					        if (strEQ(name, "TTOU")) return SIGTTOU;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'U':
 | 
				
			||||||
 | 
					#ifdef SIGURG
 | 
				
			||||||
 | 
					        if (strEQ(name, "URG")) return SIGURG;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGUSR1
 | 
				
			||||||
 | 
					        if (strEQ(name, "USR1")) return SIGUSR1;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGUSR2
 | 
				
			||||||
 | 
					        if (strEQ(name, "USR2")) return SIGUSR2;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'V':
 | 
				
			||||||
 | 
					#ifdef SIGVTALRM
 | 
				
			||||||
 | 
					        if (strEQ(name, "VTALRM")) return SIGVTALRM;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'W':
 | 
				
			||||||
 | 
					#ifdef SIGWINCH
 | 
				
			||||||
 | 
					        if (strEQ(name, "WINCH")) return SIGWINCH;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      case 'X':
 | 
				
			||||||
 | 
					#ifdef SIGXCPU
 | 
				
			||||||
 | 
					        if (strEQ(name, "XCPU")) return SIGXCPU;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef SIGXFSZ
 | 
				
			||||||
 | 
					        if (strEQ(name, "XFSZ")) return SIGXFSZ;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					      default:
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user