Author: nick Date: Wed May 16 22:04:20 2012 New Revision: 1339389 URL: http://svn.apache.org/viewvc?rev=1339389&view=rev Log: TIKA-917 Get the elf OS, if that bit of the header is set (but it often gets left as null....)
Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java?rev=1339389&r1=1339388&r2=1339389&view=diff ============================================================================== --- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java (original) +++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/executable/ExecutableParser.java Wed May 16 22:04:20 2012 @@ -250,61 +250,63 @@ public class ExecutableParser extends Ab // Byte 7 is the elf version int elfVer = stream.read(); - // Byte 8 is the OS + // Byte 8 is the OS, if set (lots of compilers don't) // Byte 9 is the OS (specific) ABI version int os = stream.read(); int osVer = stream.read(); - // TODO Fix up, doesn't seem to be working -// switch (os) { -// case 0: -// metadata.set(PLATFORM, PLATFORM_SYSV); -// break; -// -// case 1: -// metadata.set(PLATFORM, PLATFORM_HPUX); -// break; -// -// case 2: -// metadata.set(PLATFORM, PLATFORM_NETBSD); -// break; -// -// case 3: -// metadata.set(PLATFORM, PLATFORM_LINUX); -// break; -// -// case 6: -// metadata.set(PLATFORM, PLATFORM_SOLARIS); -// break; -// -// case 7: -// metadata.set(PLATFORM, PLATFORM_AIX); -// break; -// -// case 8: -// metadata.set(PLATFORM, PLATFORM_IRIX); -// break; -// -// case 9: -// metadata.set(PLATFORM, PLATFORM_FREEBSD); -// break; -// -// case 10: -// metadata.set(PLATFORM, PLATFORM_TRU64); -// break; -// -// case 12: -// metadata.set(PLATFORM, PLATFORM_FREEBSD); -// break; -// -// case 64: -// case 97: -// metadata.set(PLATFORM, PLATFORM_ARM); -// break; -// -// case 255: -// metadata.set(PLATFORM, PLATFORM_EMBEDDED); -// break; -// } + if (os > 0 || osVer > 0) + { + switch (os) { + case 0: + metadata.set(PLATFORM, PLATFORM_SYSV); + break; + + case 1: + metadata.set(PLATFORM, PLATFORM_HPUX); + break; + + case 2: + metadata.set(PLATFORM, PLATFORM_NETBSD); + break; + + case 3: + metadata.set(PLATFORM, PLATFORM_LINUX); + break; + + case 6: + metadata.set(PLATFORM, PLATFORM_SOLARIS); + break; + + case 7: + metadata.set(PLATFORM, PLATFORM_AIX); + break; + + case 8: + metadata.set(PLATFORM, PLATFORM_IRIX); + break; + + case 9: + metadata.set(PLATFORM, PLATFORM_FREEBSD); + break; + + case 10: + metadata.set(PLATFORM, PLATFORM_TRU64); + break; + + case 12: + metadata.set(PLATFORM, PLATFORM_FREEBSD); + break; + + case 64: + case 97: + metadata.set(PLATFORM, PLATFORM_ARM); + break; + + case 255: + metadata.set(PLATFORM, PLATFORM_EMBEDDED); + break; + } + } // Bytes 10-16 are padding and lengths byte[] padLength = new byte[7]; @@ -396,6 +398,8 @@ public class ExecutableParser extends Ab break; } + + // Bytes 20-23 are the version // TODO }