summaryrefslogtreecommitdiff
path: root/network/mosaic-ck
diff options
context:
space:
mode:
Diffstat (limited to 'network/mosaic-ck')
-rw-r--r--network/mosaic-ck/README11
-rw-r--r--network/mosaic-ck/doinst.sh9
-rw-r--r--network/mosaic-ck/mosaic-ck.1236
-rw-r--r--network/mosaic-ck/mosaic-ck.SlackBuild122
-rw-r--r--network/mosaic-ck/mosaic-ck.desktop12
-rw-r--r--network/mosaic-ck/mosaic-ck.info10
-rw-r--r--network/mosaic-ck/mosaic-ck.pod121
-rw-r--r--network/mosaic-ck/mosaic_png_fix.diff310
-rw-r--r--network/mosaic-ck/slack-desc19
9 files changed, 850 insertions, 0 deletions
diff --git a/network/mosaic-ck/README b/network/mosaic-ck/README
new file mode 100644
index 0000000000..4db1b18e3d
--- /dev/null
+++ b/network/mosaic-ck/README
@@ -0,0 +1,11 @@
+mosaic-ck (Cameron Kaiser's fork of NCSA Mosaic)
+
+Mosaic is widely considered the grandfather of the modern web
+browser. Developed at NCSA, it was the first Web browser to win widespread
+use and acceptance. The last release of Mosaic was in 1997.
+
+mosaic-ck is a fork of Mosaic, with several features that allow it
+to work as a basic, no-frills browser on the modern WWW. Think of it
+as "lynx with images". There is no support for cookies, SSL, Java,
+Javascript, Flash, stylesheets, or frames. Table support is optional
+(and doesn't work well). Unicode/UTF-8 is partially supported.
diff --git a/network/mosaic-ck/doinst.sh b/network/mosaic-ck/doinst.sh
new file mode 100644
index 0000000000..6723fb108e
--- /dev/null
+++ b/network/mosaic-ck/doinst.sh
@@ -0,0 +1,9 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+# If there's no Mosaic link, take over:
+if [ ! -r usr/bin/Mosaic ]; then
+ ( cd usr/bin ; ln -sf mosaic-ck Mosaic )
+ ( cd usr/man/man1 ; ln -sf mosaic-ck.1.gz Mosaic.1.gz )
+fi
diff --git a/network/mosaic-ck/mosaic-ck.1 b/network/mosaic-ck/mosaic-ck.1
new file mode 100644
index 0000000000..cd2e141841
--- /dev/null
+++ b/network/mosaic-ck/mosaic-ck.1
@@ -0,0 +1,236 @@
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+. if \nF \{
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "MOSAIC-CK 1"
+.TH MOSAIC-CK 1 "2014-06-18" "2.7ck9" "SlackBuilds.org"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+mosaic\-ck \- fork of the ancient and venerable NCSA Mosaic web browser
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBmosaic-ck\fR [\-mono] [\-color] [\-nd] [\-geometry \fIgeom\fR] [\-display \fIdisp\fR] [\-install] [\-iconic] [\fIurl\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+Mosaic is widely considered the grandfather of the modern web
+browser. Developed at \s-1NCSA,\s0 it was the first Web browser to win widespread
+use and acceptance. The last release of Mosaic was in 1997.
+.PP
+mosaic-ck is a fork of Mosaic, with several features that allow it
+to work as a basic, no-frills browser on the modern \s-1WWW.\s0 Think of it
+as \*(L"lynx with images\*(R". There is no support for cookies, \s-1SSL,\s0 Java,
+Javascript, Flash, stylesheets, or frames. Table support is optional
+(and doesn't work well). Unicode/UTF\-8 is partially supported.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+Unknown options are ignored. If more than one \s-1URL\s0 is given, only the first is used.
+.IP "\-mono" 4
+.IX Item "-mono"
+Starts in monochrome mode. Doesn't seem to actually work.
+.IP "\-color" 4
+.IX Item "-color"
+Starts in color mode. This is the default anyway.
+.IP "\-nd" 4
+.IX Item "-nd"
+No defaults: don't use existing X resources. See \fI\s-1README\s0.resources.html\fR.
+.IP "\-geometry \fIgeom\fR" 4
+.IX Item "-geometry geom"
+Starting position and size of window. \fIgeom\fR is a standard X geometry
+specifier, e.g. \fB640x480+0+0\fR.
+.IP "\-display \fIdisp\fR" 4
+.IX Item "-display disp"
+Connect to specified X display. Default is to use the \fB\s-1DISPLAY\s0\fR option in
+the environment.
+.IP "\-install" 4
+.IX Item "-install"
+Install own colormap. Obsolete unless you're using an X server with 256 or
+fewer colors.
+.IP "\-iconic" 4
+.IX Item "-iconic"
+Start the application minimized.
+.SH "FILES"
+.IX Header "FILES"
+.IP "/etc/X11/app\-defaults/Mosaic" 4
+.IX Item "/etc/X11/app-defaults/Mosaic"
+Default X resources, for specifying options like fonts and default window geometry.
+Can be overridden by the user's \fB~/.Xdefaults\fR or \fB~/.Xresources\fR.
+If this file doesn't exist, built-in defaults are used instead.
+.IP "~/.mosaic" 4
+.IX Item "~/.mosaic"
+Preferences, history, annotations, etc are saved here. May also contain these
+optional config files:
+.RS 4
+.IP "mosaic-imageselect-sites" 4
+.IX Item "mosaic-imageselect-sites"
+Optional rules for whether to immediately load, delay loading, or not load images
+from particular sites. Might be useful for ad blocking.
+.IP "mosaic-spoof-agents" 4
+.IX Item "mosaic-spoof-agents"
+List of options for the \fBOptions\fR \-> \fBAgent Spoofs\fR sub-menu.
+.IP "mosaic-user-defs" 4
+.IX Item "mosaic-user-defs"
+Used to define custom actions. Example contents of this file might be:
+.Sp
+.Vb 2
+\& Google Search
+\& GET:http://google.com/search?q=_\|_string_\|_
+.Ve
+.Sp
+To use, highlight some text, then right-click and select \fBUser\fR \-> \fBGoogle Search\fR.
+.RE
+.RS 4
+.Sp
+See /usr/doc/mosaic\-ck\-@VERSION@/sample_dotfiles for commented examples of
+the above files.
+.RE
+.SH "AUTHORS"
+.IX Header "AUTHORS"
+\&\s-1NCSA\s0 Mosaic credits:
+.PP
+.Vb 7
+\& =============================================================================
+\& Scott Powers spowers@ncsa.uiuc.edu \e The N.C.S.A. X Mosaic
+\& Kristin Buxton kbuxton@uiuc.edu \e Development Team
+\& Dan Pape dpape@ncsa.uiuc.edu >
+\& Tommy Reilly tpreilly@uiuc.edu / Comments? Suggestions? Problems?
+\& Brian Swetland swetland@uiuc.edu / mosaic\-x@ncsa.uiuc.edu
+\& =============================================================================
+.Ve
+.PP
+mosaic-ck branch maintained by Cameron Kaiser. See homepage at
+http://www.floodgap.com/retrotech/machten/mosaic/
+.PP
+This man page written by B. Watson for the SlackBuilds.org project.
diff --git a/network/mosaic-ck/mosaic-ck.SlackBuild b/network/mosaic-ck/mosaic-ck.SlackBuild
new file mode 100644
index 0000000000..2525d76ca7
--- /dev/null
+++ b/network/mosaic-ck/mosaic-ck.SlackBuild
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Slackware build script for mosaic-ck
+
+# Written by B. Watson (yalhcru@gmail.com)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20161028 bkw: Re-add to SBo, with fix for Slack 14.2's libpng-1.6.
+# If you're wondering why I stick with 2.7ck9 when 2.7ck11 has been
+# out for a while, it's because none of the changes in ck10 or ck11
+# affect the Linux port (only OSX), and because ck11 doesn't build
+# (and I already went to the trouble of fixing the ck9 build).
+
+# 20140907 bkw: move the source to my server, since the original
+# site isn't wget-friendly. Original URL was:
+# http://www.floodgap.com/retrotech/machten/mosaic/mosaic27ck9.tar.gz
+
+PRGNAM=mosaic-ck
+VERSION=${VERSION:-2.7ck9}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+TARBALL="mosaic${VERSION//./}.tar.gz"
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM
+tar xvf $CWD/$TARBALL
+cd $PRGNAM
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# I don't know who thought it was a good idea to link with /usr/lib/libjpeg.a
+# and /usr/lib/libpng.a instead of just saying -ljpeg -lpng.
+# Use our CFLAGS too.
+sed -i \
+ -e '/^pnglibs/s,.*,pnglibs = -lpng -lz -lm,' \
+ -e '/^jpeglibs/s,.*,jpeglibs = -ljpeg,' \
+ -e "/^CFLAGS/s,-g,$SLKCFLAGS," \
+ makefiles/Makefile.linux
+
+# Fix for libpng 1.5 and up, taken from https://github.com/yotann/ncsa-mosaic
+# and reworked for mosaic-ck.
+patch -p1 < $CWD/mosaic_png_fix.diff
+
+# there's a configure script, but it's just cruft.
+make -j1 linux
+
+# no 'make install' target, it's fairly self-contained anyway.
+# binary gets installed as mosaic-ck, doinst.sh will symlink it to
+# Mosaic if there's not already a Mosaic in /usr/bin.
+mkdir -p $PKG/usr/bin
+install -m0755 -oroot -groot -s src/Mosaic $PKG/usr/bin/$PRGNAM
+
+# Maybe this could be a .new config file? None of Pat's packages that
+# have app-defaults install them as .new, so I won't either.
+mkdir -p $PKG/etc/X11/app-defaults
+install -m0644 app-defaults.color $PKG/etc/X11/app-defaults/Mosaic
+
+# .desktop file is a modified copy of
+# https://github.com/wtachi/ncsa-mosaic/blob/master/desktop/Mosaic.desktop
+mkdir -p $PKG/usr/share/applications
+cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
+
+# Original mosaic uses an icon that looks like icon.1.xpm. We'll pick one
+# of the other animation frames for mosaic-ck, to avoid confusion with
+# the original.
+mkdir -p $PKG/usr/share/pixmaps
+convert src/pixmaps/icon.10.xpm png:- > $PKG/usr/share/pixmaps/$PRGNAM.png
+
+# man page written for this build. kind of amazed that the source doesn't
+# come with a man page.
+mkdir -p $PKG/usr/man/man1
+sed "s,@VERSION@,$VERSION,g" $CWD/$PRGNAM.1 | \
+ gzip -9c - > $PKG/usr/man/man1/$PRGNAM.1.gz
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/sample_dotfiles
+cp -a AATODO CHANGES COPYRIGHT FEATURES README* $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a mosaic-* $PKG/usr/doc/$PRGNAM-$VERSION/sample_dotfiles
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/network/mosaic-ck/mosaic-ck.desktop b/network/mosaic-ck/mosaic-ck.desktop
new file mode 100644
index 0000000000..bc09e836e1
--- /dev/null
+++ b/network/mosaic-ck/mosaic-ck.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=Mosaic-CK
+GenericName=Web Browser
+Comment=Cameron Kaiser's Updated NCSA Mosaic
+Icon=mosaic-ck
+Exec=mosaic-ck
+Terminal=false
+MimeType=text/html;x-scheme-handler/http;
+Categories=Network;WebBrowser;
+StartupNotify=false
diff --git a/network/mosaic-ck/mosaic-ck.info b/network/mosaic-ck/mosaic-ck.info
new file mode 100644
index 0000000000..88f42e0114
--- /dev/null
+++ b/network/mosaic-ck/mosaic-ck.info
@@ -0,0 +1,10 @@
+PRGNAM="mosaic-ck"
+VERSION="2.7ck9"
+HOMEPAGE="http://www.floodgap.com/retrotech/machten/mosaic/"
+DOWNLOAD="http://urchlay.naptime.net/~urchlay/src/mosaic27ck9.tar.gz"
+MD5SUM="a412ea475bb5059182ee9642c95368cc"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="B. Watson"
+EMAIL="yalhcru@gmail.com"
diff --git a/network/mosaic-ck/mosaic-ck.pod b/network/mosaic-ck/mosaic-ck.pod
new file mode 100644
index 0000000000..1c1855d611
--- /dev/null
+++ b/network/mosaic-ck/mosaic-ck.pod
@@ -0,0 +1,121 @@
+# pod2man --stderr -r2.7ck9 -s1 -cSlackBuilds.org mosaic-ck.pod > mosaic-ck.1
+
+=pod
+
+=head1 NAME
+
+mosaic-ck - updated, unsupported fork of the ancient and venerable NCSA Mosaic web browser
+
+=head1 SYNOPSIS
+
+B<mosaic-ck> [-mono] [-color] [-nd] [-geometry I<geom>] [-display I<disp>] [-install] [-iconic] [I<url>]
+
+=head1 DESCRIPTION
+
+Mosaic is widely considered the grandfather of the modern web
+browser. Developed at NCSA, it was the first Web browser to win widespread
+use and acceptance. The last release of Mosaic was in 1997.
+
+mosaic-ck is a fork of Mosaic, with several features that allow it
+to work as a basic, no-frills browser on the modern WWW. Think of it
+as "lynx with images". There is no support for cookies, SSL, Java,
+Javascript, Flash, stylesheets, or frames. Table support is optional
+(and doesn't work well). Unicode/UTF-8 is partially supported.
+
+=head1 OPTIONS
+
+Unknown options are ignored. If more than one URL is given, only the first is used.
+
+=over
+
+=item -mono
+
+Starts in monochrome mode. Doesn't seem to actually work.
+
+=item -color
+
+Starts in color mode. This is the default anyway.
+
+=item -nd
+
+No defaults: don't use existing X resources. See I<README.resources.html>.
+
+=item -geometry I<geom>
+
+Starting position and size of window. I<geom> is a standard X geometry
+specifier, e.g. B<640x480+0+0>.
+
+=item -display I<disp>
+
+Connect to specified X display. Default is to use the B<DISPLAY> option in
+the environment.
+
+=item -install
+
+Install own colormap. Obsolete unless you're using an X server with 256 or
+fewer colors.
+
+=item -iconic
+
+Start the application minimized.
+
+=back
+
+=head1 FILES
+
+=over
+
+=item /etc/X11/app-defaults/Mosaic
+
+Default X resources, for specifying options like fonts and default window geometry.
+Can be overridden by the user's B<~/.Xdefaults> or B<~/.Xresources>.
+If this file doesn't exist, built-in defaults are used instead.
+
+=item ~/.mosaic
+
+Preferences, history, annotations, etc are saved here. May also contain these
+optional config files:
+
+=over
+
+=item mosaic-imageselect-sites
+
+Optional rules for whether to immediately load, delay loading, or not load images
+from particular sites. Might be useful for ad blocking.
+
+=item mosaic-spoof-agents
+
+List of options for the B<Options> -> B<Agent Spoofs> sub-menu.
+
+=item mosaic-user-defs
+
+Used to define custom actions. Example contents of this file might be:
+
+ Google Search
+ GET:http://google.com/search?q=__string__
+
+To use, highlight some text, then right-click and select B<User> -> B<Google Search>.
+
+=back
+
+See /usr/doc/mosaic-ck-@VERSION@/sample_dotfiles for commented examples of
+the above files.
+
+=back
+
+=head1 AUTHORS
+
+NCSA Mosaic credits:
+
+ =============================================================================
+ Scott Powers spowers@ncsa.uiuc.edu \ The N.C.S.A. X Mosaic
+ Kristin Buxton kbuxton@uiuc.edu \ Development Team
+ Dan Pape dpape@ncsa.uiuc.edu >
+ Tommy Reilly tpreilly@uiuc.edu / Comments? Suggestions? Problems?
+ Brian Swetland swetland@uiuc.edu / mosaic-x@ncsa.uiuc.edu
+ =============================================================================
+
+mosaic-ck branch maintained by Cameron Kaiser. See homepage at
+http://www.floodgap.com/retrotech/machten/mosaic/
+
+This man page written by B. Watson for the SlackBuilds.org project.
diff --git a/network/mosaic-ck/mosaic_png_fix.diff b/network/mosaic-ck/mosaic_png_fix.diff
new file mode 100644
index 0000000000..322f203d77
--- /dev/null
+++ b/network/mosaic-ck/mosaic_png_fix.diff
@@ -0,0 +1,310 @@
+diff -Naur mosaic-ck/src/readPNG.c mosaic-ck.patched/src/readPNG.c
+--- mosaic-ck/src/readPNG.c 2009-04-25 14:26:02.000000000 -0400
++++ mosaic-ck.patched/src/readPNG.c 2016-10-28 03:24:50.970270499 -0400
+@@ -1,5 +1,3 @@
+-/* Changes for Mosaic-CK (C)2009 Cameron Kaiser */
+-
+ /****************************************************************************
+ * NCSA Mosaic for the X Window System *
+ * Software Development Group *
+@@ -96,7 +94,15 @@
+ png_struct *png_ptr;
+ png_info *info_ptr;
+
+- double screen_gamma;
++ png_uint_32 raw_width, raw_height, rowbytes;
++ int bit_depth, color_type, interlace_type, compression_type, filter_type;
++
++ png_uint_32 have_palette;
++ png_colorp palette;
++ int num_palette;
++ png_uint_16p hist = NULL;
++
++ double gamma, screen_gamma;
+
+ png_byte *png_pixels=NULL, **row_pointers=NULL;
+ int i, j;
+@@ -117,9 +123,9 @@
+ if(ret != 8)
+ return 0;
+
+- ret = png_check_sig(buf, 8);
++ ret = png_sig_cmp(buf, 0, 8);
+
+- if(!ret)
++ if(ret)
+ return(0);
+ }
+
+@@ -128,18 +134,20 @@
+ rewind(infile);
+
+ /* allocate the structures */
++ /*png_ptr = (png_struct *)malloc(sizeof(png_struct));*/
+ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+ if(!png_ptr)
+ return 0;
+
+- info_ptr = (png_info *)malloc(sizeof(png_info));
++ /* initialize the structures */
++ info_ptr = png_create_info_struct(png_ptr);
+ if(!info_ptr) {
+- png_destroy_read_struct(&png_ptr, NULL, NULL);
++ /*free(png_ptr);*/
+ return 0;
+ }
+
+ /* Establish the setjmp return context for png_error to use. */
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+
+ #ifndef DISABLE_TRACE
+ if (srcTrace) {
+@@ -147,19 +155,26 @@
+ }
+ #endif
+
++ /*png_read_destroy(png_ptr, info_ptr, (png_info *)0); */
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+
+ if(png_pixels != NULL)
+ free((char *)png_pixels);
+ if(row_pointers != NULL)
+ free((png_byte **)row_pointers);
+- png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
++
++ /*free((char *)png_ptr);*/
++ free((char *)info_ptr);
+
+ return 0;
+ }
+
+- /* initialize the structure */
+- png_info_init(info_ptr);
++#ifdef SAM_NO
++ /* SWP -- Hopefully to fix cores on bad PNG files */
++ png_set_message_fn(png_ptr,png_get_msg_ptr(png_ptr),NULL,NULL);
++#endif
++
++ /*png_read_init(png_ptr);*/
+
+ /* set up the input control */
+ png_init_io(png_ptr, infile);
+@@ -169,20 +184,26 @@
+
+ /* setup other stuff using the fields of png_info. */
+
+- *width = (int)png_ptr->width;
+- *height = (int)png_ptr->height;
++ png_get_IHDR(png_ptr, info_ptr, &raw_width, &raw_height, &bit_depth,
++ &color_type, &interlace_type, &compression_type,
++ &filter_type);
++ rowbytes = png_get_rowbytes(png_ptr, info_ptr);
++ have_palette = png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette);
++
++ *width = (int)raw_width;
++ *height = (int)raw_height;
+
+ #ifndef DISABLE_TRACE
+ if (srcTrace) {
+- fprintf(stderr,"\n\nBEFORE\nheight = %d\n", (int)png_ptr->width);
+- fprintf(stderr,"width = %d\n", (int)png_ptr->height);
+- fprintf(stderr,"bit depth = %d\n", info_ptr->bit_depth);
+- fprintf(stderr,"color type = %d\n", info_ptr->color_type);
+- fprintf(stderr,"compression type = %d\n", info_ptr->compression_type);
+- fprintf(stderr,"filter type = %d\n", info_ptr->filter_type);
+- fprintf(stderr,"interlace type = %d\n", info_ptr->interlace_type);
+- fprintf(stderr,"num colors = %d\n",info_ptr->num_palette);
+- fprintf(stderr,"rowbytes = %d\n", info_ptr->rowbytes);
++ fprintf(stderr,"\n\nBEFORE\nwidth = %d\n", *width);
++ fprintf(stderr,"height = %d\n", *height);
++ fprintf(stderr,"bit depth = %d\n", bit_depth);
++ fprintf(stderr,"color type = %d\n", color_type);
++ fprintf(stderr,"compression type = %d\n", compression_type);
++ fprintf(stderr,"filter type = %d\n", filter_type);
++ fprintf(stderr,"interlace type = %d\n", interlace_type);
++ fprintf(stderr,"num colors = %d\n", num_palette);
++ fprintf(stderr,"rowbytes = %d\n", rowbytes);
+ }
+ #endif
+
+@@ -205,16 +226,16 @@
+ #endif
+
+ /* strip pixels in 16-bit images down to 8 bits */
+- if (info_ptr->bit_depth == 16)
++ if (bit_depth == 16)
+ png_set_strip_16(png_ptr);
+
+
+ /* If it is a color image then check if it has a palette. If not
+ then dither the image to 256 colors, and make up a palette */
+- if (info_ptr->color_type==PNG_COLOR_TYPE_RGB ||
+- info_ptr->color_type==PNG_COLOR_TYPE_RGB_ALPHA) {
++ if (color_type==PNG_COLOR_TYPE_RGB ||
++ color_type==PNG_COLOR_TYPE_RGB_ALPHA) {
+
+- if(! (info_ptr->valid & PNG_INFO_PLTE)) {
++ if(!have_palette) {
+
+ #ifndef DISABLE_TRACE
+ if (srcTrace) {
+@@ -232,9 +253,7 @@
+
+ /* this should probably be dithering to
+ Rdata.colors_per_inlined_image colors */
+- png_set_dither(png_ptr, std_color_cube,
+- 216,
+- 216, NULL, 1);
++ png_set_quantize(png_ptr, std_color_cube, 216, 216, NULL, 1);
+
+ } else {
+ #ifndef DISABLE_TRACE
+@@ -243,10 +262,9 @@
+ }
+ #endif
+
+- png_set_dither(png_ptr, info_ptr->palette,
+- info_ptr->num_palette,
+- get_pref_int(eCOLORS_PER_INLINED_IMAGE),
+- info_ptr->hist, 1);
++ png_get_hIST(png_ptr, info_ptr, &hist);
++ png_set_quantize(png_ptr, palette, num_palette,
++ get_pref_int(eCOLORS_PER_INLINED_IMAGE), hist, 1);
+
+ }
+ }
+@@ -255,14 +273,14 @@
+ small as they can. This expands pixels to 1 pixel per byte, and
+ if a transparency value is supplied, an alpha channel is
+ built.*/
+- if (info_ptr->bit_depth < 8)
++ if (bit_depth < 8)
+ png_set_packing(png_ptr);
+
+
+ /* have libpng handle the gamma conversion */
+
+ if (get_pref_boolean(eUSE_SCREEN_GAMMA)) { /*SWP*/
+- if (info_ptr->bit_depth != 16) { /* temporary .. glennrp */
++ if (bit_depth != 16) { /* temporary .. glennrp */
+ screen_gamma=(double)(get_pref_float(eSCREEN_GAMMA));
+
+ #ifndef DISABLE_TRACE
+@@ -270,13 +288,13 @@
+ fprintf(stderr,"screen gamma=%f\n",screen_gamma);
+ }
+ #endif
+- if (info_ptr->valid & PNG_INFO_gAMA) {
++ if (png_get_gAMA(png_ptr, info_ptr, &gamma)) {
+ #ifndef DISABLE_TRACE
+ if (srcTrace) {
+- printf("setting gamma=%f\n",info_ptr->gamma);
++ printf("setting gamma=%f\n", gamma);
+ }
+ #endif
+- png_set_gamma(png_ptr, screen_gamma, (double)info_ptr->gamma);
++ png_set_gamma(png_ptr, screen_gamma, gamma);
+ }
+ else {
+ #ifndef DISABLE_TRACE
+@@ -289,34 +307,39 @@
+ }
+ }
+
+- if (info_ptr->interlace_type)
++ if (interlace_type)
+ png_set_interlace_handling(png_ptr);
+
+ png_read_update_info(png_ptr, info_ptr);
+
++ png_get_IHDR(png_ptr, info_ptr, &raw_width, &raw_height, &bit_depth,
++ &color_type, &interlace_type, &compression_type,
++ &filter_type);
++ rowbytes = png_get_rowbytes(png_ptr, info_ptr);
++ have_palette = png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette);
++
+ #ifndef DISABLE_TRACE
+ if (srcTrace) {
+- fprintf(stderr,"\n\nAFTER\nheight = %d\n", (int)png_ptr->width);
+- fprintf(stderr,"width = %d\n", (int)png_ptr->height);
+- fprintf(stderr,"bit depth = %d\n", info_ptr->bit_depth);
+- fprintf(stderr,"color type = %d\n", info_ptr->color_type);
+- fprintf(stderr,"compression type = %d\n", info_ptr->compression_type);
+- fprintf(stderr,"filter type = %d\n", info_ptr->filter_type);
+- fprintf(stderr,"interlace type = %d\n", info_ptr->interlace_type);
+- fprintf(stderr,"num colors = %d\n",info_ptr->num_palette);
+- fprintf(stderr,"rowbytes = %d\n", info_ptr->rowbytes);
++ fprintf(stderr,"\n\nAFTER\nwidth = %d\n", *width);
++ fprintf(stderr,"height = %d\n", *height);
++ fprintf(stderr,"bit depth = %d\n", bit_depth);
++ fprintf(stderr,"color type = %d\n", color_type);
++ fprintf(stderr,"compression type = %d\n", compression_type);
++ fprintf(stderr,"filter type = %d\n", filter_type);
++ fprintf(stderr,"interlace type = %d\n", interlace_type);
++ fprintf(stderr,"num colors = %d\n",num_palette);
++ fprintf(stderr,"rowbytes = %d\n", rowbytes);
+ }
+ #endif
+
+ /* allocate the pixel grid which we will need to send to
+ png_read_image(). */
+- png_pixels = (png_byte *)malloc(info_ptr->rowbytes *
+- (*height) * sizeof(png_byte));
++ png_pixels = (png_byte *)malloc(rowbytes * (*height) * sizeof(png_byte));
+
+
+ row_pointers = (png_byte **) malloc((*height) * sizeof(png_byte *));
+ for (i=0; i < *height; i++)
+- row_pointers[i]=png_pixels+(info_ptr->rowbytes*i);
++ row_pointers[i]=png_pixels+(rowbytes*i);
+
+
+ /* FINALLY - read the darn thing. */
+@@ -325,13 +348,13 @@
+
+ /* now that we have the (transformed to 8-bit RGB) image, we have
+ to copy the resulting palette to our colormap. */
+- if (info_ptr->color_type & PNG_COLOR_MASK_COLOR) {
+- if (info_ptr->valid & PNG_INFO_PLTE) {
++ if (color_type & PNG_COLOR_MASK_COLOR) {
++ if (have_palette) {
+
+- for (i=0; i < info_ptr->num_palette; i++) {
+- colrs[i].red = info_ptr->palette[i].red << 8;
+- colrs[i].green = info_ptr->palette[i].green << 8;
+- colrs[i].blue = info_ptr->palette[i].blue << 8;
++ for (i=0; i < num_palette; i++) {
++ colrs[i].red = palette[i].red << 8;
++ colrs[i].green = palette[i].green << 8;
++ colrs[i].blue = palette[i].blue << 8;
+ colrs[i].pixel = i;
+ colrs[i].flags = DoRed|DoGreen|DoBlue;
+ }
+@@ -366,7 +389,7 @@
+
+ /* if there is an alpha channel, we have to get rid of it in the
+ pixmap, since I don't do anything with it yet */
+- if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA) {
++ if (color_type & PNG_COLOR_MASK_ALPHA) {
+
+ #ifndef DISABLE_TRACE
+ if (srcTrace) {
+@@ -405,10 +428,14 @@
+ free((png_byte **)row_pointers);
+
+ /* clean up after the read, and free any memory allocated */
++ /*png_read_destroy(png_ptr, info_ptr, (png_info *)0);*/
++ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
++
+
+- /* free the structure */
+- png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+-
++ /* free the structures */
++ /*free((char *)png_ptr);*/
++ free((char *)info_ptr);
++
+ return pixmap;
+ }
+
diff --git a/network/mosaic-ck/slack-desc b/network/mosaic-ck/slack-desc
new file mode 100644
index 0000000000..93edd23f42
--- /dev/null
+++ b/network/mosaic-ck/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+mosaic-ck: mosaic-ck (Cameron Kaiser's fork of NCSA Mosaic)
+mosaic-ck:
+mosaic-ck: Mosaic is widely considered the grandfather of the modern web
+mosaic-ck: browser. Developed at NCSA, it was the first Web browser to win
+mosaic-ck: widespread use and acceptance. The last release of Mosaic was in 1997.
+mosaic-ck:
+mosaic-ck: mosaic-ck is a fork of Mosaic, with several features that allow it
+mosaic-ck: to work as a basic, no-frills browser on the modern WWW.
+mosaic-ck:
+mosaic-ck:
+mosaic-ck: