1 21 22 package org.armedbear.lisp; 23 24 import java.io.File ; 25 import java.io.IOException ; 26 27 public final class Utilities extends Lisp 28 { 29 private static final boolean isPlatformUnix; 30 private static final boolean isPlatformWindows; 31 32 static { 33 String osName = System.getProperty("os.name"); 34 isPlatformUnix = osName.startsWith("Linux") || 35 osName.startsWith("Mac OS X") || osName.startsWith("Solaris") || 36 osName.startsWith("SunOS") || osName.startsWith("AIX"); 37 isPlatformWindows = osName.startsWith("Windows"); 38 } 39 40 public static boolean isPlatformUnix() 41 { 42 return isPlatformUnix; 43 } 44 45 public static boolean isPlatformWindows() 46 { 47 return isPlatformWindows; 48 } 49 50 public static boolean isFilenameAbsolute(String filename) 51 { 52 final int length = filename.length(); 53 if (length > 0) { 54 char c0 = filename.charAt(0); 55 if (c0 == '\\' || c0 == '/') 56 return true; 57 if (length > 2) { 58 if (isPlatformWindows()) { 59 char c1 = filename.charAt(1); 61 if (c1 == ':') { 62 if (c0 >= 'a' && c0 <= 'z') 63 return true; 64 if (c0 >= 'A' && c0 <= 'Z') 65 return true; 66 } 67 } else { 68 if (filename.equals("~") || filename.startsWith("~/")) 70 return true; 71 } 72 } 73 } 74 return false; 75 } 76 77 public static File getFile(Pathname pathname) throws ConditionThrowable 78 { 79 Pathname defaultPathname = 80 Pathname.coerceToPathname(_DEFAULT_PATHNAME_DEFAULTS_.symbolValue()); 81 Pathname merged = 82 Pathname.mergePathnames(pathname, defaultPathname, NIL); 83 String namestring = merged.getNamestring(); 84 if (namestring != null) 85 return new File (namestring); 86 signal(new SimpleError("Pathname has no namestring: " + merged)); 87 return null; 89 } 90 91 public static Pathname getDirectoryPathname(File file) 92 throws ConditionThrowable 93 { 94 try { 95 String namestring = file.getCanonicalPath(); 96 if (namestring != null && namestring.length() > 0) { 97 if (namestring.charAt(namestring.length() - 1) != File.separatorChar) 98 namestring = namestring.concat(File.separator); 99 } 100 return new Pathname(namestring); 101 } 102 catch (IOException e) { 103 signal(new LispError(e.getMessage())); 104 return null; 106 } 107 } 108 109 public static final char toUpperCase(char c) 110 { 111 if (c < 128) 112 return UPPER_CASE_CHARS[c]; 113 return Character.toUpperCase(c); 114 } 115 116 private static final char[] UPPER_CASE_CHARS = new char[128]; 117 118 static { 119 for (int i = UPPER_CASE_CHARS.length; i-- > 0;) 120 UPPER_CASE_CHARS[i] = Character.toUpperCase((char)i); 121 } 122 123 public static final char toLowerCase(char c) 124 { 125 if (c < 128) 126 return LOWER_CASE_CHARS[c]; 127 return Character.toLowerCase(c); 128 } 129 130 private static final char[] LOWER_CASE_CHARS = new char[128]; 131 132 static { 133 for (int i = LOWER_CASE_CHARS.length; i-- > 0;) 134 LOWER_CASE_CHARS[i] = Character.toLowerCase((char)i); 135 } 136 } 137 | Popular Tags |