home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / misc / UUDecoder.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  2.5 KB  |  121 lines

  1. package sun.misc;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6.  
  7. public class UUDecoder extends CharacterDecoder {
  8.    public String bufferName;
  9.    public int mode;
  10.    private byte[] decoderBuffer = new byte[4];
  11.  
  12.    protected int bytesPerAtom() {
  13.       return 3;
  14.    }
  15.  
  16.    protected int bytesPerLine() {
  17.       return 45;
  18.    }
  19.  
  20.    protected void decodeAtom(InputStream var1, OutputStream var2, int var3) throws IOException {
  21.       StringBuffer var9 = new StringBuffer();
  22.  
  23.       for(int var4 = 0; var4 < 4; ++var4) {
  24.          int var5 = var1.read();
  25.          if (var5 == -1) {
  26.             throw new CEStreamExhausted();
  27.          }
  28.  
  29.          var9.append((char)var5);
  30.          this.decoderBuffer[var4] = (byte)(var5 - 32 & 63);
  31.       }
  32.  
  33.       int var6 = this.decoderBuffer[0] << 2 & 252 | this.decoderBuffer[1] >>> 4 & 3;
  34.       int var7 = this.decoderBuffer[1] << 4 & 240 | this.decoderBuffer[2] >>> 2 & 15;
  35.       int var8 = this.decoderBuffer[2] << 6 & 192 | this.decoderBuffer[3] & 63;
  36.       var2.write((byte)(var6 & 255));
  37.       if (var3 > 1) {
  38.          var2.write((byte)(var7 & 255));
  39.       }
  40.  
  41.       if (var3 > 2) {
  42.          var2.write((byte)(var8 & 255));
  43.       }
  44.  
  45.    }
  46.  
  47.    protected void decodeBufferPrefix(InputStream var1, OutputStream var2) throws IOException {
  48.       StringBuffer var4 = new StringBuffer(32);
  49.       boolean var6 = true;
  50.  
  51.       while(true) {
  52.          int var3 = var1.read();
  53.          if (var3 == -1) {
  54.             throw new CEFormatException("UUDecoder: No begin line.");
  55.          }
  56.  
  57.          if (var3 == 98 && var6) {
  58.             var3 = var1.read();
  59.             if (var3 == 101) {
  60.                while(var3 != 10 && var3 != 13) {
  61.                   var3 = var1.read();
  62.                   if (var3 == -1) {
  63.                      throw new CEFormatException("UUDecoder: No begin line.");
  64.                   }
  65.  
  66.                   if (var3 != 10 && var3 != 13) {
  67.                      var4.append((char)var3);
  68.                   }
  69.                }
  70.  
  71.                String var5 = var4.toString();
  72.                if (var5.indexOf(32) != 3) {
  73.                   throw new CEFormatException("UUDecoder: Malformed begin line.");
  74.                }
  75.  
  76.                this.mode = Integer.parseInt(var5.substring(4, 7));
  77.                this.bufferName = var5.substring(var5.indexOf(32, 6) + 1);
  78.                return;
  79.             }
  80.          }
  81.  
  82.          var6 = var3 == 10 || var3 == 13;
  83.       }
  84.    }
  85.  
  86.    protected int decodeLinePrefix(InputStream var1, OutputStream var2) throws IOException {
  87.       int var3 = var1.read();
  88.       if (var3 == 32) {
  89.          var3 = var1.read();
  90.          throw new CEStreamExhausted();
  91.       } else if (var3 == -1) {
  92.          throw new CEFormatException("UUDecoder: Short Buffer.");
  93.       } else {
  94.          var3 = var3 - 32 & 63;
  95.          if (var3 > this.bytesPerLine()) {
  96.             throw new CEFormatException("UUDecoder: Bad Line Length.");
  97.          } else {
  98.             return var3;
  99.          }
  100.       }
  101.    }
  102.  
  103.    protected void decodeLineSuffix(InputStream var1, OutputStream var2) throws IOException {
  104.       int var3;
  105.       do {
  106.          var3 = var1.read();
  107.          if (var3 == -1) {
  108.             throw new CEStreamExhausted();
  109.          }
  110.       } while(var3 != 10);
  111.  
  112.    }
  113.  
  114.    protected void decodeBufferSuffix(InputStream var1, OutputStream var2) throws IOException {
  115.       var1.read(this.decoderBuffer);
  116.       if (this.decoderBuffer[0] != 101 || this.decoderBuffer[1] != 110 || this.decoderBuffer[2] != 100) {
  117.          throw new CEFormatException("UUDecoder: Missing 'end' line.");
  118.       }
  119.    }
  120. }
  121.