Apply the Debian patches (from chimera2_2.0a19-8 from jessie)
This commit is contained in:
parent
21863d7241
commit
cf2a6b01f1
23 changed files with 1006 additions and 132 deletions
214
Common.tmpl
Normal file
214
Common.tmpl
Normal file
|
@ -0,0 +1,214 @@
|
|||
/*
|
||||
* Common config file
|
||||
*/
|
||||
|
||||
/*
|
||||
* Installation directories.
|
||||
*
|
||||
* CHIMERA_BINDIR - chimera's executable gets installed here.
|
||||
* CHIMERA_LIBDIR - configuration files. someday.
|
||||
* CHIMERA_MANDIR - directory to hold the outdated man page.
|
||||
*/
|
||||
|
||||
CHIMERA_PREFIX = /usr
|
||||
CHIMERA_BINDIR = $(CHIMERA_PREFIX)/bin
|
||||
CHIMERA_LIBDIR = $(CHIMERA_PREFIX)/lib/chimera
|
||||
CHIMERA_MANDIR = $(CHIMERA_PREFIX)/man
|
||||
|
||||
#if !defined(__QNX__)
|
||||
LIBPRE=lib
|
||||
LIBEXT=.a
|
||||
#else
|
||||
LIBPRE=
|
||||
LIBEXT=3r.lib
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Add a bit of fluff to the end of the image library name if
|
||||
* you need it. For example, on IRIX and Linux boxes its nice
|
||||
* to use it to differentiate from the vendor libraries of the same
|
||||
* name.
|
||||
*/
|
||||
/*
|
||||
IMGLEXT = _local
|
||||
*/
|
||||
|
||||
/* Uncomment and modify if you have the JPEG 6 library */
|
||||
|
||||
#define Use_JPEG
|
||||
JPEGDIR = /usr
|
||||
JPEGINCLUDE = -I$(JPEGDIR)/include
|
||||
JPEGLIB = -L$(JPEGDIR)/lib -ljpeg$(IMGLEXT)
|
||||
|
||||
/* Uncomment and modify if you have the PNG library */
|
||||
|
||||
#define Use_PNG
|
||||
PNGDIR = /usr
|
||||
PNGINCLUDE = -I$(PNGDIR)/include
|
||||
PNGLIB = -L$(PNGDIR)/lib -lpng$(IMGLEXT) -lz$(IMGLEXT)
|
||||
|
||||
/* Tells Imakefile to set the flags for debugging. Comment for -O. */
|
||||
/* #define CDebugging 1 */
|
||||
|
||||
/* You might need to force the compiler to gcc */
|
||||
/*
|
||||
CC = gcc
|
||||
*/
|
||||
|
||||
/* Add site stuff here */
|
||||
SITE_DEFINES = -DINET6
|
||||
SITE_LIBS =
|
||||
SITE_DEPLIBS =
|
||||
SITE_LDFLAGS =
|
||||
|
||||
/*
|
||||
* You should not have change anything below unless you add a new
|
||||
* OS feature section or add your own module.
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
* OS features
|
||||
*
|
||||
*/
|
||||
|
||||
/* Sparcs */
|
||||
#if defined(SunArchitecture)
|
||||
#if OSMajorVersion > 4 /* Solaris */
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_SSIZE_T -DHAVE_STDARG_H
|
||||
OS_LIBS = -lsocket -lnsl
|
||||
#else /* SunOS 4.1.4 X11R6, gcc */
|
||||
#define NEED_MEMMOVE 1
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_STDARG_H
|
||||
OS_LIBS =
|
||||
#endif
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/* DEC UNIX */
|
||||
#if defined(AlphaArchitecture)
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UTIME -DHAVE_MKTIME -D_BSD -DHAVE_SIZE_T -DHAVE_SSIZE_T \
|
||||
-DHAVE_STDARG_H
|
||||
OS_LIBS = -lbsd
|
||||
OS_DEBUG_FLAGS = -std1
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/* IRIX */
|
||||
#if defined(SGIArchitecture)
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_SSIZE_T \
|
||||
-DHAVE_STDARG_H
|
||||
OS_LIBS =
|
||||
OS_DEBUG_FLAGS = -fullwarn
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/* FreeBSD, BSDI, NetBSD */
|
||||
#if defined(FreeBSDArchitecture) || defined(BSD386Architecture) || defined(NetBSDArchitecture)
|
||||
#define HAVE_SNPRINTF 1
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_SSIZE_T \
|
||||
-DHAVE_STDARG_H -DHAVE_SNPRINTF
|
||||
OS_LIBS =
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/* Linux */
|
||||
#if defined(LinuxArchitecture) || defined(GNUArchitecture)
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_SSIZE_T \
|
||||
-DHAVE_STDARG_H
|
||||
OS_LIBS =
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/* Convex */
|
||||
#if defined(ConvexArchitecture)
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_STDARG_H
|
||||
OS_LIBS =
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/* HP */
|
||||
#if defined(HPArchitecture)
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_STDARG_H \
|
||||
-DHAVE_SSIZE_T
|
||||
OS_LIBS =
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/* QNX */
|
||||
#if defined(__QNX__)
|
||||
CC = cc -Otx -mf -zp1 -w4
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_SSIZE_T \
|
||||
-DHAVE_STDARG_H
|
||||
OS_LIBS =
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/* AIX 3.2.5 */
|
||||
#if defined(RsArchitecture)
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_SSIZE_T \
|
||||
-DHAVE_STDARG_H
|
||||
OS_LIBS =
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/* OS/2, XFree86 & EMX gcc */
|
||||
#if defined(OS2Architecture) && !defined(CConfigSet)
|
||||
#define NEED_SNPRINTF 1
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H \
|
||||
-DHAVE_STDDEF_H -DHAVE_SIZE_T -DHAVE_SSIZE_T \
|
||||
-DHAVE_STDARG_H
|
||||
OS_LIBS =-lsocket
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/* everything else hopefully */
|
||||
#if !defined(CConfigSet)
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_STDARG_H
|
||||
OS_LIBS =
|
||||
OS_DEBUG_FLAGS =
|
||||
#define CConfigSet 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
*
|
||||
* Glue together the various flags for compiling and linking
|
||||
*
|
||||
*/
|
||||
CHIMERA_DEFINES = $(OS_DEFINES) $(SITE_DEFINES)
|
||||
|
||||
CHIMERA_LOAD_FLAGS = $(OS_LDFLAGS) $(SITE_LDFLAGS)
|
||||
|
||||
IMAGELIB = -L../image -lximage $(JPEGLIB) $(PNGLIB)
|
||||
IMAGEDEPLIB = ../image/$(LIBPRE)ximage$(LIBEXT) $(JPEGDEPLIB) $(PNGDEPLIB)
|
||||
HTMLLIB = -L../html -lxhtml
|
||||
HTMLDEPLIB = ../html/$(LIBPRE)xhtml$(LIBEXT)
|
||||
PLAINLIB = -L../plain -lxplain
|
||||
PLAINDEPLIB = ../plain/$(LIBPRE)xplain$(LIBEXT)
|
||||
PROTOLIB = -L../proto -lxproto
|
||||
PROTODEPLIB = ../proto/$(LIBPRE)xproto$(LIBEXT)
|
||||
OTHERLIB = -L../common -lxcommon -L../mxw -lmxw \
|
||||
-L../port -lxport \
|
||||
XawClientLibs -lm
|
||||
OTHERDEPLIB = ../common/$(LIBPRE)xcommon$(LIBEXT) \
|
||||
../port/$(LIBPRE)xport$(LIBEXT) \
|
||||
../mxw/$(LIBPRE)mxw$(LIBEXT)
|
||||
|
||||
CHIMERA_LIBS = $(IMAGELIB) $(HTMLLIB) $(PROTOLIB) $(PLAINLIB) \
|
||||
$(OTHERLIB) $(OS_LIBS) $(SITE_LIBS)
|
||||
|
||||
CHIMERA_DEPLIBS = $(IMAGEDEPLIB) $(HTMLDEPLIB) $(PROTODEPLIB) \
|
||||
$(PLAINDEPLIB) $(OTHERDEPLIB) $(SITE_DEPLIBS)
|
||||
|
||||
#define MyNull
|
|
@ -123,7 +123,7 @@ OS_LIBS =
|
|||
#endif
|
||||
|
||||
/* Linux */
|
||||
#if defined(LinuxArchitecture)
|
||||
#if defined(LinuxArchitecture) || defined(GNUArchitecture)
|
||||
OS_DEFINES = -DHAVE_STDLIB_H -DHAVE_STRING_H -DHAVE_UNISTD_H -DHAVE_STDDEF_H \
|
||||
-DHAVE_UNAME -DHAVE_MKTIME -DHAVE_SIZE_T -DHAVE_SSIZE_T \
|
||||
-DHAVE_STDARG_H
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#ifdef CDebugging
|
||||
#define PassCDebugFlags "CDEBUGFLAGS=-g -Wall"
|
||||
#else
|
||||
#define PassCDebugFlags "CDEBUGFLAGS=-O -Wall"
|
||||
#define PassCDebugFlags "CDEBUGFLAGS=-O2 -g -Wall"
|
||||
#endif
|
||||
#else
|
||||
#ifdef CDebugging
|
||||
|
|
|
@ -37,6 +37,6 @@ void StreamWrite _ArgProto((ChimeraStream, byte *, size_t,
|
|||
void StreamRead _ArgProto((ChimeraStream, byte *, size_t,
|
||||
ChimeraStreamCallback, void *));
|
||||
int StreamGetINetPort _ArgProto((ChimeraStream));
|
||||
unsigned long StreamGetINetAddr _ArgProto((ChimeraStream));
|
||||
struct in6_addr StreamGetINetAddr _ArgProto((ChimeraStream));
|
||||
|
||||
#endif
|
||||
|
|
|
@ -91,11 +91,17 @@ static void WWWScrollLeftAction _ArgProto((Widget, XEvent *,
|
|||
String *, Cardinal *));
|
||||
static void WWWScrollRightAction _ArgProto((Widget, XEvent *,
|
||||
String *, Cardinal *));
|
||||
static void WWWScroll5UpAction _ArgProto((Widget, XEvent *,
|
||||
String *, Cardinal *));
|
||||
static void WWWScroll5DownAction _ArgProto((Widget, XEvent *,
|
||||
String *, Cardinal *));
|
||||
|
||||
static char defaultTranslations[] =
|
||||
"<Btn1Up>: select() \n\
|
||||
<Btn2Up>: select() \n\
|
||||
<Btn3Up>: select() \n\
|
||||
<Btn4Down>: scroll5_up() \n\
|
||||
<Btn5Down>: scroll5_down() \n\
|
||||
<Expose>: expose() \n\
|
||||
<Motion>: motion() \n\
|
||||
:<Key>BackSpace: page_up()\n\
|
||||
|
@ -135,6 +141,8 @@ static XtActionsRec actionsList[] =
|
|||
{ "scroll_down", WWWScrollDownAction },
|
||||
{ "scroll_left", WWWScrollLeftAction },
|
||||
{ "scroll_right", WWWScrollRightAction},
|
||||
{ "scroll5_up", WWWScroll5UpAction },
|
||||
{ "scroll5_down", WWWScroll5DownAction },
|
||||
};
|
||||
|
||||
#define offset(field) XtOffsetOf(WWWRec, www.field)
|
||||
|
@ -944,3 +952,35 @@ Cardinal *num_params; /* unused */
|
|||
|
||||
WWWMoveChild((Widget)rw,child->core.x-10,child->core.y);
|
||||
}
|
||||
|
||||
/*
|
||||
* WWWScroll5UpAction
|
||||
*/
|
||||
static void
|
||||
WWWScroll5UpAction(w, xe, params, num_params)
|
||||
Widget w;
|
||||
XEvent *xe;
|
||||
String *params; /* unused */
|
||||
Cardinal *num_params; /* unused */
|
||||
{
|
||||
WWWWidget rw = (WWWWidget)XtParent(XtParent(w));
|
||||
Widget child = rw->www.child;
|
||||
|
||||
WWWMoveChild((Widget)rw,child->core.x,child->core.y+50);
|
||||
}
|
||||
|
||||
/*
|
||||
* WWWScroll5DownAction
|
||||
*/
|
||||
static void
|
||||
WWWScroll5DownAction(w, xe, params, num_params)
|
||||
Widget w;
|
||||
XEvent *xe;
|
||||
String *params; /* unused */
|
||||
Cardinal *num_params; /* unused */
|
||||
{
|
||||
WWWWidget rw = (WWWWidget)XtParent(XtParent(w));
|
||||
Widget child = rw->www.child;
|
||||
|
||||
WWWMoveChild((Widget)rw,child->core.x,child->core.y-50);
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
.TH chimera 1 "26 October 1994"
|
||||
.IX chimera
|
||||
.TH chimera2 1 "26 October 1994"
|
||||
.IX chimera2
|
||||
|
||||
.SH NAME
|
||||
chimera - X/Athena World-Wide Web Client
|
||||
chimera2 - X/Athena World-Wide Web Client
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B chimera
|
||||
.B chimera2
|
||||
.RI [ URL ]
|
||||
|
||||
.SH DESCRIPTION
|
||||
|
|
|
@ -21,15 +21,16 @@
|
|||
|
||||
char *fallback_resources[] =
|
||||
{
|
||||
"*background: moccasin",
|
||||
/* "*background: moccasin", */
|
||||
"*WWW.background: white",
|
||||
"*showGrip: false",
|
||||
|
||||
"*Scrollbar.background: burlywood2",
|
||||
/* "*Scrollbar.background: burlywood2",
|
||||
"*Command.background: burlywood2",
|
||||
"*Toggle.background: burlywood2",
|
||||
"*MenuButton.background: burlywood2",
|
||||
"*SimpleMenu.background: burlywood2",
|
||||
"*SmeBSB.background: burlywood2",
|
||||
"*SmeBSB.background: burlywood2", */
|
||||
"*Box.orientation: horizontal",
|
||||
"*Label.borderWidth: 0",
|
||||
|
||||
|
@ -58,10 +59,10 @@ char *fallback_resources[] =
|
|||
"*dismiss.label: Dismiss",
|
||||
|
||||
"*www_toplevel.height: 600",
|
||||
"*www_toplevel.width: 650",
|
||||
"*www_toplevel.width: 550",
|
||||
|
||||
/* message widget */
|
||||
"*message.width: 600",
|
||||
"*message.width: 550",
|
||||
"*message.editable: false",
|
||||
"*message.displayCaret: false",
|
||||
"*message.borderWidth: 0",
|
||||
|
@ -96,10 +97,10 @@ char *fallback_resources[] =
|
|||
"*url.right: ChainRight",
|
||||
"*url.fromHoriz: urllabel",
|
||||
|
||||
"*Label.font: -*-lucidatypewriter-medium-r-normal-*-*-120-*-*-*-*-iso8859-1",
|
||||
/* "*Label.font: -*-lucidatypewriter-medium-r-normal-*-*-120-*-*-*-*-iso8859-1",
|
||||
"*Text.font: -*-lucidatypewriter-medium-r-normal-*-*-120-*-*-*-*-iso8859-1",
|
||||
"*Command.font: -*-lucida-bold-r-normal-sans-*-120-*-*-*-*-iso8859-1",
|
||||
"*Toggle.font: -*-lucida-bold-r-normal-sans-*-120-*-*-*-*-iso8859-1",
|
||||
"*Toggle.font: -*-lucida-bold-r-normal-sans-*-120-*-*-*-*-iso8859-1", */
|
||||
|
||||
NULL
|
||||
};
|
||||
|
|
|
@ -218,7 +218,7 @@ char *name;
|
|||
Widget paned, box, form;
|
||||
Atom delete;
|
||||
|
||||
wc->toplevel = XtVaAppCreateShell(name, "Chimera",
|
||||
wc->toplevel = XtVaAppCreateShell(name, "Chimera2",
|
||||
topLevelShellWidgetClass,
|
||||
wc->cres->dpy,
|
||||
NULL);
|
||||
|
|
139
chimera/io.c
139
chimera/io.c
|
@ -62,6 +62,13 @@
|
|||
|
||||
#include "ChimeraStream.h"
|
||||
|
||||
union sockaddr_union
|
||||
{
|
||||
struct sockaddr sa;
|
||||
struct sockaddr_in sin;
|
||||
struct sockaddr_in6 sin6;
|
||||
} ;
|
||||
|
||||
struct ChimeraStreamP
|
||||
{
|
||||
bool destroyed;
|
||||
|
@ -69,7 +76,7 @@ struct ChimeraStreamP
|
|||
ChimeraResources cres;
|
||||
int s;
|
||||
int as;
|
||||
unsigned long addr;
|
||||
struct in6_addr addr;
|
||||
int port;
|
||||
bool bound;
|
||||
bool accepted;
|
||||
|
@ -144,7 +151,7 @@ XtInputId *xid;
|
|||
{
|
||||
ChimeraStream ps = (ChimeraStream)cldata;
|
||||
ssize_t rlen;
|
||||
struct sockaddr addr;
|
||||
union sockaddr_union addr;
|
||||
int s;
|
||||
int namlen;
|
||||
|
||||
|
@ -153,7 +160,7 @@ XtInputId *xid;
|
|||
if (!ps->accepted)
|
||||
{
|
||||
namlen = sizeof(addr);
|
||||
if ((ps->as = accept(ps->s, &addr, &namlen)) < 0)
|
||||
if ((ps->as = accept(ps->s, &addr.sa, &namlen)) < 0)
|
||||
{
|
||||
XtRemoveInput(ps->rdid);
|
||||
ps->rdid = 0;
|
||||
|
@ -252,7 +259,7 @@ int port;
|
|||
ChimeraStream ps;
|
||||
int s;
|
||||
int rval;
|
||||
struct sockaddr_in addr;
|
||||
union sockaddr_union addr;
|
||||
struct hostent *hp;
|
||||
MemPool mp;
|
||||
|
||||
|
@ -260,37 +267,85 @@ int port;
|
|||
|
||||
memset(&addr, 0, sizeof(addr));
|
||||
|
||||
/* fix by Jim Rees so that numeric addresses are dealt with */
|
||||
if ((addr.sin_addr.s_addr = inet_addr(host)) == -1)
|
||||
if( inet_pton( AF_INET, host, &addr.sin.sin_addr ) )
|
||||
{
|
||||
if ((hp = (struct hostent *)gethostbyname(host)) == NULL)
|
||||
{
|
||||
return(NULL);
|
||||
}
|
||||
memcpy(&(addr.sin_addr), hp->h_addr, hp->h_length);
|
||||
}
|
||||
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_port = htons((unsigned short)port);
|
||||
addr.sin.sin_family = AF_INET ;
|
||||
|
||||
addr.sin.sin_port = htons( (unsigned short)port ) ;
|
||||
s = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ) ;
|
||||
if (s < 0) return(NULL);
|
||||
|
||||
#ifdef __QNX__
|
||||
ioctl(s, FNDELAY, 0);
|
||||
#else
|
||||
fcntl(s, F_SETFL, FNDELAY);
|
||||
#endif
|
||||
rval = connect(s, (struct sockaddr *)&addr, sizeof(addr) ) ;
|
||||
if( rval >= 0 || errno == EINPROGRESS )
|
||||
goto Connected ; /* Eeurgh, a goto :) */
|
||||
}
|
||||
//
|
||||
// IPv6 literal support commented out as it doesn't work because of : in URLs
|
||||
//
|
||||
// else if( inet_pton( AF_INET6, host, &addr.sin6.sin6_addr ) )
|
||||
// {
|
||||
// addr.sin6.sin6_family = AF_INET6 ;
|
||||
// addr.sin6.sin6_port = htons( (unsigned short)port ) ;
|
||||
// s = socket( AF_INET6, SOCK_STREAM, IPPROTO_TCP ) ;
|
||||
// if (s < 0) return(NULL);
|
||||
//
|
||||
// rval = connect(s, (struct sockaddr *)&addr, sizeof(addr) ) ;
|
||||
// if( rval >= 0 || errno == EINPROGRESS )
|
||||
// goto Connected ; /* Eeurgh, a goto :) */
|
||||
// }
|
||||
else
|
||||
{
|
||||
if( ( hp = gethostbyname2( host, AF_INET6 ) ) != NULL )
|
||||
{
|
||||
if( hp->h_addrtype == AF_INET6 )
|
||||
{
|
||||
addr.sin6.sin6_family = AF_INET6 ;
|
||||
if( hp->h_length > (int) sizeof( addr.sin6.sin6_addr ) )
|
||||
hp->h_length = sizeof( addr.sin6.sin6_addr ) ;
|
||||
|
||||
if ((rval = connect(s, (struct sockaddr *)&addr, sizeof(addr))) != 0)
|
||||
addr.sin6.sin6_port = htons( (unsigned short)port ) ;
|
||||
s = socket( AF_INET6, SOCK_STREAM, IPPROTO_TCP ) ;
|
||||
if (s < 0) return(NULL);
|
||||
|
||||
do
|
||||
{
|
||||
if (errno != EINPROGRESS)
|
||||
{
|
||||
close(s);
|
||||
return(NULL);
|
||||
memcpy( &addr.sin6.sin6_addr, *(hp->h_addr_list++),
|
||||
hp->h_length ) ;
|
||||
|
||||
rval = connect(s, (struct sockaddr *)&addr, sizeof(addr) ) ;
|
||||
if( rval >= 0 || errno == EINPROGRESS )
|
||||
goto Connected ; /* Eeurgh, a goto :) */
|
||||
} while( *(hp->h_addr_list) ) ;
|
||||
}
|
||||
}
|
||||
if( ( hp = gethostbyname2( host, AF_INET ) ) != NULL )
|
||||
{
|
||||
if( hp->h_addrtype == AF_INET )
|
||||
{
|
||||
addr.sin.sin_family = AF_INET ;
|
||||
if( hp->h_length > (int) sizeof( addr.sin.sin_addr ) )
|
||||
hp->h_length = sizeof( addr.sin.sin_addr ) ;
|
||||
|
||||
addr.sin.sin_port = htons( (unsigned short)port ) ;
|
||||
s = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ) ;
|
||||
if (s < 0) return(NULL);
|
||||
|
||||
do
|
||||
{
|
||||
memcpy( &addr.sin.sin_addr, *(hp->h_addr_list++),
|
||||
hp->h_length ) ;
|
||||
|
||||
rval = connect(s, (struct sockaddr *)&addr, sizeof(addr) ) ;
|
||||
if( rval >= 0 || errno == EINPROGRESS )
|
||||
goto Connected ; /* Eeurgh, a goto :) */
|
||||
} while( *(hp->h_addr_list) ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Couldn't connect */
|
||||
return NULL ;
|
||||
|
||||
Connected:
|
||||
mp = MPCreate();
|
||||
ps = (ChimeraStream)MPCGet(mp, sizeof(struct ChimeraStreamP));
|
||||
ps->mp = mp;
|
||||
|
@ -310,8 +365,7 @@ ChimeraResources cres;
|
|||
MemPool mp;
|
||||
ChimeraStream ps;
|
||||
int s;
|
||||
struct sockaddr_in addr;
|
||||
struct sockaddr_in xaddr;
|
||||
struct sockaddr_in6 addr;
|
||||
struct hostent *hp;
|
||||
int namlen;
|
||||
char host[BUFSIZ];
|
||||
|
@ -319,9 +373,9 @@ ChimeraResources cres;
|
|||
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (s < 0) return(NULL);
|
||||
|
||||
addr.sin_addr.s_addr = INADDR_ANY;
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_port = 0;
|
||||
memcpy( (char *)&addr.sin6_addr, (char *)&in6addr_any, 16 ) ;
|
||||
addr.sin6_family = AF_INET6;
|
||||
addr.sin6_port = 0;
|
||||
|
||||
if (bind(s, (struct sockaddr *) &addr, sizeof (addr)) < 0)
|
||||
{
|
||||
|
@ -335,25 +389,6 @@ ChimeraResources cres;
|
|||
return(NULL);
|
||||
}
|
||||
|
||||
if (gethostname(host, sizeof(host) - 1) == 0)
|
||||
{
|
||||
/* fix by Jim Rees so that numeric addresses are dealt with */
|
||||
if ((xaddr.sin_addr.s_addr = inet_addr(host)) == -1)
|
||||
{
|
||||
if ((hp = (struct hostent *)gethostbyname(host)) == NULL)
|
||||
{
|
||||
close(s);
|
||||
return(NULL);
|
||||
}
|
||||
memcpy(&(xaddr.sin_addr), hp->h_addr, hp->h_length);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
close(s);
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
namlen = sizeof(addr);
|
||||
if (getsockname(s, (struct sockaddr *)&addr, &namlen) < 0)
|
||||
{
|
||||
|
@ -372,8 +407,8 @@ ChimeraResources cres;
|
|||
ps->mp = mp;
|
||||
ps->cres = cres;
|
||||
ps->s = s;
|
||||
ps->port = (int)addr.sin_port;
|
||||
ps->addr = xaddr.sin_addr.s_addr;
|
||||
ps->port = (int)addr.sin6_port;
|
||||
ps->addr = addr.sin6_addr;
|
||||
ps->bound = true;
|
||||
|
||||
return((ChimeraStream)ps);
|
||||
|
@ -410,7 +445,7 @@ ChimeraStream ps;
|
|||
/*
|
||||
* StreamGetINetAddr
|
||||
*/
|
||||
unsigned long
|
||||
struct in6_addr
|
||||
StreamGetINetAddr(ps)
|
||||
ChimeraStream ps;
|
||||
{
|
||||
|
|
|
@ -304,7 +304,7 @@ char *argv[];
|
|||
|
||||
XtAppSetFallbackResources(cres->appcon, fallback_resources);
|
||||
cres->dpy = XtOpenDisplay(cres->appcon, NULL,
|
||||
NULL, "Chimera",
|
||||
NULL, "Chimera2",
|
||||
NULL, 0,
|
||||
argcp, argv);
|
||||
if (cres->dpy == NULL)
|
||||
|
|
8
debian/README.Debian
vendored
Normal file
8
debian/README.Debian
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
As chimera 2 is still in alpha test, it may be useful to have both it and
|
||||
chimera 1.x on the system simulatenously. For that reason, I've renamed
|
||||
everything from "chimera" to "chimera2".
|
||||
|
||||
In particular, the resource class is Chimera2; in earlier releases of this
|
||||
package I left it as it was, with the result that it found resources
|
||||
intended for the old version, and messed up many things, particularly the
|
||||
window size.
|
246
debian/changelog
vendored
Normal file
246
debian/changelog
vendored
Normal file
|
@ -0,0 +1,246 @@
|
|||
chimera2 (2.0a19-8) unstable; urgency=low
|
||||
|
||||
* Fix segfault with font handling - Thanks to Flos Lonicera for patch
|
||||
(Closes: #24905)
|
||||
|
||||
-- Mark Baker <mark@mnb.org.uk> Sun, 12 May 2013 20:22:27 +0100
|
||||
|
||||
chimera2 (2.0a19-7) unstable; urgency=low
|
||||
|
||||
* Use libpng-dev in build-depends instead of libpng12-dev (Closes: #662286)
|
||||
* Fix so it will build on kfreebsd; thanks Petr Salinger for patch
|
||||
(Closes: #537821)
|
||||
* Changes to work with libpng 1.5; thanks Nobuhiro Iwamatsu for patch
|
||||
(Closes: #635743)
|
||||
* Move to correct place in current menu structure (Closes: #496099)
|
||||
* Support nostrip build option (Closes: #436628)
|
||||
|
||||
-- Mark Baker <mark@mnb.org.uk> Mon, 05 Mar 2012 22:53:11 +0000
|
||||
|
||||
chimera2 (2.0a19-6) unstable; urgency=low
|
||||
|
||||
* Replace libjpeg62-dev with libjpeg-dev in Build-Depends (Closes: #641097)
|
||||
|
||||
-- Mark Baker <mark@mnb.org.uk> Thu, 15 Sep 2011 20:52:50 +0100
|
||||
|
||||
chimera2 (2.0a19-5.1) unstable; urgency=medium
|
||||
|
||||
* Non-maintainer upload.
|
||||
* Fix FTBFS by replacing obsolete xutils with xutils-dev in
|
||||
Build-Depends (Closes: #485200).
|
||||
* Set urgency to “medium”, bug is in testing too.
|
||||
|
||||
-- Cyril Brulebois <kibi@debian.org> Sat, 18 Jul 2009 10:41:36 +0200
|
||||
|
||||
chimera2 (2.0a19-5) unstable; urgency=low
|
||||
|
||||
* debian/control: Update build dependencies: xlibs-dev no longer exists
|
||||
(Closes: #346637)
|
||||
|
||||
-- Mark Baker <mark@mnb.org.uk> Wed, 11 Jan 2006 21:52:10 +0000
|
||||
|
||||
chimera2 (2.0a19-4) unstable; urgency=low
|
||||
|
||||
* Includes patch so it doesn't crash when used with recent
|
||||
libpng. (Closes: #130902). Thanks to Jeremie Koenig for the patch
|
||||
* debian/postinst, debian/prerm: Largely rewritten
|
||||
* debian/postinst, debian/prerm: Install x-www-browser alternatives
|
||||
entry. I've gone for 30 as the priority, as it should be lower than
|
||||
more fully-featured modern browsers. (Closes: #161762)
|
||||
* chimera/chimera.man: refer to chimera2 instead of chimera
|
||||
* debian/control: update my email address
|
||||
* debian/rules: install manpage as chimera2.1, not .1x, to avoid lintian
|
||||
warning
|
||||
* debian/copyright: fix spelling of Debian GNU/Linux
|
||||
* debian/rules: put menu file in /usr/share instead of /usr/lib
|
||||
|
||||
-- Mark Baker <mark@mnb.org.uk> Sat, 20 Aug 2005 18:22:53 +0100
|
||||
|
||||
chimera2 (2.0a19-3.3) unstable; urgency=low
|
||||
|
||||
* Bug Party quick NMU #3, fix xlib6g-dev dependency. (Closes: #170136)
|
||||
|
||||
-- Joshua Kwan <joshk@triplehelix.org> Sat, 15 Mar 2003 01:05:04 -0800
|
||||
|
||||
chimera2 (2.0a19-3.2) unstable; urgency=low
|
||||
|
||||
* NMU
|
||||
* Put in some more general detection of endianess and
|
||||
64-bitness. This allows chimera2 to build on ia64 and hppa.
|
||||
(closes: Bug#105040)
|
||||
|
||||
-- Doug Porter <dsp@debian.org> Thu, 18 Oct 2001 13:44:52 -0500
|
||||
|
||||
chimera2 (2.0a19-3.1) unstable; urgency=low
|
||||
|
||||
* Bug Party NMU!
|
||||
* Added Build-Depends on libjpeg62-dev, libpng2-dev, xlib6g-dev,
|
||||
xutils, zlib1g-dev (closes: #83833, #70271).
|
||||
* Added menu hints (closes: #80074).
|
||||
* Call dpkg-gencontrol with -isp now so that Section and Priority
|
||||
are included in the .deb.
|
||||
* Updated location of GPL in copyright file.
|
||||
* Moved binary from /usr/X11R6/bin to /usr/bin.
|
||||
* prerm was not copied to debian/tmp/DEBIAN/. Fixed.
|
||||
|
||||
-- Peter Palfrader <weasel@debian.org> Sun, 25 Feb 2001 01:21:25 +0000
|
||||
|
||||
chimera2 (2.0a19-3) unstable; urgency=low
|
||||
|
||||
* Recompiled so it doesn't segfault (believed to have been an
|
||||
incompatibility with a new version of libjpeg?) (#50558)
|
||||
* chimera/WWW.c: added translations so mouse wheel can be used
|
||||
* debian/rules: put documentation and manpage in /usr/share
|
||||
* debian/postinst,debian/prerm: handle /usr/doc/chimera2 symlink
|
||||
* debian/control: policy version 3.1.0.0
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Sat, 27 Nov 1999 20:59:53 +0000
|
||||
|
||||
chimera2 (2.0a19-2) unstable; urgency=low
|
||||
|
||||
* Applied powerpc patch from Konstantinos Margaritis (#39051) - thanks
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Sun, 4 Jul 1999 23:03:23 +0100
|
||||
|
||||
chimera2 (2.0a19-1) unstable; urgency=low
|
||||
|
||||
* New upstream version
|
||||
* Improved IPv6 support (support for incoming connections (for ftp))
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Tue, 1 Jun 1999 23:56:53 +0100
|
||||
|
||||
chimera2 (2.0a17-2) unstable; urgency=low
|
||||
|
||||
* Added IPv6 support
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Mon, 24 May 1999 23:52:15 +0100
|
||||
|
||||
chimera2 (2.0a17-1) unstable; urgency=low
|
||||
|
||||
* New upstream version (should fix #25912)
|
||||
* Recompiled against libpng2 (#26922)
|
||||
* debian/control: Provides www-browser (#27916)
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Fri, 16 Apr 1999 23:37:26 +0100
|
||||
|
||||
chimera2 (2.0a15-2) unstable; urgency=low
|
||||
|
||||
* Fix so cursor keys work when mouse over images
|
||||
* Reimplemented accelerators fix in previous release more cleanly
|
||||
* Changed resources so transparent GIFs don't have cream background
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Mon, 08 Jun 1998 20:31:18 +0100
|
||||
|
||||
chimera2 (2.0a15-1) unstable; urgency=low
|
||||
|
||||
* New upstream version
|
||||
* Changes (compared to upstream version) so accelerators aren't installed
|
||||
on text field. Having 's' mapped to view source etc on the URL input
|
||||
line isn't very useful!
|
||||
* debian/prerm: deleted
|
||||
* debian/postrm: created (run update-menus in postrm, not prerm (#23004))
|
||||
* debian/postinst: update-menus is in /usr/bin not /usr/sbin (#23006)
|
||||
* debian/rules: minor changes
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Sat, 30 May 1998 10:43:00 +0100
|
||||
|
||||
chimera2 (2.0a14-2) unstable; urgency=low
|
||||
|
||||
* Updated to standards-versions 2.4.0.0
|
||||
* Fixed copyright file (GPL is not compressed now)
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Tue, 10 Feb 1998 00:05:29 +0000
|
||||
|
||||
chimera2 (2.0a14-1) unstable; urgency=low
|
||||
|
||||
* New upstream version
|
||||
* Only run install-menus if it exists (#17275)
|
||||
* Changed class to "chimera2" (#15035)
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Tue, 20 Jan 1998 22:18:27 +0000
|
||||
|
||||
chimera2 (2.0a11-3) unstable; urgency=low
|
||||
|
||||
* Converted menu file to new format (#15036)
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Thu, 20 Nov 1997 21:02:26 +0000
|
||||
|
||||
chimera2 (2.0a11-2) unstable; urgency=low
|
||||
|
||||
* Run chimera2 instead of chimera from menu (#14230)
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Thu, 30 Oct 1997 22:26:58 +0000
|
||||
|
||||
chimera2 (2.0a11-1) unstable; urgency=low
|
||||
|
||||
* New upstream release (fixes memory bugs; unfortunately doesn't fix
|
||||
rendering bugs AFAICS)
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Mon, 20 Oct 1997 00:14:15 +0100
|
||||
|
||||
chimera2 (2.0a10-1) unstable; urgency=low
|
||||
|
||||
* New upstream release
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Tue, 30 Sep 1997 20:50:31 +0100
|
||||
|
||||
chimera2 (2.0a6-6) unstable; urgency=low
|
||||
|
||||
* Compiled with all libc6 libraries (I was waiting for libpng)
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Sun, 28 Sep 1997 20:30:45 +0100
|
||||
|
||||
chimera2 (2.0a6-5) unstable; urgency=low
|
||||
|
||||
* Patch to accept filenames on the command line [#13029]
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Tue, 16 Sep 1997 20:19:19 +0100
|
||||
|
||||
chimera2 (2.0a6-4) unstable; urgency=low
|
||||
|
||||
* Only run install-menus if it exists [#13028]
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Mon, 15 Sep 1997 20:33:09 +0100
|
||||
|
||||
chimera2 (2.0a6-3) unstable; urgency=low
|
||||
|
||||
* Renamed man page from chimera to chimera2 to match binary filename
|
||||
* And menu file similarly (though this isn't user visible so doesn't
|
||||
matter so much) [both #12733]
|
||||
* Ownerships were wrong in last version. I haven't done anything to fix
|
||||
them, but they seem to be OK in this one!
|
||||
* Move binary from /usr/bin to /usr/X11R6/bin
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Wed, 10 Sep 1997 12:35:47 +0100
|
||||
|
||||
chimera2 (2.0a6-2) unstable; urgency=low
|
||||
|
||||
* Compiled against xlib6g
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Tue, 09 Sep 1997 22:33:52 +0100
|
||||
|
||||
chimera2 (2.0a6-1) unstable; urgency=low
|
||||
|
||||
* New upstream version
|
||||
* Built from pristine sources
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Sun, 07 Sep 1997 21:23:13 +0100
|
||||
|
||||
chimera2 (2.0a2-3) unstable; urgency=low
|
||||
|
||||
* Absolutely no changes, just recompiled becuase of bogus dependency
|
||||
in last release
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Sun, 07 Sep 1997 00:22:59 +0100
|
||||
|
||||
chimera2 (2.0a2-2) unstable; urgency=low
|
||||
|
||||
* Recompiled for libc6
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Fri, 20 Jun 1997 12:38:46 +0100
|
||||
|
||||
chimera2 (2.0a2-1) unstable; urgency=low
|
||||
|
||||
* First debian release
|
||||
|
||||
-- Mark Baker <mbaker@iee.org> Tue, 20 May 1997 21:06:00 +0100
|
15
debian/control
vendored
Normal file
15
debian/control
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
Source: chimera2
|
||||
Section: web
|
||||
Priority: optional
|
||||
Maintainer: Mark Baker <mark@mnb.org.uk>
|
||||
Standards-Version: 3.6.2
|
||||
Build-Depends: libjpeg-dev, libpng-dev, xutils-dev, zlib1g-dev, libxaw7-dev, libxmu-dev, libxt-dev, libsm-dev, libice-dev, libxpm-dev, libxext-dev, libx11-dev
|
||||
|
||||
Package: chimera2
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}
|
||||
Provides: www-browser
|
||||
Description: Web browser for X
|
||||
Simple, fast, free web browser.
|
||||
.
|
||||
This is an alpha-test version; some of the rendering routines are buggy.
|
196
debian/copyright
vendored
Normal file
196
debian/copyright
vendored
Normal file
|
@ -0,0 +1,196 @@
|
|||
This is Debian GNU/Linux's prepackaged version of chimera 2.
|
||||
|
||||
This package was put together by me, Mark Baker <mbaker@iee.org> from
|
||||
the the original sources in ftp.cs.unlv.edu:/pub/chimera-alpha/
|
||||
chimera-2.0a19.tar.gz. The only changes were those necessary for debian
|
||||
packaging.
|
||||
|
||||
The program is copyright 1997 John Kilburg and others.
|
||||
This debian package is copyright 1997 Mark Baker.
|
||||
|
||||
[what follows is the file doc/COPYRIGHT from the original distribution]
|
||||
|
||||
Most of the code was written by John and Erik and is GPL'd. See
|
||||
/usr/share/common-licenses/GPL for details. If I've left anything out below
|
||||
please let me know. Also, if you see GPL'd replacements for anything
|
||||
not GPL'd please send it (or a pointer to it) to john@cs.unlv.edu.
|
||||
|
||||
Other GPL'd code used:
|
||||
|
||||
www/url_translate.c by Theodore Ts'o <tytso@ATHENA.MIT.EDU>
|
||||
common/snprintf.c by Patrick Powell <papowell@sdsu.edu>
|
||||
mxw/TextField* was written by Rob McMullen and is LGPL'd.
|
||||
|
||||
====
|
||||
www/
|
||||
====
|
||||
|
||||
WWW.c has some code from the Xaw Viewport widget and is
|
||||
|
||||
Copyright (c) 1989, 1994 X Consortium
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of the X Consortium shall not
|
||||
be
|
||||
used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from the X Consortium.
|
||||
|
||||
====
|
||||
mxw/
|
||||
====
|
||||
|
||||
Also, the AuthDialog and MyDialog widgets are based on code from the
|
||||
Athena Dialog widget are
|
||||
|
||||
Copyright (c) 1987, 1988, 1994 X Consortium
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of the X Consortium shall not
|
||||
be
|
||||
used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from the X Consortium.
|
||||
|
||||
Copyright 1987, 1988 by Digital Equipment Corporation, Maynard,
|
||||
Massachusetts.
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the name of Digital not be
|
||||
used in advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission.
|
||||
|
||||
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
||||
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
SOFTWARE.
|
||||
|
||||
=======
|
||||
common/
|
||||
=======
|
||||
|
||||
Some string functions were grabbed from the BSD libraries and are
|
||||
|
||||
Copyright (c) 1988-1993 The Regents of the University of California.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
This product includes software developed by the University of
|
||||
California, Berkeley and its contributors.
|
||||
4. Neither the name of the University nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS `AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
memmove.c from the X folks:
|
||||
|
||||
Copyright (c) 1987 X Consortium
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of the X Consortium shall
|
||||
not be used in advertising or otherwise to promote the sale, use or
|
||||
other dealings in this Software without prior written authorization
|
||||
from the X Consortium.
|
||||
|
||||
======
|
||||
image/
|
||||
======
|
||||
|
||||
gif.c, new.c, imagep.h were derived from code from xloadimage and are
|
||||
|
||||
Copyright 1989, 1991 Jim Frost
|
||||
Copyright 1989 Kirk L. Johnson
|
||||
|
||||
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. The author makes no representations
|
||||
about the suitability of this software for any purpose. It is
|
||||
provided "as is" without express or implied warranty.
|
||||
|
||||
THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
|
||||
NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
||||
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
|
||||
USE OR PERFORMANCE OF THIS SOFTWARE.
|
5
debian/menu
vendored
Normal file
5
debian/menu
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
?package(chimera2):needs="x11" \
|
||||
title="Chimera" \
|
||||
section="Applications/Network/Web Browsing" \
|
||||
hints="Web browsers" \
|
||||
command="chimera2"
|
13
debian/postinst
vendored
Normal file
13
debian/postinst
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# Register in menu
|
||||
if [ "$1" = "configure" ] && [ -x "$(which update-menus 2>/dev/null)" ]; then
|
||||
update-menus
|
||||
fi
|
||||
|
||||
# Install alternatives
|
||||
update-alternatives --install \
|
||||
/usr/bin/x-www-browser x-www-browser /usr/bin/chimera2 30 \
|
||||
--slave /usr/share/man/man1/x-www-browser.1.gz x-www-browser.1.gz \
|
||||
/usr/share/man/man1/chimera2.1.gz
|
5
debian/postrm
vendored
Normal file
5
debian/postrm
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
if [ -x /usr/bin/update-menus ]; then
|
||||
update-menus
|
||||
fi
|
6
debian/prerm
vendored
Normal file
6
debian/prerm
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
# Remove alternatives entry
|
||||
if [ "$1" = "remove" -o "$1" = "deconfigure" ]; then
|
||||
update-alternatives --remove x-www-browser /usr/bin/chimera2
|
||||
fi
|
83
debian/rules
vendored
Normal file
83
debian/rules
vendored
Normal file
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/make -f
|
||||
# debian.rules file - for xdemineur (2.4)
|
||||
# Based on sample debian.rules file (copyright 1994,1995 by Ian Jackson).
|
||||
#
|
||||
# I hereby give you perpetual unlimited permission to copy,
|
||||
# modify and relicense this file, provided that you do not remove
|
||||
# my name from the file itself. (I assert my moral right of
|
||||
# paternity under the Copyright, Designs and Patents Act 1988.)
|
||||
|
||||
package=chimera2
|
||||
|
||||
ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
|
||||
INSTALLOPT=
|
||||
else
|
||||
INSTALLOPT=-s
|
||||
endif
|
||||
|
||||
build:
|
||||
$(checkdir)
|
||||
xmkmf -a
|
||||
$(MAKE)
|
||||
touch build
|
||||
|
||||
clean:
|
||||
$(checkdir)
|
||||
-rm -f build
|
||||
-$(MAKE) clean
|
||||
-rm Makefile */Makefile
|
||||
-rm -rf *~ debian/tmp debian/*~ debian/files*
|
||||
|
||||
binary-indep: checkroot build
|
||||
$(checkdir)
|
||||
# There are no architecture-independent files to be uploaded
|
||||
# generated by this package. If there were any they would be
|
||||
# made here.
|
||||
|
||||
binary-arch: checkroot build
|
||||
$(checkdir)
|
||||
-rm -rf debian/tmp
|
||||
# First create directories
|
||||
install -d debian/tmp debian/tmp/DEBIAN
|
||||
install -d debian/tmp/usr/share/doc/$(package)
|
||||
install -d debian/tmp/usr/bin
|
||||
install -d debian/tmp/usr/share/man/man1
|
||||
install -d debian/tmp/usr/share/menu
|
||||
# Copy documentation
|
||||
cp debian/copyright debian/tmp/usr/share/doc/$(package)/.
|
||||
cp debian/changelog debian/tmp/usr/share/doc/$(package)/changelog.Debian
|
||||
gzip -9v debian/tmp/usr/share/doc/$(package)/changelog.Debian
|
||||
install -m 0644 doc/INFO debian/tmp/usr/share/doc/$(package)/INFO
|
||||
install -m 0644 doc/HINTS debian/tmp/usr/share/doc/$(package)/HINTS
|
||||
install -m 0644 debian/README.Debian debian/tmp/usr/share/doc/$(package)
|
||||
# Copy other files
|
||||
install -m 0644 chimera/chimera.man \
|
||||
debian/tmp/usr/share/man/man1/chimera2.1
|
||||
install -m 0644 debian/menu debian/tmp/usr/share/menu/chimera2
|
||||
gzip -9v debian/tmp/usr/share/man/man1/chimera2.1
|
||||
install $(INSTALLOPT) chimera/chimera debian/tmp/usr/bin/chimera2; \
|
||||
# Various bits and pieces needed to build package
|
||||
cp debian/postinst debian/postrm debian/prerm debian/tmp/DEBIAN/.
|
||||
chmod +x debian/tmp/DEBIAN/postinst debian/tmp/DEBIAN/postrm debian/tmp/DEBIAN/prerm
|
||||
dpkg-shlibdeps chimera/chimera
|
||||
dpkg-gencontrol -isp
|
||||
chown -R root.root debian/tmp
|
||||
chmod -R g-ws debian/tmp
|
||||
dpkg --build debian/tmp ..
|
||||
|
||||
define checkdir
|
||||
test -f chimera/chimera.man -a -f debian/rules
|
||||
endef
|
||||
|
||||
# Below here is fairly generic really
|
||||
|
||||
binary: binary-indep binary-arch
|
||||
|
||||
source diff:
|
||||
@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
|
||||
|
||||
checkroot:
|
||||
$(checkdir)
|
||||
test root = "`whoami`"
|
||||
|
||||
.PHONY: binary binary-arch binary-indep clean checkroot
|
1
debian/substvars
vendored
Normal file
1
debian/substvars
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
shlibs:Depends=libc6 (>= 2.3), libice6 (>= 1:1.0.0), libjpeg8 (>= 8c), libpng12-0 (>= 1.2.13-4), libsm6, libx11-6, libxaw7, libxext6, libxmu6, libxpm4, libxt6, zlib1g (>= 1:1.1.4)
|
|
@ -385,7 +385,7 @@ HTMLFontList fl;
|
|||
|
||||
if (fl->fontInfo != NULL)
|
||||
{
|
||||
for (i = 0; i < XLFD_COUNT; i++)
|
||||
for (i = 0; i < fl->count; i++)
|
||||
{
|
||||
if (fl->fontInfo[i].xfi != NULL &&
|
||||
fl->fontInfo[i].xfi != lc->defaultFont)
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
* endian.h
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
#include <endian.h>
|
||||
|
||||
#ifndef __ENDIAN_H__
|
||||
#define __ENDIAN_H__ 1
|
||||
|
||||
|
@ -48,12 +51,12 @@
|
|||
#define __VAX__ 1
|
||||
#endif
|
||||
|
||||
#if defined(__i386__) || defined(__VAX__) || defined(__MIPSEL__) || defined(__alpha__) || defined(__QNX__)
|
||||
#if defined(__i386__) || defined(__VAX__) || defined(__MIPSEL__) || defined(__alpha__) || defined(__QNX__) || (__BYTE_ORDER == __LITTLE_ENDIAN)
|
||||
#undef CHIMERA_BIG_ENDIAN
|
||||
#define CHIMERA_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#if defined(__RS6000__) || defined(__SPARC__) || defined(__680x0__) || defined(__HPUX__) || defined(__MIPSEB__) || defined(__convex__)
|
||||
#if defined(__RS6000__) || defined(__SPARC__) || defined(__680x0__) || defined(__HPUX__) || defined(__MIPSEB__) || defined(__convex__) || defined(__powerpc__) || (__BYTE_ORDER == __BIG_ENDIAN)
|
||||
#undef CHIMERA_LITTLE_ENDIAN
|
||||
#define CHIMERA_BIG_ENDIAN
|
||||
#endif
|
||||
|
@ -75,7 +78,7 @@
|
|||
Error: Unknown endianism of architecture
|
||||
#endif
|
||||
|
||||
#ifdef __alpha__
|
||||
#if defined(__alpha__) || (__WORDSIZE == 64)
|
||||
#define SIXTYFOUR_BIT
|
||||
#endif
|
||||
|
||||
|
|
115
image/png.c
115
image/png.c
|
@ -60,33 +60,49 @@ lf_info_callback(png_struct *state, png_info *info)
|
|||
int orig_depth = 0;
|
||||
pngState *png = (pngState *) png_get_progressive_ptr(state);
|
||||
|
||||
if (info->bit_depth < 8 && (PNG_COLOR_TYPE_RGB == info->color_type ||
|
||||
PNG_COLOR_TYPE_RGB_ALPHA == info->color_type))
|
||||
png_byte bit_depth = png_get_bit_depth(state, info),
|
||||
color_type = png_get_color_type(state, info);
|
||||
png_uint_32 width = png_get_image_width(state, info),
|
||||
height = png_get_image_height(state, info),
|
||||
valid_tRNS = png_get_valid(state, info, PNG_INFO_tRNS),
|
||||
valid_gAMA = png_get_valid(state, info, PNG_INFO_gAMA);
|
||||
png_colorp palette;
|
||||
png_color_16p trans_values;
|
||||
png_bytep trans;
|
||||
int num_palette, num_trans;
|
||||
double gamma;
|
||||
|
||||
png_get_PLTE(state, info, &palette, &num_palette);
|
||||
png_get_tRNS(state, info, &trans, &num_trans, &trans_values);
|
||||
png_get_gAMA(state, info, &gamma);
|
||||
|
||||
if (bit_depth < 8 && (PNG_COLOR_TYPE_RGB == color_type ||
|
||||
PNG_COLOR_TYPE_RGB_ALPHA == color_type))
|
||||
png_set_expand(state);
|
||||
|
||||
/* I wish the frame's background colour was available here */
|
||||
if (info->color_type & PNG_COLOR_MASK_ALPHA) {
|
||||
if (color_type & PNG_COLOR_MASK_ALPHA) {
|
||||
png_color_16 bg;
|
||||
int gflag = PNG_BACKGROUND_GAMMA_SCREEN;
|
||||
double gval = 1.0;
|
||||
int expand = 0;
|
||||
|
||||
bg.red = bg.green = bg.blue = bg.gray = 0;
|
||||
if (PNG_COLOR_TYPE_PALETTE == info->color_type)
|
||||
if (PNG_COLOR_TYPE_PALETTE == color_type)
|
||||
png_set_expand(state);
|
||||
|
||||
png_set_background(state, &bg, gflag, expand, gval);
|
||||
}
|
||||
|
||||
if (info->bit_depth < 8 && (info->bit_depth > 1 ||
|
||||
PNG_COLOR_TYPE_GRAY != info->color_type)) {
|
||||
if (PNG_COLOR_TYPE_GRAY == info->color_type)
|
||||
orig_depth = info->bit_depth;
|
||||
if (bit_depth < 8 && (bit_depth > 1 ||
|
||||
PNG_COLOR_TYPE_GRAY != color_type)) {
|
||||
if (PNG_COLOR_TYPE_GRAY == color_type)
|
||||
orig_depth = bit_depth;
|
||||
png_set_packing(state);
|
||||
}
|
||||
|
||||
/* tell libpng to strip 16 bit depth files down to 8 bits */
|
||||
if (info->bit_depth > 8)
|
||||
if (bit_depth > 8)
|
||||
png_set_strip_16(state);
|
||||
|
||||
png_set_interlace_handling(state);
|
||||
|
@ -95,18 +111,18 @@ lf_info_callback(png_struct *state, png_info *info)
|
|||
png_read_update_info(state, info);
|
||||
|
||||
/* allocate the memory to hold the image using the fields of png_info. */
|
||||
if (PNG_COLOR_TYPE_GRAY == info->color_type && 1 == info->bit_depth) {
|
||||
png->image = newBitImage(info->width, info->height);
|
||||
if (PNG_COLOR_TYPE_GRAY == color_type && 1 == bit_depth) {
|
||||
png->image = newBitImage(width, height);
|
||||
if (!png->image) {
|
||||
png->done = image_error;
|
||||
return;
|
||||
}
|
||||
|
||||
png_set_invert_mono(state);
|
||||
} else if (PNG_COLOR_TYPE_PALETTE == info->color_type) {
|
||||
} else if (PNG_COLOR_TYPE_PALETTE == color_type) {
|
||||
int i;
|
||||
|
||||
png->image = newRGBImage(info->width, info->height, info->bit_depth);
|
||||
png->image = newRGBImage(width, height, bit_depth);
|
||||
if (!png->image) {
|
||||
png->done = image_error;
|
||||
return;
|
||||
|
@ -115,28 +131,28 @@ lf_info_callback(png_struct *state, png_info *info)
|
|||
png->image->rgb.red = png->cmap[0];
|
||||
png->image->rgb.green = png->cmap[1];
|
||||
png->image->rgb.blue = png->cmap[2];
|
||||
for (i = 0; i < info->num_palette; ++i) {
|
||||
png->image->rgb.red[i] = info->palette[i].red << 8;
|
||||
png->image->rgb.green[i] = info->palette[i].green << 8;
|
||||
png->image->rgb.blue[i] = info->palette[i].blue << 8;
|
||||
for (i = 0; i < num_palette; ++i) {
|
||||
png->image->rgb.red[i] = palette[i].red << 8;
|
||||
png->image->rgb.green[i] = palette[i].green << 8;
|
||||
png->image->rgb.blue[i] = palette[i].blue << 8;
|
||||
}
|
||||
png->image->rgb.used = info->num_palette;
|
||||
if (info->valid & PNG_INFO_tRNS) {
|
||||
png->image->rgb.used = num_palette;
|
||||
if (valid_tRNS) {
|
||||
int val, i;
|
||||
|
||||
val = 0;
|
||||
for (i = 0; i < info->num_trans; ++i) {
|
||||
if (info->trans[i] < info->trans[val])
|
||||
for (i = 0; i < num_trans; ++i) {
|
||||
if (trans[i] < trans[val])
|
||||
val = i;
|
||||
}
|
||||
png->image->transparent = val;
|
||||
}
|
||||
} else if (PNG_COLOR_TYPE_GRAY == info->color_type) {
|
||||
} else if (PNG_COLOR_TYPE_GRAY == color_type) {
|
||||
int i;
|
||||
int depth = orig_depth ? orig_depth : info->bit_depth;
|
||||
int depth = orig_depth ? orig_depth : bit_depth;
|
||||
int maxval = (1 << depth) - 1;
|
||||
|
||||
png->image = newRGBImage(info->width, info->height, depth);
|
||||
png->image = newRGBImage(width, height, depth);
|
||||
if (!png->image) {
|
||||
png->done = image_error;
|
||||
return;
|
||||
|
@ -153,10 +169,10 @@ lf_info_callback(png_struct *state, png_info *info)
|
|||
}
|
||||
png->image->rgb.used = maxval + 1;
|
||||
|
||||
if (info->valid & PNG_INFO_tRNS)
|
||||
png->image->transparent = info->trans_values.gray;
|
||||
if (valid_tRNS)
|
||||
png->image->transparent = trans_values->gray;
|
||||
} else {
|
||||
png->image = newTrueImage(info->width, info->height);
|
||||
png->image = newTrueImage(width, height);
|
||||
if (!png->image) {
|
||||
png->done = image_error;
|
||||
return;
|
||||
|
@ -164,10 +180,11 @@ lf_info_callback(png_struct *state, png_info *info)
|
|||
|
||||
}
|
||||
|
||||
if (info->valid & PNG_INFO_gAMA && png->image->type != IBITMAP)
|
||||
png->image->gamma = 1.0 / info->gamma;
|
||||
if (valid_gAMA && png->image->type != IBITMAP)
|
||||
png->image->gamma = 1.0 / gamma;
|
||||
|
||||
assert((png->image->width * png->image->pixlen + 7) / 8 == info->rowbytes);
|
||||
assert((png->image->width * png->image->pixlen + 7) / 8
|
||||
== png_get_rowbytes(state, info));
|
||||
}
|
||||
|
||||
|
||||
|
@ -177,6 +194,7 @@ lf_row_callback(png_struct *state, png_byte *new_row, png_uint_32 row_num,
|
|||
{
|
||||
pngState *png;
|
||||
byte *old_row;
|
||||
int rowbytes;
|
||||
|
||||
if (!new_row)
|
||||
return;
|
||||
|
@ -185,6 +203,7 @@ lf_row_callback(png_struct *state, png_byte *new_row, png_uint_32 row_num,
|
|||
if (!png->image)
|
||||
return;
|
||||
|
||||
rowbytes = png_get_rowbytes(png->state, png->info);
|
||||
old_row = png->image->data + png->image->bytes_per_line * row_num;
|
||||
|
||||
png_progressive_combine_row(state, old_row, new_row);
|
||||
|
@ -192,12 +211,12 @@ lf_row_callback(png_struct *state, png_byte *new_row, png_uint_32 row_num,
|
|||
/* I can't say I'm too fond of this endian business. */
|
||||
#ifdef CHIMERA_LITTLE_ENDIAN
|
||||
if (IBITMAP == png->image->type)
|
||||
lc_reverse_byte(old_row, png->info->rowbytes);
|
||||
lc_reverse_byte(old_row, rowbytes);
|
||||
#endif
|
||||
(png->lineProc)(png->closure, row_num, row_num);
|
||||
#ifdef CHIMERA_LITTLE_ENDIAN
|
||||
if (IBITMAP == png->image->type)
|
||||
lc_reverse_byte(old_row,png->info->rowbytes);
|
||||
lc_reverse_byte(old_row, rowbytes);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -219,17 +238,12 @@ pngDestroy(void *pointer)
|
|||
if (!png)
|
||||
return;
|
||||
|
||||
if (setjmp(png->state->jmpbuf))
|
||||
if (setjmp(png_jmpbuf((png->state))))
|
||||
return;
|
||||
|
||||
if (png->state) {
|
||||
png_read_destroy(png->state, png->info, (png_info *) 0);
|
||||
free_mem(png->state);
|
||||
png_destroy_read_struct(&png->state, &png->info, NULL);
|
||||
png->state = 0;
|
||||
}
|
||||
|
||||
if (png->info) {
|
||||
free_mem(png->info);
|
||||
png->info = 0;
|
||||
}
|
||||
|
||||
|
@ -246,7 +260,7 @@ pngAddData(void *pointer, byte *data, int len, bool data_ended)
|
|||
{
|
||||
pngState *png = (pngState *) pointer;
|
||||
|
||||
if (setjmp(png->state->jmpbuf))
|
||||
if (setjmp(png_jmpbuf((png->state))))
|
||||
return image_error;
|
||||
|
||||
if (len > png->lenSoFar) {
|
||||
|
@ -275,28 +289,17 @@ pngInit(void (*lineProc)(void *, int, int), void *closure, struct ifs_vector *if
|
|||
memset(png, 0, sizeof(pngState));
|
||||
png->lineProc = lineProc;
|
||||
png->closure = closure;
|
||||
png->state = (png_struct *) alloc_mem(sizeof(png_struct));
|
||||
if (!png->state)
|
||||
return;
|
||||
png->state = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL,NULL,NULL);
|
||||
png->info = png_create_info_struct(png->state);
|
||||
assert(png->state && png->info);
|
||||
|
||||
png->info = (png_info *) alloc_mem(sizeof(png_info));
|
||||
if (!png->info) {
|
||||
free_mem(png->state);
|
||||
return;
|
||||
}
|
||||
|
||||
if (setjmp(png->state->jmpbuf)) {
|
||||
png_read_destroy(png->state, png->info, (png_info *) 0);
|
||||
free_mem(png->state);
|
||||
free_mem(png->info);
|
||||
if (setjmp(png_jmpbuf((png->state)))) {
|
||||
png_destroy_read_struct(&png->state, &png->info, NULL);
|
||||
png->state = 0;
|
||||
png->info = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
png_info_init(png->info);
|
||||
png_read_init(png->state);
|
||||
|
||||
png_set_progressive_read_fn(png->state, (void *) png, lf_info_callback,
|
||||
lf_row_callback, lf_end_callback);
|
||||
png->done = image_need_data;
|
||||
|
|
Loading…
Reference in a new issue