Browse Source

pre-cran flight check

master
boB Rudis 6 years ago
parent
commit
14c4c3206f
No known key found for this signature in database GPG Key ID: 1D7529BE14E2BBA9
  1. 44
      DESCRIPTION
  2. 13
      INSTALL
  3. 18
      NAMESPACE
  4. 11
      R/RcppExports.R
  5. 821
      R/aaa.r
  6. 32
      R/check-office.R
  7. 31
      R/datasets.r
  8. 116
      R/get-content-type.R
  9. 32
      R/guess-content-type.R
  10. 15
      R/util.R
  11. 22
      R/wand-package.R
  12. 118
      R/wand.r
  13. 41
      R/zzz.r
  14. 93
      README.Rmd
  15. 231
      README.md
  16. 4
      builder/make_mime_db.r
  17. 2
      cleanup
  18. 61
      configure
  19. 0
      configure.win
  20. BIN
      data/mime_db.rda
  21. BIN
      inst/extdat/actions.csv
  22. BIN
      inst/extdat/actions.txt
  23. BIN
      inst/extdat/actions.xlsx
  24. BIN
      inst/extdat/test.au
  25. BIN
      inst/extdat/test.bin
  26. BIN
      inst/extdat/test.bmp
  27. 18
      inst/extdat/test.dtd
  28. BIN
      inst/extdat/test.emf
  29. 338
      inst/extdat/test.eps
  30. BIN
      inst/extdat/test.fli
  31. BIN
      inst/extdat/test.gif
  32. BIN
      inst/extdat/test.ico
  33. 5
      inst/extdat/test.java
  34. BIN
      inst/extdat/test.jpg
  35. BIN
      inst/extdat/test.mp3
  36. BIN
      inst/extdat/test.odt
  37. BIN
      inst/extdat/test.ogg
  38. BIN
      inst/extdat/test.pcx
  39. 84
      inst/extdat/test.pdf
  40. 5
      inst/extdat/test.pl
  41. BIN
      inst/extdat/test.png
  42. 7
      inst/extdat/test.pnm
  43. 7
      inst/extdat/test.ppm
  44. BIN
      inst/extdat/test.ppt
  45. 280
      inst/extdat/test.ps
  46. BIN
      inst/extdat/test.psd
  47. 365
      inst/extdat/test.py
  48. 16
      inst/extdat/test.rtf
  49. 3
      inst/extdat/test.sh
  50. BIN
      inst/extdat/test.tar
  51. BIN
      inst/extdat/test.tar.gz
  52. BIN
      inst/extdat/test.tga
  53. 1
      inst/extdat/test.txt
  54. BIN
      inst/extdat/test.txt.gz
  55. BIN
      inst/extdat/test.wav
  56. BIN
      inst/extdat/test.wmf
  57. BIN
      inst/extdat/test.xcf
  58. 47
      inst/extdat/test.xml
  59. 255
      inst/extdat/test.xpm
  60. BIN
      inst/extdat/test.zip
  61. BIN
      inst/extdat/test_1.2.class
  62. BIN
      inst/extdat/test_1.3.class
  63. BIN
      inst/extdat/test_1.4.class
  64. BIN
      inst/extdat/test_1.5.class
  65. BIN
      inst/extdat/test_128_44_jstereo.mp3
  66. BIN
      inst/extdat/test_excel.xlsm
  67. BIN
      inst/extdat/test_excel.xlsx
  68. BIN
      inst/extdat/test_excel_2000.xls
  69. 62
      inst/extdat/test_excel_spreadsheet.xml
  70. 155
      inst/extdat/test_excel_web_archive.mht
  71. BIN
      inst/extdat/test_nocompress.tif
  72. BIN
      inst/extdat/test_powerpoint.pptm
  73. BIN
      inst/extdat/test_powerpoint.pptx
  74. BIN
      inst/extdat/test_word.docm
  75. BIN
      inst/extdat/test_word.docx
  76. BIN
      inst/extdat/test_word_2000.doc
  77. BIN
      inst/extdat/test_word_6.0_95.doc
  78. BIN
      inst/extdata/db/new/magic.mgc.zip
  79. BIN
      inst/extdata/db/old/magic.mgc.zip
  80. BIN
      inst/extdata/img/Rlogo.jpg
  81. BIN
      inst/extdata/img/Rlogo.pdf
  82. BIN
      inst/extdata/img/Rlogo.png
  83. 14
      inst/extdata/img/Rlogo.svg
  84. BIN
      inst/extdata/img/Rlogo.tiff
  85. 5
      inst/extdata/img/example.c
  86. 4
      inst/extdata/img/example.html
  87. 1
      inst/extdata/img/example.r
  88. 5
      inst/extdata/img/example.rtf
  89. 1
      inst/extdata/img/example_dir/test.txt
  90. 27
      man/get_content_type.Rd
  91. 11
      man/get_os.Rd
  92. 28
      man/guess_content_type.Rd
  93. 41
      man/incant.Rd
  94. 35
      man/magic_wand_file.Rd
  95. 39
      man/mime_db.Rd
  96. 14
      man/simplemagic_mime_db.Rd
  97. 15
      man/wand.Rd
  98. 3
      src/.gitignore
  99. 2
      src/Makevars
  100. 2
      src/Makevars.in

44
DESCRIPTION

@ -1,42 +1,26 @@
Package: wand Package: wand
Type: Package Type: Package
Title: Retrieve 'Magic' Attributes from Files and Directories Title: Retrieve 'Magic' Attributes from Files and Directories
Version: 0.2.1 Version: 0.3.0
Date: 2017-10-20 Date: 2018-09-16
Authors@R: c( Authors@R: c(
person("Bob", "Rudis", email = "bob@rud.is", role = c("aut", "cre"), person("Bob", "Rudis", email = "bob@rud.is", role = c("aut", "cre"),
comment = c(ORCID = "0000-0001-5670-2640")), comment = c(ORCID = "0000-0001-5670-2640"))
person("Christos", "Zoulas", role=("ctb"), comment="libmagic"),
person("Mans", "Rullgard", role=("ctb"), comment="file"),
person("Jonathan", "Ong", role=("ctb"), comment="mime-db")
) )
Maintainer: Bob Rudis <bob@rud.is> Maintainer: Bob Rudis <bob@rud.is>
Description: The 'libmagic' library provides functions to determine Description: 'MIME' types are shorthand descriptors for file contents and can be
'MIME' type and other metadata from files through their "magic" determined from "magic" bytes in file headers, file contents or intuited from
attributes. This is useful when you do not wish to rely solely on file extensions. Tools are provided to perform curated "magic" tests as well
the honesty of a user or the extension on a file name. It also as mapping 'MIME' types from a database of over 1,500 extension mappings.
incorporates other metadata from the 'mime-db' database URL: http://gitlab.com/hrbrmstr/wand
<https://github.com/jshttp/mime-db>. BugReports: https://gitlab.com/hrbrmstr/wand/issues
URL: http://github.com/hrbrmstr/wand Encoding: UTF-8
BugReports: https://github.com/hrbrmstr/wand/issues
NeedsCompilation: yes
LazyData: true
SystemRequirements: libmagic (>= 5.14) for Unix/Linux/macOS; Rtools 3.3+ for Windows
License: AGPL License: AGPL
Suggests: Suggests:
testthat testthat,
covr
Imports:
tools
Depends: Depends:
R (>= 3.2.0) R (>= 3.2.0)
Imports:
dplyr,
purrr,
rappdirs,
stats,
stringi,
tibble,
tidyr,
utils,
Rcpp
Encoding: UTF-8
LinkingTo: Rcpp
RoxygenNote: 6.0.1.9000 RoxygenNote: 6.0.1.9000

13
INSTALL

@ -1,13 +0,0 @@
For Linux/UNIX/macOS you need 'libmagic' installed which is a component of the
'file' utility: <https://github.com/file/file>. You can find out more information
on 'libmagic' and 'file' at this URL: <http://www.darwinsys.com/file/>.
Here are the incantations you must use to get magic for your environment:
- `apt-get install libmagic-dev` on Ubuntu/Debian-ish systems
- `brew install libmagic` on macOS
- `yum install file-devel` on RHEL/CentOS/Fedora
For Windows you will need Rtools <https://cran.r-project.org/bin/windows/Rtools/>
version 3.3 or higher (it may work with older ones, but it's only been tested on
Rtools version 3.3 & 3.4).

18
NAMESPACE

@ -1,16 +1,6 @@
# Generated by roxygen2: do not edit by hand # Generated by roxygen2: do not edit by hand
export(incant) export(get_content_type)
export(magic_wand_file) export(guess_content_type)
import(purrr) export(simplemagic_mime_db)
import(stats) importFrom(tools,file_ext)
import(stringi)
import(tibble)
import(tidyr)
importFrom(Rcpp,sourceCpp)
importFrom(dplyr,left_join)
importFrom(dplyr,mutate)
importFrom(dplyr,mutate_all)
importFrom(rappdirs,user_cache_dir)
importFrom(utils,unzip)
useDynLib(wand, .registration=TRUE)

11
R/RcppExports.R

@ -1,11 +0,0 @@
# Generated by using Rcpp::compileAttributes() -> do not edit by hand
# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
incant_ <- function(path, magic_db = "system") {
.Call(`_wand_incant_`, path, magic_db)
}
lib_version <- function() {
.Call(`_wand_lib_version`)
}

821
R/aaa.r

