Thursday, December 17, 2009

Historic Web browser reborn trial: midasWWW, violaWWW

Thanks www.mmmt.ru ftp search engine, I got midasWWW-2.1 and violaWWW 3.3(viola-3.3) from ftp archives.

progress:
violaWWW, the first browser having scripting and style sheet capabilities. latest version is 3.3.

Hacks: using rs6000 config and follow gcc error messages to fix.
Status: double free/pointer corrupt, munmap_chunk(): invalid pointer when exit, HTFWriter_put_character segfaults when connecting Google, almost no online capability.

Screen shot:
viola (pure Xlib version):


vw (viola motif version):


midasWWW, an early browser which runs in VMX system.

Hacks: follow gcc error messages to fix.
Status:
- It builds, and it dies in startup with buffer overflow of libMrm(MrmOpenHierarchy-->Urm__OpenHierarchy-->UrmIdbOpenFileRead-->Idb__HDR_GetHeader-->__strcpy_chk) when reading /usr/local/lib/midas.uid. libmotif uil generates midas.uid and midaswww.uid correctly.
- (18/12/2009 12:00 GMT+8) open motif 2.2.3-4 in utuntu 9.10 seems buggy and I had to rebuilt open motif 2.3.2 from sources with "--enable-xft --enable-jpeg --enable-png", but Midas only popups "Error Dialog Label" and stalls.
Log:
Error: No converter declared for String to DynamicPixmap
Error: Illegal command
Error: Error interpreting command: Set Value .^ iconPixmap MidasWWWIcon
from widget WWWMain (class XmMainWindow)
Error: Illegal command
Error: Error interpreting command: Popup WWWMain
from widget WWWMain (class XmMainWindow)
Cannot convert string "If FontSize=="Small" For All ....WWWHyper...default Set Value . fontSize 12
Else If FontSize=="Medium" For All ....WWWHyper...default Set Value . fontSize 14
Else If FontSize=="Large" For All ....WWWHyper...default Set Value . fontSize 17
If FontSize=="Small" For All ....WWWHyper...h2 Set Value . fontSize 14
Else If FontSize=="Medium" For All ....WWWHyper...h2 Set Value . fontSize 17
Else If FontSize=="Large" For All ....WWWHyper...h2 Set Value . fontSize 20
If FontSize=="Small" For All ....WWWHyper...h1 Set Value . fontSize 17
Else If FontSize=="Medium" For All ....WWWHyper...h1 Set Value . fontSize 20
Else If FontSize=="Large" For All ....WWWHyper...h1 Set Value . fontSize 24
If FontSize=="Small" Update Named Resource . "midaswww*WWWHyper*default.fontSize" 12
Else If FontSize=="Medium" Update Named Resource . "midaswww*WWWHyper*default.fontSize" 14
Else If FontSize=="Large" Update Named Resource . "midaswww*WWWHyper*default.fontSize" 17
If FontSize=="Small" Update Named Resource . "m 
Error: Could not follow path ....WWWHyper
Error: Illegal command
Error: Error interpreting command: Set value ....WWWHyper naturalWidth 0++(GetValue(..WWWMain,width)-40)
from widget WWWMain (class XmMainWindow)
Error: Could not follow path ..WWWMain
Error: Illegal command
Error: Error interpreting command: Set Ingot ..WWWMain PSState 0
from widget WWWMain (class XmMainWindow)
Error: Could not follow path ....Home_Page
Error: Illegal command
Error: Error interpreting command: Invoke Callback ....Home_Page activateCallback
from widget WWWMain (class XmMainWindow)
Cannot find callback list in XtAddCallback 
Cannot find callback list in XtAddCallback 
Cannot find callback list in XtAddCallback 
Cannot find callback list in XtAddCallback 
Cannot find callback list in XtAddCallback 
Cannot find callback list in XtAddCallback 
Cannot find callback list in XtAddCallback 
Cannot find callback list in XtAddCallback 
Cannot find callback list in XtAddCallback 
Cannot find callback list in XtAddCallback 
Cannot find callback list in XtAddCallback 
^C

