Permalink
Browse files

Checked out from CVS

  • Loading branch information...
0 parents commit 86df3830607015dd8a176eadac8365d6fe71ccc9 @kohsuke committed Apr 14, 2009
Showing with 5,210 additions and 0 deletions.
  1. +2 −0 loopy-core/CREDITS.txt
  2. +4 −0 loopy-core/CVS/Entries
  3. +1 −0 loopy-core/CVS/Entries.Log
  4. +1 −0 loopy-core/CVS/Repository
  5. +1 −0 loopy-core/CVS/Root
  6. +458 −0 loopy-core/LICENSE.txt
  7. +37 −0 loopy-core/pom.xml
  8. +1 −0 loopy-core/src/CVS/Entries
  9. +1 −0 loopy-core/src/CVS/Repository
  10. +1 −0 loopy-core/src/CVS/Root
  11. +1 −0 loopy-core/src/main/CVS/Entries
  12. +1 −0 loopy-core/src/main/CVS/Repository
  13. +1 −0 loopy-core/src/main/CVS/Root
  14. +1 −0 loopy-core/src/main/java/CVS/Entries
  15. +1 −0 loopy-core/src/main/java/CVS/Entries.Log
  16. +1 −0 loopy-core/src/main/java/CVS/Repository
  17. +1 −0 loopy-core/src/main/java/CVS/Root
  18. +1 −0 loopy-core/src/main/java/net/CVS/Entries
  19. +1 −0 loopy-core/src/main/java/net/CVS/Repository
  20. +1 −0 loopy-core/src/main/java/net/CVS/Root
  21. +1 −0 loopy-core/src/main/java/net/didion/CVS/Entries
  22. +1 −0 loopy-core/src/main/java/net/didion/CVS/Repository
  23. +1 −0 loopy-core/src/main/java/net/didion/CVS/Root
  24. +135 −0 loopy-core/src/main/java/net/didion/loopy/AbstractBlockFileSystem.java
  25. +103 −0 loopy-core/src/main/java/net/didion/loopy/AbstractFileSystem.java
  26. +7 −0 loopy-core/src/main/java/net/didion/loopy/CVS/Entries
  27. +4 −0 loopy-core/src/main/java/net/didion/loopy/CVS/Entries.Log
  28. +1 −0 loopy-core/src/main/java/net/didion/loopy/CVS/Repository
  29. +1 −0 loopy-core/src/main/java/net/didion/loopy/CVS/Root
  30. +59 −0 loopy-core/src/main/java/net/didion/loopy/FileEntry.java
  31. +58 −0 loopy-core/src/main/java/net/didion/loopy/FileSystem.java
  32. +40 −0 loopy-core/src/main/java/net/didion/loopy/LoopyException.java
  33. +43 −0 loopy-core/src/main/java/net/didion/loopy/VolumeDescriptorSet.java
  34. +12 −0 loopy-core/src/main/java/net/didion/loopy/impl/AbstractBlockFileEntry.java
  35. +72 −0 loopy-core/src/main/java/net/didion/loopy/impl/AbstractBlockFileSystem.java
  36. +86 −0 loopy-core/src/main/java/net/didion/loopy/impl/AbstractFileSystem.java
  37. +5 −0 loopy-core/src/main/java/net/didion/loopy/impl/CVS/Entries
  38. +1 −0 loopy-core/src/main/java/net/didion/loopy/impl/CVS/Repository
  39. +1 −0 loopy-core/src/main/java/net/didion/loopy/impl/CVS/Root
  40. +16 −0 loopy-core/src/main/java/net/didion/loopy/impl/VolumeDescriptor.java
  41. +8 −0 loopy-core/src/main/java/net/didion/loopy/iso9660/CVS/Entries
  42. +1 −0 loopy-core/src/main/java/net/didion/loopy/iso9660/CVS/Repository
  43. +1 −0 loopy-core/src/main/java/net/didion/loopy/iso9660/CVS/Root
  44. +42 −0 loopy-core/src/main/java/net/didion/loopy/iso9660/Constants.java
  45. +92 −0 loopy-core/src/main/java/net/didion/loopy/iso9660/EntryEnumeration.java
  46. +133 −0 loopy-core/src/main/java/net/didion/loopy/iso9660/EntryInputStream.java
  47. +159 −0 loopy-core/src/main/java/net/didion/loopy/iso9660/ISO9660FileEntry.java
  48. +66 −0 loopy-core/src/main/java/net/didion/loopy/iso9660/ISO9660FileSystem.java
  49. +380 −0 loopy-core/src/main/java/net/didion/loopy/iso9660/ISO9660VolumeDescriptorSet.java
  50. +231 −0 loopy-core/src/main/java/net/didion/loopy/iso9660/Util.java
  51. +4 −0 loopy-core/src/main/java/net/didion/loopy/udf/CVS/Entries
  52. +1 −0 loopy-core/src/main/java/net/didion/loopy/udf/CVS/Repository
  53. +1 −0 loopy-core/src/main/java/net/didion/loopy/udf/CVS/Root
  54. +42 −0 loopy-core/src/main/java/net/didion/loopy/udf/UDFFileEntry.java
  55. +50 −0 loopy-core/src/main/java/net/didion/loopy/udf/UDFFileSystem.java
  56. +39 −0 loopy-core/src/main/java/net/didion/loopy/udf/UDFVolumeDescriptorSet.java
  57. +51 −0 loopy-core/src/main/java/net/didion/loopy/util/BigEndian.java
  58. +3 −0 loopy-core/src/main/java/net/didion/loopy/util/CVS/Entries
  59. +1 −0 loopy-core/src/main/java/net/didion/loopy/util/CVS/Repository
  60. +1 −0 loopy-core/src/main/java/net/didion/loopy/util/CVS/Root
  61. +73 −0 loopy-core/src/main/java/net/didion/loopy/util/LittleEndian.java
  62. +2 −0 loopy-vfs/CVS/Entries
  63. +1 −0 loopy-vfs/CVS/Repository
  64. +1 −0 loopy-vfs/CVS/Root
  65. +61 −0 loopy-vfs/pom.xml
  66. +1 −0 loopy-vfs/src/CVS/Entries
  67. +1 −0 loopy-vfs/src/CVS/Repository
  68. +1 −0 loopy-vfs/src/CVS/Root
  69. +2 −0 loopy-vfs/src/main/CVS/Entries
  70. +1 −0 loopy-vfs/src/main/CVS/Repository
  71. +1 −0 loopy-vfs/src/main/CVS/Root
  72. +1 −0 loopy-vfs/src/main/java/CVS/Entries
  73. +1 −0 loopy-vfs/src/main/java/CVS/Entries.Log
  74. +1 −0 loopy-vfs/src/main/java/CVS/Repository
  75. +1 −0 loopy-vfs/src/main/java/CVS/Root
  76. +1 −0 loopy-vfs/src/main/java/net/CVS/Entries
  77. +1 −0 loopy-vfs/src/main/java/net/CVS/Repository
  78. +1 −0 loopy-vfs/src/main/java/net/CVS/Root
  79. +1 −0 loopy-vfs/src/main/java/net/didion/CVS/Entries
  80. +1 −0 loopy-vfs/src/main/java/net/didion/CVS/Repository
  81. +1 −0 loopy-vfs/src/main/java/net/didion/CVS/Root
  82. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/CVS/Entries
  83. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/CVS/Repository
  84. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/CVS/Root
  85. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/CVS/Entries
  86. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/CVS/Repository
  87. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/CVS/Root
  88. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/provider/CVS/Entries
  89. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/provider/CVS/Repository
  90. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/provider/CVS/Root
  91. +4 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/provider/iso/CVS/Entries
  92. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/provider/iso/CVS/Repository
  93. +1 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/provider/iso/CVS/Root
  94. +111 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/provider/iso/IsoFileObject.java
  95. +58 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/provider/iso/IsoFileProvider.java
  96. +172 −0 loopy-vfs/src/main/java/net/didion/loopy/vfs/provider/iso/IsoFileSystem.java
  97. +1 −0 loopy-vfs/src/main/resources/CVS/Entries
  98. +1 −0 loopy-vfs/src/main/resources/CVS/Repository
  99. +1 −0 loopy-vfs/src/main/resources/CVS/Root
  100. +2 −0 loopy-vfs/src/main/resources/META-INF/CVS/Entries
  101. +1 −0 loopy-vfs/src/main/resources/META-INF/CVS/Repository
  102. +1 −0 loopy-vfs/src/main/resources/META-INF/CVS/Root
  103. +6 −0 loopy-vfs/src/main/resources/META-INF/vfs-providers.xml
  104. +65 −0 pom.xml
  105. +2 −0 src/CREDITS.txt
  106. +3 −0 src/CVS/Entries
  107. +2 −0 src/CVS/Entries.Log
  108. +1 −0 src/CVS/Repository
  109. +1 −0 src/CVS/Root
  110. +502 −0 src/LICENSE.txt
  111. +1 −0 src/main/CVS/Entries
  112. +1 −0 src/main/CVS/Repository
  113. +1 −0 src/main/CVS/Root
  114. +1 −0 src/main/java/CVS/Entries
  115. +1 −0 src/main/java/CVS/Entries.Log
  116. +1 −0 src/main/java/CVS/Repository
  117. +1 −0 src/main/java/CVS/Root
  118. +1 −0 src/main/java/net/CVS/Entries
  119. +1 −0 src/main/java/net/CVS/Repository
  120. +1 −0 src/main/java/net/CVS/Root
  121. +1 −0 src/main/java/net/didion/CVS/Entries
  122. +1 −0 src/main/java/net/didion/CVS/Repository
  123. +1 −0 src/main/java/net/didion/CVS/Root
  124. +4 −0 src/main/java/net/didion/loopy/CVS/Entries
  125. +4 −0 src/main/java/net/didion/loopy/CVS/Entries.Log
  126. +1 −0 src/main/java/net/didion/loopy/CVS/Repository
  127. +1 −0 src/main/java/net/didion/loopy/CVS/Root
  128. +34 −0 src/main/java/net/didion/loopy/FileEntry.java
  129. +33 −0 src/main/java/net/didion/loopy/FileSystem.java
  130. +20 −0 src/main/java/net/didion/loopy/LoopyException.java
  131. +12 −0 src/main/java/net/didion/loopy/impl/AbstractBlockFileEntry.java
  132. +71 −0 src/main/java/net/didion/loopy/impl/AbstractBlockFileSystem.java
  133. +86 −0 src/main/java/net/didion/loopy/impl/AbstractFileSystem.java
  134. +5 −0 src/main/java/net/didion/loopy/impl/CVS/Entries
  135. +1 −0 src/main/java/net/didion/loopy/impl/CVS/Repository
  136. +1 −0 src/main/java/net/didion/loopy/impl/CVS/Root
  137. +16 −0 src/main/java/net/didion/loopy/impl/VolumeDescriptor.java
  138. +8 −0 src/main/java/net/didion/loopy/iso9660/CVS/Entries
  139. +1 −0 src/main/java/net/didion/loopy/iso9660/CVS/Repository
  140. +1 −0 src/main/java/net/didion/loopy/iso9660/CVS/Root
  141. +19 −0 src/main/java/net/didion/loopy/iso9660/Constants.java
  142. +52 −0 src/main/java/net/didion/loopy/iso9660/EntryEnumeration.java
  143. +85 −0 src/main/java/net/didion/loopy/iso9660/EntryInputStream.java
  144. +126 −0 src/main/java/net/didion/loopy/iso9660/ISO9660FileEntry.java
  145. +48 −0 src/main/java/net/didion/loopy/iso9660/ISO9660FileSystem.java
  146. +297 −0 src/main/java/net/didion/loopy/iso9660/ISO9660VolumeDescriptor.java
  147. +153 −0 src/main/java/net/didion/loopy/iso9660/Util.java
  148. +5 −0 src/main/java/net/didion/loopy/udf/CVS/Entries
  149. +1 −0 src/main/java/net/didion/loopy/udf/CVS/Repository
  150. +1 −0 src/main/java/net/didion/loopy/udf/CVS/Root
  151. +12 −0 src/main/java/net/didion/loopy/udf/Constants.java
  152. +31 −0 src/main/java/net/didion/loopy/udf/UDFFileEntry.java
  153. +33 −0 src/main/java/net/didion/loopy/udf/UDFFileSystem.java
  154. +28 −0 src/main/java/net/didion/loopy/udf/UDFVolumeDescriptor.java
  155. +204 −0 src/main/java/net/didion/loopy/util/BigEndian.java
  156. +3 −0 src/main/java/net/didion/loopy/util/CVS/Entries
  157. +1 −0 src/main/java/net/didion/loopy/util/CVS/Repository
  158. +1 −0 src/main/java/net/didion/loopy/util/CVS/Root
  159. +204 −0 src/main/java/net/didion/loopy/util/LittleEndian.java
  160. +1 −0 src/test/CVS/Entries
  161. +1 −0 src/test/CVS/Repository
  162. +1 −0 src/test/CVS/Root
  163. +2 −0 src/test/images/CVS/Entries
  164. +1 −0 src/test/images/CVS/Repository
  165. +1 −0 src/test/images/CVS/Root
  166. +2 −0 src/test/images/iso/CVS/Entries
  167. +1 −0 src/test/images/iso/CVS/Repository
  168. +1 −0 src/test/images/iso/CVS/Root
  169. BIN src/test/images/iso/TEST1.ISO
  170. +1 −0 src/test/images/raw/CVS/Entries
  171. +1 −0 src/test/images/raw/CVS/Repository
  172. +1 −0 src/test/images/raw/CVS/Root
  173. +1 −0 src/test/images/raw/test1/CVS/Entries
  174. +1 −0 src/test/images/raw/test1/CVS/Repository
  175. +1 −0 src/test/images/raw/test1/CVS/Root
  176. +3 −0 src/test/images/raw/test1/root/CVS/Entries
  177. +1 −0 src/test/images/raw/test1/root/CVS/Repository
  178. +1 −0 src/test/images/raw/test1/root/CVS/Root
  179. +1 −0 src/test/images/raw/test1/root/a.txt
  180. +1 −0 src/test/images/raw/test1/root/b.txt