@ -1 +1,820 @@
globalVariables(c("extensions", "mime_type", "response", "encoding")) #' File extension-to-MIME mapping data frame
#'
#' @docType data
#' @export
structure(list(extension = c("pyc", "dwg", "ez", "aw", "arj",
"atom", "xml", "atomcat", "atomsvc", "mm", "mme", "hqx", "hqx",
"boo", "book", "ccxml", "cdf", "cdmia", "cdmic", "cdmid", "cdmio",
"cdmiq", "ccad", "dp", "cu", "csm", "davmount", "dbk", "drw",
"tsp", "dssc", "xdssc", "dxf", "es", "ecma", "js", "emma", "evy",
"epub", "xl", "xla", "xlb", "xlc", "xld", "xlk", "xll", "xlm",
"xls", "xlt", "xlv", "xlw", "exi", "pfr", "woff", "fif", "frl",
"spl", "gml", "tgz", "gpx", "vew", "gxf", "hlp", "hta", "stk",
"unv", "iges", "igs", "inf", "ink", "inkml", "acx", "ipfix",
"class", "jar", "class", "ser", "class", "js", "json", "jsonml",
"lha", "lostxml", "lzx", "bin", "hqx", "hqx", "cpt", "bin", "mads",
"mrc", "mrcx", "ma", "nb", "mb", "mathml", "mbd", "mbox", "mcd",
"mscml", "metalink", "meta4", "mets", "aps", "mods", "m21", "mp21",
"mp4", "m4p", "mp4s", "mdb", "one", "onetoc2", "onetmp", "onepkg",
"pot", "pps", "ppt", "ppz", "doc", "dot", "w6w", "wiz", "word",
"wri", "mxf", "mcp", "bin", "dms", "lrf", "mar", "so", "dist",
"distz", "pkg", "bpk", "dump", "elc", "a", "arc", "arj", "com",
"exe", "lha", "lhx", "lzh", "lzx", "o", "psd", "saveme", "uu",
"zoo", "class", "buffer", "deploy", "hqx", "obj", "lib", "zip",
"gz", "dmg", "iso", "oda", "opf", "ogx", "ogg", "axs", "omdoc",
"onetoc", "onetoc2", "onetmp", "onepkg", "oxps", "xer", "pdf",
"pgp", "key", "asc", "pgp", "sig", "prf", "p12", "crl", "p10",
"p7m", "p7c", "p7s", "p8", "ac", "cer", "crt", "crl", "pkipath",
"pki", "text", "pls", "ai", "eps", "ps", "ppt", "part", "prt",
"cww", "pskcxml", "rar", "rdf", "rif", "rnc", "rl", "rld", "rng",
"rs", "gbr", "mft", "roa", "rsd", "rss", "xml", "rtf", "rtx",
"sbml", "scq", "scs", "spq", "spp", "sdp", "sea", "set", "setpay",
"setreg", "shf", "stl", "smi", "smil", "smi", "smil", "sol",
"sdr", "rq", "srx", "gram", "grxml", "sru", "ssdl", "ssml", "step",
"stp", "ssm", "tei", "teicorpus", "tfi", "tsd", "tbk", "vda",
"plb", "psb", "pvb", "tcap", "pwn", "aso", "imp", "acu", "atc",
"acutc", "air", "fcdt", "fxp", "fxpl", "xdp", "xfdf", "ahead",
"azf", "azs", "azw", "acc", "ami", "apk", "cii", "fti", "atx",
"mpkg", "m3u8", "swi", "swi", "iota", "aep", "mpm", "bmi", "rep",
"cdxml", "mmd", "cdy", "cla", "rp9", "c4g", "c4d", "c4f", "c4p",
"c4u", "c11amc", "c11amz", "csp", "cdbcmsg", "cmc", "clkx", "clkk",
"clkp", "clkt", "clkw", "wbs", "pml", "ppd", "car", "pcurl",
"dart", "rdz", "uvf", "uvvf", "uvd", "uvvd", "uvt", "uvvt", "uvx",
"uvvx", "uvz", "uvvz", "fe_launch", "dna", "mlp", "dpg", "dfac",
"kpxx", "ait", "svc", "geo", "mag", "nml", "esf", "msf", "qam",
"slt", "ssf", "es3", "et3", "ez2", "ez3", "fdf", "mseed", "seed",
"dataless", "gph", "ftc", "fm", "frame", "maker", "book", "fnc",
"ltf", "fsc", "oas", "oa2", "oa3", "fg5", "bh2", "ddd", "xdw",
"xbd", "fzs", "txd", "ggb", "ggt", "gex", "gre", "gxt", "g2w",
"g3w", "gmx", "kml", "kmz", "gqf", "gqs", "gac", "ghf", "gim",
"grv", "gtm", "tpl", "vcg", "hal", "zmm", "hbci", "les", "hgl",
"hpg", "hpgl", "hpid", "hps", "jlt", "pcl", "pclxl", "sfd-hdstx",
"x3d", "mpy", "afp", "listafp", "list3820", "irm", "sc", "icc",
"icm", "igl", "ivp", "ivu", "igm", "xpw", "xpx", "i2g", "qbo",
"qfx", "rcprofile", "irp", "xpr", "fcs", "jam", "rms", "jisp",
"joda", "ktz", "ktr", "karbon", "chrt", "kfo", "flw", "kon",
"kpr", "kpt", "ksp", "kwd", "kwt", "htke", "kia", "kne", "knp",
"skp", "skd", "skt", "skm", "sse", "lasxml", "lbd", "lbe", "123",
"apr", "pre", "nsf", "org", "scm", "lwp", "portpkg", "mcd", "mc1",
"cdkey", "mwf", "mfm", "flo", "igx", "mif", "daf", "dis", "mbk",
"mqy", "msl", "plc", "txf", "mpn", "mpc", "xul", "cil", "cab",
"xls", "xlm", "xla", "xlc", "xlt", "xlb", "xll", "xlw", "xlam",
"xlam", "xlsb", "xlsb", "xlsm", "xlsm", "xltm", "xltm", "eot",
"chm", "ims", "lrm", "thmx", "msg", "sst", "pko", "cat", "stl",
"sst", "cat", "stl", "ppt", "pps", "pot", "ppa", "pwz", "ppam",
"ppam", "pptm", "potm", "pptm", "potm", "sldm", "sldm", "ppsm",
"ppsm", "potm", "potm", "mpp", "mpt", "docm", "docm", "dotm",
"dotm", "wps", "wks", "wcm", "wdb", "wpl", "xps", "mseq", "mus",
"msty", "taglet", "nlu", "ntf", "nitf", "nnd", "nns", "nnw",
"ncm", "ngdat", "n-gage", "rpst", "rpss", "rng", "edm", "edx",
"ext", "edm", "edx", "ext", "odc", "otc", "odb", "odf", "odft",
"odg", "otg", "odi", "oti", "odp", "otp", "ods", "ots", "odt",
"odm", "otm", "ott", "oth", "xo", "dd2", "oxt", "pptx", "sldx",
"ppsx", "potx", "xlsx", "xltx", "docx", "dotx", "mgp", "dp",
"esa", "pdb", "pqa", "oprc", "paw", "str", "ei6", "efif", "wg",
"plf", "pbd", "box", "mgz", "qps", "ptid", "qxd", "qxt", "qwd",
"qwt", "qxl", "qxb", "bed", "mxl", "musicxml", "cryptonote",
"cod", "rm", "rmvb", "rnx", "link66", "st", "see", "sema", "semd",
"semf", "ifm", "itp", "iif", "ipk", "twd", "twds", "mmf", "teacher",
"sdkm", "sdkd", "dxp", "sfs", "sdc", "sda", "sdd", "sdp", "smf",
"sdw", "vor", "sgl", "smzip", "sm", "sxc", "stc", "sxd", "std",
"sxi", "sti", "sxm", "sxw", "sxg", "stw", "sus", "susp", "svd",
"sis", "sisx", "xsm", "bdm", "xdm", "tao", "pcap", "cap", "dmp",
"tmo", "tpt", "mxs", "tra", "ufd", "ufdl", "utz", "umj", "unityweb",
"uoml", "vcx", "vsd", "vst", "vss", "vsw", "vis", "vsf", "sic",
"slc", "wbxml", "wmlc", "wmlsc", "wtb", "nbp", "wpd", "wqd",
"stf", "xar", "web", "xfdl", "hvd", "hvs", "hvp", "osf", "osfpvg",
"saf", "spf", "cmp", "zir", "zirz", "zaz", "vmd", "vmf", "vxml",
"wgt", "hlp", "wp", "wp5", "wp6", "wpd", "wp5", "w60", "wp5",
"w61", "wsdl", "wspolicy", "wk1", "wk", "7z", "abw", "ace", "aim",
"dmg", "aab", "x32", "u32", "vox", "aam", "aas", "bcpio", "bin",
"hqx", "torrent", "blb", "blorb", "bsh", "sh", "shar", "elc",
"elc", "bz", "bz2", "boz", "cbr", "cba", "cbt", "cbz", "cb7",
"cdf", "vcd", "cfs", "chat", "cha", "pgn", "chm", "crx", "ras",
"cco", "cpt", "z", "gz", "tgz", "z", "zip", "nsc", "cpio", "cpt",
"csh", "deb", "udeb", "deepv", "dgc", "dir", "dcr", "dxr", "cst",
"cct", "cxt", "w3d", "fgd", "swa", "dms", "wad", "ncx", "dtb",
"res", "dvi", "elc", "env", "evy", "es", "eva", "xla", "xlb",
"xlc", "xld", "xlk", "xll", "xlm", "xls", "xlt", "xlv", "xlw",
"flac", "pfa", "pfb", "gsf", "pcf", "pcf.Z", "bdf", "gsf", "psf",
"otf", "pcf", "snf", "ttf", "ttc", "pfa", "pfb", "pfm", "afm",
"woff", "mif", "arc", "pre", "spl", "gca", "ulx", "gnumeric",
"sgf", "gramps", "gcf", "gsp", "gss", "gtar", "tgz", "taz", "gz",
"gzip", "tgz", "hdf", "help", "hlp", "imap", "phtml", "pht",
"php", "phps", "php3", "php3p", "php4", "ica", "ima", "install",
"ins", "isp", "ins", "iv", "ip", "iii", "iso", "jar", "class",
"jcm", "jnlp", "ser", "class", "js", "chrt", "kil", "skd", "skm",
"skp", "skt", "kpr", "kpt", "ksh", "ksp", "kwd", "kwt", "latex",
"ltx", "lha", "lsp", "ivy", "wq1", "scm", "luac", "lzh", "lzh",
"lha", "lzx", "hqx", "bin", "mc$", "frm", "maker", "frame", "fm",
"fb", "book", "fbdoc", "mcd", "mm", "mid", "midi", "mie", "mif",
"nix", "prc", "mobi", "m3u8", "asx", "application", "lnk", "wmd",
"wmz", "xbap", "mdb", "obd", "crd", "clp", "com", "exe", "bat",
"dll", "exe", "dll", "com", "bat", "msi", "xla", "xls", "xlw",
"msi", "mvb", "m13", "m14", "wmf", "wmz", "emf", "emz", "mny",
"ppt", "pub", "scd", "trm", "wri", "ani", "nvd", "map", "stl",
"nc", "cdf", "pkg", "aos", "pac", "nwc", "nzb", "o", "omc", "omcd",
"omcr", "oza", "pm4", "pm5", "pcl", "pma", "pmc", "pml", "pmr",
"pmw", "plx", "p10", "p12", "pfx", "p7b", "spc", "p7r", "crl",
"p7c", "p7m", "p7a", "p7s", "css", "pnm", "mpc", "mpt", "mpv",
"mpx", "pyc", "pyo", "wb1", "qtl", "rar", "rpm", "ris", "rpm",
"rtf", "sdp", "sea", "sl", "sh", "shar", "sh", "swf", "swfl",
"xap", "sit", "spr", "sprite", "sql", "sit", "sitx", "srt", "sv4cpio",
"sv4crc", "t3", "gam", "tar", "sbk", "tbk", "tcl", "tex", "gf",
"pk", "tfm", "texinfo", "texi", "obj", "~", "%", "bak", "old",
"sik", "roff", "t", "tr", "man", "me", "ms", "avi", "ustar",
"vsd", "vst", "vsw", "mzz", "xpix", "vrml", "src", "wsrc", "webapp",
"wz", "hlp", "wtk", "svr", "wrl", "wpd", "wri", "der", "cer",
"crt", "crt", "xcf", "fig", "xlf", "xpi", "xz", "zip", "z1",
"z2", "z3", "z4", "z5", "z6", "z7", "z8", "xaml", "xdf", "xenc",
"xhtml", "xht", "xml", "xsl", "xpdl", "dtd", "xop", "xpl", "xslt",
"xspf", "mxml", "xhvml", "xvml", "xvm", "yang", "yin", "pko",
"zip", "adp", "aif", "aifc", "aiff", "au", "snd", "flac", "it",
"funk", "my", "pfunk", "pfunk", "rmi", "mid", "mid", "midi",
"kar", "rmi", "mod", "mp4a", "m4a", "mpga", "mp2", "mp2a", "mp3",
"m2a", "mpa", "mpg", "m3a", "mpega", "m4a", "mp3", "m3u", "la",
"lma", "oga", "ogg", "spx", "sid", "s3m", "sil", "tsi", "tsp",
"uva", "uvva", "eol", "dra", "dts", "dtshd", "lvp", "pya", "ecelp4800",
"ecelp7470", "ecelp9600", "qcp", "rip", "voc", "vox", "wav",
"weba", "aac", "snd", "aif", "aiff", "aifc", "au", "caf", "flac",
"gsd", "gsm", "jam", "lam", "mka", "mid", "midi", "mid", "midi",
"mod", "mp2", "mp3", "m3u", "m3u", "wax", "wma", "la", "lma",
"ram", "ra", "rm", "rmm", "rmp", "rmp", "ra", "rpm", "sid", "ra",
"pls", "sd2", "vqf", "vqe", "vql", "mjf", "voc", "wav", "xm",
"cdx", "cif", "cmdf", "cml", "csml", "pdb", "xyz", "xyz", "dwf",
"dwf", "otf", "ivr", "bmp", "bm", "cgm", "cod", "ras", "rast",
"fif", "flo", "turbot", "g3", "gif", "ief", "iefs", "jpeg", "jpg",
"jfif", "jfif-tbnl", "jpe", "jut", "ktx", "nap", "naplps", "pcx",
"pic", "pict", "jfif", "jfif", "jpe", "jpeg", "jpg", "png", "x-png",
"btif", "sgi", "svg", "svgz", "tiff", "tif", "mcf", "psd", "uvi",
"uvvi", "uvg", "uvvg", "djvu", "djv", "sub", "dwg", "dxf", "svf",
"dxf", "fbs", "fpx", "fpix", "fst", "mmr", "rlc", "mdi", "wdp",
"npx", "fpx", "rf", "rp", "wbmp", "xif", "webp", "3ds", "ras",
"ras", "cmx", "cdr", "pat", "cdt", "cpt", "dwg", "dxf", "svf",
"fh", "fhc", "fh4", "fh5", "fh7", "ico", "art", "jng", "jps",
"sid", "bmp", "nif", "niff", "pcx", "psd", "pic", "pct", "pnm",
"pbm", "pgm", "pgm", "ppm", "qif", "qti", "qtif", "rgb", "tga",
"tif", "tiff", "bmp", "xbm", "xpm", "xbm", "xpm", "pm", "xwd",
"xwd", "xbm", "xpm", "eml", "mht", "mhtml", "mime", "nws", "igs",
"iges", "msh", "mesh", "silo", "dae", "dwf", "gdl", "gtw", "mts",
"vtu", "wrl", "vrml", "wrz", "pov", "x3db", "x3dbz", "x3dv",
"x3dvz", "x3d", "x3dz", "gzip", "ustar", "zip", "mid", "midi",
"kar", "pvu", "asp", "appcache", "manifest", "ics", "ifb", "icz",
"csv", "css", "csv", "js", "event-stream", "323", "html", "acgi",
"htm", "htmls", "htx", "shtml", "stm", "uls", "js", "mml", "mcf",
"n3", "pas", "txt", "text", "conf", "def", "list", "log", "c",
"c++", "cc", "com", "cxx", "f", "f90", "for", "g", "h", "hh",
"idc", "jav", "java", "lst", "m", "mar", "pl", "sdml", "bas",
"in", "asc", "diff", "pot", "el", "ksh", "par", "dsc", "rtx",
"rt", "rtf", "rtf", "wsc", "sct", "wsc", "sgml", "sgm", "tsv",
"tm", "ts", "t", "tr", "roff", "man", "me", "ms", "ttl", "uri",
"uris", "uni", "unis", "urls", "vcard", "abc", "curl", "dcurl",
"mcurl", "scurl", "sub", "fly", "flx", "gv", "3dml", "spot",
"rt", "jad", "si", "sl", "wml", "wmls", "vtt", "htt", "s", "asm",
"aip", "c", "cc", "cxx", "cpp", "h", "hh", "dic", "h++", "hpp",
"hxx", "hh", "c++", "cpp", "cxx", "cc", "h", "htc", "csh", "c",
"f", "for", "f77", "f90", "h", "hh", "java", "java", "jav", "lsx",
"lua", "m", "markdown", "md", "mkd", "moc", "nfo", "opml", "p",
"pas", "gcd", "pl", "pm", "py", "hlb", "csh", "el", "scm", "ksh",
"lsp", "pl", "pm", "py", "rexx", "scm", "sh", "tcl", "tcsh",
"zsh", "shtml", "ssi", "etx", "sfv", "sgm", "sgml", "sh", "spc",
"talk", "tcl", "tk", "tex", "ltx", "sty", "cls", "uil", "uu",
"uue", "vcs", "vcf", "xml", "3gp", "3g2", "ts", "afl", "avi",
"avs", "dl", "flc", "fli", "flc", "fli", "gl", "h261", "h263",
"h264", "jpgv", "jpm", "jpgm", "mj2", "mjp2", "mp4", "mp4v",
"mpg4", "mpeg", "mpg", "mpe", "m1v", "m2v", "mp2", "mp3", "mpa",
"mpv2", "avi", "ogv", "qt", "moov", "mov", "vdo", "viv", "vivo",
"uvh", "uvvh", "uvm", "uvvm", "uvp", "uvvp", "uvs", "uvvs", "uvv",
"uvvv", "dvb", "fvt", "mxu", "m4u", "pyv", "rv", "uvu", "uvvu",
"viv", "vivo", "vos", "webm", "xdr", "xsr", "fmf", "dl", "dif",
"dv", "f4v", "fli", "flv", "gl", "isu", "lsf", "lsx", "m4v",
"mkv", "mk3d", "mks", "mng", "mjpg", "mp2", "mp3", "mp2", "asf",
"asx", "asr", "asx", "vob", "wm", "wmv", "wmx", "wvx", "avi",
"qtc", "scm", "movie", "mv", "smv", "wmf", "mime", "ice", "mid",
"midi", "3dm", "3dmf", "qd3", "qd3d", "svr", "vrml", "wrl", "wrz",
"flr", "xaf", "xof", "vrm", "vrt", "xgz", "xmz", "ma nb mb",
"doc dot", "bin dms lha lrf lzh so iso dmg dist distz pkg bpk dump elc deploy",
"onetoc onetoc2 onetmp onepkg", "asc sig", "p7m p7c", "ai eps ps",
"smi smil", "atc acutc", "c4g c4d c4f c4p c4u", "es3 et3", "seed dataless",
"fm frame maker book", "gex gre", "gqf gqs", "afp listafp list3820",
"icc icm", "xpw xpx", "ktz ktr", "kpr kpt", "kwd kwt", "kne knp",
"skp skd skt skm", "xls xlm xla xlc xlt xlw", "ppt pps pot",
"mpp mpt", "wps wks wcm wdb", "pdb pqa oprc", "qxd qxt qwd qwt qxl qxb",
"twd twds", "sdkm sdkd", "sus susp", "sis sisx", "ufd ufdl",
"vsd vst vss vsw", "zir zirz", "aab x32 u32 vox", "bz2 boz",
"deb udeb", "dir dcr dxr cst cct cxt w3d fgd swa", "ttf ttc",
"pfa pfb pfm afm", "prc mobi", "exe dll com bat msi", "mvb m13 m14",
"nc cdf", "p12 pfx", "p7b spc", "texinfo texi", "der crt", "xhtml xht",
"xml xsl", "mxml xhvml xvml xvm", "au snd", "mid midi kar rmi",
"mpga mp2 mp2a mp3 m2a m3a", "oga ogg spx", "aif aiff aifc",
"ram ra", "jpeg jpg jpe", "svg svgz", "tiff tif", "djvu djv",
"fh fhc fh4 fh5 fh7", "pic pct", "eml mime", "igs iges", "msh mesh silo",
"wrl vrml", "ics ifb", "html htm", "txt text conf def list log in",
"sgml sgm", "t tr roff man me ms", "uri uris urls", "s asm",
"c cc cxx cpp h hh dic", "f for f77 f90", "p pas", "jpm jpgm",
"mj2 mjp2", "mp4 mp4v mpg4", "mpeg mpg mpe m1v m2v", "qt mov",
"mxu m4u", "asf asx"), mime_type = c("application/x-bytecode.python",
"application/acad", "application/andrew-inset", "application/applixware",
"application/arj", "application/atom+xml", "application/atom+xml",
"application/atomcat+xml", "application/atomsvc+xml", "application/base64",
"application/base64", "application/binhex", "application/binhex4",
"application/book", "application/book", "application/ccxml+xml",
"application/cdf", "application/cdmi-capability", "application/cdmi-container",
"application/cdmi-domain", "application/cdmi-object", "application/cdmi-queue",
"application/clariscad", "application/commonground", "application/cu-seeme",
"application/cu-seeme", "application/davmount+xml", "application/docbook+xml",
"application/drafting", "application/dsptype", "application/dssc+der",
"application/dssc+xml", "application/dxf", "application/ecmascript",
"application/ecmascript", "application/ecmascript", "application/emma+xml",
"application/envoy", "application/epub+zip", "application/excel",
"application/excel", "application/excel", "application/excel",
"application/excel", "application/excel", "application/excel",
"application/excel", "application/excel", "application/excel",
"application/excel", "application/excel", "application/exi",
"application/font-tdpfr", "application/font-woff", "application/fractals",
"application/freeloader", "application/futuresplash", "application/gml+xml",
"application/gnutar", "application/gpx+xml", "application/groupwise",
"application/gxf", "application/hlp", "application/hta", "application/hyperstudio",
"application/i-deas", "application/iges", "application/iges",
"application/inf", "application/inkml+xml", "application/inkml+xml",
"application/internet-property-stream", "application/ipfix",
"application/java", "application/java-archive", "application/java-byte-code",
"application/java-serialized-object", "application/java-vm",
"application/javascript", "application/json", "application/jsonml+json",
"application/lha", "application/lost+xml", "application/lzx",
"application/mac-binary", "application/mac-binhex", "application/mac-binhex40",
"application/mac-compactpro", "application/macbinary", "application/mads+xml",
"application/marc", "application/marcxml+xml", "application/mathematica",
"application/mathematica", "application/mathematica", "application/mathml+xml",
"application/mbedlet", "application/mbox", "application/mcad",
"application/mediaservercontrol+xml", "application/metalink+xml",
"application/metalink4+xml", "application/mets+xml", "application/mime",
"application/mods+xml", "application/mp21", "application/mp21",
"application/mp4", "application/mp4", "application/mp4", "application/msaccess",
"application/msonenote", "application/msonenote", "application/msonenote",
"application/msonenote", "application/mspowerpoint", "application/mspowerpoint",
"application/mspowerpoint", "application/mspowerpoint", "application/msword",
"application/msword", "application/msword", "application/msword",
"application/msword", "application/mswrite", "application/mxf",
"application/netmc", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/octet-stream", "application/octet-stream", "application/octet-stream",
"application/oda", "application/oebps-package+xml", "application/ogg",
"application/ogg", "application/olescript", "application/omdoc+xml",
"application/onenote", "application/onenote", "application/onenote",
"application/onenote", "application/oxps", "application/patch-ops-error+xml",
"application/pdf", "application/pgp-encrypted", "application/pgp-keys",
"application/pgp-signature", "application/pgp-signature", "application/pgp-signature",
"application/pics-rules", "application/pkcs-12", "application/pkcs-crl",
"application/pkcs10", "application/pkcs7-mime", "application/pkcs7-mime",
"application/pkcs7-signature", "application/pkcs8", "application/pkix-attr-cert",
"application/pkix-cert", "application/pkix-cert", "application/pkix-crl",
"application/pkix-pkipath", "application/pkixcmp", "application/plain",
"application/pls+xml", "application/postscript", "application/postscript",
"application/postscript", "application/powerpoint", "application/pro_eng",
"application/pro_eng", "application/prs.cww", "application/pskc+xml",
"application/rar", "application/rdf+xml", "application/reginfo+xml",
"application/relax-ng-compact-syntax", "application/resource-lists+xml",
"application/resource-lists-diff+xml", "application/ringing-tones",
"application/rls-services+xml", "application/rpki-ghostbusters",
"application/rpki-manifest", "application/rpki-roa", "application/rsd+xml",
"application/rss+xml", "application/rss+xml", "application/rtf",
"application/rtf", "application/sbml+xml", "application/scvp-cv-request",
"application/scvp-cv-response", "application/scvp-vp-request",
"application/scvp-vp-response", "application/sdp", "application/sea",
"application/set", "application/set-payment-initiation", "application/set-registration-initiation",
"application/shf+xml", "application/sla", "application/smil",
"application/smil", "application/smil+xml", "application/smil+xml",
"application/solids", "application/sounder", "application/sparql-query",
"application/sparql-results+xml", "application/srgs", "application/srgs+xml",
"application/sru+xml", "application/ssdl+xml", "application/ssml+xml",
"application/step", "application/step", "application/streamingmedia",
"application/tei+xml", "application/tei+xml", "application/thraud+xml",
"application/timestamped-data", "application/toolbook", "application/vda",
"application/vnd.3gpp.pic-bw-large", "application/vnd.3gpp.pic-bw-small",
"application/vnd.3gpp.pic-bw-var", "application/vnd.3gpp2.tcap",
"application/vnd.3m.post-it-notes", "application/vnd.accpac.simply.aso",
"application/vnd.accpac.simply.imp", "application/vnd.acucobol",
"application/vnd.acucorp", "application/vnd.acucorp", "application/vnd.adobe.air-application-installer-package+zip",
"application/vnd.adobe.formscentral.fcdt", "application/vnd.adobe.fxp",
"application/vnd.adobe.fxp", "application/vnd.adobe.xdp+xml",
"application/vnd.adobe.xfdf", "application/vnd.ahead.space",
"application/vnd.airzip.filesecure.azf", "application/vnd.airzip.filesecure.azs",
"application/vnd.amazon.ebook", "application/vnd.americandynamics.acc",
"application/vnd.amiga.ami", "application/vnd.android.package-archive",
"application/vnd.anser-web-certificate-issue-initiation", "application/vnd.anser-web-funds-transfer-initiation",
"application/vnd.antix.game-component", "application/vnd.apple.installer+xml",
"application/vnd.apple.mpegurl", "application/vnd.arastra.swi",
"application/vnd.aristanetworks.swi", "application/vnd.astraea-software.iota",
"application/vnd.audiograph", "application/vnd.blueice.multipass",
"application/vnd.bmi", "application/vnd.businessobjects", "application/vnd.chemdraw+xml",
"application/vnd.chipnuts.karaoke-mmd", "application/vnd.cinderella",
"application/vnd.claymore", "application/vnd.cloanto.rp9", "application/vnd.clonk.c4group",
"application/vnd.clonk.c4group", "application/vnd.clonk.c4group",
"application/vnd.clonk.c4group", "application/vnd.clonk.c4group",
"application/vnd.cluetrust.cartomobile-config", "application/vnd.cluetrust.cartomobile-config-pkg",
"application/vnd.commonspace", "application/vnd.contact.cmsg",
"application/vnd.cosmocaller", "application/vnd.crick.clicker",
"application/vnd.crick.clicker.keyboard", "application/vnd.crick.clicker.palette",
"application/vnd.crick.clicker.template", "application/vnd.crick.clicker.wordbank",
"application/vnd.criticaltools.wbs+xml", "application/vnd.ctc-posml",
"application/vnd.cups-ppd", "application/vnd.curl.car", "application/vnd.curl.pcurl",
"application/vnd.dart", "application/vnd.data-vision.rdz", "application/vnd.dece.data",
"application/vnd.dece.data", "application/vnd.dece.data", "application/vnd.dece.data",
"application/vnd.dece.ttml+xml", "application/vnd.dece.ttml+xml",
"application/vnd.dece.unspecified", "application/vnd.dece.unspecified",
"application/vnd.dece.zip", "application/vnd.dece.zip", "application/vnd.denovo.fcselayout-link",
"application/vnd.dna", "application/vnd.dolby.mlp", "application/vnd.dpgraph",
"application/vnd.dreamfactory", "application/vnd.ds-keypoint",
"application/vnd.dvb.ait", "application/vnd.dvb.service", "application/vnd.dynageo",
"application/vnd.ecowin.chart", "application/vnd.enliven", "application/vnd.epson.esf",
"application/vnd.epson.msf", "application/vnd.epson.quickanime",
"application/vnd.epson.salt", "application/vnd.epson.ssf", "application/vnd.eszigno3+xml",
"application/vnd.eszigno3+xml", "application/vnd.ezpix-album",
"application/vnd.ezpix-package", "application/vnd.fdf", "application/vnd.fdsn.mseed",
"application/vnd.fdsn.seed", "application/vnd.fdsn.seed", "application/vnd.flographit",
"application/vnd.fluxtime.clip", "application/vnd.framemaker",
"application/vnd.framemaker", "application/vnd.framemaker", "application/vnd.framemaker",
"application/vnd.frogans.fnc", "application/vnd.frogans.ltf",
"application/vnd.fsc.weblaunch", "application/vnd.fujitsu.oasys",
"application/vnd.fujitsu.oasys2", "application/vnd.fujitsu.oasys3",
"application/vnd.fujitsu.oasysgp", "application/vnd.fujitsu.oasysprs",
"application/vnd.fujixerox.ddd", "application/vnd.fujixerox.docuworks",
"application/vnd.fujixerox.docuworks.binder", "application/vnd.fuzzysheet",
"application/vnd.genomatix.tuxedo", "application/vnd.geogebra.file",
"application/vnd.geogebra.tool", "application/vnd.geometry-explorer",
"application/vnd.geometry-explorer", "application/vnd.geonext",
"application/vnd.geoplan", "application/vnd.geospace", "application/vnd.gmx",
"application/vnd.google-earth.kml+xml", "application/vnd.google-earth.kmz",
"application/vnd.grafeq", "application/vnd.grafeq", "application/vnd.groove-account",
"application/vnd.groove-help", "application/vnd.groove-identity-message",
"application/vnd.groove-injector", "application/vnd.groove-tool-message",
"application/vnd.groove-tool-template", "application/vnd.groove-vcard",
"application/vnd.hal+xml", "application/vnd.handheld-entertainment+xml",
"application/vnd.hbci", "application/vnd.hhe.lesson-player",
"application/vnd.hp-hpgl", "application/vnd.hp-hpgl", "application/vnd.hp-hpgl",
"application/vnd.hp-hpid", "application/vnd.hp-hps", "application/vnd.hp-jlyt",
"application/vnd.hp-pcl", "application/vnd.hp-pclxl", "application/vnd.hydrostatix.sof-data",
"application/vnd.hzn-3d-crossword", "application/vnd.ibm.minipay",
"application/vnd.ibm.modcap", "application/vnd.ibm.modcap", "application/vnd.ibm.modcap",
"application/vnd.ibm.rights-management", "application/vnd.ibm.secure-container",
"application/vnd.iccprofile", "application/vnd.iccprofile", "application/vnd.igloader",
"application/vnd.immervision-ivp", "application/vnd.immervision-ivu",
"application/vnd.insors.igm", "application/vnd.intercon.formnet",
"application/vnd.intercon.formnet", "application/vnd.intergeo",
"application/vnd.intu.qbo", "application/vnd.intu.qfx", "application/vnd.ipunplugged.rcprofile",
"application/vnd.irepository.package+xml", "application/vnd.is-xpr",
"application/vnd.isac.fcs", "application/vnd.jam", "application/vnd.jcp.javame.midlet-rms",
"application/vnd.jisp", "application/vnd.joost.joda-archive",
"application/vnd.kahootz", "application/vnd.kahootz", "application/vnd.kde.karbon",
"application/vnd.kde.kchart", "application/vnd.kde.kformula",
"application/vnd.kde.kivio", "application/vnd.kde.kontour", "application/vnd.kde.kpresenter",
"application/vnd.kde.kpresenter", "application/vnd.kde.kspread",
"application/vnd.kde.kword", "application/vnd.kde.kword", "application/vnd.kenameaapp",
"application/vnd.kidspiration", "application/vnd.kinar", "application/vnd.kinar",
"application/vnd.koan", "application/vnd.koan", "application/vnd.koan",
"application/vnd.koan", "application/vnd.kodak-descriptor", "application/vnd.las.las+xml",
"application/vnd.llamagraphics.life-balance.desktop", "application/vnd.llamagraphics.life-balance.exchange+xml",
"application/vnd.lotus-1-2-3", "application/vnd.lotus-approach",
"application/vnd.lotus-freelance", "application/vnd.lotus-notes",
"application/vnd.lotus-organizer", "application/vnd.lotus-screencam",
"application/vnd.lotus-wordpro", "application/vnd.macports.portpkg",
"application/vnd.mcd", "application/vnd.medcalcdata", "application/vnd.mediastation.cdkey",
"application/vnd.mfer", "application/vnd.mfmp", "application/vnd.micrografx.flo",
"application/vnd.micrografx.igx", "application/vnd.mif", "application/vnd.mobius.daf",
"application/vnd.mobius.dis", "application/vnd.mobius.mbk", "application/vnd.mobius.mqy",
"application/vnd.mobius.msl", "application/vnd.mobius.plc", "application/vnd.mobius.txf",
"application/vnd.mophun.application", "application/vnd.mophun.certificate",
"application/vnd.mozilla.xul+xml", "application/vnd.ms-artgalry",
"application/vnd.ms-cab-compressed", "application/vnd.ms-excel",
"application/vnd.ms-excel", "application/vnd.ms-excel", "application/vnd.ms-excel",
"application/vnd.ms-excel", "application/vnd.ms-excel", "application/vnd.ms-excel",
"application/vnd.ms-excel", "application/vnd.ms-excel.addin.macroEnabled.12",
"application/vnd.ms-excel.addin.macroenabled.12", "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
"application/vnd.ms-excel.sheet.binary.macroenabled.12", "application/vnd.ms-excel.sheet.macroEnabled.12",
"application/vnd.ms-excel.sheet.macroenabled.12", "application/vnd.ms-excel.template.macroEnabled.12",
"application/vnd.ms-excel.template.macroenabled.12", "application/vnd.ms-fontobject",
"application/vnd.ms-htmlhelp", "application/vnd.ms-ims", "application/vnd.ms-lrm",
"application/vnd.ms-officetheme", "application/vnd.ms-outlook",
"application/vnd.ms-pki.certstore", "application/vnd.ms-pki.pko",
"application/vnd.ms-pki.seccat", "application/vnd.ms-pki.stl",
"application/vnd.ms-pkicertstore", "application/vnd.ms-pkiseccat",
"application/vnd.ms-pkistl", "application/vnd.ms-powerpoint",
"application/vnd.ms-powerpoint", "application/vnd.ms-powerpoint",
"application/vnd.ms-powerpoint", "application/vnd.ms-powerpoint",
"application/vnd.ms-powerpoint.addin.macroEnabled.12", "application/vnd.ms-powerpoint.addin.macroenabled.12",
"application/vnd.ms-powerpoint.presentation.macroEnabled.12",
"application/vnd.ms-powerpoint.presentation.macroEnabled.12",
"application/vnd.ms-powerpoint.presentation.macroenabled.12",
"application/vnd.ms-powerpoint.presentation.macroenabled.12",
"application/vnd.ms-powerpoint.slide.macroEnabled.12", "application/vnd.ms-powerpoint.slide.macroenabled.12",
"application/vnd.ms-powerpoint.slideshow.macroEnabled.12", "application/vnd.ms-powerpoint.slideshow.macroenabled.12",
"application/vnd.ms-powerpoint.template.macroEnabled.12", "application/vnd.ms-powerpoint.template.macroenabled.12",
"application/vnd.ms-project", "application/vnd.ms-project", "application/vnd.ms-word.document.macroEnabled.12",
"application/vnd.ms-word.document.macroenabled.12", "application/vnd.ms-word.template.macroEnabled.12",
"application/vnd.ms-word.template.macroenabled.12", "application/vnd.ms-works",
"application/vnd.ms-works", "application/vnd.ms-works", "application/vnd.ms-works",
"application/vnd.ms-wpl", "application/vnd.ms-xpsdocument", "application/vnd.mseq",
"application/vnd.musician", "application/vnd.muvee.style", "application/vnd.mynfc",
"application/vnd.neurolanguage.nlu", "application/vnd.nitf",
"application/vnd.nitf", "application/vnd.noblenet-directory",
"application/vnd.noblenet-sealer", "application/vnd.noblenet-web",
"application/vnd.nokia.configuration-message", "application/vnd.nokia.n-gage.data",
"application/vnd.nokia.n-gage.symbian.install", "application/vnd.nokia.radio-preset",
"application/vnd.nokia.radio-presets", "application/vnd.nokia.ringing-tone",
"application/vnd.novadigm.EDM", "application/vnd.novadigm.EDX",
"application/vnd.novadigm.EXT", "application/vnd.novadigm.edm",
"application/vnd.novadigm.edx", "application/vnd.novadigm.ext",
"application/vnd.oasis.opendocument.chart", "application/vnd.oasis.opendocument.chart-template",
"application/vnd.oasis.opendocument.database", "application/vnd.oasis.opendocument.formula",
"application/vnd.oasis.opendocument.formula-template", "application/vnd.oasis.opendocument.graphics",
"application/vnd.oasis.opendocument.graphics-template", "application/vnd.oasis.opendocument.image",
"application/vnd.oasis.opendocument.image-template", "application/vnd.oasis.opendocument.presentation",
"application/vnd.oasis.opendocument.presentation-template", "application/vnd.oasis.opendocument.spreadsheet",
"application/vnd.oasis.opendocument.spreadsheet-template", "application/vnd.oasis.opendocument.text",
"application/vnd.oasis.opendocument.text-master", "application/vnd.oasis.opendocument.text-master",
"application/vnd.oasis.opendocument.text-template", "application/vnd.oasis.opendocument.text-web",
"application/vnd.olpc-sugar", "application/vnd.oma.dd2+xml",
"application/vnd.openofficeorg.extension", "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"application/vnd.openxmlformats-officedocument.presentationml.slide",
"application/vnd.openxmlformats-officedocument.presentationml.slideshow",
"application/vnd.openxmlformats-officedocument.presentationml.template",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/vnd.openxmlformats-officedocument.spreadsheetml.template",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"application/vnd.openxmlformats-officedocument.wordprocessingml.template",
"application/vnd.osgeo.mapguide.package", "application/vnd.osgi.dp",
"application/vnd.osgi.subsystem", "application/vnd.palm", "application/vnd.palm",
"application/vnd.palm", "application/vnd.pawaafile", "application/vnd.pg.format",
"application/vnd.pg.osasli", "application/vnd.picsel", "application/vnd.pmi.widget",
"application/vnd.pocketlearn", "application/vnd.powerbuilder6",
"application/vnd.previewsystems.box", "application/vnd.proteus.magazine",
"application/vnd.publishare-delta-tree", "application/vnd.pvi.ptid1",
"application/vnd.quark.quarkxpress", "application/vnd.quark.quarkxpress",
"application/vnd.quark.quarkxpress", "application/vnd.quark.quarkxpress",
"application/vnd.quark.quarkxpress", "application/vnd.quark.quarkxpress",
"application/vnd.realvnc.bed", "application/vnd.recordare.musicxml",
"application/vnd.recordare.musicxml+xml", "application/vnd.rig.cryptonote",
"application/vnd.rim.cod", "application/vnd.rn-realmedia", "application/vnd.rn-realmedia-vbr",
"application/vnd.rn-realplayer", "application/vnd.route66.link66+xml",
"application/vnd.sailingtracker.track", "application/vnd.seemail",
"application/vnd.sema", "application/vnd.semd", "application/vnd.semf",
"application/vnd.shana.informed.formdata", "application/vnd.shana.informed.formtemplate",
"application/vnd.shana.informed.interchange", "application/vnd.shana.informed.package",
"application/vnd.simtech-mindmapper", "application/vnd.simtech-mindmapper",
"application/vnd.smaf", "application/vnd.smart.teacher", "application/vnd.solent.sdkm+xml",
"application/vnd.solent.sdkm+xml", "application/vnd.spotfire.dxp",
"application/vnd.spotfire.sfs", "application/vnd.stardivision.calc",
"application/vnd.stardivision.draw", "application/vnd.stardivision.impress",
"application/vnd.stardivision.impress", "application/vnd.stardivision.math",
"application/vnd.stardivision.writer", "application/vnd.stardivision.writer",
"application/vnd.stardivision.writer-global", "application/vnd.stepmania.package",
"application/vnd.stepmania.stepchart", "application/vnd.sun.xml.calc",
"application/vnd.sun.xml.calc.template", "application/vnd.sun.xml.draw",
"application/vnd.sun.xml.draw.template", "application/vnd.sun.xml.impress",
"application/vnd.sun.xml.impress.template", "application/vnd.sun.xml.math",
"application/vnd.sun.xml.writer", "application/vnd.sun.xml.writer.global",
"application/vnd.sun.xml.writer.template", "application/vnd.sus-calendar",
"application/vnd.sus-calendar", "application/vnd.svd", "application/vnd.symbian.install",
"application/vnd.symbian.install", "application/vnd.syncml+xml",
"application/vnd.syncml.dm+wbxml", "application/vnd.syncml.dm+xml",
"application/vnd.tao.intent-module-archive", "application/vnd.tcpdump.pcap",
"application/vnd.tcpdump.pcap", "application/vnd.tcpdump.pcap",
"application/vnd.tmobile-livetv", "application/vnd.trid.tpt",
"application/vnd.triscape.mxs", "application/vnd.trueapp", "application/vnd.ufdl",
"application/vnd.ufdl", "application/vnd.uiq.theme", "application/vnd.umajin",
"application/vnd.unity", "application/vnd.uoml+xml", "application/vnd.vcx",
"application/vnd.visio", "application/vnd.visio", "application/vnd.visio",
"application/vnd.visio", "application/vnd.visionary", "application/vnd.vsf",
"application/vnd.wap.sic", "application/vnd.wap.slc", "application/vnd.wap.wbxml",
"application/vnd.wap.wmlc", "application/vnd.wap.wmlscriptc",
"application/vnd.webturbo", "application/vnd.wolfram.player",
"application/vnd.wordperfect", "application/vnd.wqd", "application/vnd.wt.stf",
"application/vnd.xara", "application/vnd.xara", "application/vnd.xfdl",
"application/vnd.yamaha.hv-dic", "application/vnd.yamaha.hv-script",
"application/vnd.yamaha.hv-voice", "application/vnd.yamaha.openscoreformat",
"application/vnd.yamaha.openscoreformat.osfpvg+xml", "application/vnd.yamaha.smaf-audio",
"application/vnd.yamaha.smaf-phrase", "application/vnd.yellowriver-custom-menu",
"application/vnd.zul", "application/vnd.zul", "application/vnd.zzazz.deck+xml",
"application/vocaltec-media-desc", "application/vocaltec-media-file",
"application/voicexml+xml", "application/widget", "application/winhlp",
"application/wordperfect", "application/wordperfect", "application/wordperfect",
"application/wordperfect", "application/wordperfect5.1", "application/wordperfect6.0",
"application/wordperfect6.0", "application/wordperfect6.1", "application/wsdl+xml",
"application/wspolicy+xml", "application/x-123", "application/x-123",
"application/x-7z-compressed", "application/x-abiword", "application/x-ace-compressed",
"application/x-aim", "application/x-apple-diskimage", "application/x-authorware-bin",
"application/x-authorware-bin", "application/x-authorware-bin",
"application/x-authorware-bin", "application/x-authorware-map",
"application/x-authorware-seg", "application/x-bcpio", "application/x-binary",
"application/x-binhex40", "application/x-bittorrent", "application/x-blorb",
"application/x-blorb", "application/x-bsh", "application/x-bsh",
"application/x-bsh", "application/x-bytecode.elisp", "application/x-bytecode.elisp(compiledelisp)",
"application/x-bzip", "application/x-bzip2", "application/x-bzip2",
"application/x-cbr", "application/x-cbr", "application/x-cbr",
"application/x-cbr", "application/x-cbr", "application/x-cdf",
"application/x-cdlink", "application/x-cfs-compressed", "application/x-chat",
"application/x-chat", "application/x-chess-pgn", "application/x-chm",
"application/x-chrome-extension", "application/x-cmu-raster",
"application/x-cocoa", "application/x-compactpro", "application/x-compress",
"application/x-compressed", "application/x-compressed", "application/x-compressed",
"application/x-compressed", "application/x-conference", "application/x-cpio",
"application/x-cpt", "application/x-csh", "application/x-debian-package",
"application/x-debian-package", "application/x-deepv", "application/x-dgc-compressed",
"application/x-director", "application/x-director", "application/x-director",
"application/x-director", "application/x-director", "application/x-director",
"application/x-director", "application/x-director", "application/x-director",
"application/x-dms", "application/x-doom", "application/x-dtbncx+xml",
"application/x-dtbook+xml", "application/x-dtbresource+xml",
"application/x-dvi", "application/x-elc", "application/x-envoy",
"application/x-envoy", "application/x-esrehber", "application/x-eva",
"application/x-excel", "application/x-excel", "application/x-excel",
"application/x-excel", "application/x-excel", "application/x-excel",
"application/x-excel", "application/x-excel", "application/x-excel",
"application/x-excel", "application/x-excel", "application/x-flac",
"application/x-font", "application/x-font", "application/x-font",
"application/x-font", "application/x-font", "application/x-font-bdf",
"application/x-font-ghostscript", "application/x-font-linux-psf",
"application/x-font-otf", "application/x-font-pcf", "application/x-font-snf",
"application/x-font-ttf", "application/x-font-ttf", "application/x-font-type1",
"application/x-font-type1", "application/x-font-type1", "application/x-font-type1",
"application/x-font-woff", "application/x-frame", "application/x-freearc",
"application/x-freelance", "application/x-futuresplash", "application/x-gca-compressed",
"application/x-glulx", "application/x-gnumeric", "application/x-go-sgf",
"application/x-gramps-xml", "application/x-graphing-calculator",
"application/x-gsp", "application/x-gss", "application/x-gtar",
"application/x-gtar", "application/x-gtar", "application/x-gzip",
"application/x-gzip", "application/x-gzip", "application/x-hdf",
"application/x-helpfile", "application/x-helpfile", "application/x-httpd-imap",
"application/x-httpd-php", "application/x-httpd-php", "application/x-httpd-php",
"application/x-httpd-php-source", "application/x-httpd-php3",
"application/x-httpd-php3-preprocessed", "application/x-httpd-php4",
"application/x-ica", "application/x-ima", "application/x-install-instructions",
"application/x-internet-signup", "application/x-internet-signup",
"application/x-internett-signup", "application/x-inventor", "application/x-ip2",
"application/x-iphone", "application/x-iso9660-image", "application/x-java-archive",
"application/x-java-class", "application/x-java-commerce", "application/x-java-jnlp-file",
"application/x-java-serialized-object", "application/x-java-vm",
"application/x-javascript", "application/x-kchart", "application/x-killustrator",
"application/x-koan", "application/x-koan", "application/x-koan",
"application/x-koan", "application/x-kpresenter", "application/x-kpresenter",
"application/x-ksh", "application/x-kspread", "application/x-kword",
"application/x-kword", "application/x-latex", "application/x-latex",
"application/x-lha", "application/x-lisp", "application/x-livescreen",
"application/x-lotus", "application/x-lotusscreencam", "application/x-lua-bytecode",
"application/x-lzh", "application/x-lzh-compressed", "application/x-lzh-compressed",
"application/x-lzx", "application/x-mac-binhex40", "application/x-macbinary",
"application/x-magic-cap-package-1.0", "application/x-maker",
"application/x-maker", "application/x-maker", "application/x-maker",
"application/x-maker", "application/x-maker", "application/x-maker",
"application/x-mathcad", "application/x-meme", "application/x-midi",
"application/x-midi", "application/x-mie", "application/x-mif",
"application/x-mix-transfer", "application/x-mobipocket-ebook",
"application/x-mobipocket-ebook", "application/x-mpegURL", "application/x-mplayer2",
"application/x-ms-application", "application/x-ms-shortcut",
"application/x-ms-wmd", "application/x-ms-wmz", "application/x-ms-xbap",
"application/x-msaccess", "application/x-msbinder", "application/x-mscardfile",
"application/x-msclip", "application/x-msdos-program", "application/x-msdos-program",
"application/x-msdos-program", "application/x-msdos-program",
"application/x-msdownload", "application/x-msdownload", "application/x-msdownload",
"application/x-msdownload", "application/x-msdownload", "application/x-msexcel",
"application/x-msexcel", "application/x-msexcel", "application/x-msi",
"application/x-msmediaview", "application/x-msmediaview", "application/x-msmediaview",
"application/x-msmetafile", "application/x-msmetafile", "application/x-msmetafile",
"application/x-msmetafile", "application/x-msmoney", "application/x-mspowerpoint",
"application/x-mspublisher", "application/x-msschedule", "application/x-msterminal",
"application/x-mswrite", "application/x-navi-animation", "application/x-navidoc",
"application/x-navimap", "application/x-navistyle", "application/x-netcdf",
"application/x-netcdf", "application/x-newton-compatible-pkg",
"application/x-nokia-9000-communicator-add-on-software", "application/x-ns-proxy-autoconfig",
"application/x-nwc", "application/x-nzb", "application/x-object",
"application/x-omc", "application/x-omcdatamaker", "application/x-omcregerator",
"application/x-oz-application", "application/x-pagemaker", "application/x-pagemaker",
"application/x-pcl", "application/x-perfmon", "application/x-perfmon",
"application/x-perfmon", "application/x-perfmon", "application/x-perfmon",
"application/x-pixclscript", "application/x-pkcs10", "application/x-pkcs12",
"application/x-pkcs12", "application/x-pkcs7-certificates", "application/x-pkcs7-certificates",
"application/x-pkcs7-certreqresp", "application/x-pkcs7-crl",
"application/x-pkcs7-mime", "application/x-pkcs7-mime", "application/x-pkcs7-signature",
"application/x-pkcs7-signature", "application/x-pointplus", "application/x-portable-anymap",
"application/x-project", "application/x-project", "application/x-project",
"application/x-project", "application/x-python-code", "application/x-python-code",
"application/x-qpro", "application/x-quicktimeplayer", "application/x-rar-compressed",
"application/x-redhat-package-manager", "application/x-research-info-systems",
"application/x-rpm", "application/x-rtf", "application/x-sdp",
"application/x-sea", "application/x-seelogo", "application/x-sh",
"application/x-shar", "application/x-shar", "application/x-shockwave-flash",
"application/x-shockwave-flash", "application/x-silverlight-app",
"application/x-sit", "application/x-sprite", "application/x-sprite",
"application/x-sql", "application/x-stuffit", "application/x-stuffitx",
"application/x-subrip", "application/x-sv4cpio", "application/x-sv4crc",
"application/x-t3vm-image", "application/x-tads", "application/x-tar",
"application/x-tbook", "application/x-tbook", "application/x-tcl",
"application/x-tex", "application/x-tex-gf", "application/x-tex-pk",
"application/x-tex-tfm", "application/x-texinfo", "application/x-texinfo",
"application/x-tgif", "application/x-trash", "application/x-trash",
"application/x-trash", "application/x-trash", "application/x-trash",
"application/x-troff", "application/x-troff", "application/x-troff",
"application/x-troff-man", "application/x-troff-me", "application/x-troff-ms",
"application/x-troff-msvideo", "application/x-ustar", "application/x-visio",
"application/x-visio", "application/x-visio", "application/x-vnd.audioexplosion.mzz",
"application/x-vnd.ls-xpix", "application/x-vrml", "application/x-wais-source",
"application/x-wais-source", "application/x-web-app-manifest+json",
"application/x-wingz", "application/x-winhelp", "application/x-wintalk",
"application/x-world", "application/x-world", "application/x-wpwin",
"application/x-wri", "application/x-x509-ca-cert", "application/x-x509-ca-cert",
"application/x-x509-ca-cert", "application/x-x509-user-cert",
"application/x-xcf", "application/x-xfig", "application/x-xliff+xml",
"application/x-xpinstall", "application/x-xz", "application/x-zip-compressed",
"application/x-zmachine", "application/x-zmachine", "application/x-zmachine",
"application/x-zmachine", "application/x-zmachine", "application/x-zmachine",
"application/x-zmachine", "application/x-zmachine", "application/xaml+xml",
"application/xcap-diff+xml", "application/xenc+xml", "application/xhtml+xml",
"application/xhtml+xml", "application/xml", "application/xml",
"application/xml", "application/xml-dtd", "application/xop+xml",
"application/xproc+xml", "application/xslt+xml", "application/xspf+xml",
"application/xv+xml", "application/xv+xml", "application/xv+xml",
"application/xv+xml", "application/yang", "application/yin+xml",
"application/ynd.ms-pkipko", "application/zip", "audio/adpcm",
"audio/aiff", "audio/aiff", "audio/aiff", "audio/basic", "audio/basic",
"audio/flac", "audio/it", "audio/make", "audio/make", "audio/make",
"audio/make.my.funk", "audio/mid", "audio/mid", "audio/midi",
"audio/midi", "audio/midi", "audio/midi", "audio/mod", "audio/mp4",
"audio/mp4", "audio/mpeg", "audio/mpeg", "audio/mpeg", "audio/mpeg",
"audio/mpeg", "audio/mpeg", "audio/mpeg", "audio/mpeg", "audio/mpeg",
"audio/mpeg", "audio/mpeg3", "audio/mpegurl", "audio/nspaudio",
"audio/nspaudio", "audio/ogg", "audio/ogg", "audio/ogg", "audio/prs.sid",
"audio/s3m", "audio/silk", "audio/tsp-audio", "audio/tsplayer",
"audio/vnd.dece.audio", "audio/vnd.dece.audio", "audio/vnd.digital-winds",
"audio/vnd.dra", "audio/vnd.dts", "audio/vnd.dts.hd", "audio/vnd.lucent.voice",
"audio/vnd.ms-playready.media.pya", "audio/vnd.nuera.ecelp4800",
"audio/vnd.nuera.ecelp7470", "audio/vnd.nuera.ecelp9600", "audio/vnd.qcelp",
"audio/vnd.rip", "audio/voc", "audio/voxware", "audio/wav", "audio/webm",
"audio/x-aac", "audio/x-adpcm", "audio/x-aiff", "audio/x-aiff",
"audio/x-aiff", "audio/x-au", "audio/x-caf", "audio/x-flac",
"audio/x-gsm", "audio/x-gsm", "audio/x-jam", "audio/x-liveaudio",
"audio/x-matroska", "audio/x-mid", "audio/x-mid", "audio/x-midi",
"audio/x-midi", "audio/x-mod", "audio/x-mpeg", "audio/x-mpeg-3",
"audio/x-mpegurl", "audio/x-mpequrl", "audio/x-ms-wax", "audio/x-ms-wma",
"audio/x-nspaudio", "audio/x-nspaudio", "audio/x-pn-realaudio",
"audio/x-pn-realaudio", "audio/x-pn-realaudio", "audio/x-pn-realaudio",
"audio/x-pn-realaudio", "audio/x-pn-realaudio-plugin", "audio/x-pn-realaudio-plugin",
"audio/x-pn-realaudio-plugin", "audio/x-psid", "audio/x-realaudio",
"audio/x-scpls", "audio/x-sd2", "audio/x-twinvq", "audio/x-twinvq-plugin",
"audio/x-twinvq-plugin", "audio/x-vnd.audioexplosion.mjuicemediafile",
"audio/x-voc", "audio/x-wav", "audio/xm", "chemical/x-cdx", "chemical/x-cif",
"chemical/x-cmdf", "chemical/x-cml", "chemical/x-csml", "chemical/x-pdb",
"chemical/x-pdb", "chemical/x-xyz", "drawing/x-dwf", "drawing/x-dwf(old)",
"font/opentype", "i-world/i-vrml", "image/bmp", "image/bmp",
"image/cgm", "image/cis-cod", "image/cmu-raster", "image/cmu-raster",
"image/fif", "image/florian", "image/florian", "image/g3fax",
"image/gif", "image/ief", "image/ief", "image/jpeg", "image/jpeg",
"image/jpeg", "image/jpeg", "image/jpeg", "image/jutvision",
"image/ktx", "image/naplps", "image/naplps", "image/pcx", "image/pict",
"image/pict", "image/pipeg", "image/pjpeg", "image/pjpeg", "image/pjpeg",
"image/pjpeg", "image/png", "image/png", "image/prs.btif", "image/sgi",
"image/svg+xml", "image/svg+xml", "image/tiff", "image/tiff",
"image/vasa", "image/vnd.adobe.photoshop", "image/vnd.dece.graphic",
"image/vnd.dece.graphic", "image/vnd.dece.graphic", "image/vnd.dece.graphic",
"image/vnd.djvu", "image/vnd.djvu", "image/vnd.dvb.subtitle",
"image/vnd.dwg", "image/vnd.dwg", "image/vnd.dwg", "image/vnd.dxf",
"image/vnd.fastbidsheet", "image/vnd.fpx", "image/vnd.fpx", "image/vnd.fst",
"image/vnd.fujixerox.edmics-mmr", "image/vnd.fujixerox.edmics-rlc",
"image/vnd.ms-modi", "image/vnd.ms-photo", "image/vnd.net-fpx",
"image/vnd.net-fpx", "image/vnd.rn-realflash", "image/vnd.rn-realpix",
"image/vnd.wap.wbmp", "image/vnd.xiff", "image/webp", "image/x-3ds",
"image/x-cmu-rast", "image/x-cmu-raster", "image/x-cmx", "image/x-coreldraw",
"image/x-coreldrawpattern", "image/x-coreldrawtemplate", "image/x-corelphotopaint",
"image/x-dwg", "image/x-dwg", "image/x-dwg", "image/x-freehand",
"image/x-freehand", "image/x-freehand", "image/x-freehand", "image/x-freehand",
"image/x-icon", "image/x-jg", "image/x-jng", "image/x-jps", "image/x-mrsid-image",
"image/x-ms-bmp", "image/x-niff", "image/x-niff", "image/x-pcx",
"image/x-photoshop", "image/x-pict", "image/x-pict", "image/x-portable-anymap",
"image/x-portable-bitmap", "image/x-portable-graymap", "image/x-portable-greymap",
"image/x-portable-pixmap", "image/x-quicktime", "image/x-quicktime",
"image/x-quicktime", "image/x-rgb", "image/x-tga", "image/x-tiff",
"image/x-tiff", "image/x-windows-bmp", "image/x-xbitmap", "image/x-xbitmap",
"image/x-xbm", "image/x-xpixmap", "image/x-xpixmap", "image/x-xwd",
"image/x-xwindowdump", "image/xbm", "image/xpm", "message/rfc822",
"message/rfc822", "message/rfc822", "message/rfc822", "message/rfc822",
"model/iges", "model/iges", "model/mesh", "model/mesh", "model/mesh",
"model/vnd.collada+xml", "model/vnd.dwf", "model/vnd.gdl", "model/vnd.gtw",
"model/vnd.mts", "model/vnd.vtu", "model/vrml", "model/vrml",
"model/vrml", "model/x-pov", "model/x3d+binary", "model/x3d+binary",
"model/x3d+vrml", "model/x3d+vrml", "model/x3d+xml", "model/x3d+xml",
"multipart/x-gzip", "multipart/x-ustar", "multipart/x-zip", "music/crescendo",
"music/crescendo", "music/x-karaoke", "paleovu/x-pv", "text/asp",
"text/cache-manifest", "text/cache-manifest", "text/calendar",
"text/calendar", "text/calendar", "text/comma-separated-values",
"text/css", "text/csv", "text/ecmascript", "text/event-stream",
"text/h323", "text/html", "text/html", "text/html", "text/html",
"text/html", "text/html", "text/html", "text/iuls", "text/javascript",
"text/mathml", "text/mcf", "text/n3", "text/pascal", "text/plain",
"text/plain", "text/plain", "text/plain", "text/plain", "text/plain",
"text/plain", "text/plain", "text/plain", "text/plain", "text/plain",
"text/plain", "text/plain", "text/plain", "text/plain", "text/plain",
"text/plain", "text/plain", "text/plain", "text/plain", "text/plain",
"text/plain", "text/plain", "text/plain", "text/plain", "text/plain",
"text/plain", "text/plain", "text/plain", "text/plain", "text/plain",
"text/plain", "text/plain-bas", "text/prs.lines.tag", "text/richtext",
"text/richtext", "text/richtext", "text/rtf", "text/scriplet",
"text/scriptlet", "text/scriptlet", "text/sgml", "text/sgml",
"text/tab-separated-values", "text/texmacs", "text/texmacs",
"text/troff", "text/troff", "text/troff", "text/troff", "text/troff",
"text/troff", "text/turtle", "text/uri-list", "text/uri-list",
"text/uri-list", "text/uri-list", "text/uri-list", "text/vcard",
"text/vnd.abc", "text/vnd.curl", "text/vnd.curl.dcurl", "text/vnd.curl.mcurl",
"text/vnd.curl.scurl", "text/vnd.dvb.subtitle", "text/vnd.fly",
"text/vnd.fmi.flexstor", "text/vnd.graphviz", "text/vnd.in3d.3dml",
"text/vnd.in3d.spot", "text/vnd.rn-realtext", "text/vnd.sun.j2me.app-descriptor",
"text/vnd.wap.si", "text/vnd.wap.sl", "text/vnd.wap.wml", "text/vnd.wap.wmlscript",
"text/vtt", "text/webviewhtml", "text/x-asm", "text/x-asm", "text/x-audiosoft-intra",
"text/x-c", "text/x-c", "text/x-c", "text/x-c", "text/x-c", "text/x-c",
"text/x-c", "text/x-c++hdr", "text/x-c++hdr", "text/x-c++hdr",
"text/x-c++hdr", "text/x-c++src", "text/x-c++src", "text/x-c++src",
"text/x-c++src", "text/x-chdr", "text/x-component", "text/x-csh",
"text/x-csrc", "text/x-fortran", "text/x-fortran", "text/x-fortran",
"text/x-fortran", "text/x-h", "text/x-h", "text/x-java", "text/x-java-source",
"text/x-java-source", "text/x-la-asf", "text/x-lua", "text/x-m",
"text/x-markdown", "text/x-markdown", "text/x-markdown", "text/x-moc",
"text/x-nfo", "text/x-opml", "text/x-pascal", "text/x-pascal",
"text/x-pcs-gcd", "text/x-perl", "text/x-perl", "text/x-python",
"text/x-script", "text/x-script.csh", "text/x-script.elisp",
"text/x-script.guile", "text/x-script.ksh", "text/x-script.lisp",
"text/x-script.perl", "text/x-script.perl-module", "text/x-script.phyton",
"text/x-script.rexx", "text/x-script.scheme", "text/x-script.sh",
"text/x-script.tcl", "text/x-script.tcsh", "text/x-script.zsh",
"text/x-server-parsed-html", "text/x-server-parsed-html", "text/x-setext",
"text/x-sfv", "text/x-sgml", "text/x-sgml", "text/x-sh", "text/x-speech",
"text/x-speech", "text/x-tcl", "text/x-tcl", "text/x-tex", "text/x-tex",
"text/x-tex", "text/x-tex", "text/x-uil", "text/x-uuencode",
"text/x-uuencode", "text/x-vcalendar", "text/x-vcard", "text/xml",
"video/3gpp", "video/3gpp2", "video/MP2T", "video/animaflex",
"video/avi", "video/avs-video", "video/dl", "video/flc", "video/flc",
"video/fli", "video/fli", "video/gl", "video/h261", "video/h263",
"video/h264", "video/jpeg", "video/jpm", "video/jpm", "video/mj2",
"video/mj2", "video/mp4", "video/mp4", "video/mp4", "video/mpeg",
"video/mpeg", "video/mpeg", "video/mpeg", "video/mpeg", "video/mpeg",
"video/mpeg", "video/mpeg", "video/mpeg", "video/msvideo", "video/ogg",
"video/quicktime", "video/quicktime", "video/quicktime", "video/vdo",
"video/vivo", "video/vivo", "video/vnd.dece.hd", "video/vnd.dece.hd",
"video/vnd.dece.mobile", "video/vnd.dece.mobile", "video/vnd.dece.pd",
"video/vnd.dece.pd", "video/vnd.dece.sd", "video/vnd.dece.sd",
"video/vnd.dece.video", "video/vnd.dece.video", "video/vnd.dvb.file",
"video/vnd.fvt", "video/vnd.mpegurl", "video/vnd.mpegurl", "video/vnd.ms-playready.media.pyv",
"video/vnd.rn-realvideo", "video/vnd.uvvu.mp4", "video/vnd.uvvu.mp4",
"video/vnd.vivo", "video/vnd.vivo", "video/vosaic", "video/webm",
"video/x-amt-demorun", "video/x-amt-showrun", "video/x-atomic3d-feature",
"video/x-dl", "video/x-dv", "video/x-dv", "video/x-f4v", "video/x-fli",
"video/x-flv", "video/x-gl", "video/x-isvideo", "video/x-la-asf",
"video/x-la-asf", "video/x-m4v", "video/x-matroska", "video/x-matroska",
"video/x-matroska", "video/x-mng", "video/x-motion-jpeg", "video/x-mpeg",
"video/x-mpeg", "video/x-mpeq2a", "video/x-ms-asf", "video/x-ms-asf",
"video/x-ms-asf", "video/x-ms-asf-plugin", "video/x-ms-vob",
"video/x-ms-wm", "video/x-ms-wmv", "video/x-ms-wmx", "video/x-ms-wvx",
"video/x-msvideo", "video/x-qtc", "video/x-scm", "video/x-sgi-movie",
"video/x-sgi-movie", "video/x-smv", "windows/metafile", "www/mime",
"x-conference/x-cooltalk", "x-music/x-midi", "x-music/x-midi",
"x-world/x-3dmf", "x-world/x-3dmf", "x-world/x-3dmf", "x-world/x-3dmf",
"x-world/x-svr", "x-world/x-vrml", "x-world/x-vrml", "x-world/x-vrml",
"x-world/x-vrml", "x-world/x-vrml", "x-world/x-vrml", "x-world/x-vrml",
"x-world/x-vrt", "xgl/drawing", "xgl/movie", "application/mathematica",
"application/msword", "application/octet-stream", "application/onenote",
"application/pgp-signature", "application/pkcs7-mime", "application/postscript",
"application/smil+xml", "application/vnd.acucorp", "application/vnd.clonk.c4group",
"application/vnd.eszigno3+xml", "application/vnd.fdsn.seed",
"application/vnd.framemaker", "application/vnd.geometry-explorer",
"application/vnd.grafeq", "application/vnd.ibm.modcap", "application/vnd.iccprofile",
"application/vnd.intercon.formnet", "application/vnd.kahootz",
"application/vnd.kde.kpresenter", "application/vnd.kde.kword",
"application/vnd.kinar", "application/vnd.koan", "application/vnd.ms-excel",
"application/vnd.ms-powerpoint", "application/vnd.ms-project",
"application/vnd.ms-works", "application/vnd.palm", "application/vnd.quark.quarkxpress",
"application/vnd.simtech-mindmapper", "application/vnd.solent.sdkm+xml",
"application/vnd.sus-calendar", "application/vnd.symbian.install",
"application/vnd.ufdl", "application/vnd.visio", "application/vnd.zul",
"application/x-authorware-bin", "application/x-bzip2", "application/x-debian-package",
"application/x-director", "application/x-font-ttf", "application/x-font-type1",
"application/x-mobipocket-ebook", "application/x-msdownload",
"application/x-msmediaview", "application/x-netcdf", "application/x-pkcs12",
"application/x-pkcs7-certificates", "application/x-texinfo",
"application/x-x509-ca-cert", "application/xhtml+xml", "application/xml",
"application/xv+xml", "audio/basic", "audio/midi", "audio/mpeg",
"audio/ogg", "audio/x-aiff", "audio/x-pn-realaudio", "image/jpeg",
"image/svg+xml", "image/tiff", "image/vnd.djvu", "image/x-freehand",
"image/x-pict", "message/rfc822", "model/iges", "model/mesh",
"model/vrml", "text/calendar", "text/html", "text/plain", "text/sgml",
"text/troff", "text/uri-list", "text/x-asm", "text/x-c", "text/x-fortran",
"text/x-pascal", "video/jpm", "video/mj2", "video/mp4", "video/mpeg",
"video/quicktime", "video/vnd.mpegurl", "video/x-ms-asf")), row.names = c(NA,
-1763L), class = c("tbl_df", "tbl", "data.frame"), .Names = c("extension",
"mime_type")) -> simplemagic_mime_db

