TiVoCommunity.com
(c)opyright 1995-2005 All rights reserved
indexcheckTC
This area is a static history of posts in the TiVo Community Forum Archive.
This archive history was made for the simple indexing of search sites like
Google.
Pages:1
What is MFS?
(Click here to view the original thread with full colors/images)
Posted by: pderocco
I'm under the impression that this is some sort of database file system proprietary to TiVo, and not some Linux standard. Is there a good FAQ or other hacker documentation that explains it, as well as the Tcl scripts that access it? If not, can someone post a Reader's Digest explanation here, or suggest how I might figure it out for myself?
Posted by: Backhack
MFS = Main File System
I to am looking for a good book on linux.
Posted by: embeem
Actually in this case MFS is 'media filesystem'; TiVo's proprietary "filesystem" format. The term filesystem is arguable, it's a transactional database with numbered nodes, few of which happen to have filenames -- this is why you can't mount it as a normal filesystem.
MFS is used to store various things, recordings, preferences, lineup, guide data and bits of the interface are all mixed in there. Reading it isn't too bad, you can surf it from tivoweb or through tivosh's mls and dumpobj commands; writing and manipulating it however can be annoy.. erm "complex" and generally requires a TCL script for even the simplest of tasks.
Posted by: pderocco
Thanks for the tip. The interface to the underlying file system seems to be through something called "mfs", but a quick search of tvlib doesn't find a definition for this. Does anyone know where this proc is defined?
Posted by: Black_Widow000
As far as I know the only way to work with the MFS Database is through tivosh my suggestion to you if you wish to learn more about it and what you can do is, get TiVoWeb and use the MFS browser, look through the TCL scripts available. Additionally finding to TCL references wouldn't be to bad either. I have been thinking of putting together a quick reference for beginners, but I'm not sure its really advisable.
Posted by: Saturn
Here's some of the commands you can use. If you can pick your way through the actual TCL commands and the ones TiVo added, you're in good shape. If you don't know where this list came from, and the bash-2.02# is totally foreign, you are probably best not screwing around in there.
bash-2.02# tivosh
% ?
ambiguous command name "?":
AddObject AddToObjectCount ApgCompare AppendSlashIfNone AttributeNameToEnumType ClearLookupForOurName ClearObjectCounts ComputeObjectId ComputeObjectIdFromObjectId CreateLookupForEnum DecimalCompare DumpObjectDumpObjectCounts EnableTransactionHoldoff EnumsInType FAlreadyVisited FileDate FileSize FindAllDirs FindOrCreateObject FindOrCreateSubObject ForeachMfsFile FromMfs GlobObjSpec IndentSpace LinuxFileSameAsMfsFile LookupEnumNameByValue LookupEnumValueByName LookupOurNameFor MfsFileExists MfsLog MfsRemoveTree MfsRubbishTree MfsSetVerbose NormalizeIndexPath ObjectIds PrefixMatches ReadableApgFrequencyLNB ReadableApgFrequencyLNBs ReadableApgFrequencyParameters ReadableApgProgramCategory ReadableCategory ReadableChannelNum ReadableConditionalExpression ReadableLogoIndex ReadableThumbs RetryTransaction RubbishObjectByFsId TailBuffer ToMfs _MfsExists after append array auto_execok auto_load auto_mkindex auto_qualify auto_reset binary body break case cat catch catvar cd class cleanPools cleanchildren clock close closelog code concat configbody continue cp dbclose dbhandles dbhasrefcounts dbindex dbload dbloadmfs dbloadschema dbopen dbunload delete dumpobjdumpobjUsage ensemble eof error eval event exec exit expr fblocked fconfigure fcopy file fileevent find flush for foreach format getpri gets glob global grep holdoff if incr info interp interp0 ioctl itcl_class itcl_info itrans join kill killall killproc lappend lindex link linsert list llength load local log lrange lreplace ls lsearch lsort min mls namespace open package pid pkg_mkIndex pool proc procinfo ps putlog puts pwd random read reboot regexp regsub rename return rm scan scope seek set setSyslog setlog setpri shaketcl slice socket source split string subst switch sync tail tclLog tclMacPkgSearch tclPkgSetup tclPkgUnknown tell time trace transaction try tvsource unknown unlink unset update uplevel upvarutil variable vwait while
%
Posted by: pderocco
I'd still like to know where "mfs" is defined. That seems to be the hook to the underlying machine language that implements MFS. If I know that, then I could perhaps cross-compile C code that talks to MFS. (Not that I absolutely need to do that--I'd just like to know how.)
Posted by: embeem
The 'mfs' command in tivosh is actually built into tivosh, it's not just some TCL proceedure like some of them are.
Posted by: pderocco
Well that prompts the question, what is tivosh really? Is it a hack of some standard Tcl command line interpreter with some additional built-in words defined? If so, is that part of the system open source?
Posted by: embeem
It's a modified tclsh8.0 (8.0p2). While they may breaking copyright by "redistributing" it without sufficient copyright notices, the software is not licensed under GPL so there are no requirements for source.
quote:
This software is copyrighted by the Regents of the University of
California, Sun Microsystems, Inc., and other parties. The following
terms apply to all files associated with the software unless explicitly
disclaimed in individual files.
The authors hereby grant permission to use, copy, modify, distribute,
and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.
Modifications to this software may be copyrighted by their authors
and need not follow the licensing terms described here, provided that
the new terms are clearly indicated on the first page of each file where
they apply.
IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.
GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license.
vBulletin Copyright ©2000 - 2009,
Jelsoft Enterprises Limited.
vB Easy Archive Final ©2000 - 2009
- Created by Stefan "Xenon" Kaeser
Modified by Adam J. de Jaray