From owner-freebsd-ports Fri Nov 17 1:30:24 2000 Delivered-To: freebsd-ports@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id EB1DF37B4D7 for ; Fri, 17 Nov 2000 01:30:03 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id BAA43825; Fri, 17 Nov 2000 01:30:03 -0800 (PST) (envelope-from gnats@FreeBSD.org) Received: from portal.vegasunderwater.com (cx1010824-a.phnx3.az.home.com [24.21.124.141]) by hub.freebsd.org (Postfix) with ESMTP id 6C7A337B479 for ; Fri, 17 Nov 2000 01:24:21 -0800 (PST) Received: by portal.vegasunderwater.com (Postfix, from userid 1021) id E7F8B588A; Fri, 17 Nov 2000 02:24:20 -0700 (MST) Message-Id: <20001117092420.E7F8B588A@portal.vegasunderwater.com> Date: Fri, 17 Nov 2000 02:24:20 -0700 (MST) From: todd@thisisa.com Reply-To: todd@thisisa.com To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.2 Subject: ports/22910: change-request for http-analyze Sender: owner-freebsd-ports@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >Number: 22910 >Category: ports >Synopsis: port change-request - http-analyze >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Fri Nov 17 01:30:03 PST 2000 >Closed-Date: >Last-Modified: >Originator: Todd Mortensen >Release: FreeBSD 4.2-BETA i386 >Organization: >Environment: >Description: >How-To-Repeat: >Fix: # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # /usr/ports/www/http-analyze # /usr/ports/www/http-analyze/Makefile # /usr/ports/www/http-analyze/files # /usr/ports/www/http-analyze/files/patch-aa # /usr/ports/www/http-analyze/files/patch-ab # /usr/ports/www/http-analyze/files/patch-ac # /usr/ports/www/http-analyze/pkg-comment # /usr/ports/www/http-analyze/README.html # /usr/ports/www/http-analyze/scripts # /usr/ports/www/http-analyze/scripts/post-patch # /usr/ports/www/http-analyze/distinfo # /usr/ports/www/http-analyze/pkg-descr # /usr/ports/www/http-analyze/pkg-plist # echo c - /usr/ports/www/http-analyze mkdir -p /usr/ports/www/http-analyze > /dev/null 2>&1 echo x - /usr/ports/www/http-analyze/Makefile sed 's/^X//' >/usr/ports/www/http-analyze/Makefile << 'END-of-/usr/ports/www/http-analyze/Makefile' X# New ports collection Makefile for: http-analyze X# Date created: Thu Nov 17 00:41:16 MST 2000 X# Whom: Todd Mortensen X# $FreeBSD: ports/www/http-analyze/Makefile,v 1.13 2000/06/06 17:56:51 will Exp $ X# X XPORTNAME= http-analyze XPORTVERSION= 2.01 XCATEGORIES= www XMASTER_SITES= ftp://ftp.rent-a-guru.de/pub/http-analyze2.01/ XDISTNAME= http-analyze2.01 XEXTRACT_SUFX= -src.tar.gz X XMAINTAINER= todd@thisisa.com X XLIB_DEPENDS= gd.1:${PORTSDIR}/graphics/gd XBUILD_DEPENDS= gif2png:${PORTSDIR}/graphics/gif2png X XMAN1= http-analyze.1 X X.include END-of-/usr/ports/www/http-analyze/Makefile echo c - /usr/ports/www/http-analyze/files mkdir -p /usr/ports/www/http-analyze/files > /dev/null 2>&1 echo x - /usr/ports/www/http-analyze/files/patch-aa sed 's/^X//' >/usr/ports/www/http-analyze/files/patch-aa << 'END-of-/usr/ports/www/http-analyze/files/patch-aa' X--- Makefile.orig Thu Apr 2 15:53:41 1998 X+++ Makefile Sat Apr 18 11:37:54 1998 X@@ -28,9 +28,9 @@ X # SVR4 /usr/share/man/cat1 - 1 X # Linux /usr/local/man/man1 - man X # X-LOCALLIB = /usr/local/lib X-LOCALBIN = /usr/local/bin X-LOCALMAN = /usr/local/man/cat1 X+LOCALLIB = $(PREFIX)/lib X+LOCALBIN = $(PREFIX)/bin X+LOCALMAN = $(PREFIX)/man/man1 X X # Program to use for compressing the manpage. X # If set to 'true', no compression is applied. X@@ -41,12 +41,12 @@ X # Extension of the source to be installed as manpage. X # if it is set to '1', the pre-formatted format is used, X # if it is set to 'man', the source format is used. X-#EXTENSION = man X-EXTENSION = 1 X+EXTENSION = man X+#EXTENSION = 1 X X # Location of the GD library and include files. X-GDLIB = /usr/local/lib/libgd.a X-GDINC = /usr/local/include X+GDLIB = $(PREFIX)/lib/libgd.a X+GDINC = $(PREFIX)/include/gd X X # X # Platform selection X@@ -76,7 +76,7 @@ X # X #CC = cc X #OPTIM = -O2 X-OPTIM = -g X+#OPTIM = -g X X # Remove NDEBUG to include various assertion checks in the program. X #COMDEFS = -DTIME_STATS -DNDEBUG X@@ -108,6 +108,10 @@ X #PLATFORM = -ansi -Dunix X #CC = gcc X X+# FreeBSD X+DEFINES = -DBSD -DHA_LIBDIR="$(LOCALLIB)/http-analyze" X+PLATFORM = X+ X # HP/UX X # X # Lacks definition of the 'unix' macro in it's compiler, so we X@@ -139,7 +143,7 @@ X #DEFINES = -DNETWARE $(COMDEFS) X #PLATFORM = X X-CFLAGS = $(OPTIM) $(PLATFORM) $(DEFINES) X+CFLAGS += $(PLATFORM) $(DEFINES) X LDFLAGS = X LINT = lint -Dunix -Xa -u X LIBS = -lm X@@ -213,13 +217,14 @@ X chmod 755 $(LOCALBIN)/http-analyze $(LOCALBIN)/ha-setup X chmod 444 $(LOCALMAN)/http-analyze.1 X chown bin.bin $(LOCALBIN)/http-analyze $(LOCALBIN)/ha-setup X- $(COMPRESS) $(LOCALMAN)/http-analyze.1 X+ -mkdir -p $(PREFIX)/share/doc/http-analyze X+ cp http-analyze.pdf http-analyze.ps $(PREFIX)/share/doc/http-analyze X -mkdir -p $(LOCALLIB)/http-analyze/btn X- cp files/3D* files/TLD files/bugreport.html sample.conf $(LOCALLIB)/http-analyze/ X+ cp files/3D* files/TLD files/bugreport.html rotate-httpd sample.conf \ X+ $(LOCALLIB)/http-analyze/ X cp files/btn/* $(LOCALLIB)/http-analyze/btn/ X @echo "\nNow run 'ha-setup' to configure http-analyze for your server (Unix only).\n" X X- X clean: X -rm -f $(HA_OBJ) $(3D_OBJ) lint.out X X@@ -228,4 +233,3 @@ X X clobber:: realclean X -rm -f index.html stats*.html stats*.hist sites*.html files*.html agents*.html *.gif X- END-of-/usr/ports/www/http-analyze/files/patch-aa echo x - /usr/ports/www/http-analyze/files/patch-ab sed 's/^X//' >/usr/ports/www/http-analyze/files/patch-ab << 'END-of-/usr/ports/www/http-analyze/files/patch-ab' X--- config.h.orig Thu Apr 2 15:53:41 1998 X+++ config.h Sat Apr 18 11:31:36 1998 X@@ -167,7 +167,7 @@ X # define HA_LIBDIR "/usr/local/lib/http-analyze" X #endif X X-#define REGID_FILE HA_LIBDIR "/REGID" X-#define BUTTON_DIR HA_LIBDIR "/btn" X+#define REGID_FILE "!!REGID_FILE!!" X+#define BUTTON_DIR "!!BUTTON_DIR!!" X X /* End of user configuration section. */ END-of-/usr/ports/www/http-analyze/files/patch-ab echo x - /usr/ports/www/http-analyze/files/patch-ac sed 's/^X//' >/usr/ports/www/http-analyze/files/patch-ac << 'END-of-/usr/ports/www/http-analyze/files/patch-ac' X*** Makefile.orig Thu Jan 6 13:03:58 2000 X--- Makefile Thu Jan 6 11:50:42 2000 X*************** X*** 146,152 **** X CFLAGS += $(PLATFORM) $(DEFINES) X LDFLAGS = X LINT = lint -Dunix -Xa -u X! LIBS = -lm X NROFF = nroff X NRFLAGS = -u1 -man X X--- 146,152 ---- X CFLAGS += $(PLATFORM) $(DEFINES) X LDFLAGS = X LINT = lint -Dunix -Xa -u X! LIBS = -lm -L/usr/local/lib -lpng X NROFF = nroff X NRFLAGS = -u1 -man X X*** images.c.orig Sun May 31 08:06:53 1998 X--- images.c Thu Jan 6 11:30:16 2000 X*************** X*** 196,202 **** X basey+(rangey/2), "No hits for this month!", black); X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImageGif(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X--- 196,202 ---- X basey+(rangey/2), "No hits for this month!", black); X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImagePng(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X*************** X*** 286,292 **** X X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImageGif(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X--- 286,292 ---- X X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImagePng(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X*************** X*** 441,447 **** X X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImageGif(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X--- 441,447 ---- X X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImagePng(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X*************** X*** 529,535 **** X X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImageGif(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X--- 529,535 ---- X X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImagePng(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X*************** X*** 666,672 **** X gdImageInterlace(im, 1); /* make it interlaced */ X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImageGif(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X--- 666,672 ---- X gdImageInterlace(im, 1); /* make it interlaced */ X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImagePng(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X*************** X*** 752,758 **** X X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImageGif(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X--- 752,758 ---- X X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImagePng(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X*************** X*** 988,994 **** X X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImageGif(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X--- 988,994 ---- X X gdImageInterlace(im, 1); /* make it interlaced */ X if ((out = fopen(name, "wb")) != NULL) { X! gdImagePng(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X*************** X*** 1037,1043 **** X (void) gdImageColorAllocate(im, tp->color[0], tp->color[1], tp->color[2]); X gdImageInterlace(im, 1); X if ((out=fopen(fname, "wb")) != NULL) { X! gdImageGif(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X--- 1037,1043 ---- X (void) gdImageColorAllocate(im, tp->color[0], tp->color[1], tp->color[2]); X gdImageInterlace(im, 1); X if ((out=fopen(fname, "wb")) != NULL) { X! gdImagePng(im, out); X (void) fclose(out); X } X gdImageDestroy(im); X*************** X*** 1071,1077 **** X if (!buttons[idx].name) X continue; X if ((fp = fopen(buttons[idx].name, "rb")) != NULL) { X! ip = gdImageCreateFromGif(fp); X (void) fclose(fp); X buttons[idx].wid = gdImageSX(ip); X buttons[idx].ht = gdImageSY(ip); X--- 1071,1077 ---- X if (!buttons[idx].name) X continue; X if ((fp = fopen(buttons[idx].name, "rb")) != NULL) { X! ip = gdImageCreateFromPng(fp); X (void) fclose(fp); X buttons[idx].wid = gdImageSX(ip); X buttons[idx].ht = gdImageSY(ip); X END-of-/usr/ports/www/http-analyze/files/patch-ac echo x - /usr/ports/www/http-analyze/pkg-comment sed 's/^X//' >/usr/ports/www/http-analyze/pkg-comment << 'END-of-/usr/ports/www/http-analyze/pkg-comment' XA fast Log-Analyzer for web servers END-of-/usr/ports/www/http-analyze/pkg-comment echo x - /usr/ports/www/http-analyze/README.html sed 's/^X//' >/usr/ports/www/http-analyze/README.html << 'END-of-/usr/ports/www/http-analyze/README.html' X X The FreeBSD Ports Collection (www/http-analyze) X