[29/12/2009]
tested in RedHat Linux 6.2 with Open Motif 2.1.32:
Cannot convert string "If FontSize=="Small" For All ....WWWHyper...default Set Value . fontSize 12
Else If FontSize=="Medium" For All ....WWWHyper...default Set Value . fontSize 14
Else If FontSize=="Large" For All ....WWWHyper...default Set Value . fontSize 17
If FontSize=="Small" For All ....WWWHyper...h2 Set Value . fontSize 14
Else If FontSize=="Medium" For All ....WWWHyper...h2 Set Value . fontSize 17
Else If FontSize=="Large" For All ....WWWHyper...h2 Set Value . fontSize 20
If FontSize=="Small" For All ....WWWHyper...h1 Set Value . fontSize 17
Else If FontSize=="Medium" For All ....WWWHyper...h1 Set Value . fontSize 20
Else If FontSize=="Large" For All ....WWWHyper...h1 Set Value . fontSize 24
If FontSize=="Small" Update Named Resource . "midaswww*WWWHyper*default.fontSize" 12
Else If FontSize=="Medium" Update Named Resource . "midaswww*WWWHyper*default.fontSize" 14
Else If FontSize=="Large" Update Named Resource . "midaswww*WWWHyper*default.fontSize" 17
If FontSize=="Small" Update Named Resource . "m 
Error: Could not follow path ....WWWHyper
Error: Illegal command
Error: Error interpreting command: Set value ....WWWHyper naturalWidth 0++(GetValue(..WWWMain,width)-40)
       from widget WWWMain (class XmMainWindow)
Error: Could not follow path ..WWWMain
Error: Illegal command
Error: Error interpreting command: Set Ingot ..WWWMain PSState 0
       from widget WWWMain (class XmMainWindow)
Error: Could not follow path ....Home_Page
Error: Illegal command
Error: Error interpreting command: Invoke Callback ....Home_Page activateCallback
       from widget WWWMain (class XmMainWindow)

for midasWWW-1.0, it popups an empty dialog and stalls.
Log:
Error: Could not open customization file for CUSTOM
Error: Illegal command
Error: Error interpreting command: Custom Create CUSTOM .
from widget Midas_Main (class XmMainWindow)
Error: Illegal command
Error: Error interpreting command: Popup Midas_Main
from widget Midas_Main (class XmMainWindow)
Error: Illegal command
Error: Error interpreting command: Midas Popup Midas_Main
from widget Midas_Main (class XmMainWindow)
^C

P.S.: I created a project site of early Web browser reborn in Google Code:
http://code.google.com/p/earlybrowserreborn/

ErwisE: first X11 World Wide Web browser

My fixed source works in ubuntu 9.10.
You can download here:
erwise-0.1-src.tar.gz

For playing it in ubuntu 9.10 wihout compiling yourself, you can greb the prebuilt checkinstall-generated deb package here:
erwise_0.1-1_i386.deb

Screenshot:
Free Image Hosting at www.ImageShack.us

P.S.: I created deb package of Mosaic-CK too, and Cameron had it mirrored to his site.

ldd package finder (APT)

I wrote a bash shell script for getting package names from ldd output.
apt-file, awk, basename, egrep, sort, uniq are needed.
it will list lib64 packages if arg2 = 64. e.g.:
# ./lddpkgs.sh /bin/bash 64

an example for using in checkinstall:
# checkinstall --requires=`lddpkgs.sh src/mysoft|xargs|sed -e 's/ /,/g'` (...)

for executable with multiple libraries, you can append all libraries' lddpkgs.sh output to one file, sort and uniq that file and you will get the package dependency of those binaries.

one line is a bit long so please ensure you selected all things between Start of File and End Of File.
-Start of File-
#!/bin/bash
if [ "$2" = "64" ];then
EGR='libc|libdl|dbg'
else
EGR='libc|libdl|dbg|lib64'
fi

ldd $1|awk '{tmp ="basename "$1; tmp|getline bnso;system("apt-file find "bnso);close(tmp)}'|egrep -v $EGR|awk -F':' '{print $1}'|sort|uniq
-End Of File-

Wednesday, October 28, 2009

adif2mp4

A tool from ISO MP4 Reference Library which can convert ADTS AAC files to ADIF AAC file or in MP4 container format. Compiled with MSVC .NET 2003 SP1 Static.

Download: adif2mp4.7z

Wednesday, September 30, 2009

fcrackzip-1.0 for Win32

Compiled with MinGW gcc 3.3.4 with charset patch which adds 0x20-0xFF into find table.
Download: fcrackzip-1.0-win32.7z

Sunday, August 23, 2009

PNGnq 1.0

PNGnq-1.0 SSE build compiled with ICC 9.1.

not fully tested.

some driver/library hex-edited for NT 3.51

VMWare VMMouse Driver for NT 3.51
for direct replacement of i8042prt.sys(backup it first) for VMMouse support in NT 3.51 in VMWare, which fixes strange mouse movement when remote controlling using VMWare remote control function.

Visual Basic 6.0 runtime for NT 3.51
Removed version check which prevents running VB6 programs in NT 3.51.

isanigif

got source of gif reader from optipng, and created the checking animated gif function by modifying gifdump.c.

Download compiled binary(Win32) and source.
isanigif.7z

How to use:
isanigif [-s]
when -s switch it shows the frame count.
returns exit code 0 if it is a static gif (only 1 frame in the gif file.)
returns exit code 1 if it is an animated gif or there is an error, check STDERR output for any error.