32
R/check-office.R

@ -0,0 +1,32 @@
check_office <- function(hdr, path) {
# [Content_Types.xml] || length 19
c(
0x5b,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x5f,0x54,
0x79,0x70,0x65,0x73,0x5d,0x2e,0x78,0x6d,0x6c
) -> pat_content_types
# _rels/.rels || length 11
pat_rels <- c(0x5f,0x72,0x65,0x6c,0x73,0x2f,0x2e,0x72,0x65,0x6c,0x73)
if ((all(pat_content_types == hdr[31:49])) || (all(pat_rels == hdr[31:41]))) {
hdr <- readBin(path, "raw", n=4096)
pat_word <- c(0x77,0x6f,0x72,0x64,0x2f)
if (length(seq_in(hdr, pat_word)) > 0)
return("application/vnd.openxmlformats-officedocument.wordprocessingml.document")
pat_ppt <- c(0x70,0x70,0x74,0x2f)
if (length(seq_in(hdr, pat_ppt)) > 0)
return("application/vnd.openxmlformats-officedocument.presentationml.presentation")
pat_xl <- c(0x78,0x6c,0x2f)
if (length(seq_in(hdr, pat_xl)) > 0)
return("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
}
return(NULL)
}

31
R/datasets.r

@ -1,31 +0,0 @@
#' @title MIME Types Database
#' @description This is a dataset of all mime types. It aggregates data from the
#' following sources:
#'
#' \itemize{
#' \item \url{http://www.iana.org/assignments/media-types/media-types.xhtml}
#' \item \url{http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types}
#' \item \url{http://hg.nginx.org/nginx/raw-file/default/conf/mime.types}
#' }
#'
#' There are a total of four possible fields per element:
#'
#' \itemize{
#' \item \code{source}: where the mime type is defined. If not set, it's
#' probably a custom media type. One of \code{apache}, \code{iana} or \code{nginx}.
#' \item \code{extensions}: a character vector of known extensions associated with this mime type.
#' \item \code{compressible}: whether a file of this type can be "gzipped" (mostly
#' useful in the context of serving up web content).
#' \item \code{charset}: the default charset associated with this type, if any.
#' }
#'
#' @docType data
#' @keywords datasets
#' @name mime_db
#'
#' @references Ingested from \url{https://github.com/jshttp/mime-db}.
#' @usage data(mime_db)
#' @note Last updated 2016-08-14; the only guaranteed field is \code{source}
#' @format A list with 1,883 elements and four named fields: \code{source},
#' \code{compressible}, \code{extensions} & \code{charset}.
NULL

116
R/get-content-type.R

@ -0,0 +1,116 @@
#' Discover MIME type of a file based on contents
#'
#' There are a limited number of header "magic" bytes checked directly by
#' this function but cover quite a bit of ground. After that, [guess_content_type()] is called which uses
#' file extension-to-MIME mappings. File an issue or PR if more magic-byte-level
#' comparisons are required/desired. If no match is found, `???` is returned.
#'
#' @details
#' Initial in-R header mapping logic borrowed from `MimeTypes.java` from
#' [`servoy-client`](https://github.com/Servoy/servoy-client)
#'
#' @md
#' @param path path to a file
#' @return character vector
#' @export
#' @examples
#' get_content_type(system.file("extdat", "test.pdf", package="simplemagic"))
get_content_type <- function(path) {
path <- path.expand(path)
if (!file.exists(path)) stop("File not found.", call.=FALSE)
hdr <- readBin(path, "raw", n=1024)
if (all(c(0xCA,0xFE,0xBA,0xBE) == hdr[1:4])) return("application/java-vm")
if (all(c(0xD0,0xCF,0x11,0xE0,0xA1,0xB1,0x1A,0xE1) == hdr[1:8])) {
guessed_name <- guess_content_type(path)
if ((length(guessed_name) == 1) && (guessed_name != "???")) return(guessed_name)
return("application/msword")
}
if (all(c(0x25,0x50,0x44,0x46,0x2d,0x31,0x2e) == hdr[1:7])) return("application/pdf")
if (all(c(0x25,0x50,0x44,0x46) == hdr[1:4])) return("application/x-pdf")
if (all(c(0x38,0x42,0x50,0x53,0x00,0x01) == hdr[1:6])) return("image/photoshop")
if (all(c(0x25,0x21,0x50,0x53) == hdr[1:4])) return("application/postscript")
if (all(c(0xff,0xfb,0x30) == hdr[1:3])) return("audio/mp3")
if (all(c(0xff,0xfb,0xd0) == hdr[1:3])) return("audio/mp3")
if (all(c(0xff,0xfb,0x90) == hdr[1:3])) return("audio/mp3")
if (all(c(0x49,0x44,0x33) == hdr[1:3])) return("audio/mp3")
if (all(c(0xAC,0xED) == hdr[1:2])) return("application/x-java-serialized-object")
if (hdr[1] == 0x3c) { # "<"
if (all(c(0x68,0x74,0x6d,0x6c) == hdr[2:5])) return("text/html") # "html"
if (all(c(0x48,0x54,0x4d,0x4c) == hdr[2:5])) return("text/html") # "HTML"
if (all(c(0x48,0x45,0x41,0x44) == hdr[2:5])) return("text/html") # "HEAD"
if (all(c(0x68,0x65,0x61,0x64) == hdr[2:5])) return("text/html") # "head"
if (all(c(0x3f,0x78,0x6d,0x6c,0x20) == hdr[2:6])) return("application/xml")
}
if (all(c(0xfe,0xff) == hdr[1:2])) {
if (all(c(0x00,0x3c,0x00,0x3f,0x00,0x78) == hdr[3:8])) return("application/xml")
}
if (all(c(0x42,0x4d) == hdr[1:2])) return("image/bmp")
if (all(c(0x49,0x49,0x2a,0x00) == hdr[1:4])) return("image/tiff")
if (all(c(0x4D,0x4D,0x00,0x2a) == hdr[1:4])) return("image/tiff")
if (all(c(0x47,0x49,0x46,0x38) == hdr[1:4])) return("image/gif")
if (all(c(0x23,0x64,0x65,0x66) == hdr[1:4])) return("image/x-bitmap")
if (all(c(0x21,0x20,0x58,0x50,0x4d,0x32) == hdr[1:6])) return("image/x-pixmap")
if (all(c(137,80,78,71,13,10,26,10) == hdr[1:8])) return("image/png")
if (all(c(0x23,0x21,0x2f,0x62,0x69,0x6e,0x2f,0x6e,0x6f,0x64,0x65) == hdr[1:11]))
return("application/javascript")
if (all(c(0x23,0x21,0x2f,0x62,0x69,0x6e,0x2f,0x6e,0x6f,0x64,0x65,0x6a,0x73) == hdr[1:13]))
return("application/javascript")
if (all(c(0x23,0x21,0x2f,0x75,0x73,0x72,0x2f,0x62,0x69,0x6e,0x2f,0x6e,0x6f,0x64,0x65) == hdr[1:15]))
return("application/javascript")
if (all(c(0x23,0x21,0x2f,0x75,0x73,0x72,0x2f,0x62,0x69,0x6e,0x2f,0x6e,0x6f,0x64,0x65,0x6a,0x73) == hdr[1:17]))
return("application/javascript")
if (all(c(0x23,0x21,0x2f,0x75,0x73,0x72,0x2f,0x62,0x69,0x6e,0x2f,0x65,0x6e,0x76,0x20,0x6e,0x6f,0x64,0x65) == hdr[1:19]))
return("application/javascript")
if (all(c(0x23,0x21,0x2f,0x75,0x73,0x72,0x2f,0x62,0x69,0x6e,0x2f,0x65,0x6e,0x76,0x20,0x6e,0x6f,0x64,0x65,0x6a,0x73) == hdr[1:21]))
return("application/javascript")
if (all(c(0xFF,0xD8,0xFF) == hdr[1:3])) {
if (0xE0 == hdr[4]) return("image/jpeg")
if (0xE1 == hdr[4]) {
if (all(c(0x45,0x78,0x69,0x66,0x00) == hdr[7:11])) return("image/jpeg") # Exif
}
if (0xEE == hdr[4]) return("image/jpg")
}
if (all(c(0x41,0x43) == hdr[1:2]) && all(c(0x00,0x00,0x00,0x00,0x00) == hdr[7:11]))
return("application/acad")
if (all(c(0x2E,0x73,0x6E,0x64) == hdr[1:4])) return("audio/basic")
if (all(c(0x64,0x6E,0x73,0x2E) == hdr[1:4])) return("audio/basic")
if (all(c(0x52,0x49,0x46,0x46) == hdr[1:4])) return("audio/x-wav") # "RIFF"
if (all(c(0x50, 0x4b) == hdr[1:2])) { # "PK"
office_type <- check_office(hdr, path)
if (length(office_type) > 0) return(office_type)
guessed_name <- guess_content_type(path)
if ((length(guessed_name) == 1) && (guessed_name != "???")) return(guessed_name)
return("application/zip")
}
if (all(c(0x5a,0x4d) == hdr[1:2])) return("x-system/exe")
if (all(c(0x75,0x73,0x74,0x61,0x72) == hdr[258:262])) return("application/pax")
if (all(c(0x00,0x00,0x01,0xBA) == hdr[1:4])) return("video/mpeg")
if (all(c(0x00,0x00,0x01,0xB3) == hdr[1:4])) return("video/mpeg")
return(guess_content_type(path))
}

32
R/guess-content-type.R

@ -0,0 +1,32 @@
#' Guess MIME type from filename (extension)
#'
#' Uses an internal database of over 1,500 file extension-to-MIME mappings to
#' return one or more associated types for a given input path. If no match is
#' found, `???` is returned.
#'
#' @details
#' Incorporates standard IANA MIME extension mappings and those from
#' [`servoy-client`](https://github.com/Servoy/servoy-client) and
#' [stevenwdv](https://github.com/stevenwdv)'s
#' [`allMimeTypes.json`](https://s-randomfiles.s3.amazonaws.com/mime/allMimeTypes.json).
#'
#' @md
#' @param path path to file
#' @return character vector
#' @export
#' @examples
#' guess_content_type(system.file("extdat", "test.pdf", package="simplemagic"))
guess_content_type <- function(path) {
path <- path.expand(path)
if (!file.exists(path)) stop("File not found.", call.=FALSE)
extension <- trimws(tolower(tools::file_ext(path)))
res <- simplemagic_mime_db[(simplemagic_mime_db$extension == extension),]$mime_type
if (length(res) == 0) return("???")
return(unique(res))
}

15
R/util.R

@ -0,0 +1,15 @@
seq_in <- function(source_vector, pattern_vector) {
which(
Reduce(
'+',
lapply(
seq_along(y <- lapply(pattern_vector, '==', source_vector)),
function(x) {
y[[x]][x:(length(source_vector) - length(pattern_vector) + x)]
}
)
) == length(pattern_vector)
)
}

22
R/wand-package.R

@ -6,19 +6,17 @@
#' file name. It also incorporates other metadata from the mime-db database #' file name. It also incorporates other metadata from the mime-db database
#' <https://github.com/jshttp/mime-db> #' <https://github.com/jshttp/mime-db>
#' #'
#' Based on \code{file} / \code{libmagic} - \url{https://github.com/file/file} #' @section Some important details:
#' #'
#' The header checking is minimal (i.e. nowhere near as comprehensive as `libmagic`) but
#' covers quite a bit of ground. If there are content-check types from
#' [`magic sources`](https://github.com/threatstack/libmagic/tree/master/magic/)
#' that you would like coded into the package, please file an issue and
#' _include the full line(s)_ from that linked `magic.tab` that you would like mapped.
#'
#' @md
#' @name wand #' @name wand
#' @docType package #' @docType package
#' @author Bob Rudis (@@hrbrmstr) #' @author Bob Rudis (bob@@rud.is)
#' @import purrr #' @importFrom tools file_ext
#' @import tibble
#' @import tidyr
#' @import stringi
#' @importFrom rappdirs user_cache_dir
#' @useDynLib wand, .registration=TRUE
#' @importFrom Rcpp sourceCpp
#' @importFrom utils unzip
#' @importFrom dplyr mutate left_join mutate_all
#' @import stats
NULL NULL

118
R/wand.r

@ -1,118 +0,0 @@
#' Retrieve 'magic' attributes from files and directories
#'
#' @param path character vector of files to use magic on
#' @param magic_db either "\code{system}" (the default) to use the system
#' \code{magic} database or an atomic character vector with a
#' colon-separated list of full paths to custom \code{magic} database(s). This parameter
#' is (for the moment) ignored on Windows.
#' @return a \code{tibble} / \code{data.frame} of file magic attributes.
#' Specifically, mime type, encoding, possible file extensions and
#' type description are returned as colums in the data frame along
#' with \code{path}.
#' @note Various fields might not be available depending on the version
#' of \code{libmagic} you have installed.
#' @references See \url{http://openpreservation.org/blog/2012/08/09/magic-editing-and-creation-primer/}
#' for information on how to create your own \code{magic} database
#' @export
#' @examples
#' library(dplyr)
#'
#' system.file("extdata/img", package="wand") %>%
#' list.files(full.names=TRUE) %>%
#' incant() %>%
#' glimpse()
incant <- function(path, magic_db="system") {
if (get_os() == "win") {
found_file <- FALSE
file_exe <- Sys.which("file.exe")
found_file <- file_exe != ""
if (found_file) {
file_version <- suppressWarnings(system2(file_exe, "--version", stdout=TRUE, stderr=TRUE))
found_file <- any(grepl("magic file", file_version))
}
if (!found_file) {
stop(paste0("'file.exe' not found. Please install 'Rtools' and restart R. ",
"See 'https://github.com/stan-dev/rstan/wiki/Install-Rtools-for-Windows' ",
"for more information on how to install 'Rtools'", collapse=""),
call.=FALSE)
}
magic_db <- normalizePath(magic_wand_file())
tf <- tempfile()
writeLines(path, tf)
suppressMessages(
suppressWarnings(
system2(file_exe,
c("--mime-type", "--mime-encoding", "--no-buffer", "--preserve-date",
'--separator "||"',
sprintf('--files-from "%s"', tf)),
stdout=TRUE))) -> output_1
suppressMessages(
suppressWarnings(system2(file_exe,
c("--no-buffer", "--preserve-date", '--separator "||"',
sprintf('--files-from "%s"', tf)),
stdout=TRUE))) -> output_2
unlink(tf)
stri_split_fixed(output_1, "||", n=2, simplify=TRUE) %>%
as_data_frame() %>%
setNames(c("file", "response")) %>%
separate(response, c("mime_type", "encoding"), sep=";", extra="drop", fill="right") %>%
mutate(encoding=stri_replace_first_regex(encoding, "charset=", "")) -> df1
stri_split_fixed(output_2, "||", n=2, simplify=TRUE) %>%
as_data_frame() %>%
setNames(c("file", "description")) -> df2
left_join(df1, df2, by="file") %>%
mutate_all(stri_trim_both) -> ret
} else {
ret <- incant_(path, magic_db)
}
if (!("extensions" %in% colnames(ret))) ret$extensions <- NA
mutate(ret, extensions=ifelse(extensions=="???", NA, extensions)) %>%
mutate(extensions=map_exts(mime_type, extensions))
}
map_exts <- function(mime_type, current_extensions) {
exts <- stri_split_regex(current_extensions, "/")
map2(mime_type, exts, function(mt, xt) {
ret <- wand::mime_db[[mt]]$extensions %||% NA
ret <- sort(unique(c(xt, ret)))
ret <- ret[!is.na(ret)]
if (length(ret)==0) ret <- NA
ret
})
}
#' ripped from rappdirs (ty Hadley!)
get_os <- function () {
if (.Platform$OS.type == "windows") {
"win"
} else if (Sys.info()["sysname"] == "Darwin") {
"mac"
} else if (.Platform$OS.type == "unix") {
"unix"
} else {
stop("Unknown OS")
}
}

41
R/zzz.r

@ -1,41 +0,0 @@
#' Use the "magic" file that comes with the package
#'
#' The \code{magic_load()} functon from \code{libmagic} can't take ZIP files
#' and the \code{magic.mgc} file that ships with the package is too large to
#' be shipped uncompressed. Using this function as the \code{magic_db}
#' parameter will copy and uncompress the database to a cache directory and
#' return the full path to the magic file. Subsequent calls will not have to
#' perform the decompression unless \code{force} is \code{TRUE} or the
#' cache directory has been cleared.
#'
#' @param refresh ensure the lastest copy of the pacakge "magic"
#' database is used.
#' @note 'magic' files are highly coupled with the version of the \code{file}
#' utility they were built with. This function is provided solely for the
#' off chance that a macOS or Linux/UNIX system's \code{libmagic} library
#' was not configured properly and cannot find the system 'magic' file.
#' @export
#' @examples
#' library(dplyr)
#'
#' system.file("extdata/img", package="wand") %>%
#' list.files(full.names=TRUE) %>%
#' incant(magic_wand_file()) %>%
#' glimpse()
magic_wand_file <- function(refresh=FALSE) {
cache <- rappdirs::user_cache_dir("wandr")
if (!dir.exists(cache)) dir.create(cache, recursive=TRUE, showWarnings=FALSE)
if (!dir.exists(cache)) return(NULL)
if (lib_version() >= 528) vers <- "new" else vers <- "old"
if (refresh | (!file.exists(file.path(rappdirs::user_cache_dir("wandr"), "magic.mgc")))) {
unzip(system.file("extdata", "db", vers, "magic.mgc.zip", package="wand"),
exdir=cache, overwrite=TRUE)
}
file.path(rappdirs::user_cache_dir("wandr"), "magic.mgc")
}

93
README.Rmd

@ -1,85 +1,70 @@
--- ---
output: rmarkdown::github_document output: rmarkdown::github_document
--- ---
[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active) [![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active)
[![Travis-CI Build Status](https://travis-ci.org/hrbrmstr/wand.svg?branch=master)](https://travis-ci.org/hrbrmstr/wand) [![Travis-CIBuild Status](https://travis-ci.org/hrbrmstr/simplemagic.svg?branch=master)](https://travis-ci.org/hrbrmstr/simplemagic)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/hrbrmstr/simplemagic?branch=master&svg=true)](https://ci.appveyor.com/project/hrbrmstr/simplemagic)
[![Coverage Status](https://img.shields.io/codecov/c/github/hrbrmstr/simplemagic/master.svg)](https://codecov.io/github/hrbrmstr/simplemagic?branch=master)
`wand` : Retrieve 'Magic' Attributes from Files and Directories # wand
The `libmagic` library must be installed on *nix/macOS and available to use this. Lightweight File 'MIME' Type Detection Based On Contents or Extension
- `apt-get install libmagic-dev` on Ubuntu/Debian-ish systems ## Description
- `brew install libmagic` on macOS
- `yum install file-devel` on RHEL/CentOS/Fedora
While the package was developed using the 5.28 version of `libmagic` it has been configured to work with older versions. Note that some fields in the resultant data frame might not be available with older library versions. When using the function `magic_wand_file()` it checks for which version of `libmagic` is installed on your system and provides a suitable `magic.mgc` file for it. 'MIME' types are shorthand descriptors for file contents and can be
determined from "magic" bytes in file headers, file contents or intuited from
file extensions. Tools are provided to perform curated "magic" tests as well
as mapping 'MIME' types from a database of over 1,500 extension mappings.
The package also works on Windows but it's a bit of a hack because, well, _Windows_. The Windows version makes two `system2()` calls and relies on `Rtools` being installed and `file.exe` being available on the Windows `PATH`, so it's sub-optimal at best. Help to get it working in C would be greatly appreciated. Windows folk can go [here](https://github.com/stan-dev/rstan/wiki/Install-Rtools-for-Windows) to find out more info on `Rtools`. Provides a more portable/ligtweight alternative to the `wand` package.
The following functions are implemented: ## SOME IMPORTANT DETAILS
- `incant` : returns the "magic" metadata of the files in the input vector (as a data frame) The header checking is minimal (i.e. nowhere near as comprehensive as `libmagic`) but covers quite a bit of ground. If there are content-check types from [`magic sources`](https://github.com/threatstack/libmagic/tree/master/magic/) that you would like coded into the package, please file an issue and _include the full line(s)_ from that linked `magic.tab` that you would like mapped.
- `magic_wand_file` : provides a full path to the package-provided `magic` file
The following datasets are included: ## What's Inside The Tin
- `mime_db` : a database of all mime types from <https://github.com/jshttp/mime-db> - `get_content_type`: Discover MIME type of a file based on contents
- `guess_content_type`: Guess MIME type from filename (extension)
- `simplemagic_mime_db`: File extension-to-MIME mapping data frame
The following functions are implemented:
### Installation ## Installation
```{r eval=FALSE} ```{r eval=FALSE}
devtools::install_github("hrbrmstr/wand") devtools::install_git("https://gitlab.com/hrbrmstr/wand")
``` ```
```{r echo=FALSE, message=FALSE, warning=FALSE, error=FALSE} ```{r message=FALSE, warning=FALSE, error=FALSE, include=FALSE}
options(width=120) options(width=120)
``` ```
### Usage ## Usage
```{r message=FALSE} ```{r message=FALSE, warning=FALSE, error=FALSE}
library(wand) library(wand)
library(dplyr) library(tidyverse)
system.file("extdata", "img", package="wand") %>%
list.files(full.names=TRUE) %>%
incant() %>%
glimpse()
```
```{r message=FALSE}
# Use a non-system magic-file
system.file("extdata", "img", package="wand") %>%
list.files(full.names=TRUE) %>%
incant(magic_wand_file()) %>%
select(description) %>%
unlist(use.names=FALSE)
```
```{r message=FALSE}
# what kinds of extensions are associated with these mime types
system.file("extdata", "img", package="wand") %>%
list.files(full.names=TRUE) %>%
incant(magic_wand_file()) %>%
select(extensions) %>%
as.data.frame()
```
```{r message=FALSE}
# current verison # current verison
packageVersion("wand") packageVersion("wand")
``` ```
### Test Results ```{r}
list.files(system.file("extdat", package="wand"), full.names=TRUE) %>%
```{r message=FALSE} map_df(~{
library(wand) data_frame(
library(testthat) fil = basename(.x),
mime = list(get_content_type(.x))
)
}) %>%
unnest() %>%
print(n=100)
```
date() ## Code of Conduct
test_dir("tests/") Please note that this project is released with a [Contributor Code of Conduct](CONDUCT.md). By participating in this project you agree to abide by its terms.
```

231
README.md

@ -1,118 +1,167 @@
[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active) [![Travis-CI Build Status](https://travis-ci.org/hrbrmstr/wand.svg?branch=master)](https://travis-ci.org/hrbrmstr/wand) [![Project Status: Active - The project has reached a stable, usable
state and is being actively
developed.](http://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active)
[![Travis-CIBuild
Status](https://travis-ci.org/hrbrmstr/simplemagic.svg?branch=master)](https://travis-ci.org/hrbrmstr/simplemagic)
[![AppVeyor Build
Status](https://ci.appveyor.com/api/projects/status/github/hrbrmstr/simplemagic?branch=master&svg=true)](https://ci.appveyor.com/project/hrbrmstr/simplemagic)
[![Coverage
Status](https://img.shields.io/codecov/c/github/hrbrmstr/simplemagic/master.svg)](https://codecov.io/github/hrbrmstr/simplemagic?branch=master)
`wand` : Retrieve 'Magic' Attributes from Files and Directories # wand
The `libmagic` library must be installed on \*nix/macOS and available to use this. Lightweight File ‘MIME’ Type Detection Based On Contents or Extension
- `apt-get install libmagic-dev` on Ubuntu/Debian-ish systems ## Description
- `brew install libmagic` on macOS
- `yum install file-devel` on RHEL/CentOS/Fedora
While the package was developed using the 5.28 version of `libmagic` it has been configured to work with older versions. Note that some fields in the resultant data frame might not be available with older library versions. When using the function `magic_wand_file()` it checks for which version of `libmagic` is installed on your system and provides a suitable `magic.mgc` file for it. ‘MIME’ types are shorthand descriptors for file contents and can be
determined from “magic” bytes in file headers, file contents or intuited
from file extensions. Tools are provided to perform curated “magic”
tests as well as mapping ‘MIME’ types from a database of over 1,500
extension mappings.
The package also works on Windows but it's a bit of a hack because, well, *Windows*. The Windows version makes two `system2()` calls and relies on `Rtools` being installed and `file.exe` being available on the Windows `PATH`, so it's sub-optimal at best. Help to get it working in C would be greatly appreciated. Windows folk can go [here](https://github.com/stan-dev/rstan/wiki/Install-Rtools-for-Windows) to find out more info on `Rtools`. Provides a more portable/ligtweight alternative to the `wand` package.
The following functions are implemented: ## SOME IMPORTANT DETAILS
- `incant` : returns the "magic" metadata of the files in the input vector (as a data frame)
- `magic_wand_file` : provides a full path to the package-provided `magic` file
The following datasets are included:
- `mime_db` : a database of all mime types from <https://github.com/jshttp/mime-db> The header checking is minimal (i.e. nowhere near as comprehensive as
`libmagic`) but covers quite a bit of ground. If there are content-check
### Installation types from [`magic
sources`](https://github.com/threatstack/libmagic/tree/master/magic/)
``` r that you would like coded into the package, please file an issue and
devtools::install_github("hrbrmstr/wand") *include the full line(s)* from that linked `magic.tab` that you would
``` like mapped.
### Usage ## What’s Inside The Tin
``` r - `get_content_type`: Discover MIME type of a file based on contents
library(wand) - `guess_content_type`: Guess MIME type from filename (extension)
library(dplyr) - `simplemagic_mime_db`: File extension-to-MIME mapping data frame
system.file("extdata", "img", package="wand") %>% The following functions are implemented:
list.files(full.names=TRUE) %>%
incant() %>%
glimpse()
```
## Observations: 10 ## Installation
## Variables: 5
## $ file <chr> "/Library/Frameworks/R.framework/Versions/3.3/Resources/library/wand/extdata/img/example_dir", ...
## $ mime_type <chr> "inode/directory", "text/x-c", "text/html", "text/plain", "text/rtf", "image/jpeg", "applicatio...
## $ encoding <chr> "binary", "us-ascii", "us-ascii", "us-ascii", "us-ascii", "binary", "binary", "binary", "us-asc...
## $ extensions <list> [NA, <"c", "cc", "cpp", "cxx", "dic", "h", "hh">, <"htm", "html", "shtml">, <"conf", "def", "i...
## $ description <chr> "directory", "C source, ASCII text", "HTML document, ASCII text, with CRLF line terminators", "...
``` r ``` r
# Use a non-system magic-file devtools::install_git("https://gitlab.com/hrbrmstr/wand")
system.file("extdata", "img", package="wand") %>%
list.files(full.names=TRUE) %>%
incant(magic_wand_file()) %>%
select(description) %>%
unlist(use.names=FALSE)
``` ```
## [1] "directory" ## Usage
## [2] "C source, ASCII text"
## [3] "HTML document, ASCII text, with CRLF line terminators"
## [4] "ASCII text, with no line terminators"
## [5] "Rich Text Format data, version 1, ANSI"
## [6] "JPEG image data, JFIF standard 1.01, aspect ratio, density 72x72, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=2, orientation=upper-left], baseline, precision 8, 800x700, frames 3"
## [7] "PDF document, version 1.3"
## [8] "PNG image data, 800 x 700, 8-bit/color RGBA, non-interlaced"
## [9] "ASCII text, with very long lines, with CRLF line terminators"
## [10] "TIFF image data, big-endian"
``` r ``` r
# what kinds of extensions are associated with these mime types library(wand)
system.file("extdata", "img", package="wand") %>% library(tidyverse)
list.files(full.names=TRUE) %>%
incant(magic_wand_file()) %>%
select(extensions) %>%
as.data.frame()
```
## extensions
## 1 NA
## 2 c, cc, cpp, cxx, dic, h, hh
## 3 htm, html, shtml
## 4 conf, def, in, ini, list, log, text, txt
## 5 rtf
## 6 jfif, jpe, jpeg, jpg
## 7 pdf
## 8 png
## 9 conf, def, in, ini, list, log, text, txt
## 10 tif, tiff
``` r
# current verison # current verison
packageVersion("wand") packageVersion("wand")
``` ```
## [1] '0.2.0' ## [1] '0.3.0'
### Test Results
``` r
library(wand)
library(testthat)
date()
```
## [1] "Mon Aug 15 14:56:16 2016"
``` r ``` r
test_dir("tests/") list.files(system.file("extdat", package="wand"), full.names=TRUE) %>%
map_df(~{
data_frame(
fil = basename(.x),
mime = list(get_content_type(.x))
)
}) %>%
unnest() %>%
print(n=100)
``` ```
## testthat results ======================================================================================================== ## # A tibble: 85 x 2
## OK: 1 SKIPPED: 0 FAILED: 0 ## fil mime
## ## <chr> <chr>
## DONE =================================================================================================================== ## 1 actions.csv application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
## 2 actions.txt application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
## 3 actions.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
## 4 test_1.2.class application/java-vm
## 5 test_1.3.class application/java-vm
## 6 test_1.4.class application/java-vm
## 7 test_1.5.class application/java-vm
## 8 test_128_44_jstereo.mp3 audio/mp3
## 9 test_excel_2000.xls application/msword
## 10 test_excel_spreadsheet.xml application/xml
## 11 test_excel_web_archive.mht message/rfc822
## 12 test_excel.xlsm application/zip
## 13 test_excel.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
## 14 test_nocompress.tif image/tiff
## 15 test_powerpoint.pptm application/zip
## 16 test_powerpoint.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
## 17 test_word_2000.doc application/msword
## 18 test_word_6.0_95.doc application/msword
## 19 test_word.docm application/zip
## 20 test_word.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
## 21 test.au audio/basic
## 22 test.bin application/mac-binary
## 23 test.bin application/macbinary
## 24 test.bin application/octet-stream
## 25 test.bin application/x-binary
## 26 test.bin application/x-macbinary
## 27 test.bmp image/bmp
## 28 test.dtd application/xml-dtd
## 29 test.emf application/x-msmetafile
## 30 test.eps application/postscript
## 31 test.fli video/flc
## 32 test.fli video/fli
## 33 test.fli video/x-fli
## 34 test.gif image/gif
## 35 test.ico image/x-icon
## 36 test.java text/plain
## 37 test.java text/x-java
## 38 test.java text/x-java-source
## 39 test.jpg image/jpeg
## 40 test.mp3 audio/mp3
## 41 test.odt application/vnd.oasis.opendocument.text
## 42 test.ogg application/ogg
## 43 test.ogg audio/ogg
## 44 test.pcx image/pcx
## 45 test.pcx image/x-pcx
## 46 test.pdf application/pdf
## 47 test.pl text/plain
## 48 test.pl text/x-perl
## 49 test.pl text/x-script.perl
## 50 test.png image/png
## 51 test.pnm application/x-portable-anymap
## 52 test.pnm image/x-portable-anymap
## 53 test.ppm image/x-portable-pixmap
## 54 test.ppt application/msword
## 55 test.ps application/postscript
## 56 test.psd image/photoshop
## 57 test.py text/x-python
## 58 test.py text/x-script.phyton
## 59 test.rtf application/rtf
## 60 test.rtf application/x-rtf
## 61 test.rtf text/richtext
## 62 test.rtf text/rtf
## 63 test.sh application/x-bsh
## 64 test.sh application/x-sh
## 65 test.sh application/x-shar
## 66 test.sh text/x-script.sh
## 67 test.sh text/x-sh
## 68 test.tar application/pax
## 69 test.tar.gz application/octet-stream
## 70 test.tar.gz application/x-compressed
## 71 test.tar.gz application/x-gzip
## 72 test.tga image/x-tga
## 73 test.txt text/plain
## 74 test.txt.gz application/octet-stream
## 75 test.txt.gz application/x-compressed
## 76 test.txt.gz application/x-gzip
## 77 test.wav audio/x-wav
## 78 test.wmf application/x-msmetafile
## 79 test.wmf windows/metafile
## 80 test.xcf application/x-xcf
## 81 test.xml application/xml
## 82 test.xpm image/x-xbitmap
## 83 test.xpm image/x-xpixmap
## 84 test.xpm image/xpm
## 85 test.zip application/zip
## Code of Conduct
Please note that this project is released with a [Contributor Code of
Conduct](CONDUCT.md). By participating in this project you agree to
abide by its terms.

4
builder/make_mime_db.r

@ -1,4 +0,0 @@
JSON_DB_URL <- "https://raw.githubusercontent.com/jshttp/mime-db/master/db.json"
mime_db <- jsonlite::fromJSON(JSON_DB_URL, flatten=TRUE)
use_data(mime_db)

2
cleanup

@ -1,2 +0,0 @@
#!/bin/sh
rm -f src/Makevars

61
configure

@ -1,61 +0,0 @@
#!/bin/sh
echo "Checking to see if libmagic is available..."
: ${R_HOME=`R RHOME`}
if test -z "${R_HOME}"; then
echo
echo "could not determine R_HOME"
echo
exit 1
fi
CC=`"${R_HOME}/bin/R" CMD config CC`
CFLAGS=`"${R_HOME}/bin/R" CMD config CFLAGS`
CPPFLAGS=`"${R_HOME}/bin/R" CMD config CPPFLAGS`
CXXFLAGS=`"${R_HOME}/bin/R" CMD config CXXFLAGS`
LDFLAGS=`"${R_HOME}/bin/R" CMD config LDFLAGS`
DYLIB_LDFLAGS=`"${R_HOME}/bin/R" CMD config DYLIB_LDFLAGS`
SHLIB_LDFLAGS=`"${R_HOME}/bin/R" CMD config SHLIB_LDFLAGS`
LIBDIRS="/usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu /usr/lib64 /usr/lib32 /usr/local/lib /opt/local/lib /usr/lib /lib"
PKG_LD_FLAGS=""
for DIR in ${LIBDIRS} ; do
if test -d ${DIR} ; then PKG_LD_FLAGS="${PKG_LD_FLAGS} -L$DIR" ; fi
done
INCDIRS="/usr/include/x86_64-linux-gnu /usr/include/i386-linux-gnu /usr/include /usr/local/include /opt/local/include"
PKG_CPP_FLAGS=""
for DIR in ${INCDIRS} ; do
if test -d ${DIR} ; then PKG_CPP_FLAGS="${PKG_CPP_FLAGS} -L$DIR" ; fi
done
temp_src=$(mktemp)
cat > ${temp_src} <<EOF
#include "src/magic.h"
int main() {
magic_t t = magic_open(MAGIC_NONE);
return(0)
}
EOF
temp_exe=$(mktemp)
${CPP} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} ${PKG_CPP_FLAGS} ${PKG_LD_FLAGS} -o ${temp_exe} -lmagic ${temp_src} > /dev/null 2>&1
ccerr=$?
rm ${temp_src} ${temp_exe}
if [ "$ccerr" = 1 ] ; then
echo
echo
echo "The libmagic library was not found."
echo
echo "Please install it before installing this package."
echo
echo
exit 1
fi
sed -e "s|@cflags@|$PKG_CPP_FLAGS|" -e "s|@libs@|$PKG_LD_FLAGS|" src/Makevars.in > src/Makevars
exit 0

0
configure.win

BIN
data/mime_db.rda

Binary file not shown.

BIN
inst/extdat/actions.csv

Binary file not shown.
Can't render this file because it contains an unexpected character in line 2 and column 148.

BIN
inst/extdat/actions.txt

Binary file not shown.

BIN
inst/extdat/actions.xlsx

Binary file not shown.

BIN
inst/extdat/test.au

Binary file not shown.

BIN
inst/extdat/test.bin

Binary file not shown.

BIN
inst/extdat/test.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

18
inst/extdat/test.dtd

@ -0,0 +1,18 @@
<!ELEMENT magic (info?,match-list)>
<!ELEMENT info (version?,author?,description?)>
<!ELEMENT version (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT match-list (match*)>
<!ELEMENT match (mimetype,extension,description,test,submatch-list?)>
<!ELEMENT extension (#PCDATA)>
<!ELEMENT mimetype (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT test (#PCDATA)>
<!ATTLIST test offset CDATA "0">
<!ATTLIST test type CDATA "string">
<!ATTLIST test bitmask CDATA "">
<!ATTLIST test comparator CDATA "=">
<!ELEMENT submatch-list (match+)>

BIN
inst/extdat/test.emf

Binary file not shown.

338
inst/extdat/test.eps

@ -0,0 +1,338 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: GIMP PostScript file plugin V 1.16 by Peter Kirchgessner
%%Title: /home/arimus/test.eps
%%CreationDate: Tue Jun 15 19:43:49 2004
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%Pages: 1
%%BoundingBox: 14 14 115 115
%%EndComments
%%BeginProlog
% Use own dictionary to avoid conflicts
10 dict begin
%%EndProlog
%%Page: 1 1
% Translate for offset
14.173228346456694 14.173228346456694 translate
% Translate to begin of first scanline
0 99.999999999999986 translate
99.999999999999986 -99.999999999999986 scale
% Image geometry
100 100 8
% Transformation matrix
[ 100 0 0 100 0 0 ]
% Strings to hold RGB-samples per scanline
/rstr 100 string def
/gstr 100 string def
/bstr 100 string def
{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
true 3
%%BeginData: 4976 ASCII Bytes
colorimage
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
p]'IX^]/f~>
p]'IX^]/f~>
p]'IX^]/f~>
p]'IXf`1mMm/MS~>
p]'IXf`1mMm/MS~>
p]'IXf`1mMm/MS~>
p]'IXf`1mMm/MS~>
p]'IXf`1mMm/MS~>
p]'IXf`1mMm/MS~>
mJm+bcN!hCm/MS~>
mJm+bcN!hCm/MS~>
mJm+bcN!hCm/MS~>
mJm+bcN!hCm/MS~>
mJm+bcN!hCm/MS~>
mJm+bcN!hCm/MS~>
mJm+bcN!hCm/MS~>
mJm+bcN!hCm/MS~>
mJm+bcN!hCm/MS~>
mJm+bp\tTsX'R7b!t-Pd[f6"#$/9nr)@?QZ2/^>,s8;ras*t~>
mJm+bp\tTsX'R7b!t-Pd[f6"#$/9nr)@?QZ2/^>,s8;ras*t~>
mJm+bp\tTsX'R7b!t-Pd[f6"#$/9nr)@?QZ2/^>,s8;ras*t~>
mJm+bq#:Aq*V]U81t2:#!qp@1p](=F[f-6t!;$5@~>
mJm+bq#:Aq*V]U81t2:#!qp@1p](=F[f-6t!;$5@~>
mJm+bq#:Aq*V]U81t2:#!qp@1p](=F[f-6t!;$5@~>
mJm+bqYpTqE:j23%)Dc?!W5@X!<)rh!;$5@~>
mJm+bqYpTqE:j23%)Dc?!W5@X!<)rh!;$5@~>
mJm+bqYpTqE:j23%)Dc?!W5@X!<)rh!;$5@~>
mJm+bqYpP=rW!0*?b5S"jeOC*!!*Yfr;Qbbr;[.#[HID]h5*jJ!<)rh!;$5@~>
mJm+bqYpP=rW!0*?b5S"jeOC*!!*Yfr;Qbbr;[.#[HID]h5*jJ!<)rh!;$5@~>
mJm+bqYpP=rW!0*?b5S"jeOC*!!*Yfr;Qbbr;[.#[HID]h5*jJ!<)rh!;$5@~>
mJm+bqu6Z-rVus1_Ya?6pJ(Ve!(m+g!'1#Y!-.i7!SgBFs8;ras*t~>
mJm+bqu6Z-rVus1_Ya?6pJ(Ve!(m+g!'1#Y!-.i7!SgBFs8;ras*t~>
mJm+bqu6Z-rVus1_Ya?6pJ(Ve!(m+g!'1#Y!-.i7!SgBFs8;ras*t~>
mJm+bqu6XJrVur,q>UKd*<#p<d/EtE$iU,+jm`<K!:9`9~>
mJm+bqu6XJrVur,q>UKd*<#p<d/EtE$iU,+jm`<K!:9`9~>
mJm+bqu6XJrVur,q>UKd*<#p<d/EtE$iU,+jm`<K!:9`9~>
mJm+br;Qc5rVupdp\t5OrVuqDrVlj$rVurpnGiFem/MS~>
mJm+br;Qc5rVupdp\t5OrVuqDrVlj$rVurpnGiFem/MS~>
mJm+br;Qc5rVupdp\t5OrVuqDrVlj$rVurpnGiFem/MS~>
mJm+br;Qb:rVuqhp\t6ArVup]rVlj@rVur6nGiFem/MS~>
mJm+br;Qb:rVuqhp\t6ArVup]rVlj@rVur6nGiFem/MS~>
mJm+br;Qb:rVuqhp\t6ArVup]rVlj@rVur6nGiFem/MS~>
mJm+br;QaXrVurEp\t6brVup8rVlk5rVus?\af^u!:9`9~>
mJm+br;QaXrVurEp\t6brVup8rVlk5rVus?\af^u!:9`9~>
mJm+br;QaXrVurEp\t6brVup8rVlk5rVus?\af^u!:9`9~>
mJm+br;Qa5rW)m!rW<'"qu?^$rVloZ(&\+7+DIk?p&Fsjm/MS~>
mJm+br;Qa5rW)m!rW<'"qu?^$rVloZ(&\+7+DIk?p&Fsjm/MS~>
mJm+br;Qa5rW)m!rW<'"qu?^$rVloZ(&\+7+DIk?p&Fsjm/MS~>
mJm+br;Qa#mK!1b!RiOp!!4Zth"^pJ!:9`9~>
mJm+br;Qa#mK!1b!RiOp!!4Zth"^pJ!:9`9~>
mJm+br;Qa#mK!1b!RiOp!!4Zth"^pJ!:9`9~>
mJm+br;Q`umK!.a"8nua#5\B%!b1]rs8;ras*t~>
mJm+br;Q`umK!.a"8nua#5\B%!b1]rs8;ras*t~>
mJm+br;Q`umK!.a"8nua#5\B%!b1]rs8;ras*t~>
mJm+br;Qa-rVurdl2Ln[^4&-Gr;ZjSp&"df!:9`9~>
mJm+br;Qa-rVurdl2Ln[^4&-Gr;ZjSp&"df!:9`9~>
mJm+br;Qa-rVurdl2Ln[^4&-Gr;ZjSp&"df!:9`9~>
mJm+br;QaMrVur?jo5DHJdD>U!/(1Kr;c3aJ,~>
mJm+br;QaMrVur?jo5DHJdD>U!/(1Kr;c3aJ,~>
mJm+br;QaMrVur?jo5DHJdD>U!/(1Kr;c3aJ,~>
mJm+br;Qb-rVuqOj8T+NrVupKqu?Tpm/MS~>
mJm+br;Qb-rVuqOj8T+NrVupKqu?Tpm/MS~>
mJm+br;Qb-rVuqOj8T+NrVupKqu?Tpm/MS~>
mJm+br;Qc'rVusAq;hPUoDS^i#lFW%"o\K%r9aN7~>
mJm+br;Qc'rVusAq;hPUoDS^i#lFW%"o\K%r9aN7~>
mJm+br;Qc'rVusAq;hPUoDS^i#lFW%"o\K%r9aN7~>
mJm+br;Qfq,5qQBHK>)+l2CY_%/^&)'E.t3lL"V%~>
mJm+br;Qfq,5qQBHK>)+l2CY_%/^&)'E.t3lL"V%~>
mJm+br;Qfq,5qQBHK>)+l2CY_%/^&)'E.t3lL"V%~>
mJm+bqu6Z#r;ZkIr:p9m]L)Pr!^XEsq>UG:rVup]qu6XTrVur+mJh\~>
mJm+bqu6Z#r;ZkIr:p9m]L)Pr!^XEsq>UG:rVup]qu6XTrVur+mJh\~>
mJm+bqu6Z#r;ZkIr:p9m]L)Pr!^XEsq>UG:rVup]qu6XTrVur+mJh\~>
mJm+bqYpP8r;[3PNR%"in(Ojb,6.`As8N'),':6Oq>BHb:]17nW;HSpFoD@C-bJmInGe"~>
mJm+bqYpP8r;[3PNR%"in(Ojb,6.`As8N'),':6Oq>BHb:]17nW;HSpFoD@C-bJmInGe"~>
mJm+bqYpP8r;[3PNR%"in(Ojb,6.`As8N'),':6Oq>BHb:]17nW;HSpFoD@C-bJmInGe"~>
mJm+bqYpTqFn,P1s763j@J^!)g'7<PoDa=~>
mJm+bqYpTqFn,P1s763j@J^!)g'7<PoDa=~>
mJm+bqYpTqFn,P1s763j@J^!)g'7<PoDa=~>
mJm+bq#:B(.e`oE"B!/9s7H?n%Z^ParrJo%q#L$dJ,~>
mJm+bq#:B(.e`oE"B!/9s7H?n%Z^ParrJo%q#L$dJ,~>
mJm+bq#:B(.e`oE"B!/9s7H?n%Z^ParrJo%q#L$dJ,~>
mJm+bp\tX#]l#bD"9T5g>b:<Yrs[qfGYTh)#6PG_<1<7Krrq>46Q6C6rW)QiJ,~>
mJm+bp\tX#]l#bD"9T5g>b:<Yrs[qfGYTh)#6PG_<1<7Krrq>46Q6C6rW)QiJ,~>
mJm+bp\tX#]l#bD"9T5g>b:<Yrs[qfGYTh)#6PG_<1<7Krrq>46Q6C6rW)QiJ,~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
Sc=3~>
%%EndData
showpage
%%Trailer
end
%%EOF

BIN
inst/extdat/test.fli

Binary file not shown.

BIN
inst/extdat/test.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
inst/extdat/test.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

5
inst/extdat/test.java

@ -0,0 +1,5 @@
public class test {
public static void main(String[] args) {
System.out.println("this is a test java source file");
}
}

BIN
inst/extdat/test.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
inst/extdat/test.mp3

Binary file not shown.

BIN
inst/extdat/test.odt

Binary file not shown.

BIN
inst/extdat/test.ogg

Binary file not shown.

BIN
inst/extdat/test.pcx

Binary file not shown.

84
inst/extdat/test.pdf

@ -0,0 +1,84 @@
%PDF-1.2
%Çì�¢
6 0 obj
<</Length 7 0 R/Filter /FlateDecode>>
stream
xœUŒ±‚@DûýŠ)µ9wW�»ÖÄÀ\bMÈ™;"�ÂÏ÷@-ÌL2¯x™ l¼æ»m¢‰×÷™êŒÊŒB…‘6¬œ2"©³ÿ¼)‘ºa¤ ²]þ¦M8û|êPšRŽâà{ÃÊj?T�ðI`¥4E•…D;?„¹ ž± #–îµ ±Ûû]<jZóR’*ãendstream
endobj
7 0 obj
143
endobj
5 0 obj
<</Type/Page/MediaBox [0 0 612 792]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /Text]
/ExtGState 10 0 R
/Font 11 0 R
>>
/Contents 6 0 R
>>
endobj
3 0 obj
<< /Type /Pages /Kids [
5 0 R
] /Count 1
>>
endobj
1 0 obj
<</Type /Catalog /Pages 3 0 R
>>
endobj
4 0 obj
<</Type/ExtGState/Name/R4/TR/Identity>>
endobj
10 0 obj
<</R4
4 0 R>>
endobj
11 0 obj
<</R9
9 0 R>>
endobj
8 0 obj
<</Type/FontDescriptor/FontName/Courier>>
endobj
9 0 obj
<</Subtype/Type1/BaseFont/Courier/Type/Font/Name/R9/FirstChar 26/LastChar 255/Widths[ 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600]
>>
endobj
2 0 obj
<</Producer(ESP Ghostscript 7.07)>>endobj
xref
0 12
0000000000 65535 f
0000000466 00000 n
0000001711 00000 n
0000000407 00000 n
0000000514 00000 n
0000000247 00000 n
0000000015 00000 n
0000000228 00000 n
0000000629 00000 n
0000000686 00000 n
0000000569 00000 n
0000000599 00000 n
trailer
<< /Size 12 /Root 1 0 R /Info 2 0 R
>>
startxref
1761
%%EOF

5
inst/extdat/test.pl

@ -0,0 +1,5 @@
#!/usr/bin/perl -w
use strict;
print "this is a test perl script\n";

BIN
inst/extdat/test.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

7
inst/extdat/test.pnm

File diff suppressed because one or more lines are too long

7
inst/extdat/test.ppm

File diff suppressed because one or more lines are too long

BIN
inst/extdat/test.ppt

Binary file not shown.

280
inst/extdat/test.ps

@ -0,0 +1,280 @@
%!PS-Adobe-2.0
%%DocumentFonts: Courier Times-Bold
%%Title: <stdin> (mpage)
%%Creator: mpage 2.5.1pre2 March 1998
%%CreationDate: Tue Jun 15 20:04:08 2004
%%Orientation: Portrait
%%DocumentMedia: A4 596 842
%%BoundingBox: 20 20 576 822
%%Pages: (atend)
%%EndComments
%%BeginProlog
/mp_stm usertime def
/mp_pgc statusdict begin pagecount end def
statusdict begin /jobname (<stdin>) def end
/reencsmalldict 12 dict def /ReEncodeSmall { reencsmalldict begin
/newcodesandnames exch def /newfontname exch def /basefontname exch def
/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put }
ifelse }
{ pop pop }
ifelse } forall
newfont /FontName newfontname put
newcodesandnames aload pop newcodesandnames length 2 idiv
{ newfont /Encoding get 3 1 roll put } repeat
newfontname newfont definefont pop end } def
/charvec [
026 /Scaron
027 /Ydieresis
028 /Zcaron
029 /scaron
030 /trademark
031 /zcaron
032 /space
033 /exclam
034 /quotedbl
035 /numbersign
036 /dollar
037 /percent
038 /ampersand
039 /quoteright
040 /parenleft
041 /parenright
042 /asterisk
043 /plus
044 /comma
045 /minus
046 /period
047 /slash
048 /zero
049 /one
050 /two
051 /three
052 /four
053 /five
054 /six
055 /seven
056 /eight
057 /nine
058 /colon
059 /semicolon
060 /less
061 /equal
062 /greater
063 /question
064 /at
065 /A
066 /B
067 /C
068 /D
069 /E
070 /F
071 /G
072 /H
073 /I
074 /J
075 /K
076 /L
077 /M
078 /N
079 /O
080 /P
081 /Q
082 /R
083 /S
084 /T
085 /U
086 /V
087 /W
088 /X
089 /Y
090 /Z
091 /bracketleft
092 /backslash
093 /bracketright
094 /asciicircum
095 /underscore
096 /quoteleft
097 /a
098 /b
099 /c
100 /d
101 /e
102 /f
103 /g
104 /h
105 /i
106 /j
107 /k
108 /l
109 /m
110 /n
111 /o
112 /p
113 /q
114 /r
115 /s
116 /t
117 /u
118 /v
119 /w
120 /x
121 /y
122 /z
123 /braceleft
124 /bar
125 /braceright
126 /asciitilde
127 /.notdef
128 /fraction
129 /florin
130 /quotesingle
131 /quotedblleft
132 /guilsinglleft
133 /guilsinglright
134 /fi
135 /fl
136 /endash
137 /dagger
138 /daggerdbl
139 /bullet
140 /quotesinglbase
141 /quotedblbase
142 /quotedblright
143 /ellipsis
144 /dotlessi
145 /grave
146 /acute
147 /circumflex
148 /tilde
149 /oe
150 /breve
151 /dotaccent
152 /perthousand
153 /emdash
154 /ring
155 /Lslash
156 /OE
157 /hungarumlaut
158 /ogonek
159 /caron
160 /lslash
161 /exclamdown
162 /cent
163 /sterling
164 /currency
165 /yen
166 /brokenbar
167 /section
168 /dieresis
169 /copyright
170 /ordfeminine
171 /guillemotleft
172 /logicalnot
173 /hyphen
174 /registered
175 /macron
176 /degree
177 /plusminus
178 /twosuperior
179 /threesuperior
180 /acute
181 /mu
182 /paragraph
183 /periodcentered
184 /cedilla
185 /onesuperior
186 /ordmasculine
187 /guillemotright
188 /onequarter
189 /onehalf
190 /threequarters
191 /questiondown
192 /Agrave
193 /Aacute
194 /Acircumflex
195 /Atilde
196 /Adieresis
197 /Aring
198 /AE
199 /Ccedilla
200 /Egrave
201 /Eacute
202 /Ecircumflex
203 /Edieresis
204 /Igrave
205 /Iacute
206 /Icircumflex
207 /Idieresis
208 /Eth
209 /Ntilde
210 /Ograve
211 /Oacute
212 /Ocircumflex
213 /Otilde
214 /Odieresis
215 /multiply
216 /Oslash
217 /Ugrave
218 /Uacute
219 /Ucircumflex
220 /Udieresis
221 /Yacute
222 /Thorn
223 /germandbls
224 /agrave
225 /aacute
226 /acircumflex
227 /atilde
228 /adieresis
229 /aring
230 /ae
231 /ccedilla
232 /egrave
233 /eacute
234 /ecircumflex
235 /edieresis
236 /igrave
237 /iacute
238 /icircumflex
239 /idieresis
240 /eth
241 /ntilde
242 /ograve
243 /oacute
244 /ocircumflex
245 /otilde
246 /odieresis
247 /divide
248 /oslash
249 /ugrave
250 /uacute
251 /ucircumflex
252 /udieresis
253 /yacute
254 /thorn
255 /ydieresis
] def
/Courier /OurCharSet charvec ReEncodeSmall
/textfont /OurCharSet findfont 11 scalefont def
/fnamefont /Times-Bold findfont 14 scalefont def
/headerfont /Times-Bold findfont 12 scalefont def
textfont setfont
(a) stringwidth pop /mp_a_x exch def
%%EndProlog
%%Page: 1 1
save
gsave
20 421 translate
0 0 moveto 0 401 rlineto 278 0 rlineto 0 -401 rlineto closepath clip
278 80 mp_a_x mul div 401 792 div scale
4 7 translate 270 278 div 784 792 div scale
textfont setfont
0 780 moveto (This is a plain text file) show
grestore
restore
showpage
%%Trailer
%%Pages: 1

BIN
inst/extdat/test.psd

Binary file not shown.

365
inst/extdat/test.py

@ -0,0 +1,365 @@
"""Append module search paths for third-party packages to sys.path.
****************************************************************
* This module is automatically imported during initialization. *
****************************************************************
In earlier versions of Python (up to 1.5a3), scripts or modules that
needed to use site-specific modules would place ``import site''
somewhere near the top of their code. Because of the automatic
import, this is no longer necessary (but code that does it still
works).
This will append site-specific paths to to the module search path. On
Unix, it starts with sys.prefix and sys.exec_prefix (if different) and
appends lib/python<version>/site-packages as well as lib/site-python.
On other platforms (mainly Mac and Windows), it uses just sys.prefix
(and sys.exec_prefix, if different, but this is unlikely). The
resulting directories, if they exist, are appended to sys.path, and
also inspected for path configuration files.
FOR DEBIAN, this sys.path is augmented with directories in /usr/local.
Local addons go into /usr/local/lib/python<version>/site-packages
(resp. /usr/local/lib/site-python), Debian addons install into
/usr/{lib,share}/python<version>/site-packages.
A path configuration file is a file whose name has the form
<package>.pth; its contents are additional directories (one per line)
to be added to sys.path. Non-existing directories (or
non-directories) are never added to sys.path; no directory is added to
sys.path more than once. Blank lines and lines beginning with
'#' are skipped. Lines starting with 'import' are executed.
For example, suppose sys.prefix and sys.exec_prefix are set to
/usr/local and there is a directory /usr/local/lib/python2.3/site-packages
with three subdirectories, foo, bar and spam, and two path
configuration files, foo.pth and bar.pth. Assume foo.pth contains the
following:
# foo package configuration
foo
bar
bletch
and bar.pth contains:
# bar package configuration
bar
Then the following directories are added to sys.path, in this order:
/usr/local/lib/python2.3/site-packages/bar
/usr/local/lib/python2.3/site-packages/foo
Note that bletch is omitted because it doesn't exist; bar precedes foo
because bar.pth comes alphabetically before foo.pth; and spam is
omitted because it is not mentioned in either path configuration file.
After these path manipulations, an attempt is made to import a module
named sitecustomize, which can perform arbitrary additional
site-specific customizations. If this import fails with an
ImportError exception, it is silently ignored.
"""
import sys, os
def makepath(*paths):
dir = os.path.abspath(os.path.join(*paths))
return dir, os.path.normcase(dir)
for m in sys.modules.values():
if hasattr(m, "__file__") and m.__file__:
m.__file__ = os.path.abspath(m.__file__)
del m
# This ensures that the initial path provided by the interpreter contains
# only absolute pathnames, even if we're running from the build directory.
L = []
_dirs_in_sys_path = {}
dir = dircase = None # sys.path may be empty at this point
for dir in sys.path:
# Filter out duplicate paths (on case-insensitive file systems also
# if they only differ in case); turn relative paths into absolute
# paths.
dir, dircase = makepath(dir)
if not dircase in _dirs_in_sys_path:
L.append(dir)
_dirs_in_sys_path[dircase] = 1
sys.path[:] = L
del dir, dircase, L
# Append ./build/lib.<platform> in case we're running in the build dir
# (especially for Guido :-)
# XXX This should not be part of site.py, since it is needed even when
# using the -S option for Python. See http://www.python.org/sf/586680
if (os.name == "posix" and sys.path and
os.path.basename(sys.path[-1]) == "Modules"):
from distutils.util import get_platform
s = "build/lib.%s-%.3s" % (get_platform(), sys.version)
s = os.path.join(os.path.dirname(sys.path[-1]), s)
sys.path.append(s)
del get_platform, s
def _init_pathinfo():
global _dirs_in_sys_path
_dirs_in_sys_path = d = {}
for dir in sys.path:
if dir and not os.path.isdir(dir):
continue
dir, dircase = makepath(dir)
d[dircase] = 1
def addsitedir(sitedir):
global _dirs_in_sys_path
if _dirs_in_sys_path is None:
_init_pathinfo()
reset = 1
else:
reset = 0
sitedir, sitedircase = makepath(sitedir)
if not sitedircase in _dirs_in_sys_path:
sys.path.append(sitedir) # Add path component
try:
names = os.listdir(sitedir)
except os.error:
return
names.sort()
for name in names:
if name[-4:] == os.extsep + "pth":
addpackage(sitedir, name)
if reset:
_dirs_in_sys_path = None
def addpackage(sitedir, name):
global _dirs_in_sys_path
if _dirs_in_sys_path is None:
_init_pathinfo()
reset = 1
else:
reset = 0
fullname = os.path.join(sitedir, name)
try:
f = open(fullname)
except IOError:
return
while 1:
dir = f.readline()
if not dir:
break
if dir[0] == '#':
continue
if dir.startswith("import"):
exec dir
continue
if dir[-1] == '\n':
dir = dir[:-1]
dir, dircase = makepath(sitedir, dir)
if not dircase in _dirs_in_sys_path and os.path.exists(dir):
sys.path.append(dir)
_dirs_in_sys_path[dircase] = 1
if reset:
_dirs_in_sys_path = None
prefixes = [os.path.join(sys.prefix, "local"), sys.prefix]
sitedir = None # make sure sitedir is initialized because of later 'del'
if sys.exec_prefix != sys.prefix:
prefixes.append(os.path.join(sys.exec_prefix, "local"))
for prefix in prefixes:
if prefix:
if sys.platform in ('os2emx', 'riscos'):
sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
elif os.sep == '/':
sitedirs = [os.path.join(prefix,
"lib",
"python" + sys.version[:3],
"site-packages"),
os.path.join(prefix, "lib", "site-python")]
else:
sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
if sys.platform == 'darwin':
# for framework builds *only* we add the standard Apple
# locations. Currently only per-user, but /Library and
# /Network/Library could be added too
if 'Python.framework' in prefix:
home = os.environ.get('HOME')
if home:
sitedirs.append(
os.path.join(home,
'Library',
'Python',
sys.version[:3],
'site-packages'))
for sitedir in sitedirs:
if os.path.isdir(sitedir):
addsitedir(sitedir)
del prefix, sitedir
_dirs_in_sys_path = None
# Define new built-ins 'quit' and 'exit'.
# These are simply strings that display a hint on how to exit.
if os.sep == ':':
exit = 'Use Cmd-Q to quit.'
elif os.sep == '\\':
exit = 'Use Ctrl-Z plus Return to exit.'
else:
exit = 'Use Ctrl-D (i.e. EOF) to exit.'
import __builtin__
__builtin__.quit = __builtin__.exit = exit
del exit
# interactive prompt objects for printing the license text, a list of
# contributors and the copyright notice.
class _Printer:
MAXLINES = 23
def __init__(self, name, data, files=(), dirs=()):
self.__name = name
self.__data = data
self.__files = files
self.__dirs = dirs
self.__lines = None
def __setup(self):
if self.__lines:
return
data = None
for dir in self.__dirs:
for file in self.__files:
file = os.path.join(dir, file)
try:
fp = open(file)
data = fp.read()
fp.close()
break
except IOError:
pass
if data:
break
if not data:
data = self.__data
self.__lines = data.split('\n')
self.__linecnt = len(self.__lines)
def __repr__(self):
self.__setup()
if len(self.__lines) <= self.MAXLINES:
return "\n".join(self.__lines)
else:
return "Type %s() to see the full %s text" % ((self.__name,)*2)
def __call__(self):
self.__setup()
prompt = 'Hit Return for more, or q (and Return) to quit: '
lineno = 0
while 1:
try:
for i in range(lineno, lineno + self.MAXLINES):
print self.__lines[i]
except IndexError:
break
else:
lineno += self.MAXLINES
key = None
while key is None:
key = raw_input(prompt)
if key not in ('', 'q'):
key = None
if key == 'q':
break
__builtin__.copyright = _Printer("copyright", sys.copyright)
if sys.platform[:4] == 'java':
__builtin__.credits = _Printer(
"credits",
"Jython is maintained by the Jython developers (www.jython.org).")
else:
__builtin__.credits = _Printer("credits", """\
Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
for supporting Python development. See www.python.org for more information.""")
here = os.path.dirname(os.__file__)
__builtin__.license = _Printer(
"license", "See http://www.python.org/%.3s/license.html" % sys.version,
["LICENSE.txt", "LICENSE"],
[os.path.join(here, os.pardir), here, os.curdir])
# Define new built-in 'help'.
# This is a wrapper around pydoc.help (with a twist).
class _Helper:
def __repr__(self):
return "Type help() for interactive help, " \
"or help(object) for help about object."
def __call__(self, *args, **kwds):
import pydoc
return pydoc.help(*args, **kwds)
__builtin__.help = _Helper()
# On Windows, some default encodings are not provided
# by Python (e.g. "cp932" in Japanese locale), while they
# are always available as "mbcs" in each locale.
# Make them usable by aliasing to "mbcs" in such a case.
if sys.platform == 'win32':
import locale, codecs
enc = locale.getdefaultlocale()[1]
if enc.startswith('cp'): # "cp***" ?
try:
codecs.lookup(enc)
except LookupError:
import encodings
encodings._cache[enc] = encodings._unknown
encodings.aliases.aliases[enc] = 'mbcs'
# Set the string encoding used by the Unicode implementation. The
# default is 'ascii', but if you're willing to experiment, you can
# change this.
encoding = "ascii" # Default value set by _PyUnicode_Init()
if 0:
# Enable to support locale aware default string encodings.
import locale
loc = locale.getdefaultlocale()
if loc[1]:
encoding = loc[1]
if 0:
# Enable to switch off string to Unicode coercion and implicit
# Unicode to string conversion.
encoding = "undefined"
if encoding != "ascii":
# On Non-Unicode builds this will raise an AttributeError...
sys.setdefaultencoding(encoding) # Needs Python Unicode build !
#
# Run custom site specific code, if available.
#
try:
import sitecustomize
except ImportError:
pass
#
# Remove sys.setdefaultencoding() so that users cannot change the
# encoding after initialization. The test for presence is needed when
# this module is run as a script, because this code is executed twice.
#
if hasattr(sys, "setdefaultencoding"):
del sys.setdefaultencoding
def _test():
print "sys.path = ["
for dir in sys.path:
print " %s," % `dir`
print "]"
if __name__ == '__main__':
_test()

16
inst/extdat/test.rtf

@ -0,0 +1,16 @@
{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman CE;}
{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\f42\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden
Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\rsidtbl \rsid5531693}{\*\generator Microsoft Word 10.0.2627;}{\info
{\title This is a test RTF document}{\author David Castro}{\operator David Castro}{\creatim\yr2004\mo6\dy17\hr19\min29}{\revtim\yr2004\mo6\dy17\hr19\min30}{\version1}{\edmins1}{\nofpages1}{\nofwords4}{\nofchars25}{\*\company Azusa Pacific University}
{\nofcharsws28}{\vern16437}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct\asianbrkrule\rsidroot5531693 \fet0\sectd
\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4
\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}
{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid5531693 This is a test RTF document
\par
\par }}

3
inst/extdat/test.sh

@ -0,0 +1,3 @@
#!/bin/bash
echo "this is a test bash script"

BIN
inst/extdat/test.tar

Binary file not shown.

BIN
inst/extdat/test.tar.gz

Binary file not shown.

BIN
inst/extdat/test.tga

Binary file not shown.

1
inst/extdat/test.txt

@ -0,0 +1 @@
This is a plain text file

BIN
inst/extdat/test.txt.gz

Binary file not shown.

BIN
inst/extdat/test.wav

Binary file not shown.

BIN
inst/extdat/test.wmf

Binary file not shown.

BIN
inst/extdat/test.xcf

Binary file not shown.

47
inst/extdat/test.xml

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE magic PUBLIC "-//jMimeMagic//DTD magic config 1.0//EN" "magic_1_0.dtd">
<magic>
<info>
<version>0.1</version>
<author>arimus@users.sourceforge.net</author>
<description>XML magic file</description>
</info>
<match-list>
<match>
<mimetype>application/x-tar</mimetype>
<extension>tar</extension>
<description>POSIX tar archive</description>
<test offset="257" type="string" comparator="=">ustar\000</test>
</match>
<match>
<mimetype>application/x-tar</mimetype>
<extension>tar</extension>
<description>tar archive</description>
<test offset="257" type="string" comparator="=">ustar \000GNU</test>
</match>
<match>
<mimetype>application/zip</mimetype>
<extension>zip</extension>
<description>archive data</description>
<test offset="0" type="string" comparator="=">PK\003\004</test>
</match>
<match>
<mimetype>application/x-gzip</mimetype>
<extension>gz</extension>
<description>gzip compressed data</description>
<test offset="0" type="string" comparator="=">\037\213</test>
</match>
<match>
<mimetype>application/x-bzip2</mimetype>
<extension>bz2</extension>
<description>bzip2 compressed data</description>
<test offset="0" type="string" comparator="=">BZh</test>
</match>
<match>
<mimetype>???</mimetype>
<extension>bat</extension>
<description>MS-DOS batch file text</description>
<test offset="0" type="string" comparator="=">@echo off</test>
</match>
</match-list>
</magic>

255
inst/extdat/test.xpm

@ -0,0 +1,255 @@
/* XPM */
static char * test_xpm[] = {
"100 100 152 2",
" c #FFFFFF",
". c #000000",
"+ c #FAFAFA",
"@ c #ABABAB",
"# c #5E5E5E",
"$ c #2A2A2A",
"% c #0D0D0D",
"& c #030303",
"* c #0B0B0B",
"= c #292929",
"- c #616161",
"; c #B6B6B6",
"> c #FEFEFE",
", c #DBDBDB",
"' c #7E7E7E",
") c #434343",
"! c #1A1A1A",
"~ c #0A0A0A",
"{ c #121212",
"] c #353535",
"^ c #6E6E6E",
"/ c #C3C3C3",
"( c #1D1D1D",
"_ c #343434",
": c #D3D3D3",
"< c #F6F6F6",
"[ c #6A6A6A",
"} c #020202",
"| c #2B2B2B",
"1 c #707070",
"2 c #0C0C0C",
"3 c #C0C0C0",
"4 c #FCFCFC",
"5 c #444444",
"6 c #767676",
"7 c #5F5F5F",
"8 c #BABABA",
"9 c #EBEBEB",
"0 c #E5E5E5",
"a c #A4A4A4",
"b c #101010",
"c c #DEDEDE",
"d c #999999",
"e c #505050",
"f c #B5B5B5",
"g c #E7E7E7",
"h c #F8F8F8",
"i c #DDDDDD",
"j c #A5A5A5",
"k c #4E4E4E",
"l c #C2C2C2",
"m c #F7F7F7",
"n c #4D4D4D",
"o c #494949",
"p c #393939",
"q c #717171",
"r c #DCDCDC",
"s c #4C4C4C",
"t c #2D2D2D",
"u c #F2F2F2",
"v c #1C1C1C",
"w c #D0D0D0",
"x c #C1C1C1",
"y c #8B8B8B",
"z c #797979",
"A c #050505",
"B c #9D9D9D",
"C c #D2D2D2",
"D c #3D3D3D",
"E c #212121",
"F c #3A3A3A",
"G c #CFCFCF",
"H c #F3F3F3",
"I c #181818",
"J c #6B6B6B",
"K c #1E1E1E",
"L c #B9B9B9",
"M c #171717",
"N c #010101",
"O c #060606",
"P c #E4E4E4",
"Q c #151515",
"R c #202020",
"S c #696969",
"T c #AAAAAA",
"U c #E9E9E9",
"V c #7B7B7B",
"W c #454545",
"X c #626262",
"Y c #F1F1F1",
"Z c #0F0F0F",
"` c #EEEEEE",
" . c #BEBEBE",
".. c #3B3B3B",
"+. c #333333",
"@. c #F5F5F5",
"#. c #2F2F2F",
"$. c #C9C9C9",
"%. c #828282",
"&. c #080808",
"*. c #838383",
"=. c #646464",
"-. c #848484",
";. c #9E9E9E",
">. c #B3B3B3",
",. c #F9F9F9",
"'. c #222222",
"). c #7A7A7A",
"!. c #131313",
"~. c #EAEAEA",
"{. c #B0B0B0",
"]. c #BCBCBC",
"^. c #424242",
"/. c #414141",
"(. c #747474",
"_. c #373737",
":. c #262626",
"<. c #8D8D8D",
"[. c #CECECE",
"}. c #EFEFEF",
"|. c #FBFBFB",
"1. c #DADADA",
"2. c #ACACAC",
"3. c #232323",
"4. c #E1E1E1",
"5. c #E8E8E8",
"6. c #4F4F4F",
"7. c #A8A8A8",
"8. c #757575",
"9. c #272727",
"0. c #BBBBBB",
"a. c #F0F0F0",
"b. c #B7B7B7",
"c. c #040404",
"d. c #515151",
"e. c #C5C5C5",
"f. c #0E0E0E",
"g. c #8E8E8E",
"h. c #090909",
"i. c #BDBDBD",
"j. c #111111",
"k. c #2E2E2E",
"l. c #5C5C5C",
"m. c #ECECEC",
"n. c #E3E3E3",
"o. c #787878",
"p. c #141414",
"q. c #070707",
"r. c #545454",
"s. c #9A9A9A",
"t. c #E0E0E0",
"u. c #1B1B1B",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" . . . . . . . . . . . . . . . . . . . . . . . . ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
" . . . . . . . . ",
" . . . . . . . . ",
" . . . . . . . . ",
" . . . . + @ # $ % & * = - ; > , ' ) ! ~ & { ] ^ / . . . . ",
" . . . . @ ( . . . . . . . . . _ : < [ } . . . . . . . . . | ; . . . . . . . . . . . . . . ",
" . . . . > 1 . . . . . . . . . . . . 2 3 4 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
" . . . . 6 . . . & 7 8 9 + 0 a $ . . . b c d . . . . e f g + h i j k } . . . . . . . . . . . . . . . ",
" . . . . 8 . . . b l m n . . . o p . . . q r s . . . . ",
" . . . . t . . . ; u v . . . w * . . . 0 . . . . ",
" . . . . x . . . 5 y . . . z A . . . + . . . . ",
" . . . . q . . . B C . . . D E . . . 3 . . . . ",
" . . . . F . . . G H . . . I J . . . K L . . . . ",
" . . . . M . . . & & & & } } } N N N . . . . . O P Q . . . . R S T U . . . . ",
" . . . . A . . . . . . . . . . . . . . . . . . . : $ . . . . . . . | V r . . . . ",
" . . . . } . . . . . . . . . . . . . . . . . . . 4 j W O . . . . . . } X Y . . . . ",
" . . . . Z . . . ` < .' ..& . . . . +.@. . . . . ",
" . . . . #.. . . $. U %.&.. . . *. . . . . ",
" . . . . =.. . . -. ;.. . . | . . . . ",
" . . . . >.. . . R ,. H . . . &. A . . . 4 ",
" . . . . 4 '.. . . ). U . . . 2 !.. . . ~. ",
" . . . . {.. . . . ' 4 ].^. /.8 > (.. . . D _.. . . f ",
" . . . . q . . . . :.<.[.}.|.}.1.2.(.3.. . . . '.(.f 4.,.4 5.; 6.. . . . 7. 8.. . . 9.0.a.> ",
" . . . . > 8.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 1.O . . . . . . . . . ",
" . . . . b.$ . . . . . . . . . . c.d.e. . . . . . . . . . . . . f.g.> a h.. . . . . . . . ",
" . . . . > i.^ _.Q c.& j.k.l.;.m. n.T o.k t p.q.& f.:.r.s.` t.%.) u.* N . . . ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

BIN
inst/extdat/test.zip

Binary file not shown.

BIN
inst/extdat/test_1.2.class

Binary file not shown.

BIN
inst/extdat/test_1.3.class

Binary file not shown.

BIN
inst/extdat/test_1.4.class

Binary file not shown.

BIN
inst/extdat/test_1.5.class

Binary file not shown.

BIN
inst/extdat/test_128_44_jstereo.mp3

Binary file not shown.

BIN
inst/extdat/test_excel.xlsm

Binary file not shown.

BIN
inst/extdat/test_excel.xlsx

Binary file not shown.

BIN
inst/extdat/test_excel_2000.xls

Binary file not shown.

62
inst/extdat/test_excel_spreadsheet.xml

@ -0,0 +1,62 @@
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>David Castro</Author>
<LastAuthor>David Castro</LastAuthor>
<Created>2004-06-16T02:29:05Z</Created>
<LastSaved>2004-06-16T02:29:24Z</LastSaved>
<Company>Azusa Pacific University</Company>
<Version>10.2625</Version>
</DocumentProperties>
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
<DownloadComponents/>
<LocationOfComponents HRef="file:///Z:\mnt\c\Documents%20and%20Settings\Administrator\Desktop\download\Office%20XP%20Pro\"/>
</OfficeDocumentSettings>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>12660</WindowHeight>
<WindowWidth>17100</WindowWidth>
<WindowTopX>360</WindowTopX>
<WindowTopY>60</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
</Styles>
<Worksheet ss:Name="Sheet1">
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
x:FullRows="1">
<Row>
<Cell><Data ss:Type="String">Test excel 2000 spreadsheet</Data></Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<Selected/>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Sheet2">
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Sheet3">
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
</Workbook>

155
inst/extdat/test_excel_web_archive.mht

@ -0,0 +1,155 @@
MIME-Version: 1.0
X-Document-Type: Worksheet
Content-Location: file:///C:/2A65B325/test_excel_web_archive.htm
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"
<html xmlns:o=3D"urn:schemas-microsoft-com:office:office"
xmlns:x=3D"urn:schemas-microsoft-com:office:excel"
xmlns=3D"http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dus-ascii">
<meta name=3DProgId content=3DExcel.Sheet>
<meta name=3DGenerator content=3D"Microsoft Excel 10">
<link rel=3DFile-List href=3D"test_excel_web_archive_files/filelist.xml">
<link rel=3DEdit-Time-Data href=3D"test_excel_web_archive_files/editdata.ms=
o">
<link rel=3DOLE-Object-Data href=3D"test_excel_web_archive_files/oledata.ms=
o">
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>David Castro</o:Author>
<o:LastAuthor>David Castro</o:LastAuthor>
<o:Created>2004-06-16T02:29:05Z</o:Created>
<o:LastSaved>2004-06-16T02:31:29Z</o:LastSaved>
<o:Company>Azusa Pacific University</o:Company>
<o:Version>10.2625</o:Version>
</o:DocumentProperties>
<o:OfficeDocumentSettings>
<o:DownloadComponents/>
<o:LocationOfComponents HRef=3D"file:///Z:\mnt\c\Documents%20and%20Settin=
gs\Administrator\Desktop\download\Office%20XP%20Pro\"/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<style>
<!--table
{mso-displayed-decimal-separator:"\.";
mso-displayed-thousand-separator:"\,";}
@page
{margin:1.0in .75in 1.0in .75in;
mso-header-margin:.5in;
mso-footer-margin:.5in;}
tr
{mso-height-source:auto;}
col
{mso-width-source:auto;}
br
{mso-data-placement:same-cell;}
.style0
{mso-number-format:General;
text-align:general;
vertical-align:bottom;
white-space:nowrap;
mso-rotate:0;
mso-background-source:auto;
mso-pattern:auto;
color:windowtext;
font-size:10.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:Arial;
mso-generic-font-family:auto;
mso-font-charset:0;
border:none;
mso-protection:locked visible;
mso-style-name:Normal;
mso-style-id:0;}
td
{mso-style-parent:style0;
padding-top:1px;
padding-right:1px;
padding-left:1px;
mso-ignore:padding;
color:windowtext;
font-size:10.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:Arial;
mso-generic-font-family:auto;
mso-font-charset:0;
mso-number-format:General;
text-align:general;
vertical-align:bottom;
border:none;
mso-background-source:auto;
mso-pattern:auto;
mso-protection:locked visible;
white-space:nowrap;
mso-rotate:0;}
-->
</style>
<!--[if gte mso 9]><xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name>Sheet1</x:Name>
<x:WorksheetOptions>
<x:Selected/>
<x:ProtectContents>False</x:ProtectContents>
<x:ProtectObjects>False</x:ProtectObjects>
<x:ProtectScenarios>False</x:ProtectScenarios>
</x:WorksheetOptions>
</x:ExcelWorksheet>
<x:ExcelWorksheet>
<x:Name>Sheet2</x:Name>
<x:WorksheetOptions>
<x:ProtectContents>False</x:ProtectContents>
<x:ProtectObjects>False</x:ProtectObjects>
<x:ProtectScenarios>False</x:ProtectScenarios>
</x:WorksheetOptions>
</x:ExcelWorksheet>
<x:ExcelWorksheet>
<x:Name>Sheet3</x:Name>
<x:WorksheetOptions>
<x:ProtectContents>False</x:ProtectContents>
<x:ProtectObjects>False</x:ProtectObjects>
<x:ProtectScenarios>False</x:ProtectScenarios>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
<x:WindowHeight>12660</x:WindowHeight>
<x:WindowWidth>17100</x:WindowWidth>
<x:WindowTopX>360</x:WindowTopX>
<x:WindowTopY>60</x:WindowTopY>
<x:ProtectStructure>False</x:ProtectStructure>
<x:ProtectWindows>False</x:ProtectWindows>
</x:ExcelWorkbook>
</xml><![endif]-->
</head>
<body link=3Dblue vlink=3Dpurple>
<table x:str border=3D0 cellpadding=3D0 cellspacing=3D0 width=3D192 style=
=3D'border-collapse:
collapse;table-layout:fixed;width:144pt'>
<col width=3D64 span=3D3 style=3D'width:48pt'>
<tr height=3D17 style=3D'height:12.75pt'>
<td height=3D17 colspan=3D3 width=3D192 style=3D'height:12.75pt;mso-ignor=
e:colspan;
width:144pt'>Test excel 2000 spreadsheet</td>
</tr>
<![if supportMisalignedColumns]>
<tr height=3D0 style=3D'display:none'>
<td width=3D64 style=3D'width:48pt'></td>
<td width=3D64 style=3D'width:48pt'></td>
<td width=3D64 style=3D'width:48pt'></td>
</tr>
<![endif]>
</table>
</body>
</html>

BIN
inst/extdat/test_nocompress.tif

Binary file not shown.

BIN
inst/extdat/test_powerpoint.pptm

Binary file not shown.

BIN
inst/extdat/test_powerpoint.pptx

Binary file not shown.

BIN
inst/extdat/test_word.docm

Binary file not shown.

BIN
inst/extdat/test_word.docx

Binary file not shown.

BIN
inst/extdat/test_word_2000.doc

Binary file not shown.

BIN
inst/extdat/test_word_6.0_95.doc

Binary file not shown.

BIN
inst/extdata/db/new/magic.mgc.zip

Binary file not shown.

BIN
inst/extdata/db/old/magic.mgc.zip

Binary file not shown.

BIN
inst/extdata/img/Rlogo.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

BIN
inst/extdata/img/Rlogo.pdf

Binary file not shown.

BIN
inst/extdata/img/Rlogo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

14
inst/extdata/img/Rlogo.svg

@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="724" height="561" viewBox="0 0 724 561">
<defs>
<linearGradient id="gradientFill-1" x1="0" x2="1" y1="0" y2="1" gradientUnits="objectBoundingBox" spreadMethod="pad">
<stop offset="0" stop-color="rgb(203,206,208)" stop-opacity="1"/>
<stop offset="1" stop-color="rgb(132,131,139)" stop-opacity="1"/>
</linearGradient>
<linearGradient id="gradientFill-2" x1="0" x2="1" y1="0" y2="1" gradientUnits="objectBoundingBox" spreadMethod="pad">
<stop offset="0" stop-color="rgb(39,109,195)" stop-opacity="1"/>
<stop offset="1" stop-color="rgb(22,92,170)" stop-opacity="1"/>
</linearGradient>
</defs>
<path d="M361.453,485.937 C162.329,485.937 0.906,377.828 0.906,244.469 C0.906,111.109 162.329,3.000 361.453,3.000 C560.578,3.000 722.000,111.109 722.000,244.469 C722.000,377.828 560.578,485.937 361.453,485.937 ZM416.641,97.406 C265.289,97.406 142.594,171.314 142.594,262.484 C142.594,353.654 265.289,427.562 416.641,427.562 C567.992,427.562 679.687,377.033 679.687,262.484 C679.687,147.971 567.992,97.406 416.641,97.406 Z" fill="url(#gradientFill-1)" fill-rule="evenodd"/>
<path d="M550.000,377.000 C550.000,377.000 571.822,383.585 584.500,390.000 C588.899,392.226 596.510,396.668 602.000,402.500 C607.378,408.212 610.000,414.000 610.000,414.000 L696.000,559.000 L557.000,559.062 L492.000,437.000 C492.000,437.000 478.690,414.131 470.500,407.500 C463.668,401.969 460.755,400.000 454.000,400.000 C449.298,400.000 420.974,400.000 420.974,400.000 L421.000,558.974 L298.000,559.026 L298.000,152.938 L545.000,152.938 C545.000,152.938 657.500,154.967 657.500,262.000 C657.500,369.033 550.000,377.000 550.000,377.000 ZM496.500,241.024 L422.037,240.976 L422.000,310.026 L496.500,310.002 C496.500,310.002 531.000,309.895 531.000,274.877 C531.000,239.155 496.500,241.024 496.500,241.024 Z" fill="url(#gradientFill-2)" fill-rule="evenodd"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

BIN
inst/extdata/img/Rlogo.tiff

Binary file not shown.

5
inst/extdata/img/example.c

@ -1,5 +0,0 @@
#include <stdio.h>
void main() {
}

4
inst/extdata/img/example.html

@ -1,4 +0,0 @@
<html>
<head></head>
<body></body>
</html>

1
inst/extdata/img/example.r

@ -1 +0,0 @@
print("examle")

5
inst/extdata/img/example.rtf

@ -1,5 +0,0 @@
{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
{\fonttbl}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww12540\viewh14960\viewkind1
}

1
inst/extdata/img/example_dir/test.txt

@ -1 +0,0 @@
Test text file since the dir can't be empty and I need to test out dir functionality.

27
man/get_content_type.Rd

@ -0,0 +1,27 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/get-content-type.R
\name{get_content_type}
\alias{get_content_type}
\title{Discover MIME type of a file based on contents}
\usage{
get_content_type(path)
}
\arguments{
\item{path}{path to a file}
}
\value{
character vector
}
\description{
There are a limited number of header "magic" bytes checked directly by
this function but cover quite a bit of ground. After that, \code{\link[=guess_content_type]{guess_content_type()}} is called which uses
file extension-to-MIME mappings. File an issue or PR if more magic-byte-level
comparisons are required/desired. If no match is found, \code{???} is returned.
}
\details{
Initial in-R header mapping logic borrowed from \code{MimeTypes.java} from
\href{https://github.com/Servoy/servoy-client}{servoy-client}
}
\examples{
get_content_type(system.file("extdat", "test.pdf", package="simplemagic"))
}

11
man/get_os.Rd

@ -1,11 +0,0 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/wand.r
\name{get_os}
\alias{get_os}
\title{ripped from rappdirs (ty Hadley!)}
\usage{
get_os()
}
\description{
ripped from rappdirs (ty Hadley!)
}

28
man/guess_content_type.Rd

@ -0,0 +1,28 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/guess-content-type.R
\name{guess_content_type}
\alias{guess_content_type}
\title{Guess MIME type from filename (extension)}
\usage{
guess_content_type(path)
}
\arguments{
\item{path}{path to file}
}
\value{
character vector
}
\description{
Uses an internal database of over 1,500 file extension-to-MIME mappings to
return one or more associated types for a given input path. If no match is
found, \code{???} is returned.
}
\details{
Incorporates standard IANA MIME extension mappings and those from
\href{https://github.com/Servoy/servoy-client}{servoy-client} and
\href{https://github.com/stevenwdv}{stevenwdv}'s
\href{https://s-randomfiles.s3.amazonaws.com/mime/allMimeTypes.json}{allMimeTypes.json}.
}
\examples{
guess_content_type(system.file("extdat", "test.pdf", package="simplemagic"))
}

41
man/incant.Rd

@ -1,41 +0,0 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/wand.r
\name{incant}
\alias{incant}
\title{Retrieve 'magic' attributes from files and directories}
\usage{
incant(path, magic_db = "system")
}
\arguments{
\item{path}{character vector of files to use magic on}
\item{magic_db}{either "\code{system}" (the default) to use the system
\code{magic} database or an atomic character vector with a
colon-separated list of full paths to custom \code{magic} database(s). This parameter
is (for the moment) ignored on Windows.}
}
\value{
a \code{tibble} / \code{data.frame} of file magic attributes.
Specifically, mime type, encoding, possible file extensions and
type description are returned as colums in the data frame along
with \code{path}.
}
\description{
Retrieve 'magic' attributes from files and directories
}
\note{
Various fields might not be available depending on the version
of \code{libmagic} you have installed.
}
\examples{
library(dplyr)
system.file("extdata/img", package="wand") \%>\%
list.files(full.names=TRUE) \%>\%
incant() \%>\%
glimpse()
}
\references{
See \url{http://openpreservation.org/blog/2012/08/09/magic-editing-and-creation-primer/}
for information on how to create your own \code{magic} database
}

35
man/magic_wand_file.Rd

@ -1,35 +0,0 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/zzz.r
\name{magic_wand_file}
\alias{magic_wand_file}
\title{Use the "magic" file that comes with the package}
\usage{
magic_wand_file(refresh = FALSE)
}
\arguments{
\item{refresh}{ensure the lastest copy of the pacakge "magic"
database is used.}
}
\description{
The \code{magic_load()} functon from \code{libmagic} can't take ZIP files
and the \code{magic.mgc} file that ships with the package is too large to
be shipped uncompressed. Using this function as the \code{magic_db}
parameter will copy and uncompress the database to a cache directory and
return the full path to the magic file. Subsequent calls will not have to
perform the decompression unless \code{force} is \code{TRUE} or the
cache directory has been cleared.
}
\note{
'magic' files are highly coupled with the version of the \code{file}
utility they were built with. This function is provided solely for the
off chance that a macOS or Linux/UNIX system's \code{libmagic} library
was not configured properly and cannot find the system 'magic' file.
}
\examples{
library(dplyr)
system.file("extdata/img", package="wand") \%>\%
list.files(full.names=TRUE) \%>\%
incant(magic_wand_file()) \%>\%
glimpse()
}

39
man/mime_db.Rd

@ -1,39 +0,0 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/datasets.r
\docType{data}
\name{mime_db}
\alias{mime_db}
\title{MIME Types Database}
\format{A list with 1,883 elements and four named fields: \code{source},
\code{compressible}, \code{extensions} & \code{charset}.}
\usage{
data(mime_db)
}
\description{
This is a dataset of all mime types. It aggregates data from the
following sources:
\itemize{
\item \url{http://www.iana.org/assignments/media-types/media-types.xhtml}
\item \url{http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types}
\item \url{http://hg.nginx.org/nginx/raw-file/default/conf/mime.types}
}
There are a total of four possible fields per element:
\itemize{
\item \code{source}: where the mime type is defined. If not set, it's
probably a custom media type. One of \code{apache}, \code{iana} or \code{nginx}.
\item \code{extensions}: a character vector of known extensions associated with this mime type.
\item \code{compressible}: whether a file of this type can be "gzipped" (mostly
useful in the context of serving up web content).
\item \code{charset}: the default charset associated with this type, if any.
}
}
\note{
Last updated 2016-08-14; the only guaranteed field is \code{source}
}
\references{
Ingested from \url{https://github.com/jshttp/mime-db}.
}
\keyword{datasets}

14
man/simplemagic_mime_db.Rd

@ -0,0 +1,14 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/aaa.R
\docType{data}
\name{simplemagic_mime_db}
\alias{simplemagic_mime_db}
\title{File extension-to-MIME mapping data frame}
\format{An object of class \code{tbl_df} (inherits from \code{tbl}, \code{data.frame}) with 1763 rows and 2 columns.}
\usage{
simplemagic_mime_db
}
\description{
File extension-to-MIME mapping data frame
}
\keyword{datasets}

15
man/wand.Rd

@ -10,11 +10,18 @@ The 'libmagic' library provides functions to determine 'MIME' type and other
metadata from files through their "magic" attributes. This is useful when you metadata from files through their "magic" attributes. This is useful when you
do not wish to rely solely on the honesty of a user or the extension on a do not wish to rely solely on the honesty of a user or the extension on a
file name. It also incorporates other metadata from the mime-db database file name. It also incorporates other metadata from the mime-db database
<https://github.com/jshttp/mime-db> \url{https://github.com/jshttp/mime-db}
} }
\details{ \section{Some important details}{
Based on \code{file} / \code{libmagic} - \url{https://github.com/file/file}
The header checking is minimal (i.e. nowhere near as comprehensive as \code{libmagic}) but
covers quite a bit of ground. If there are content-check types from
\href{https://github.com/threatstack/libmagic/tree/master/magic/}{magic sources}
that you would like coded into the package, please file an issue and
\emph{include the full line(s)} from that linked \code{magic.tab} that you would like mapped.
} }
\author{ \author{
Bob Rudis (@hrbrmstr) Bob Rudis (bob@rud.is)
} }

3
src/.gitignore

@ -1,3 +0,0 @@
*.o
*.so
*.dll

2
src/Makevars

@ -1,2 +0,0 @@
PKG_CPPFLAGS= -L/usr/include -L/usr/local/include
PKG_LIBS= -L/usr/local/lib -L/usr/lib -lmagic

2
src/Makevars.in

@ -1,2 +0,0 @@
PKG_CPPFLAGS=@cflags@
PKG_LIBS=@libs@ -lmagic

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save