}
/* return -1 on failure */
-int signal_name_to_number(char *name){
- const mapstruct *ptr;
- mapstruct ms;
+int signal_name_to_number(const char *restrict name){
long val;
- char *endp;
int offset;
/* clean up name */
if(!strcasecmp(name,"IOT")) return SIGABRT;
/* search the table */
- ms.name = name;
- ptr = bsearch(&ms, sigtable, number_of_signals,
- sizeof(mapstruct), compare_signal_names
- );
- if(ptr) return ptr->num;
+ {
+ const mapstruct ms = {name,0};
+ const mapstruct *restrict const ptr = bsearch(
+ &ms,
+ sigtable,
+ number_of_signals,
+ sizeof(mapstruct),
+ compare_signal_names
+ );
+ if(ptr) return ptr->num;
+ }
if(!strcasecmp(name,"RTMIN")) return SIGRTMIN;
if(!strcasecmp(name,"EXIT")) return 0;
}
/* not found, so try as a number */
- val = strtol(name,&endp,10);
- if(*endp || endp==name) return -1; /* not valid */
+ {
+ char *endp;
+ val = strtol(name,&endp,10);
+ if(*endp || endp==name) return -1; /* not valid */
+ }
if(val+SIGRTMIN>127) return -1; /* not valid */
return val+offset;
}
return buf;
}
-int print_given_signals(int argc, char *argv[], int max_line){
+int print_given_signals(int argc, const char **argv, int max_line){
char buf[1280]; /* 128 signals, "RTMIN+xx" is largest */
int ret = 0; /* to be used as exit code by caller */
int place = 0; /* position on this line */
if(argc > 128) return 1;
while(argc--){
char tmpbuf[16];
- char *txt; /* convenient alias */
- txt = *argv;
+ const char *restrict const txt = *argv;
if(*txt >= '0' && *txt <= '9'){
long val;
char *endp;
* GNU Library General Public License for more details.
*/
+#include "procps.h"
+
/* return -1 on failure */
-extern int signal_name_to_number(char *name);
+extern int signal_name_to_number(const char *restrict name);
-extern int print_given_signals(int argc, char *argv[], int max_line);
+extern int print_given_signals(int argc, const char **argv, int max_line);
extern void pretty_print_signals(void);
static int my_pid;
static int saved_argc;
-static char **saved_argv;
static int sig_or_pri;
}
/***** kill */
-static void kill_main(int argc, const char *restrict argv[]){
+static void kill_main(int argc, const char *restrict const *restrict argv){
const char *sigptr;
int signo = SIGTERM;
int exitvalue = 0;
/***** common skill/snice argument parsing code */
#define NO_PRI_VAL ((int)0xdeafbeef)
-static void skillsnice_parse(int argc, char *argv[]){
+static void skillsnice_parse(int argc, const char *restrict const *restrict argv){
int signo = -1;
int prino = NO_PRI_VAL;
int force = 0;
int num_found = 0;
- char *argptr;
+ const char *restrict argptr;
if(argc<2) skillsnice_usage();
if(argc==2 && argv[1][0]=='-'){
if(!strcmp(argv[1],"-L")){
int main(int argc, char *argv[]){
char *tmpstr;
my_pid = getpid();
- saved_argv = argv;
saved_argc = argc;
if(!argc){
fprintf(stderr,"ERROR: could not determine own name.\n");
#include <dirent.h>
#include <string.h>
#include <errno.h>
+#include "proc/procps.h"
/*
* Additional types we might need.
* Handle our own memory stuff without the risk of leaving the
* user's terminal in an ugly state should things go sour. */
-static void *alloc_c (unsigned numb) MALLOC
+static void *alloc_c (unsigned numb) MALLOC;
+static void *alloc_c (unsigned numb)
{
void * p;
return p;
}
-
-static void *alloc_r (void *q, unsigned numb) MALLOC
+static void *alloc_r (void *q, unsigned numb) MALLOC;
+static void *alloc_r (void *q, unsigned numb)
{
void *p;
////////////////////////////////////////////////////////////////////////
-static void getrunners(unsigned int *restirct running, unsigned int *restrict blocked) {
+static void getrunners(unsigned int *restrict running, unsigned int *restrict blocked) {
static struct direct *ent;
DIR *proc;