Annotation of 43BSDReno/kerberosIV/compile_et/error_message.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * $Header: error_message.c,v 1.1 86/11/10 21:34:34 spook Exp $
        !             3:  * $Source: /mit/s/p/spook/Work/et/RCS/error_message.c,v $
        !             4:  * $Locker: spook $
        !             5:  *
        !             6:  * Copyright 1987 by the Student Information Processing Board
        !             7:  * of the Massachusetts Institute of Technology
        !             8:  *
        !             9:  * For copyright info, see "mit-sipb-copyright.h".
        !            10:  */
        !            11: 
        !            12: #include <stdio.h>
        !            13: #include "error_table.h"
        !            14: #include "mit-sipb-copyright.h"
        !            15: extern char *sys_errlist[];
        !            16: extern int sys_nerr;
        !            17: 
        !            18: static char buffer[25];
        !            19: 
        !            20: char *
        !            21: error_message(code)
        !            22:      int code;
        !            23: {
        !            24:      register int offset;
        !            25:      register error_table **et;
        !            26:      register int table_num;
        !            27:      register int div;
        !            28:      register char *cp;
        !            29: 
        !            30:      offset = code & ((1<<ERRCODE_RANGE)-1);
        !            31:      table_num = code - offset;
        !            32:      if ((_et_list == (error_table **)NULL) && table_num)
        !            33:          goto oops;
        !            34:      if (!table_num) {
        !            35:          if (offset < sys_nerr)
        !            36:               return(sys_errlist[offset]);
        !            37:          else
        !            38:               goto oops;
        !            39:      }
        !            40:      for (et = _et_list; *et != (error_table *)NULL; et++) {
        !            41:          if ((*et)->base == table_num) {
        !            42:               /* This is the right table */
        !            43:               if ((*et)->n_msgs <= offset)
        !            44:                    goto oops;
        !            45:               return((*et)->msgs[offset]);
        !            46:          }
        !            47:      }
        !            48:  oops:
        !            49:      cp = buffer;
        !            50:      {
        !            51:          register char *cp1;
        !            52:          for (cp1 = "Unknown code "; *cp1; cp1++, cp++)
        !            53:               *cp = *cp1;
        !            54:          if (table_num) {
        !            55:               for (cp1 = error_table_name(table_num); *cp1; cp1++, cp++)
        !            56:                    *cp = *cp1;
        !            57:               *cp++ = ' ';
        !            58:               *cp = '\0';
        !            59:          }
        !            60:      }
        !            61:      div = 1000000000;
        !            62:      if (offset == 0) {
        !            63:          *cp++ = '0';
        !            64:          *cp = '\0';
        !            65:          return(buffer);
        !            66:      }
        !            67:      while (div > offset)
        !            68:          div /= 10;
        !            69:      do {
        !            70:          register int n = offset / div;
        !            71:          *cp++ = '0' + n;
        !            72:          offset -= n * div;
        !            73:          div /= 10;
        !            74:      } while (offset && div);
        !            75:      while (div) {
        !            76:          *cp++ = '0';
        !            77:          div /= 10;
        !            78:      }
        !            79:      *cp = '\0';
        !            80:      return(buffer);
        !            81: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.