home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / net / www / MimeLauncher.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.1 KB  |  156 lines

  1. package sun.net.www;
  2.  
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.OutputStream;
  8. import java.net.URL;
  9. import java.net.URLConnection;
  10. import java.security.AccessController;
  11. import java.util.StringTokenizer;
  12. import sun.security.action.GetPropertyAction;
  13.  
  14. class MimeLauncher extends Thread {
  15.    // $FF: renamed from: uc java.net.URLConnection
  16.    URLConnection field_0;
  17.    // $FF: renamed from: m sun.net.www.MimeEntry
  18.    MimeEntry field_1;
  19.    String genericTempFileTemplate;
  20.    // $FF: renamed from: is java.io.InputStream
  21.    InputStream field_2;
  22.    String execPath;
  23.  
  24.    MimeLauncher(MimeEntry var1, URLConnection var2, InputStream var3, String var4, String var5) throws ApplicationLaunchException {
  25.       super(var5);
  26.       this.field_1 = var1;
  27.       this.field_0 = var2;
  28.       this.field_2 = var3;
  29.       this.genericTempFileTemplate = var4;
  30.       String var6 = this.field_1.getLaunchString();
  31.       if (!this.findExecutablePath(var6)) {
  32.          int var8 = var6.indexOf(32);
  33.          String var7;
  34.          if (var8 != -1) {
  35.             var7 = var6.substring(0, var8);
  36.          } else {
  37.             var7 = var6;
  38.          }
  39.  
  40.          throw new ApplicationLaunchException(var7);
  41.       }
  42.    }
  43.  
  44.    protected String getTempFileName(URL var1, String var2) {
  45.       int var4 = var2.lastIndexOf("%s");
  46.       String var5 = var2.substring(0, var4);
  47.       String var6 = "";
  48.       if (var4 < var2.length() - 2) {
  49.          var6 = var2.substring(var4 + 2);
  50.       }
  51.  
  52.       long var7 = System.currentTimeMillis() / 1000L;
  53.  
  54.       int var13;
  55.       for(var13 = 0; (var13 = var5.indexOf("%s")) >= 0; var5 = var5.substring(0, var13) + var7 + var5.substring(var13 + 2)) {
  56.       }
  57.  
  58.       String var10 = var1.getFile();
  59.       String var11 = "";
  60.       int var12 = var10.lastIndexOf(46);
  61.       if (var12 >= 0 && var12 > var10.lastIndexOf(47)) {
  62.          var11 = var10.substring(var12);
  63.       }
  64.  
  65.       var10 = "HJ" + var1.hashCode();
  66.       String var3 = var5 + var10 + var7 + var11 + var6;
  67.       return var3;
  68.    }
  69.  
  70.    public void run() {
  71.       try {
  72.          String var1 = this.field_1.getTempFileTemplate();
  73.          if (var1 == null) {
  74.             var1 = this.genericTempFileTemplate;
  75.          }
  76.  
  77.          var1 = this.getTempFileName(this.field_0.getURL(), var1);
  78.  
  79.          try {
  80.             FileOutputStream var2 = new FileOutputStream(var1);
  81.             byte[] var3 = new byte[2048];
  82.             int var4 = 0;
  83.  
  84.             try {
  85.                while((var4 = this.field_2.read(var3)) >= 0) {
  86.                   ((OutputStream)var2).write(var3, 0, var4);
  87.                }
  88.             } catch (IOException var12) {
  89.             } finally {
  90.                ((OutputStream)var2).close();
  91.                this.field_2.close();
  92.             }
  93.          } catch (IOException var14) {
  94.          }
  95.  
  96.          int var17 = 0;
  97.  
  98.          String var20;
  99.          for(var20 = this.execPath; (var17 = var20.indexOf("%t")) >= 0; var20 = var20.substring(0, var17) + this.field_0.getContentType() + var20.substring(var17 + 2)) {
  100.          }
  101.  
  102.          boolean var22;
  103.          for(var22 = false; (var17 = var20.indexOf("%s")) >= 0; var22 = true) {
  104.             var20 = var20.substring(0, var17) + var1 + var20.substring(var17 + 2);
  105.          }
  106.  
  107.          if (!var22) {
  108.             var20 = var20 + " <" + var1;
  109.          }
  110.  
  111.          Runtime.getRuntime().exec(var20);
  112.       } catch (IOException var15) {
  113.       }
  114.  
  115.    }
  116.  
  117.    private boolean findExecutablePath(String var1) {
  118.       if (var1 != null && var1.length() != 0) {
  119.          int var3 = var1.indexOf(32);
  120.          String var2;
  121.          if (var3 != -1) {
  122.             var2 = var1.substring(0, var3);
  123.          } else {
  124.             var2 = var1;
  125.          }
  126.  
  127.          File var4 = new File(var2);
  128.          if (var4.isFile()) {
  129.             this.execPath = var1;
  130.             return true;
  131.          } else {
  132.             String var5 = (String)AccessController.doPrivileged(new GetPropertyAction("exec.path"));
  133.             if (var5 == null) {
  134.                return false;
  135.             } else {
  136.                StringTokenizer var6 = new StringTokenizer(var5, "|");
  137.  
  138.                while(var6.hasMoreElements()) {
  139.                   String var7 = (String)var6.nextElement();
  140.                   String var8 = var7 + File.separator + var2;
  141.                   var4 = new File(var8);
  142.                   if (var4.isFile()) {
  143.                      this.execPath = var7 + File.separator + var1;
  144.                      return true;
  145.                   }
  146.                }
  147.  
  148.                return false;
  149.             }
  150.          }
  151.       } else {
  152.          return false;
  153.       }
  154.    }
  155. }
  156.