1 18 package com.izforge.izpack.util; 19 20 import java.io.File ; 21 import java.io.IOException ; 22 23 30 public final class OsVersion implements OsVersionConstants, StringConstants 31 { 32 33 36 37 public static final String OS_NAME = System.getProperty( OSNAME ); 38 39 40 public static final boolean IS_FREEBSD = StringTool.startsWithIgnoreCase(OS_NAME, FREEBSD ); 41 42 43 public static final boolean IS_LINUX = StringTool.startsWithIgnoreCase(OS_NAME, LINUX ); 44 45 46 public static final boolean IS_HPUX = StringTool.startsWithIgnoreCase(OS_NAME, HP_UX ); 47 48 49 public static final boolean IS_AIX = StringTool.startsWithIgnoreCase(OS_NAME, AIX ); 50 51 52 public static final boolean IS_SUNOS = StringTool.startsWithIgnoreCase(OS_NAME, SUNOS ); 53 54 55 public static final boolean IS_OS2 = StringTool.startsWith(OS_NAME, OS_2 ); 56 57 58 public static final boolean IS_MAC = StringTool.startsWith(OS_NAME, MAC ); 59 60 61 public static final boolean IS_OSX = StringTool.startsWithIgnoreCase(OS_NAME, MACOSX); 62 63 64 public static final boolean IS_WINDOWS = StringTool.startsWith(OS_NAME, WINDOWS ); 65 66 67 public static final boolean IS_UNIX = !IS_OS2 && !IS_WINDOWS; 68 69 70 public static final boolean IS_REDHAT_LINUX = IS_LINUX 71 && ( ( FileUtil.fileContains(getReleaseFileName(), REDHAT ) || FileUtil.fileContains(getReleaseFileName() , 72 RED_HAT ) ) ); 73 74 75 public static final boolean IS_FEDORA_LINUX = IS_LINUX 76 && FileUtil.fileContains(getReleaseFileName(), FEDORA ); 77 78 79 public static final boolean IS_MANDRAKE_LINUX = IS_LINUX 80 && FileUtil.fileContains( getReleaseFileName(), MANDRAKE ); 81 82 83 public static final boolean IS_MANDRIVA_LINUX = ( IS_LINUX 84 && FileUtil.fileContains( getReleaseFileName(), MANDRIVA ) ) || IS_MANDRAKE_LINUX; 85 86 87 public static final boolean IS_SUSE_LINUX = IS_LINUX 88 && FileUtil.fileContains( getReleaseFileName(), SUSE, true ); 89 90 91 public static final boolean IS_DEBIAN_LINUX = (IS_LINUX 92 && FileUtil.fileContains(PROC_VERSION, DEBIAN )) || ( IS_LINUX && new File ( "/etc/debian_version" ).exists() ); 93 94 98 103 private static String getReleaseFileName() 104 { 105 String result = ""; 106 107 File [] etcList = new File ("/etc").listFiles(); 108 109 if( etcList != null ) 110 for (int idx = 0; idx < etcList.length; idx++) 111 { 112 File etcEntry = etcList[idx]; 113 114 if (etcEntry.isFile()) 115 { 116 if (etcEntry.getName().endsWith("-release")) 117 { 118 return result = etcEntry.toString(); 120 } 121 } 122 } 123 124 return result; 125 } 126 127 132 private static String getLinuxDistribution() 133 { 134 String result = null; 135 136 if (IS_SUSE_LINUX) 137 { 138 try 139 { 140 result = SUSE + SP + LINUX + NL + StringTool.stringArrayListToString(FileUtil.getFileContent(getReleaseFileName())); 141 } 142 catch (IOException e) 143 { 144 } 146 } 147 else if (IS_REDHAT_LINUX) 148 { 149 try 150 { 151 result = REDHAT + SP + LINUX + NL + StringTool.stringArrayListToString(FileUtil.getFileContent(getReleaseFileName())); 152 } 153 catch (IOException e) 154 { 155 } 157 } 158 159 else if (IS_FEDORA_LINUX) 160 { 161 try 162 { 163 result = FEDORA + SP + LINUX + NL 164 + StringTool.stringArrayListToString(FileUtil.getFileContent(getReleaseFileName())); 165 } 166 catch (IOException e) 167 { 168 } 170 } 171 else if (IS_MANDRAKE_LINUX) 172 { 173 try 174 { 175 result = MANDRAKE + SP + LINUX + NL 176 + StringTool.stringArrayListToString(FileUtil.getFileContent(getReleaseFileName())); 177 } 178 catch (IOException e) 179 { 180 } 182 } 183 else if (IS_MANDRIVA_LINUX) 184 { 185 try 186 { 187 result = MANDRIVA + SP + LINUX + NL 188 + StringTool.stringArrayListToString(FileUtil.getFileContent(getReleaseFileName())); 189 } 190 catch (IOException e) 191 { 192 } 194 } 195 else if (IS_DEBIAN_LINUX) 196 { 197 try 198 { 199 result = DEBIAN + SP + LINUX + NL 200 + StringTool.stringArrayListToString(FileUtil.getFileContent("/etc/debian_version")); 201 } 202 catch (IOException e) 203 { 204 } 206 } 207 else 208 { 209 try 210 { 211 result = "Unknown Linux Distribution\n" 212 + StringTool.stringArrayListToString(FileUtil.getFileContent(getReleaseFileName())); 213 } 214 catch (IOException e) 215 { 216 } 218 } 219 220 return result; 221 } 222 223 227 public static String getOsDetails() 228 { 229 StringBuffer result = new StringBuffer (); 230 result.append("OS_NAME=").append(OS_NAME).append(NL); 231 232 if( IS_UNIX ) 233 { 234 if( IS_LINUX ) 235 { 236 result.append(getLinuxDistribution()).append(NL); 237 } 238 else 239 { 240 try 241 { 242 result.append(FileUtil.getFileContent(getReleaseFileName())).append(NL); 243 } 244 catch (IOException e) 245 { 246 } 248 } 249 } 250 251 if( IS_WINDOWS ) 252 { 253 result.append(System.getProperty(OSNAME)).append(SP).append(System.getProperty("sun.os.patch.level", "")).append(NL); 254 } 255 return result.toString(); 256 } 257 258 263 public static void main(String [] args) 264 { 265 System.out.println( getOsDetails() ); 266 } 267 } 268 | Popular Tags |