[BACK]Return to mksubr CVS log [TXT][DIR] Up to [local] / src / usr.bin / kdump

Diff for /src/usr.bin/kdump/mksubr between version 1.16 and 1.17

version 1.16, 2013/07/01 17:16:46 version 1.17, 2013/07/03 23:04:34
Line 278 
Line 278 
   
 #include "kdump_subr.h"  #include "kdump_subr.h"
   
 /*  
  * These are simple support macros. print_or utilizes a variable  
  * defined in the calling function to track whether or not it should  
  * print a logical-OR character ('|') before a string. if_print_or  
  * simply handles the necessary "if" statement used in many lines  
  * of this file.  
  */  
 #define print_or(str,orflag) do {                  \\  
         if (orflag) putchar('|'); else orflag = 1; \\  
         printf ("%s", str); }                      \\  
         while (0)  
 #define if_print_or(i,flag,orflag) do {            \\  
         if ((i & flag) == flag)                    \\  
         print_or(#flag,orflag); }                  \\  
         while (0)  
   
 /* MANUAL */  
 extern const char *const sys_signame[NSIG];  
 void  
 signame (int sig)  
 {  
         if (sig > 0 && sig < NSIG)  
                 (void)printf("SIG%s", sys_signame[sig]);  
         else  
                 (void)printf("SIG %d", sig);  
 }  
   
 /* MANUAL */  
 void  
 sigset (int ss)  
 {  
         int     or = 0;  
         int     cnt = 0;  
         int     i;  
   
         for (i = 1; i < NSIG; i++)  
                 if (sigismember(&ss, i))  
                         cnt++;  
         if (cnt > (NSIG-1)/2) {  
                 ss = ~ss;  
                 putchar('~');  
         }  
   
         if (ss == 0) {  
                 (void)printf("0<>");  
                 return;  
         }  
   
         printf("%#x<", ss);  
         for (i = 1; i < NSIG; i++)  
                 if (sigismember(&ss, i)) {  
                         if (or) putchar('|'); else or=1;  
                         signame(i);  
                 }  
         printf(">");  
 }  
   
 /* MANUAL */  
 void  
 semctlname (int cmd)  
 {  
         switch (cmd) {  
         case GETNCNT:  
                 (void)printf("GETNCNT");  
                 break;  
         case GETPID:  
                 (void)printf("GETPID");  
                 break;  
         case GETVAL:  
                 (void)printf("GETVAL");  
                 break;  
         case GETALL:  
                 (void)printf("GETALL");  
                 break;  
         case GETZCNT:  
                 (void)printf("GETZCNT");  
                 break;  
         case SETVAL:  
                 (void)printf("SETVAL");  
                 break;  
         case SETALL:  
                 (void)printf("SETALL");  
                 break;  
         case IPC_RMID:  
                 (void)printf("IPC_RMID");  
                 break;  
         case IPC_SET:  
                 (void)printf("IPC_SET");  
                 break;  
         case IPC_STAT:  
                 (void)printf("IPC_STAT");  
                 break;  
         default: /* Should not reach */  
                 (void)printf("<invalid=%ld>", (long)cmd);  
         }  
 }  
   
 /* MANUAL */  
 void  
 shmctlname (int cmd) {  
         switch (cmd) {  
         case IPC_RMID:  
                 (void)printf("IPC_RMID");  
                 break;  
         case IPC_SET:  
                 (void)printf("IPC_SET");  
                 break;  
         case IPC_STAT:  
                 (void)printf("IPC_STAT");  
                 break;  
         default: /* Should not reach */  
                 (void)printf("<invalid=%ld>", (long)cmd);  
         }  
 }  
   
 /* MANUAL */  
 void  
 semgetname (int flag) {  
         int     or = 0;  
         if_print_or(flag, IPC_CREAT, or);  
         if_print_or(flag, IPC_EXCL, or);  
         if_print_or(flag, SEM_R, or);  
         if_print_or(flag, SEM_A, or);  
         if_print_or(flag, (SEM_R>>3), or);  
         if_print_or(flag, (SEM_A>>3), or);  
         if_print_or(flag, (SEM_R>>6), or);  
         if_print_or(flag, (SEM_A>>6), or);  
 }  
   
 /*  
  * MANUAL  
  *  
  * Only used by SYS_open. Unless O_CREAT is set in flags, the  
  * mode argument is unused (and often bogus and misleading).  
  */  
 void  
 flagsandmodename (int flags, int mode) {  
         flagsname (flags);  
         if ((flags & O_CREAT) == O_CREAT) {  
                 (void)putchar(',');  
                 modename (mode);  
         } else if (!fancy) {  
                 (void)putchar(',');  
                 if (decimal) {  
                         (void)printf("<unused>%ld", (long)mode);  
                 } else {  
                         (void)printf("<unused>%#lx", (long)mode);  
                 }  
         }  
 }  
   
 void  
 clockname (int clockid)  
 {  
         clocktypename(__CLOCK_TYPE(clockid));  
         if (__CLOCK_PTID(clockid) != 0)  
                 printf("(%d)", __CLOCK_PTID(clockid));  
 }  
   
 /*  
  * MANUAL  
  *  
  * [g|s]etsockopt's level argument can either be SOL_SOCKET or a value  
  * referring to a line in /etc/protocols . It might be appropriate  
  * to use getprotoent(3) here.  
  */  
 void  
 sockoptlevelname (int level)  
 {  
         if (level == SOL_SOCKET) {  
                 (void)printf("SOL_SOCKET");  
         } else {  
                 if (decimal) {  
                         (void)printf("%ld", (long)level);  
                 } else {  
                         (void)printf("%#lx", (long)level);  
                 }  
         }  
 }  
   
 _EOF_  _EOF_
   
 auto_orz_type "modename" "S_[A-Z]+[[:space:]]+[0-6]{7}" "sys/stat.h"  auto_orz_type "modename" "S_[A-Z]+[[:space:]]+[0-6]{7}" "sys/stat.h"

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17