home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / misc / UUDecoder.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.2 KB  |  144 lines

  1. package sun.misc;
  2.  
  3. import java.io.IOException;
  4. import java.io.OutputStream;
  5. import java.io.PushbackInputStream;
  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(PushbackInputStream var1, OutputStream var2, int var3) throws IOException {
  21.       StringBuffer var12 = 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.          var12.append((char)var5);
  30.          this.decoderBuffer[var4] = (byte)(var5 - 32 & 63);
  31.       }
  32.  
  33.       int var9 = this.decoderBuffer[0] << 2 & 252 | this.decoderBuffer[1] >>> 4 & 3;
  34.       int var10 = this.decoderBuffer[1] << 4 & 240 | this.decoderBuffer[2] >>> 2 & 15;
  35.       int var11 = this.decoderBuffer[2] << 6 & 192 | this.decoderBuffer[3] & 63;
  36.       var2.write((byte)(var9 & 255));
  37.       if (var3 > 1) {
  38.          var2.write((byte)(var10 & 255));
  39.       }
  40.  
  41.       if (var3 > 2) {
  42.          var2.write((byte)(var11 & 255));
  43.       }
  44.  
  45.    }
  46.  
  47.    protected void decodeBufferPrefix(PushbackInputStream 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.                if (var3 == 13) {
  79.                   var3 = var1.read();
  80.                   if (var3 != 10 && var3 != -1) {
  81.                      var1.unread(var3);
  82.                   }
  83.                }
  84.  
  85.                return;
  86.             }
  87.          }
  88.  
  89.          var6 = var3 == 10 || var3 == 13;
  90.       }
  91.    }
  92.  
  93.    protected int decodeLinePrefix(PushbackInputStream var1, OutputStream var2) throws IOException {
  94.       int var3 = var1.read();
  95.       if (var3 == 32) {
  96.          var3 = var1.read();
  97.          var3 = var1.read();
  98.          if (var3 != 10 && var3 != -1) {
  99.             var1.unread(var3);
  100.          }
  101.  
  102.          throw new CEStreamExhausted();
  103.       } else if (var3 == -1) {
  104.          throw new CEFormatException("UUDecoder: Short Buffer.");
  105.       } else {
  106.          var3 = var3 - 32 & 63;
  107.          if (var3 > this.bytesPerLine()) {
  108.             throw new CEFormatException("UUDecoder: Bad Line Length.");
  109.          } else {
  110.             return var3;
  111.          }
  112.       }
  113.    }
  114.  
  115.    protected void decodeLineSuffix(PushbackInputStream var1, OutputStream var2) throws IOException {
  116.       while(true) {
  117.          int var3 = var1.read();
  118.          if (var3 == -1) {
  119.             throw new CEStreamExhausted();
  120.          }
  121.  
  122.          if (var3 != 10) {
  123.             if (var3 != 13) {
  124.                continue;
  125.             }
  126.  
  127.             var3 = var1.read();
  128.             if (var3 != 10 && var3 != -1) {
  129.                var1.unread(var3);
  130.             }
  131.          }
  132.  
  133.          return;
  134.       }
  135.    }
  136.  
  137.    protected void decodeBufferSuffix(PushbackInputStream var1, OutputStream var2) throws IOException {
  138.       var1.read(this.decoderBuffer);
  139.       if (this.decoderBuffer[0] != 101 || this.decoderBuffer[1] != 110 || this.decoderBuffer[2] != 100) {
  140.          throw new CEFormatException("UUDecoder: Missing 'end' line.");
  141.       }
  142.    }
  143. }
  144.