ports/69349: New port: net/jit jabber icq transport

Alexander Timoshenko gonzo at univ.kiev.ua
Tue Jul 20 17:20:16 UTC 2004


>Number:         69349
>Category:       ports
>Synopsis:       New port: net/jit jabber icq transport
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jul 20 17:20:15 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Alexander Timoshenko
>Release:        FreeBSD 5.2.1-RELEASE-p1 i386
>Organization:
>Environment:
System: FreeBSD expo.ukrweb.net 5.2.1-RELEASE-p1 FreeBSD 5.2.1-RELEASE-p1 #2: Thu Mar 18 17:45:54 EET 2004 levsha at expo.ukrweb.net:/usr/obj/usr/src/sys/EXPO i386


>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:
#
#	jit
#	jit/files
#	jit/files/patch-jit::jit::wp_client.cpp
#	jit/files/patch-jabberd::mio_xml.c
#	jit/files/patch-Makefile
#	jit/files/patch-jabberd::mtq.c
#	jit/files/patch-jit::jabber-icq.example
#	jit/files/patch-jit::jit.sh
#	jit/files/patch-disco-sg2
#	jit/Makefile
#	jit/distinfo
#	jit/pkg-descr
#	jit/pkg-plist
#	jit/pkg-install
#	jit/pkg-deinstall
#
echo c - jit
mkdir -p jit > /dev/null 2>&1
echo c - jit/files
mkdir -p jit/files > /dev/null 2>&1
echo x - jit/files/patch-jit::jit::wp_client.cpp
sed 's/^X//' >jit/files/patch-jit::jit::wp_client.cpp << 'END-of-jit/files/patch-jit::jit::wp_client.cpp'
X--- jit/jit/wp_client.cpp	Tue Jul  6 18:58:45 2004
X+++ jit/jit/wp_client.cpp	Tue Jul  6 18:55:31 2004
X@@ -146,7 +146,8 @@
X }
X 
X void WPclient::SignalDisconnected(DisconnectedEvent *ev) {
X-  terror e = (terror){0,""};
X+  terror e;
X+  e = (terror){0,""};
X   
X   switch(ev->getReason()){
X   case DisconnectedEvent::FAILED_BADUSERNAME:
END-of-jit/files/patch-jit::jit::wp_client.cpp
echo x - jit/files/patch-jabberd::mio_xml.c
sed 's/^X//' >jit/files/patch-jabberd::mio_xml.c << 'END-of-jit/files/patch-jabberd::mio_xml.c'
X--- jabberd/mio_xml.c.orig	Tue Jul  6 19:06:24 2004
X+++ jabberd/mio_xml.c	Tue Jul  6 19:07:34 2004
X@@ -142,14 +142,13 @@
X         nul += 4;
X         bufsz = bufsz - (nul - buf);
X         buf = nul;
X-        mio_write(m,NULL,"HTTP/1.0 200 Ok
X-Server: jabber/xmlstream-hack-0.1
X-Expires: Fri, 10 Oct 1997 10:10:10 GMT
X-Pragma: no-cache
X-Cache-control: private
X-Connection: close
X-
X-",-1);
X+        mio_write(m,NULL,"HTTP/1.0 200 Ok\n" \
X+"Server: jabber/xmlstream-hack-0.1\n" \
X+"Expires: Fri, 10 Oct 1997 10:10:10 GMT\n" \
X+"Pragma: no-cache\n" \
X+"Cache-control: private\n" \
X+"Connection: close\n" \
X+"\n", -1);
X         m->type = type_NORMAL;
X     }
X 
END-of-jit/files/patch-jabberd::mio_xml.c
echo x - jit/files/patch-Makefile
sed 's/^X//' >jit/files/patch-Makefile << 'END-of-jit/files/patch-Makefile'
X--- Makefile.orig	Tue Jul  6 19:11:02 2004
X+++ Makefile	Tue Jul  6 19:10:53 2004
X@@ -2,6 +2,7 @@
X all:
X 	(cd jit && $(MAKE))
X 	(cd jabberd && $(MAKE))
X+	(cd xdb_file && $(MAKE))
X 
X clean:
X 	(cd jit && $(MAKE) clean)
END-of-jit/files/patch-Makefile
echo x - jit/files/patch-jabberd::mtq.c
sed 's/^X//' >jit/files/patch-jabberd::mtq.c << 'END-of-jit/files/patch-jabberd::mtq.c'
X--- jabberd/mtq.c.orig	Tue Jul  6 19:18:05 2004
X+++ jabberd/mtq.c	Tue Jul  6 19:18:29 2004
X@@ -127,7 +127,7 @@
X     while(1) {
X 
X 		if  (t->mtq->last == NULL ) {
X-		  Sleep(1);
X+		  Sleep(500);
X 		}
X 
X 		
END-of-jit/files/patch-jabberd::mtq.c
echo x - jit/files/patch-jit::jabber-icq.example
sed 's/^X//' >jit/files/patch-jit::jabber-icq.example << 'END-of-jit/files/patch-jit::jabber-icq.example'
X--- jit/jabber-icq.example.orig	Tue Jul 20 16:54:23 2004
X+++ jit/jabber-icq.example	Tue Jul 20 16:59:10 2004
X@@ -23,16 +23,16 @@
X      XDB requests. This is strongly recommended if
X      you use xdb_ldap, xdb_sql or other non-file XDB
X      implementations, too.
X-     See xdb_file directory for more information.
X+     See xdb_file directory for more information. -->
X   <xdb id="xdb">
X     <host/>
X     <load>
X-      <xdb_file>xdb_file/xdb_file.so</xdb_file>
X+      <xdb_file>%%PREFIX%%/lib/jabber/jit/xdb_file.so</xdb_file>
X     </load>
X     <xdb_file xmlns="jabber:config:xdb_file">
X       <spool><jabberd:cmdline flag='s'>./spool</jabberd:cmdline></spool>
X     </xdb_file>
X-  </xdb> -->
X+  </xdb>
X 
X   <!--
X      localhost is your jabber host.
X@@ -102,22 +102,21 @@
X       <session_timeout>18000</session_timeout>
X 
X       <!-- Charset -->
X-      <charset>windows-1252</charset>
X+      <charset>windows-1251</charset>
X 
X       <!-- These IP is login.icq.com 
X            Use only IPs here, no host names. 
X 	   You can use hostnames but this will slow down JIT due to DNS resoling
X 	   -->
X       <server>
X-	 <host port="5190">205.188.179.233</host>
X-	 <host port="5190">64.12.200.89</host>
X+	 <host port="5190">login.icq.com</host>
X       </server>
X 
X     </icqtrans>
X 
X     <!-- JIT module -->
X     <load>
X-      <icqtrans>jit/jit.so</icqtrans>
X+      <icqtrans>%%PREFIX%%/lib/jabber/jit/jit.so</icqtrans>
X     </load>
X 
X   </service>
END-of-jit/files/patch-jit::jabber-icq.example
echo x - jit/files/patch-jit::jit.sh
sed 's/^X//' >jit/files/patch-jit::jit.sh << 'END-of-jit/files/patch-jit::jit.sh'
X--- jit/jit.sh.orig	Tue Jul 20 17:09:59 2004
X+++ jit/jit.sh	Tue Jul 20 17:10:47 2004
X@@ -0,0 +1,13 @@
X+#!/bin/sh
X+
X+PREFIX=%%PREFIX%%
X+USER="jabber"
X+
X+echo -n " jit"
X+case ${1:-start} in
X+start)
X+    su -f -m ${USER} -c "$PREFIX/sbin/jit -c $PREFIX/etc/jabber-icq.xml -d " ;;
X+
X+stop)
X+    killall -SIGKILL -u ${USER} jit;
X+esac
END-of-jit/files/patch-jit::jit.sh
echo x - jit/files/patch-disco-sg2
sed 's/^X//' >jit/files/patch-disco-sg2 << 'END-of-jit/files/patch-disco-sg2'
Xdiff -ru jabber.orig/lib/lib.h jabberd/lib/lib.h
X--- jabber.orig/lib/lib.h	2003-05-30 16:10:24.000000000 +0400
X+++ jabberd/lib/lib.h	2003-12-11 22:48:04.000000000 +0300
X@@ -654,6 +654,9 @@
X #define NS_XDBGINSERT "jabber:xdb:ginsert"
X #define NS_XDBNSLIST  "jabber:xdb:nslist"
X 
X+#define NS_DISCO_INFO  "http://jabber.org/protocol/disco#info"
X+#define NS_DISCO_ITEMS "http://jabber.org/protocol/disco#items"
X+
X 
X /* --------------------------------------------------------- */
X /*                                                           */
Xdiff -ru jit.orig/jit/icqtransport.h jit/jit/icqtransport.h
X--- jit.orig/jit/icqtransport.h	2003-06-02 14:06:51.000000000 +0400
X+++ jit/jit/icqtransport.h	2003-12-12 13:14:40.000000000 +0300
X@@ -20,7 +20,7 @@
X #include "utils/english.h"
X #endif
X 
X-#define MOD_VERSION "1.1.6"
X+#define MOD_VERSION "1.1.6-sg2"
X #define DEFAULT_CHARSET "iso-8859-1"
X 
X typedef unsigned long UIN_t;
X@@ -290,6 +290,10 @@
X void it_iq_gateway_set(session s, jpacket jp);
X void it_iq_browse_server(iti ti, jpacket jp);
X void it_iq_browse_user(session s, jpacket jp);
X+void it_iq_disco_info_server(iti ti, jpacket jp);
X+void it_iq_disco_info_user(session s, jpacket jp);
X+void it_iq_disco_items_server(iti ti, jpacket jp);
X+void it_iq_disco_items_user(session s, jpacket jp);
X 
X 
X void it_save_contacts(session s);
Xdiff -ru jit.orig/jit/iq.c jit/jit/iq.c
X--- jit.orig/jit/iq.c	2003-04-29 15:03:53.000000000 +0400
X+++ jit/jit/iq.c	2003-12-11 22:48:04.000000000 +0300
X@@ -29,6 +29,10 @@
X void it_iq_gateway_set(session s, jpacket jp);
X void it_iq_browse_server(iti ti, jpacket jp);
X void it_iq_browse_user(session s, jpacket jp);
X+void it_iq_disco_info_server(iti ti, jpacket jp);
X+void it_iq_disco_info_user(session s, jpacket jp);
X+void it_iq_disco_items_server(iti ti, jpacket jp);
X+void it_iq_disco_items_user(session s, jpacket jp);
X 
X void SendSearchUINRequest(session s,UIN_t uin);
X void SendSearchUsersRequest(session s, 
X@@ -73,6 +77,10 @@
X           it_iq_gateway_get(s,jp);
X         else if (j_strcmp(ns,NS_BROWSE) == 0)
X           jp->to->user ? it_iq_browse_user(s,jp) : it_iq_browse_server(s->ti,jp);    
X+        else if (j_strcmp(ns,NS_DISCO_INFO) == 0)
X+          jp->to->user ? it_iq_disco_info_user(s,jp) : it_iq_disco_info_server(s->ti,jp);    
X+        else if (j_strcmp(ns,NS_DISCO_ITEMS) == 0)
X+          jp->to->user ? it_iq_disco_items_user(s,jp) : it_iq_disco_items_server(s->ti,jp);    
X         else if (j_strcmp(ns,NS_VCARD) == 0)
X           jp->to->user ? it_iq_vcard(s,jp) : it_iq_vcard_server(s->ti,jp);
X         else if (j_strcmp(ns,NS_LAST) == 0)
X@@ -503,6 +511,8 @@
X     xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_REGISTER,-1);
X     xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_SEARCH,-1);
X     xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_GATEWAY,-1);
X+    xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_DISCO_INFO,-1);
X+    xmlnode_insert_cdata(xmlnode_insert_tag(q,"ns"),NS_DISCO_ITEMS,-1);
X 
X     it_deliver(ti,jp->x);
X }
X@@ -538,6 +548,131 @@
X     it_deliver(s->ti,jp->x);
X }
X 
X+/** Service Discovery support (JEP-0030) */
X+/** Info */
X+
X+void it_iq_disco_info_server(iti ti, jpacket jp)
X+{
X+    xmlnode q, x;
X+
X+    if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
X+    {
X+	jutil_error(jp->x,TERROR_NOTALLOWED);
X+	it_deliver(ti,jp->x);
X+	return;
X+    }
X+
X+    q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
X+    xmlnode_put_attrib(q,"xmlns",NS_DISCO_INFO);
X+
X+    x = xmlnode_insert_tag(q,"identity");
X+    xmlnode_put_attrib(x,"category","gateway");
X+    xmlnode_put_attrib(x,"type","icq");
X+    xmlnode_put_attrib(x,"name",xmlnode_get_tag_data(ti->vcard,"FN"));
X+
X+    xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_REGISTER);
X+    xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_SEARCH);
X+    xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_VERSION);
X+    xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_TIME);
X+    xmlnode_put_attrib(xmlnode_insert_tag(q,"feature"),"var",NS_LAST);
X+
X+    it_deliver(ti,jp->x);
X+}
X+
X+void it_iq_disco_info_user(session s, jpacket jp)
X+{
X+    xmlnode q, x;
X+
X+    if (s->type == stype_register)
X+    {
X+      queue_elem queue;
X+
X+      queue = pmalloco(jp->p,sizeof(_queue_elem));
X+      queue->elem = (void *)jp;
X+      
X+      QUEUE_PUT(s->queue,s->queue_last,queue);
X+      return;
X+    }
X+
X+    if (it_jid2uin(jp->from) == 0)
X+    {
X+        jutil_error(jp->x,TERROR_BAD);
X+        it_deliver(s->ti,jp->x);
X+        return;
X+    }
X+
X+    if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
X+    {
X+        jutil_error(jp->x,TERROR_NOTALLOWED);
X+        it_deliver(s->ti,jp->x);
X+        return;
X+    }
X+
X+    q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
X+    xmlnode_put_attrib(q,"xmlns",NS_DISCO_INFO);
X+    x = xmlnode_insert_tag(q,"identity");
X+    xmlnode_put_attrib(x,"category","user");
X+    xmlnode_put_attrib(x,"type","client");
X+    xmlnode_put_attrib(x,"name", jp->to->user);
X+
X+    it_deliver(s->ti,jp->x);
X+}
X+
X+/** Service Discovery support (JEP-0030) */
X+/** Items */
X+
X+void it_iq_disco_items_server(iti ti, jpacket jp)
X+{
X+    xmlnode q;
X+
X+    if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
X+    {
X+	jutil_error(jp->x,TERROR_NOTALLOWED);
X+	it_deliver(ti,jp->x);
X+	return;
X+    }
X+
X+    q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
X+    xmlnode_put_attrib(q,"xmlns",NS_DISCO_ITEMS);
X+
X+    it_deliver(ti,jp->x);
X+}
X+
X+void it_iq_disco_items_user(session s, jpacket jp)
X+{
X+    xmlnode q;
X+
X+    if (s->type == stype_register)
X+    {
X+      queue_elem queue;
X+
X+      queue = pmalloco(jp->p,sizeof(_queue_elem));
X+      queue->elem = (void *)jp;
X+      
X+      QUEUE_PUT(s->queue,s->queue_last,queue);
X+      return;
X+    }
X+
X+    if (it_jid2uin(jp->from) == 0)
X+    {
X+        jutil_error(jp->x,TERROR_BAD);
X+        it_deliver(s->ti,jp->x);
X+        return;
X+    }
X+
X+    if(xmlnode_get_attrib(xmlnode_get_tag(jp->x, "query"),"node") != NULL)
X+    {
X+        jutil_error(jp->x,TERROR_NOTALLOWED);
X+        it_deliver(s->ti,jp->x);
X+        return;
X+    }
X+
X+    q = xmlnode_insert_tag(jutil_iqresult(jp->x),"query");
X+    xmlnode_put_attrib(q,"xmlns",NS_DISCO_ITEMS);
X+
X+    it_deliver(s->ti,jp->x);
X+}
X+
X /** Send reply to a version inquiry to Jabber */
X void it_iq_version(iti ti, jpacket jp)
X {
Xdiff -ru jit.orig/jit/session.c jit/jit/session.c
X--- jit.orig/jit/session.c	2003-05-12 15:07:53.000000000 +0400
X+++ jit/jit/session.c	2003-12-12 12:59:30.000000000 +0300
X@@ -429,6 +429,11 @@
X          time(NULL)-s->start_time);
X     }
X     
X+    if ((s->ti->own_roster)&&(s->roster_changed)) {
X+	it_save_contacts(s);
X+	s->roster_changed = 0;
X+    }
X+
X     /* remove from hash */
X 	SEM_LOCK(s->ti->sessions_sem);
X     wpxhash_zap(s->ti->sessions,jid_full(s->id));
X@@ -468,6 +473,11 @@
X   else 
X     it_session_regerr(s,e);
X 
X+    if ((s->ti->own_roster)&&(s->roster_changed)) {
X+	it_save_contacts(s);
X+	s->roster_changed = 0;
X+    }
X+
X   /* remove from hash */
X   SEM_LOCK(s->ti->sessions_sem);
X   wpxhash_zap(s->ti->sessions,jid_full(s->id));
Xdiff -ru jit.orig/jit/unknown.c jit/jit/unknown.c
X--- jit.orig/jit/unknown.c	2003-04-29 14:19:42.000000000 +0400
X+++ jit/jit/unknown.c	2003-12-11 22:48:04.000000000 +0300
X@@ -84,6 +84,10 @@
X 		}
X 		else if (j_strcmp(ns,NS_BROWSE) == 0)
X             it_iq_browse_server(ti,jp);
X+	else if (j_strcmp(ns,NS_DISCO_INFO) == 0)
X+            it_iq_disco_info_server(ti,jp);
X+	else if (j_strcmp(ns,NS_DISCO_ITEMS) == 0)
X+            it_iq_disco_items_server(ti,jp);
X         else if (j_strcmp(ns,NS_VERSION) == 0)
X             it_iq_version(ti,jp);
X         else if (j_strcmp(ns,NS_TIME) == 0)
END-of-jit/files/patch-disco-sg2
echo x - jit/Makefile
sed 's/^X//' >jit/Makefile << 'END-of-jit/Makefile'
X# New ports collection makefile for:    jit
X# Date created:                 20 July 2004
X# Whom:                         Alexander Timoshenko <gonzo at univ.kiev.ua>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	jit
XPORTVERSION=	1.1.6
XCATEGORIES=	net
XMASTER_SITES=	http://www.jabberstudio.org/files/jit/
XDIST_SUBDIR=	jabber
X
XMAINTAINER=	gonzo at univ.kiev.ua
XCOMMENT=	Jabber ICQ Transport
X
XUSE_GMAKE=	yes
XUSE_REINPLACE=  yes
XHAS_CONFIGURE=	yes
X
Xpost-patch:
X	@${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' \
X		${WRKSRC}/jit/jabber-icq.example ${WRKSRC}/jit/jit.sh
X
Xdo-install:
X	@${MKDIR} ${PREFIX}/lib/jabber/jit
X	@${INSTALL_DATA} ${WRKSRC}/jit/jit.so ${PREFIX}/lib/jabber/jit
X	@${INSTALL_DATA} ${WRKSRC}/xdb_file/xdb_file.so ${PREFIX}/lib/jabber/jit
X	@${INSTALL_PROGRAM} ${WRKSRC}/jabberd/jabberd  ${PREFIX}/sbin/jit
X	@${INSTALL_DATA} ${WRKSRC}/jit/jabber-icq.example ${PREFIX}/etc
X	@${INSTALL_SCRIPT} ${WRKSRC}/jit/jit.sh  ${PREFIX}/etc/rc.d
X
Xpost-install:
X	@PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
X
X.include <bsd.port.mk>
END-of-jit/Makefile
echo x - jit/distinfo
sed 's/^X//' >jit/distinfo << 'END-of-jit/distinfo'
XMD5 (jabber/jit-1.1.6.tar.gz) = 950f6b82ab5e0542535108fd54409363
XSIZE (jabber/jit-1.1.6.tar.gz) = 275246
END-of-jit/distinfo
echo x - jit/pkg-descr
sed 's/^X//' >jit/pkg-descr << 'END-of-jit/pkg-descr'
XJIT - Jabber ICQ Transport - is a working and stable Jabber 
Xtransport which provides interoperability between ICQ and 
XJabber IM systems. 
X
XWWW: http://jit.jabberstudio.org/
END-of-jit/pkg-descr
echo x - jit/pkg-plist
sed 's/^X//' >jit/pkg-plist << 'END-of-jit/pkg-plist'
Xlib/jabber/jit/jit.so
Xlib/jabber/jit/xdb_file.so
Xsbin/jit
Xetc/jabber-icq.example
Xetc/rc.d/jit.sh
X at dirrm lib/jabber/jit
END-of-jit/pkg-plist
echo x - jit/pkg-install
sed 's/^X//' >jit/pkg-install << 'END-of-jit/pkg-install'
X#!/bin/sh
X
Xif [ "$2" != "POST-INSTALL" ]; then
X    exit 0
Xfi
X
XUSER=jabber
XGROUP=${USER}
XUID=93
XGID=${UID}
XSPOOLDIR="/var/spool/jit"
X
Xif ! pw groupshow "${GROUP}" 2>/dev/null 1>&2; then
X	if pw groupadd ${GROUP} -g ${GID}; then
X		echo "Added group \"${GROUP}\"."
X	else
X		echo "Adding group \"${GROUP}\" failed..."
X		exit 1
X	fi
Xfi
X
Xif ! pw usershow "${USER}" 2>/dev/null 1>&2; then
X	if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \
X		-s "/sbin/nologin" -d "/nonexistent" \
X		-c "Jabber Daemon"; \
X	then
X		echo "Added user \"${USER}\"."
X	else
X		echo "Adding user \"${USER}\" failed..."
X		exit 1
X	fi
Xfi
X
Xif [ ! -d ${SPOOLDIR} ]; then
X	echo "Creating \"${SPOOLDIR}\"."
X	mkdir -p ${SPOOLDIR}
Xfi
X
Xecho "Fixing ownerships and modes in \"${SPOOLDIR}\"."
Xchown -R ${USER}:${GROUP} ${SPOOLDIR}
Xchmod -R go= ${SPOOLDIR}
END-of-jit/pkg-install
echo x - jit/pkg-deinstall
sed 's/^X//' >jit/pkg-deinstall << 'END-of-jit/pkg-deinstall'
X#!/bin/sh
X
Xif [ "$2" != "POST-DEINSTALL" ]; then
X    exit 0
Xfi
X
XUSER=jabber
X
Xif pw usershow "${USER}" 2>/dev/null 1>&2; then
X	echo "To delete Jabber user permanently, use 'pw userdel ${USER}'"
Xfi
X
Xif pw groupshow "${USER}" 2>/dev/null 1>&2; then
X	echo "To delete Jabber group permanently, use 'pw groupdel ${USER}'"
Xfi
X
Xecho "If you wish to delete jit data files, remove '/var/spool/jit' directory."
X
Xexit 0
END-of-jit/pkg-deinstall
exit

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list