@ @ requires \valid_read(dir_entry); @ requires \initialized(dir_entry); @ assigns \nothing; @ ensures \result == \null || valid_read_string(\result); @*/
| 430 | @ ensures \result == \null || valid_read_string(\result); |
| 431 | @*/ |
| 432 | static const char *entry2ext(const struct OLE_DIR *dir_entry) |
| 433 | { |
| 434 | switch(le16(dir_entry->namsiz)) |
| 435 | { |
| 436 | case 10: |
| 437 | if(memcmp(dir_entry->name, ".\0Q\0D\0F\0\0\0",10)==0) |
| 438 | return extension_qdf_backup; |
| 439 | break; |
| 440 | case 12: |
| 441 | /* 3ds max */ |
| 442 | if(memcmp(dir_entry->name, "S\0c\0e\0n\0e\0\0\0",12)==0) |
| 443 | return extension_max; |
| 444 | /* Licom AlphaCAM */ |
| 445 | else if(memcmp(dir_entry->name,"L\0i\0c\0o\0m\0\0\0",12)==0) |
| 446 | return extension_amb; |
| 447 | break; |
| 448 | case 18: |
| 449 | /* Microsoft Works .wps */ |
| 450 | if(memcmp(dir_entry->name,"C\0O\0N\0T\0E\0N\0T\0S\0\0\0",18)==0) |
| 451 | return extension_wps; |
| 452 | break; |
| 453 | case 20: |
| 454 | /* Page Maker */ |
| 455 | if(memcmp(&dir_entry->name, "P\0a\0g\0e\0M\0a\0k\0e\0r\0\0\0", 20)==0) |
| 456 | return extension_p65; |
| 457 | break; |
| 458 | case 22: |
| 459 | /* SigmaPlot .jnb */ |
| 460 | if(memcmp(dir_entry->name, "J\0N\0B\0V\0e\0r\0s\0i\0o\0n\0\0\0", 22)==0) |
| 461 | return extension_jnb; |
| 462 | /* Autodesk Inventor part ipt or iam file */ |
| 463 | if(memcmp(dir_entry->name, "R\0S\0e\0S\0t\0o\0r\0a\0g\0e\0\0\0", 22)==0) |
| 464 | return extension_ipt; |
| 465 | break; |
| 466 | case 24: |
| 467 | /* HP Photosmart Photo Printing Album */ |
| 468 | if(memcmp(dir_entry->name,"I\0m\0a\0g\0e\0s\0S\0t\0o\0r\0e\0\0\0",24)==0) |
| 469 | return extension_albm; |
| 470 | /* Lotus Approch */ |
| 471 | if(memcmp(dir_entry->name,"A\0p\0p\0r\0o\0a\0c\0h\0D\0o\0c\0\0\0",24)==0) |
| 472 | return extension_apr; |
| 473 | break; |
| 474 | case 28: |
| 475 | /* Microsoft Works Spreadsheet or Chart */ |
| 476 | if(memcmp(dir_entry->name,"W\0k\0s\0S\0S\0W\0o\0r\0k\0B\0o\0o\0k\0\0\0",28)==0) |
| 477 | return extension_xlr; |
| 478 | /* Visio */ |
| 479 | else if(memcmp(dir_entry->name,"V\0i\0s\0i\0o\0D\0o\0c\0u\0m\0e\0n\0t\0\0\0",28)==0) |
| 480 | return extension_vsd; |
| 481 | /* SolidWorks */ |
| 482 | else if(memcmp(&dir_entry->name,"s\0w\0X\0m\0l\0C\0o\0n\0t\0e\0n\0t\0s\0\0\0",28)==0) |
| 483 | return extension_sldprt; |
| 484 | break; |
| 485 | case 32: |
| 486 | if(memcmp(dir_entry->name, "m\0a\0n\0i\0f\0e\0s\0t\0.\0c\0a\0m\0x\0m\0l\0\0\0",32)==0) |
| 487 | return extension_camrec; |
| 488 | /* Revit */ |
| 489 | if(memcmp(dir_entry->name, "R\0e\0v\0i\0t\0P\0r\0e\0v\0i\0e\0w\0004\0.\0000\0\0", 32)==0) |
no outgoing calls
no test coverage detected