home *** CD-ROM | disk | FTP | other *** search
/ Plex 6 / Plex6.mdf / u_linux / usrfs081.dgz / userfs-0.8-0.8.1.diff
Encoding:
Text File  |  1994-08-23  |  6.9 KB  |  265 lines

  1. Apply this in the genser directory.
  2.  
  3.     J
  4.  
  5. ===================================================================
  6. RCS file: /wrk/cvsroot/genser/coder.h,v
  7. retrieving revision 1.2
  8. diff -u -r1.2 coder.h
  9. --- 1.2    1994/04/08 16:48:38
  10. +++ coder.h    1994/08/22 18:16:38
  11. @@ -4,7 +4,7 @@
  12.  #define __CODER_H_SEEN__
  13.  
  14.  #ifndef __GNUC__
  15. -#define __inline__
  16. +#define __inline__    /* */
  17.  #endif
  18.  
  19.  #ifndef __cplusplus
  20. @@ -21,6 +21,8 @@
  21.  typedef unsigned short Ushort;
  22.  typedef unsigned long Ulong;
  23.  typedef unsigned long Uint;
  24. +typedef unsigned long long Ulonglong;
  25. +typedef long long longlong;
  26.  
  27.  /** char **/
  28.  __inline__ static unsigned char *encode_char(const char *ch, unsigned char *buf)
  29. @@ -146,6 +148,71 @@
  30.      return 4;
  31.  }
  32.  
  33. +/** long long */
  34. +__inline__ static unsigned char *encode_longlong(const long long *l,
  35. +                         unsigned char *buf)
  36. +{
  37. +    register long long lv = *l;
  38. +
  39. +    buf[0] = (lv >> 56) & 0xff;
  40. +    buf[1] = (lv >> 48) & 0xff;
  41. +    buf[2] = (lv >> 40) & 0xff;
  42. +    buf[3] = (lv >> 32) & 0xff;
  43. +    buf[4] = (lv >> 24) & 0xff;
  44. +    buf[5] = (lv >> 16) & 0xff;
  45. +    buf[6] = (lv >> 8)  & 0xff;
  46. +    buf[7] =  lv        & 0xff;
  47. +
  48. +    return buf+8;
  49. +}
  50. +
  51. +__inline__ static unsigned char *decode_longlong(long long *l,
  52. +                         unsigned char *buf)
  53. +{
  54. +#define BUF(x)    ((long long)(buf[x]))
  55. +    *l = (BUF(0) << 56)|(BUF(1) << 48)|(BUF(2) << 40)|(BUF(3) << 32)|
  56. +         (BUF(4) << 24)|(BUF(5) << 16)|(BUF(6) <<  8)|BUF(7);
  57. +#undef BUF
  58. +    return buf+8;
  59. +}
  60. +
  61. +__inline__ static unsigned int sizeof_longlong(const long long *c)
  62. +{
  63. +    return 8;
  64. +}
  65. +
  66. +/** unsigned long long */
  67. +__inline__ static unsigned char *encode_Ulonglong(const unsigned long long *l,
  68. +                          unsigned char *buf)
  69. +{
  70. +    register unsigned long long lv = *l;
  71. +
  72. +    buf[0] = (lv >> 56) & 0xff;
  73. +    buf[1] = (lv >> 48) & 0xff;
  74. +    buf[2] = (lv >> 40) & 0xff;
  75. +    buf[3] = (lv >> 32) & 0xff;
  76. +    buf[4] = (lv >> 24) & 0xff;
  77. +    buf[5] = (lv >> 16) & 0xff;
  78. +    buf[6] = (lv >> 8)  & 0xff;
  79. +    buf[7] =  lv        & 0xff;
  80. +
  81. +    return buf+8;
  82. +}
  83. +
  84. +__inline__ static unsigned char *decode_Ulonglong(unsigned long long *l,
  85. +                          unsigned char *buf)
  86. +{
  87. +#define BUF(x)    ((unsigned long long)(buf[x]))
  88. +    *l = (BUF(0) << 56)|(BUF(1) << 48)|(BUF(2) << 40)|(BUF(3) << 32)|
  89. +         (BUF(4) << 24)|(BUF(5) << 16)|(BUF(6) <<  8)|BUF(7);
  90. +#undef BUF
  91. +    return buf+8;
  92. +}
  93. +
  94. +__inline__ static unsigned int sizeof_Ulonglong(const unsigned long long *c)
  95. +{
  96. +    return 8;
  97. +}
  98.  
  99.  /** void **/
  100.  __inline__ static unsigned char *encode_void(const void *v, unsigned char *buf)
  101. ===================================================================
  102. RCS file: /wrk/cvsroot/genser/genhdr.c,v
  103. retrieving revision 1.5
  104. diff -u -r1.5 genhdr.c
  105. --- 1.5    1994/05/26 06:57:57
  106. +++ genhdr.c    1994/08/23 07:04:51
  107. @@ -43,6 +43,7 @@
  108.          case Char:    str = "char"; break;
  109.          case Short:    str = "short"; break;
  110.          case Long:    str = "long"; break;
  111. +        case LongLong:    str = "long long"; break;
  112.          case Float:    str = "float"; break;
  113.          case Double:    str = "double"; break;
  114.          default:    str = "???"; break;
  115. ===================================================================
  116. RCS file: /wrk/cvsroot/genser/parser.y,v
  117. retrieving revision 1.1
  118. diff -u -r1.1 parser.y
  119. --- 1.1    1994/04/07 11:11:23
  120. +++ parser.y    1994/08/23 07:21:05
  121. @@ -179,34 +179,41 @@
  122.  /* Cruftyness to handle "long int" and "long double" */
  123.  qual_type:    TYPE TYPE
  124.              {
  125. +                Type *t1 = realtype($1);
  126. +                Type *t2 = realtype($2);
  127.                  $$ = NULL;
  128.  
  129. -                if ($1 != long_type && $1 != short_type)
  130. +                if (t1 != long_type && t1 != short_type)
  131.                  {
  132.                      yyerror("Can only qualify with \"long\" or \"short\"");
  133.                      YYERROR;
  134.                  }
  135. -                else if ($2->tclass != Scalar)
  136. +                else if (t2->tclass != Scalar)
  137.                  {
  138.                      yyerror("Can only qualify scalar types");
  139.                      YYERROR;
  140.                  }
  141.                  else
  142.                  {
  143. -                    switch($2->i.scalar_i.size)
  144. +                    switch(t2->i.scalar_i.size)
  145.                      {
  146.                      case Float:
  147. -                        if ($1 == long_type)
  148. +                        if (t1 == long_type)
  149.                          {
  150.                              $$ = double_type;
  151.                              break;
  152.                          }
  153.                      case Long:
  154. -                        if ($1 == short_type)
  155. +                        if (t1 == short_type)
  156.                          {
  157.                              $$ = short_type;
  158.                              break;
  159.                          }
  160. +                        if (t1 == long_type)
  161. +                        {
  162. +                            $$ = longlong_type;
  163. +                            break;
  164. +                        }
  165.  
  166.                      default:    $$ = $2;
  167.                      }
  168. @@ -241,6 +248,7 @@
  169.                      case Char: t = Uchar_type; break;
  170.                      case Short: t = Ushort_type; break;
  171.                      case Long: t = Ulong_type; break;
  172. +                    case LongLong: t = Ulonglong_type; break;
  173.                      default:
  174.                          yyerror("only integral types can be unsigned");
  175.                          YYERROR;
  176. ===================================================================
  177. RCS file: /wrk/cvsroot/genser/symtab.c,v
  178. retrieving revision 1.1
  179. diff -u -r1.1 symtab.c
  180. --- 1.1    1994/04/07 11:11:24
  181. +++ symtab.c    1994/08/23 07:19:47
  182. @@ -179,9 +179,11 @@
  183.      return t;
  184.  }
  185.  
  186. +Type *Ulonglong_type;
  187.  Type *Ulong_type;
  188.  Type *Ushort_type;
  189.  Type *Uchar_type;
  190. +Type *longlong_type;
  191.  Type *long_type;
  192.  Type *short_type;
  193.  Type *char_type;
  194. @@ -217,6 +219,11 @@
  195.      t = Ulong_type = mkscalar(Long, 1);
  196.      t->nocode = 1;
  197.  
  198. +    t = longlong_type = mkscalar(LongLong, 0);
  199. +    t->nocode = t->nohdr = 1;
  200. +    t = Ulonglong_type = mkscalar(LongLong, 1);
  201. +    t->nocode = 1;
  202. +
  203.      t = float_type = mkscalar(Float, 0);
  204.      t->nocode = t->nohdr = 1;
  205.      t = double_type = mkscalar(Double, 1);
  206. @@ -231,6 +238,8 @@
  207.      v->type->nocode = v->type->nohdr = 1;
  208.      global = add(global, v = mktypedef(long_type, "long"));
  209.      v->type->nocode = v->type->nohdr = 1;
  210. +    global = add(global, v = mktypedef(longlong_type, "longlong"));
  211. +    v->type->nocode = v->type->nohdr = 1;
  212.  
  213.      global = add(global, v = mktypedef(float_type, "float"));
  214.      v->type->nocode = v->type->nohdr = 1;
  215. @@ -239,17 +248,19 @@
  216.  
  217.      global = add(global, v = mktypedef(void_type, "void"));
  218.      v->type->nohdr = v->type->nocode = v->type->norep = 1;
  219. -    
  220. +
  221.      global = add(global, v = mktypedef(Uchar_type, "Uchar"));
  222.      v->type->nocode = v->type->nohdr = 1;
  223.      global = add(global, v = mktypedef(Ushort_type, "Ushort"));
  224.      v->type->nocode = v->type->nohdr = 1;
  225.      global = add(global, v = mktypedef(Ulong_type, "Ulong"));
  226.      v->type->nocode = v->type->nohdr = 1;
  227. +    global = add(global, v = mktypedef(Ulonglong_type, "Ulonglong"));
  228. +    v->type->nocode = v->type->nohdr = 1;
  229. +        global = add(global, v=mktypedef(Ulong_type, "Uint"));
  230. +    v->type->demand = v->type->nohdr = v->type->indir = 1;
  231.  
  232.      global = add(global, v=mktypedef(long_type, "int"));
  233. -    v->type->demand = v->type->nohdr = v->type->indir = 1;
  234. -    global = add(global, v=mktypedef(Ulong_type, "Uint"));
  235.      v->type->demand = v->type->nohdr = v->type->indir = 1;
  236.  }
  237.  
  238. ===================================================================
  239. RCS file: /wrk/cvsroot/genser/symtab.h,v
  240. retrieving revision 1.1
  241. diff -u -r1.1 symtab.h
  242. --- 1.1    1994/04/07 11:11:24
  243. +++ symtab.h    1994/08/22 17:09:37
  244. @@ -22,6 +22,7 @@
  245.      Char,
  246.      Short,
  247.      Long,
  248. +    LongLong,
  249.      Float,
  250.      Double
  251.  };
  252. @@ -95,9 +96,11 @@
  253.  Type *realtype(Type *);
  254.  
  255.  /* Standard types */
  256. +extern Type *Ulonglong_type;
  257.  extern Type *Ulong_type;
  258.  extern Type *Ushort_type;
  259.  extern Type *Uchar_type;
  260. +extern Type *longlong_type;
  261.  extern Type *long_type;
  262.  extern Type *short_type;
  263.  extern Type *char_type;
  264.  
  265.