Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
File::Mork(3)	      User Contributed Perl Documentation	 File::Mork(3)

NAME
       File::Mork - a module to	read Mozilla URL history files

SYNOPSIS
	   my $mork = File::Mork->new($filename, verbose => 1)
	       || die $File::Mork::ERROR."\n";

	   foreach my $entry ($mork->entries) {
	       while (my($key,$val) = each %$entry) {
		   printf ("%14s = %s\n", $key,	$val);
	       }
	   }

DESCRIPTION
       This is a module	that can read the Mozilla URL history file -- normally
       $HOME/.mozilla/default/*.slt/history.dat	-- and extract the id, url,
       name, hostname, first visted dat, last visited date and visit count.

       To find your history file it might be worth using Mozilla::Backup which
       has some	platform-independent code for finding the profiles of various
       Mozilla-isms (including Firefox,	Camino,	K-Meleon, etc.).

METHODS
   new <file> [opts]
       Takes a filename	and parses that	file.

       Returns "undef" on error, setting $File::Mork::Error.

       Takes an	optional hash of options

       o   verbose

	   A value up to 3 - defines the level of verbosity

       o   age

	   A ctime which forces	"File::Mork" to	only parse entries later than
	   this.

   parse <file>
       Internal	method to parse	the file. Obviously.

   entries
       Return a	list of	"File::Mork::Entry" objects sorted by LastVisitDate.

   error <message>
       Internal	method to set the internal error message

   debug <message> <priority>
       Internal	method to print	out a debug message if it's a higher priority
       than the	the current verbosity level.

THE UGLY TRUTH LAID BARE
       Extracted from mork.pl

       In Netscape Navigator 1.0 through 4.0, the history.db file was just a
       Berkeley	DBM file.  You could trivially bind to it from Perl, and pull
       out the URLs and	last-access time.  In Mozilla, this has	been replaced
       with a "Mork" database for which	no tools exist.

       Let me make it clear that McCusker is a complete	barking	lunatic.  This
       is just about the stupidest file	format I've ever seen.

	      http://www.mozilla.org/mailnews/arch/mork/primer.txt
	      http://jwz.livejournal.com/312657.html
	      http://www.jwz.org/doc/mailsum.html
	      http://bugzilla.mozilla.org/show_bug.cgi?id=241438

       In brief, let's count its sins:

       o   Two different numerical namespaces that overlap.

       o   It can't decide what	kind of	character-quoting syntax to use:
	   Backslash?  Hex encoding with dollar-sign?

       o   C++ line comments are allowed sometimes, but	sometimes // is	just a
	   pair	of characters in a URL.

       o   It goes to all this serious compression effort (two different
	   string-interning hash tables) and then writes out Unicode strings
	   without using UTF-8:	writes out the unpacked	wchar_t	characters!

       o   Worse, it hex-encodes each wchar_t with a 3-byte encoding, meaning
	   the file size will be 3x or 6x (depending on	whether	whchar_t is 2
	   bytes or 4 bytes.)

       o   It masquerades as a "textual" file format when in fact it's just
	   another binary-blob file, except that it represents all its magic
	   numbers in ASCII.  It's not human-readable, it's not	hand-editable,
	   so the only benefit there is	to the fact that it uses short lines
	   and doesn't use binary characters is	that it	makes the file bigger.
	   Oh wait, my mistake,	that isn't actually a benefit at all.

       Pure comedy.

AUTHOR
       Module-ised by Simon Wistow <simon@thegestalt.org>

       based on

	   http://www.jwz.org/hacks/mork.pl

       Created:	 3-Mar-2004 by Jamie Zawinski, Anonymous, and Jacob Post.

COPYRIGHT
       Copyright A(C) 2004 Jamie Zawinski <jwz@jwz.org>

LICENSE
       Permission to use, copy,	modify,	distribute, and	sell this software and
       its documentation for any purpose is hereby granted without fee,
       provided	that the above copyright notice	appear in all copies and that
       both that copyright notice and this permission notice appear in
       supporting documentation.  No representations are made about the
       suitability of this software for	any purpose.  It is provided "as is"
       without express or implied warranty.

BUGS
       Might be	a bit memory heavy? Could do with an iterator interface.

       Can't write Mork	dbs.

SEE ALSO
       http://www.livejournal.com/users/jwz/312657.html

       http://www.erys.org/resume/netscape/mork/jwz.html

NAME
       File::Mork::Entry - an single entry in a	mork DB

METHODS
       All methods except "new"	take an	optional argument to set them.

   new <%opts>
       blesses %opts into the class File::Mork::Entry

   ID
       The internal id of the entry

   URL
       The url visited

   NAME
       The name	of the url visited

   Hostname
       The hostname of the url visited

   FirstVisitDate
       The first time this url was visited as a	"ctime"

   LastVisitDate
       The last	time this url was visited as a "ctime"

   Hidden
       Whether this URL	is hidden from the history list	or not

   VisitCount
       The number of times this	url has	been visited

   ByteOrder
       The byte	order -	this is	associated with	ID number 1.

POD ERRORS
       Hey! The	above document had some	coding errors, which are explained
       below:

       Around line 490:
	   Non-ASCII character seen before =encoding in	'A(C)'.	Assuming
	   CP1252

perl v5.32.0			  2006-10-24			 File::Mork(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | THE UGLY TRUTH LAID BARE | AUTHOR | COPYRIGHT | LICENSE | BUGS | SEE ALSO | NAME | METHODS | POD ERRORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=File::Mork&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help