home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / A / PS / PROCPS-0.000 / PROCPS-0 / procps-0.97 / signals.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-16  |  1.2 KB  |  66 lines

  1. /* signals.c - signal name handling */
  2.  
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <ctype.h>
  7. #include "signals.h"
  8.  
  9.  
  10. typedef struct {
  11.     int number;
  12.     char *name;
  13. } SIGNAME;
  14.  
  15.  
  16. static SIGNAME signals[] = {
  17. #include "signames.h"
  18.   { 0,NULL }};
  19.  
  20.  
  21. void list_signals(void)
  22. {
  23.     SIGNAME *walk;
  24.     int col;
  25.  
  26.     col = 0;
  27.     for (walk = signals; walk->name; walk++) {
  28.     if (col+strlen(walk->name)+1 > 80) {
  29.         putchar('\n');
  30.         col = 0;
  31.     }
  32.     printf("%s%s",col ? " " : "",walk->name);
  33.     col += strlen(walk->name)+1;
  34.     }
  35.     putchar('\n');
  36. }
  37.  
  38.  
  39. int get_signal(char *name,char *cmd)
  40. {
  41.     SIGNAME *walk;
  42.  
  43.     if (isdigit(*name))
  44.     return atoi(name);
  45.     for (walk = signals; walk->name; walk++)
  46.     if (!strcmp(walk->name,name)) break;
  47.     if (walk->name) return walk->number;
  48.     fprintf(stderr,"%s: unknown signal; %s -l lists signals.\n",name,cmd);
  49.     exit(1);
  50. }
  51.  
  52. /* get_signal2 is by Michael Shields. 1994/04/25. */
  53. int get_signal2(char *name)
  54. {
  55.     SIGNAME *walk;
  56.  
  57.     if (!name)
  58.         return(-1);
  59.     if (isdigit(*name))
  60.     return atoi(name);
  61.     for (walk = signals; walk->name; walk++)
  62.         if (!strcmp(walk->name,name))
  63.             return(walk->number);
  64.     return(-1);
  65. }
  66.