Wednesday, August 5, 2009

WinTTX 2.2

Getting TTX 2.2 svn trunk r568 compiled with Python 2.6 py2exe 0.6.9.

WinTTX-2.2-svn-trunk-r568.7z

with modified setup.py:
#! /usr/bin/env python
import psyco
psyco.full()

import os, sys
from distutils.core import setup, Extension
from distutils.command.build_ext import build_ext

try:
 # load py2exe distutils extension, if available
 import py2exe
except ImportError:
 pass

try:
 import numpy
except ImportError:
 print "*** Warning: FontTools needs the numpy library, see:"
 print "        http://numpy.scipy.org/"

try:
 import xml.parsers.expat
except ImportError:
 print "*** Warning: FontTools needs PyXML, see:"
 print "        http://sourceforge.net/projects/pyxml/"


class build_ext_optional(build_ext):
 """build_ext command which doesn't abort when it fails."""
 def build_extension(self, ext):
  # Skip extensions which cannot be built
  try:
   build_ext.build_extension(self, ext)
  except:
   self.announce(
    '*** WARNING: Building of extension "%s" '
    'failed: %s' %
    (ext.name, sys.exc_info()[1]))


if sys.version_info > (2, 3, 0, 'alpha', 1):
 # Trove classifiers for PyPI
 classifiers = {"classifiers": [
  "Development Status :: 4 - Beta",
  "Environment :: Console",
  "Environment :: Other Environment",
  "Intended Audience :: Developers",
  "Intended Audience :: End Users/Desktop",
  "License :: OSI Approved :: BSD License",
  "Natural Language :: English",
  "Operating System :: OS Independent",
  "Programming Language :: Python",
  "Topic :: Multimedia :: Graphics",
  "Topic :: Multimedia :: Graphics :: Graphics Conversion",
 ]}
else:
 classifiers = {}

long_description = """\
FontTools/TTX is a library to manipulate font files from Python.
It supports reading and writing of TrueType/OpenType fonts, reading
and writing of AFM files, reading (and partially writing) of PS Type 1
fonts. The package also contains a tool called "TTX" which converts
TrueType/OpenType fonts to and from an XML-based format.
"""

py2exe_options = dict(
                      excludes=['_ssl',  # Exclude _ssl
                                '_hashlib',"bz2", "_ctypes",'_socket',
                                'doctest',"pywin", "pywin.debugger", "pywin.debugger.dbgcon",
                                "pywin.dialogs", "pywin.dialogs.list",
                                "Tkconstants","Tkinter","tcl",
                                "compiler","email","ctypes","logging","unicodedata",
                                "pydoc_topics","pydoc","httplib","cookielib","cookielib","urllib",
                                'pickle', 'calendar'],  # Exclude standard library
                      dll_excludes=['msvcr71.dll'],  # Exclude msvcr71
                      compressed=1,
                      optimize=1,
                      bundle_files=2
                      )

setup(
  name = "fonttools",
  version = "2.2",
  description = "Tools to manipulate font files",
  author = "Just van Rossum",
  author_email = "just@letterror.com",
  maintainer = "Just van Rossum",
  maintainer_email = "just@letterror.com",
  url = "http://fonttools.sourceforge.net/",
  license = "OpenSource, BSD-style",
  platforms = ["Any"],
  long_description = long_description,
  
  packages = [
   "",
   "fontTools",
   "fontTools.encodings",
   "fontTools.misc",
   "fontTools.pens",
   "fontTools.ttLib",
   "fontTools.ttLib.tables",
   "fontTools.ttLib.test",
  ],
  package_dir = {'': 'Lib'},
  extra_path = 'FontTools',
  ext_modules = [
   Extension(
    "fontTools.misc.eexecOp",
    ["Src/eexecOp/eexecOpmodule.c"],
    include_dirs=[],
    define_macros=[],
    library_dirs=[],
    libraries=[],
   )
  ],
  console=[{'script': 'Tools/ttx', 
                'other_resources': [(u"VERSIONTAG",1,'2.2')],
                             'icon_resources': [(1,'Windows/ttx.ico')]
               }],
  options={'py2exe': py2exe_options},
  cmdclass = {"build_ext": build_ext_optional},
  data_files = [('man/man1', ["Doc/ttx.1"])],
  zipfile = None,
  **classifiers
 )

Saturday, May 30, 2009

png optimize suite(Win32) (Ver 2009-05-29)

Download pngopt-090529.7z

+ Add binmay.exe for APNG detection (deflopt and pngout will erase fdAT chunk)
! pngoptall.bat will rename APNG files to ".apng" file extension
! pngoptall.bat will end that round of optimization when encountering errorous png file
^ update optipng too 0.6.3-icc-sse

binmay-0.3 (mod) source (GPLv2)
binmay-0.3-src.7z