src/Pure/System/cygwin.scala
author wenzelm
Sun, 07 Jul 2013 22:58:34 +0200
changeset 52553 d5d150d159ad
permissions -rw-r--r--
some support for Cygwin;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52553
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/System/cygwin.scala
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
     3
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
     4
Support for Cygwin.
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
     5
*/
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
     6
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
     7
package isabelle
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
     8
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
     9
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    10
import java.io.{File => JFile}
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    11
import java.nio.file.{Paths, Files}
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    12
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    13
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    14
object Cygwin
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    15
{
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    16
  /* symlinks */
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    17
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    18
  def write_symlink(file: JFile, content: String)
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    19
  {
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    20
    require(Platform.is_windows)
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    21
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    22
    val path = file.toPath
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    23
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    24
    val writer = Files.newBufferedWriter(path, UTF8.charset)
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    25
    try { writer.write("!<symlink>" + content + "\0") }
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    26
    finally { writer.close }
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    27
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    28
    Files.setAttribute(path, "dos:system", true)
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    29
  }
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    30
}
d5d150d159ad some support for Cygwin;
wenzelm
parents:
diff changeset
    31