#------------------------------------------------------------------------------
# $File: maple,v 1.10 2021/08/30 13:31:25 christos Exp $
# maple:  file(1) magic for maple files
# "H. Nanosecond" <[email protected]>
# Maple V release 4, a multi-purpose math program
#

# maple library .lib
# URL:          https://en.wikipedia.org/wiki/Maple_(software)
# Reference:    http://mark0.net/download/triddefs_xml.7z/defs/l/lib-maple-v-r4.trid.xml
# Update:       Joerg Jenderek
0       string  \000MVR4\nI     Maple Vr4 library
#!:mime application/octet-stream
!:mime  application/x-maple-lib
!:ext   lib

# URL:          https://en.wikipedia.org/wiki/Maple_(software)
# Reference:    http://mark0.net/download/triddefs_xml.7z/defs/l/lib-maple-v-r5.trid.xml
# From:         Joerg Jenderek
0       string  \000MVR5\n      Maple Vr5 library
#!:mime application/octet-stream
!:mime  application/x-maple-lib
!:ext   lib

# From:         Joerg Jenderek
0x400   string  M7R0\nI         Maple Vr7 library
#!:mime application/octet-stream
!:mime  application/x-maple-lib
!:ext   lib
# null terminated library name like: C:\Maple12/Cliffordlib\maple.lib ../Maplets/Tutors.lib
>5      string  x               %s
# probably library name padding with nil or points (0x2E)
#>0xF8  uquad   x               \b, PADDING 0x%16.16llx
# null terminated strings like: Exterior Clifford FunctionArithmetics
# like: 1 20 40
>0x115  ulelong x               \b, %u string
# plural s
>0x115  ulelong >1              \bs
>0x119  string  x               1st '%s'
# probably second name section padding with nil or points (0x2E)
#>0x3F0 uquad   x               \b, 2nd PADDING 0x%16.16llx
# line feed separated ASCII string with maximal 79 length
#>0x407 string  x               \b, section "%s"
>0x454  ubyte   !0x0a           \b, at 0x454 0x%x

# .ind
# no magic for these :-(
# they are compiled indexes for maple files

# .hdb
# Update:       Joerg Jenderek
# URL:          https://www.maplesoft.com/support/help/maple/view.aspx?path=Formats/HDB
# Reference:    http://mark0.net/download/triddefs_xml.7z/defs/h/hdb-maple.trid.xml
# Note:         This format was replaced in Maple 18 by the Maple Help format (*.help)
0       string  \000\004\000\000
# skip xBASE Compound Index file *.CDX by looking for version
>1028   string          version Maple help database
# length of string version
#>>1024 ulelong         !7      \b, at 0x400 unexpected %u
#!:mime application/octet-stream
!:mime application/x-maple-hdb
!:ext   hdb
>1028   default         x
# skip more xBASE Compound Index file *.CDX by looking for keyword Maple
# like hsum.hdb
>>4     search/0xCC41   Maple   Maple help database
!:mime  application/x-maple-hdb
!:ext   hdb

# .mhp
# this has the form <PACKAGE=name>
0       string  \<PACKAGE=      Maple help file
0       string  \<HELP\ NAME=   Maple help file
0       string  \n\<HELP\ NAME= Maple help file with extra carriage return at start (yuck)
#0      string  #\ Newton       Maple help file, old style
0       string  #\ daub Maple help file, old style
#0      string  #===========    Maple help file, old style

# .mws
0       string  \000\000\001\044\000\221        Maple worksheet
#this is anomalous
0       string  WriteNow\000\002\000\001\000\000\000\000\100\000\000\000\000\000        Maple worksheet, but weird
# this has the form {VERSION 2 3 "IBM INTEL NT" "2.3" }\n
# that is {VERSION major_version miunor_version computer_type version_string}
0       string  {VERSION\       Maple worksheet
>9      string  >\0     version %.1s.
>>11    string  >\0     %.1s

# .mps
0       string  \0\0\001$       Maple something
# from byte 4 it is either 'nul E' or 'soh R'
# I think 'nul E' means a file that was saved as  a different name
# a sort of revision marking
# 'soh R' means new
>4      string  \000\105        An old revision
>4      string  \001\122        The latest save

# .mpl
# some of these are the same as .mps above
#0000000 000 000 001 044 000 105 same as .mps
#0000000 000 000 001 044 001 122 same as .mps

0       string  #\n##\ <SHAREFILE=      Maple something
0       string  \n#\n##\ <SHAREFILE=    Maple something
0       string  ##\ <SHAREFILE= Maple something
0       string  #\r##\ <SHAREFILE=      Maple something
0       string  \r#\r##\ <SHAREFILE=    Maple something
0       string  #\ \r##\ <DESCRIBE>     Maple something anomalous.