The FreeBSD Ports Collection ("www/http-analyze")


X X X

You are now in the directory for the port "www/http-analyze" (package name "http-analyze-2.01"). X X

This is the one-line description for this port: X X


XA fast Log-Analyzer for web servers X


X X

Please read the file "pkg/DESCR" for a Xlonger description. X X

Go to the top of the ports tree for Xa summary on how to use the ports collection. X X

XThis port requires package(s) "gd-1.8.3 jpeg-6b png-1.0.7" to build. X

XThis port requires package(s) "gd-1.8.3 jpeg-6b png-1.0.7" to run. X X


X Go up one level X| X Go to top of ports tree X X END-of-/usr/ports/www/http-analyze/README.html echo c - /usr/ports/www/http-analyze/scripts mkdir -p /usr/ports/www/http-analyze/scripts > /dev/null 2>&1 echo x - /usr/ports/www/http-analyze/scripts/post-patch sed 's/^X//' >/usr/ports/www/http-analyze/scripts/post-patch << 'END-of-/usr/ports/www/http-analyze/scripts/post-patch' X#!/bin/sh Xgifdir="${WRKSRC}/files/btn" Xgif2png=`which gif2png` X Xif [ ! -z $gif2png ]; then X patch --quiet ${WRKSRC}/images.c << EOP X*** images.c.orig Fri Nov 17 00:52:02 2000 X--- images.c Fri Nov 17 00:52:48 2000 X*************** X*** 996,1032 **** X } X X ICON_TAB icon_tab[] = { X! { "btn/sq_green.gif", 0, 204, 0 }, X! { "btn/sq_blue.gif", 0, 0, 255 }, X! { "btn/sq_red.gif", 255, 0, 0 }, X! { "btn/sq_orange.gif", 222, 102, 0 }, X! { "btn/sq_yellow.gif", 242, 242, 0 }, X! { "btn/sq_magenta.gif", 153, 0, 255 }, X! { "btn/sq_grey.gif", 204, 204, 204 } X }; X X BTN_TAB buttons[] = { /* various images */ X! { "btn/netstore_sw.gif", "Netstore", 0, 0 }, X! { "btn/netstore_sb.gif", "Netstore", 0, 0 }, X! { "btn/RAG_sw.gif", NULL, 0, 0 }, X! { "btn/RAG_sb.gif", NULL, 0, 0 }, X! { "btn/year_off.gif", "summary", 0, 0 }, X! { "btn/totals_off.gif", "totals", 0, 0 }, X! { "btn/days_off.gif", "days", 0, 0 }, X { NULL, NULL, 0, 0 }, X { NULL, NULL, 0, 0 }, X! { "btn/avload_off.gif", "avload", 0, 0 }, X! { "btn/topurl_off.gif", "topurl", 0, 0 }, X! { "btn/topdom_off.gif", "topdom", 0, 0 }, X! { "btn/topuag_off.gif", "topuag", 0, 0 }, X! { "btn/topref_off.gif", "topref", 0, 0 }, X! { "btn/cntry_off.gif", "country", 0, 0 }, X! { "btn/files_off.gif", "files", 0, 0 }, X! { "btn/rfiles_off.gif", "rfiles", 0, 0 }, X! { "btn/sites_off.gif", "sites", 0, 0 }, X! { "btn/rsites_off.gif", "rsites", 0, 0 }, X! { "btn/agents_off.gif", "agents", 0, 0 }, X! { "btn/refers_off.gif", "refers", 0, 0 } X }; X X static void mkIcon(char * const fname, ICON_TAB * const tp) { X--- 996,1032 ---- X } X X ICON_TAB icon_tab[] = { X! { "btn/sq_green.png", 0, 204, 0 }, X! { "btn/sq_blue.png", 0, 0, 255 }, X! { "btn/sq_red.png", 255, 0, 0 }, X! { "btn/sq_orange.png", 222, 102, 0 }, X! { "btn/sq_yellow.png", 242, 242, 0 }, X! { "btn/sq_magenta.png", 153, 0, 255 }, X! { "btn/sq_grey.png", 204, 204, 204 } X }; X X BTN_TAB buttons[] = { /* various images */ X! { "btn/netstore_sw.png", "Netstore", 0, 0 }, X! { "btn/netstore_sb.png", "Netstore", 0, 0 }, X! { "btn/RAG_sw.png", NULL, 0, 0 }, X! { "btn/RAG_sb.png", NULL, 0, 0 }, X! { "btn/year_off.png", "summary", 0, 0 }, X! { "btn/totals_off.png", "totals", 0, 0 }, X! { "btn/days_off.png", "days", 0, 0 }, X { NULL, NULL, 0, 0 }, X { NULL, NULL, 0, 0 }, X! { "btn/avload_off.png", "avload", 0, 0 }, X! { "btn/topurl_off.png", "topurl", 0, 0 }, X! { "btn/topdom_off.png", "topdom", 0, 0 }, X! { "btn/topuag_off.png", "topuag", 0, 0 }, X! { "btn/topref_off.png", "topref", 0, 0 }, X! { "btn/cntry_off.png", "country", 0, 0 }, X! { "btn/files_off.png", "files", 0, 0 }, X! { "btn/rfiles_off.png", "rfiles", 0, 0 }, X! { "btn/sites_off.png", "sites", 0, 0 }, X! { "btn/rsites_off.png", "rsites", 0, 0 }, X! { "btn/agents_off.png", "agents", 0, 0 }, X! { "btn/refers_off.png", "refers", 0, 0 } X }; X X static void mkIcon(char * const fname, ICON_TAB * const tp) { XEOP X echo "===> Converting gifs to png format" X find $gifdir -name "*gif" -type f -exec $gif2png -d -O {} \; Xelif [ -z $gif2png ]; then X echo "*** Convertion of gifs failed." X echo "*** Running http-analyze with the -f option may cause segmentation faults." X echo "*** It is recommended to install gif2png and reinstall this port." Xfi X Xexit 0 END-of-/usr/ports/www/http-analyze/scripts/post-patch echo x - /usr/ports/www/http-analyze/distinfo sed 's/^X//' >/usr/ports/www/http-analyze/distinfo << 'END-of-/usr/ports/www/http-analyze/distinfo' XMD5 (http-analyze2.01-src.tar.gz) = d17abdc0e1d43fbb2563ff2c9eb127f7 END-of-/usr/ports/www/http-analyze/distinfo echo x - /usr/ports/www/http-analyze/pkg-descr sed 's/^X//' >/usr/ports/www/http-analyze/pkg-descr << 'END-of-/usr/ports/www/http-analyze/pkg-descr' Xhttp-analyze analyzes the logfile of a web server and creates Xa summary of the server's access load and the efficiency of Xcaching mechanisms in X X o tabular X o graphical X o and three-dimensional form. X Xhttp-analyze recognizes logfiles in Common Logfile Format and has Xbeen highly optimized for processing huge logfiles in short Xupdate-intervals. X XWWW: http://www.netstore.de/Supply/http-analyze/ END-of-/usr/ports/www/http-analyze/pkg-descr echo x - /usr/ports/www/http-analyze/pkg-plist sed 's/^X//' >/usr/ports/www/http-analyze/pkg-plist << 'END-of-/usr/ports/www/http-analyze/pkg-plist' Xbin/ha-setup Xbin/http-analyze Xlib/http-analyze/3Dlogo.wrl.gz Xlib/http-analyze/3Dprolog.wrl Xlib/http-analyze/3DshelfMotion.wav Xlib/http-analyze/TLD Xlib/http-analyze/btn/RAG_sb.png Xlib/http-analyze/btn/RAG_sw.png Xlib/http-analyze/btn/agents_off.png Xlib/http-analyze/btn/agents_on.png Xlib/http-analyze/btn/avload_off.png Xlib/http-analyze/btn/avload_on.png Xlib/http-analyze/btn/cntry_off.png Xlib/http-analyze/btn/cntry_on.png Xlib/http-analyze/btn/days_off.png Xlib/http-analyze/btn/days_on.png Xlib/http-analyze/btn/files_off.png Xlib/http-analyze/btn/files_on.png Xlib/http-analyze/btn/globe.jpg Xlib/http-analyze/btn/ha2.0_sm.png Xlib/http-analyze/btn/netstore_sb.png Xlib/http-analyze/btn/netstore_sw.png Xlib/http-analyze/btn/refers_off.png Xlib/http-analyze/btn/refers_on.png Xlib/http-analyze/btn/rfiles_off.png Xlib/http-analyze/btn/rfiles_on.png Xlib/http-analyze/btn/rsites_off.png Xlib/http-analyze/btn/rsites_on.png Xlib/http-analyze/btn/sites_off.png Xlib/http-analyze/btn/sites_on.png Xlib/http-analyze/btn/topdom_off.png Xlib/http-analyze/btn/topdom_on.png Xlib/http-analyze/btn/topref_off.png Xlib/http-analyze/btn/topref_on.png Xlib/http-analyze/btn/topuag_off.png Xlib/http-analyze/btn/topuag_on.png Xlib/http-analyze/btn/topurl_off.png Xlib/http-analyze/btn/topurl_on.png Xlib/http-analyze/btn/totals_off.png Xlib/http-analyze/btn/totals_on.png Xlib/http-analyze/btn/year_off.png Xlib/http-analyze/btn/year_on.png Xlib/http-analyze/bugreport.html Xlib/http-analyze/rotate-httpd Xlib/http-analyze/sample.conf Xshare/doc/http-analyze/http-analyze.pdf Xshare/doc/http-analyze/http-analyze.ps X@dirrm lib/http-analyze/btn X@dirrm lib/http-analyze X@dirrm share/doc/http-analyze END-of-/usr/ports/www/http-analyze/pkg-plist exit >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message