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
     }


Reply via email to