@@ -0,0 +1,2 @@
+loopy is based on the file system code from JNode (www.jnode.org). Thanks to the JNode developers for doing a lot of
+hard work :)
@@ -0,0 +1,4 @@
+/CREDITS.txt/1.2/Wed Jul 4 02:35:23 2007//
+/LICENSE.txt/1.2/Wed Jul 4 02:35:23 2007//
+/pom.xml/1.3/Wed Jul 4 18:48:42 2007//
+D
@@ -0,0 +1 @@
+A D/src////
@@ -0,0 +1 @@
+loopy/loopy-core
@@ -0,0 +1 @@
+:pserver:anonymous@loopy.cvs.sourceforge.net:/cvsroot/loopy

Large diffs are not rendered by default.

Oops, something went wrong.
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <name>loopy-core</name>
+ <description>loopy core library.</description>
+
+ <parent>
+ <groupId>net.didion.loopy</groupId>
+ <artifactId>loopy</artifactId>
+ <version>0.3</version>
+ </parent>
+
+ <artifactId>loopy-core</artifactId>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>net/didion/loopy/udf/*.*</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
@@ -0,0 +1 @@
+D/main////
@@ -0,0 +1 @@
+loopy/loopy-core/src
@@ -0,0 +1 @@
+:pserver:anonymous@loopy.cvs.sourceforge.net:/cvsroot/loopy
@@ -0,0 +1 @@
+D/java////
@@ -0,0 +1 @@
+loopy/loopy-core/src/main
@@ -0,0 +1 @@
+:pserver:anonymous@loopy.cvs.sourceforge.net:/cvsroot/loopy
@@ -0,0 +1 @@
+D
@@ -0,0 +1 @@
+A D/net////
@@ -0,0 +1 @@
+loopy/loopy-core/src/main/java
@@ -0,0 +1 @@
+:pserver:anonymous@loopy.cvs.sourceforge.net:/cvsroot/loopy
@@ -0,0 +1 @@
+D/didion////
@@ -0,0 +1 @@
+loopy/loopy-core/src/main/java/net
@@ -0,0 +1 @@
+:pserver:anonymous@loopy.cvs.sourceforge.net:/cvsroot/loopy
@@ -0,0 +1 @@
+D/loopy////
@@ -0,0 +1 @@
+loopy/loopy-core/src/main/java/net/didion
@@ -0,0 +1 @@
+:pserver:anonymous@loopy.cvs.sourceforge.net:/cvsroot/loopy
@@ -0,0 +1,135 @@
+/*
+Copyright (C) 2006-2007 loopy project (http://loopy.sourceforge.net)
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+package net.didion.loopy;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Enumeration;
+
+/**
+ * A block file system is segmented into multiple fixed-size blocks. It consists of a set of volume
+ * descriptors followed by an index, which points to the file locations.
+ */
+public abstract class AbstractBlockFileSystem extends AbstractFileSystem {
+ private final int blockSize;
+ private final int reservedBlocks;
+ private VolumeDescriptorSet volumeDescriptorSet;
+
+ protected AbstractBlockFileSystem(final File file, final boolean readOnly, final int blockSize,
+ final int reservedBlocks)
+ throws IOException {
+ super(file, readOnly);
+
+ if (blockSize <= 0) {
+ throw new IllegalArgumentException("'blockSize' must be > 0");
+ }
+ if (reservedBlocks < 0) {
+ throw new IllegalArgumentException("'reservedBlocks' must be >= 0");
+ }
+
+ this.blockSize = blockSize;
+ this.reservedBlocks = reservedBlocks;
+ }
+
+ public Enumeration getEntries() {
+ ensureOpen();
+
+ // load the volume descriptors if necessary
+ if (null == this.volumeDescriptorSet) {
+ try {
+ loadVolumeDescriptors();
+ }
+ catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ return enumerate(this.volumeDescriptorSet.getRootEntry());
+ }
+
+ protected void loadVolumeDescriptors() throws IOException {
+ final byte[] buffer = new byte[this.blockSize];
+
+ this.volumeDescriptorSet = createVolumeDescriptorSet();
+
+ // skip the reserved blocks, then read volume descriptor blocks sequentially and add them
+ // to the VolumeDescriptorSet
+ for (int block = this.reservedBlocks;
+ readBlock(block, buffer) && !this.volumeDescriptorSet.deserialize(buffer);
+ block++);
+ }
+
+ /**
+ * Read the data for the specified block into the specified buffer.
+ *
+ * @param block
+ * @param buffer
+ * @return if the block was actually read
+ * @throws IOException if the number of bytes read into the buffer was less than the expected
+ * number (i.e. the block size)
+ */
+ protected boolean readBlock(final long block, final byte[] buffer) throws IOException {
+ final int bytesRead = readData(block * this.blockSize, buffer, 0, this.blockSize);
+
+ if (bytesRead <= 0) {
+ return false;
+ }
+
+ if (this.blockSize != bytesRead) {
+ throw new IOException("Could not deserialize a complete block");
+ }
+
+ return true;
+ }
+
+ /**
+ * Read file data, starting at the specified position.
+ *
+ * @param startPos
+ * @param buffer
+ * @param offset
+ * @param len
+ * @return the number of bytes read into the buffer
+ * @throws IOException
+ */
+ protected synchronized int readData(final long startPos, final byte[] buffer, final int offset,
+ final int len)
+ throws IOException {
+ seek(startPos);
+ return read(buffer, offset, len);
+ }
+
+ protected VolumeDescriptorSet getVolumeDescriptorSet() {
+ return this.volumeDescriptorSet;
+ }
+
+ /**
+ * Returns an enumeration of the file entries starting at <code>root</code>.
+ *
+ * @param root
+ * @return
+ */
+ protected abstract Enumeration enumerate(FileEntry root);
+
+ /**
+ * Creates the VolumeDescriptorSet that deserializes volume descriptors for this file system.
+ *
+ * @return
+ */
+ protected abstract VolumeDescriptorSet createVolumeDescriptorSet();
+}
@@ -0,0 +1,103 @@
+/*
+Copyright (C) 2006-2007 loopy project (http://loopy.sourceforge.net)
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+package net.didion.loopy;
+
+import java.io.RandomAccessFile;
+import java.io.File;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+
+/**
+ * Implementation of FileSystem that is backed by a {@link RandomAccessFile}.
+ */
+public abstract class AbstractFileSystem implements FileSystem {
+ /**
+ * Channel to the open file.
+ */
+ private RandomAccessFile channel;
+
+ protected AbstractFileSystem(final File file, final boolean readOnly) throws IOException {
+ if (!readOnly) {
+ throw new IllegalArgumentException("Currrently, only read-only is supported");
+ }
+
+ // check that the underlying file is valid
+ if (!file.exists()) {
+ throw new FileNotFoundException("File does not exist: " + file);
+ }
+
+ // open the channel
+ this.channel = new RandomAccessFile(file, "r");
+ }
+
+ // TODO: close open streams automatically
+ public synchronized void close() throws IOException {
+ if (isClosed()) {
+ return;
+ }
+
+ try {
+ this.channel.close();
+ }
+ finally {
+ this.channel = null;
+ }
+ }
+
+ public boolean isClosed() {
+ return (null == this.channel);
+ }
+
+ /**
+ * Throws an exception if the underlying file is closed.
+ *
+ * @throws IllegalStateException
+ */
+ protected void ensureOpen() throws IllegalStateException {
+ if (isClosed()) {
+ throw new IllegalStateException("File has been closed");
+ }
+ }
+
+ /**
+ * Moves the pointer in the underlying file to the specified position.
+ *
+ * @param pos
+ * @throws IOException
+ */
+ protected void seek(long pos) throws IOException {
+ ensureOpen();
+ this.channel.seek(pos);
+ }
+
+ /**
+ * Reads up to <code>length</code> bytes into the specified buffer, starting at the specified
+ * offset. The actual number of bytes read will be less than <code>length</code> if there are
+ * not enough available bytes to read, or if the buffer is not large enough.
+ *
+ * @param buffer
+ * @param offset
+ * @param length
+ * @return the number of bytes read into the buffer
+ * @throws IOException
+ */
+ protected int read(byte[] buffer, int offset, int length) throws IOException {
+ ensureOpen();
+ return this.channel.read(buffer, offset, length);
+ }
+}
@@ -0,0 +1,7 @@
+/AbstractBlockFileSystem.java/1.2/Wed Jul 4 18:48:43 2007//
+/AbstractFileSystem.java/1.2/Wed Jul 4 18:48:43 2007//
+/FileEntry.java/1.2/Wed Jul 4 02:35:23 2007//
+/FileSystem.java/1.2/Wed Jul 4 02:35:23 2007//
+/LoopyException.java/1.3/Wed Jul 4 18:48:43 2007//
+/VolumeDescriptorSet.java/1.1/Wed Jul 4 02:35:23 2007//
+D
@@ -0,0 +1,4 @@
+A D/impl////
+A D/iso9660////
+A D/udf////
+A D/util////
@@ -0,0 +1 @@
+loopy/loopy-core/src/main/java/net/didion/loopy
@@ -0,0 +1 @@
+:pserver:anonymous@loopy.cvs.sourceforge.net:/cvsroot/loopy
Oops, something went wrong.

0 comments on commit 86df383

Please sign in to comment.