diff options
Diffstat (limited to 'network/mosaic-ck')
-rw-r--r-- | network/mosaic-ck/README | 11 | ||||
-rw-r--r-- | network/mosaic-ck/doinst.sh | 9 | ||||
-rw-r--r-- | network/mosaic-ck/mosaic-ck.1 | 236 | ||||
-rw-r--r-- | network/mosaic-ck/mosaic-ck.SlackBuild | 122 | ||||
-rw-r--r-- | network/mosaic-ck/mosaic-ck.desktop | 12 | ||||
-rw-r--r-- | network/mosaic-ck/mosaic-ck.info | 10 | ||||
-rw-r--r-- | network/mosaic-ck/mosaic-ck.pod | 121 | ||||
-rw-r--r-- | network/mosaic-ck/mosaic_png_fix.diff | 310 | ||||
-rw-r--r-- | network/mosaic-ck/slack-desc | 19 |
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: |