diff --git a/src/sbbs3/qwknodes.c b/src/sbbs3/qwknodes.c
index 139a5bff4a65d58cb58504f40d11aa26f70c0aac..2f024390eda65df000e20f3c854a03f45661e6d5 100644
--- a/src/sbbs3/qwknodes.c
+++ b/src/sbbs3/qwknodes.c
@@ -1,14 +1,12 @@
-/* QWKNODES.C */
+/* $Id$ */
 
 /* Synchronet QWKnet node list or route.dat file generator */
 
-/* $Id$ */
-
 /****************************************************************************
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
  *																			*
- * Copyright 2000 Rob Swindell - http://www.synchro.net/copyright.html		*
+ * Copyright 2005 Rob Swindell - http://www.synchro.net/copyright.html		*
  *																			*
  * This program is free software; you can redistribute it and/or			*
  * modify it under the terms of the GNU General Public License				*
@@ -35,13 +33,11 @@
  * Note: If this box doesn't appear square, then you need to fix your tabs.	*
  ****************************************************************************/
 
-#include "gen_defs.h"
-#include "genwrap.h"
-#include "dirwrap.h"
 #include "sbbs.h"
 #include "nopen.h"
 #include "crc16.h"
 #include "crc32.h"
+#include "conwrap.h"	/* kbhit */
 
 unsigned _stklen=10000;
 smb_t		smb;
@@ -52,29 +48,29 @@ void stripctrla(uchar *str)
 	uchar out[256];
 	int i,j;
 
-for(i=j=0;str[i];i++) {
-	if(str[i]==CTRL_A && str[i+1]!=0)
-		i++;
-	else
-		out[j++]=str[i]; }
-out[j]=0;
-strcpy(str,out);
+	for(i=j=0;str[i];i++) {
+		if(str[i]==CTRL_A && str[i+1]!=0)
+			i++;
+		else
+			out[j++]=str[i]; 
+	}
+	out[j]=0;
+	strcpy(str,out);
 }
 
-
 int lputs(char* str)
 {
     char tmp[256];
     int i,j,k;
 
-j=strlen(str);
-for(i=k=0;i<j;i++)      /* remove CRs */
-    if(str[i]==CR && str[i+1]==LF)
-        continue;
-    else
-        tmp[k++]=str[i];
-tmp[k]=0;
-return(fputs(tmp,stderr));
+	j=strlen(str);
+	for(i=k=0;i<j;i++)      /* remove CRs */
+		if(str[i]==CR && str[i+1]==LF)
+			continue;
+		else
+			tmp[k++]=str[i];
+	tmp[k]=0;
+	return(fputs(tmp,stderr));
 }
 /****************************************************************************/
 /* Performs printf() through local assembly routines                        */
@@ -105,20 +101,21 @@ char *loadmsgtail(smbmsg_t msg)
 	int 	i;
 	long	l=0,length;
 
-for(i=0;i<msg.hdr.total_dfields;i++) {
-	if(msg.dfield[i].type!=TEXT_TAIL)
-		continue;
-	fseek(smb.sdt_fp,msg.hdr.offset+msg.dfield[i].offset
-		,SEEK_SET);
-	fread(&xlat,2,1,smb.sdt_fp);
-	if(xlat!=XLAT_NONE) 		/* no translations supported */
-		continue;
-	length=msg.dfield[i].length-2;
-	if((buf=REALLOC(buf,l+msg.dfield[i].length+1))==NULL)
-		return(buf);
-	l+=fread(buf+l,1,length,smb.sdt_fp);
-	buf[l]=0; }
-return(buf);
+	for(i=0;i<msg.hdr.total_dfields;i++) {
+		if(msg.dfield[i].type!=TEXT_TAIL)
+			continue;
+		fseek(smb.sdt_fp,msg.hdr.offset+msg.dfield[i].offset
+			,SEEK_SET);
+		fread(&xlat,2,1,smb.sdt_fp);
+		if(xlat!=XLAT_NONE) 		/* no translations supported */
+			continue;
+		length=msg.dfield[i].length-2;
+		if((buf=REALLOC(buf,l+msg.dfield[i].length+1))==NULL)
+			return(buf);
+		l+=fread(buf+l,1,length,smb.sdt_fp);
+		buf[l]=0; 
+	}
+	return(buf);
 }
 
 
@@ -126,22 +123,22 @@ void gettag(smbmsg_t msg, char *tag)
 {
 	char *buf,*p;
 
-tag[0]=0;
-buf=loadmsgtail(msg);
-if(buf==NULL)
-	return;
-truncsp(buf);
-stripctrla(buf);
-p=strrchr(buf,LF);
-if(!p) p=buf;
-else p++;
-if(!strnicmp(p," � Synchronet � ",16))
-	p+=16;
-if(!strnicmp(p," * Synchronet * ",16))
-    p+=16;
-while(*p && *p<=' ') p++;
-strcpy(tag,p);
-FREE(buf);
+	tag[0]=0;
+	buf=loadmsgtail(msg);
+	if(buf==NULL)
+		return;
+	truncsp(buf);
+	stripctrla(buf);
+	p=strrchr(buf,LF);
+	if(!p) p=buf;
+	else p++;
+	if(!strnicmp(p," � Synchronet � ",16))
+		p+=16;
+	if(!strnicmp(p," * Synchronet * ",16))
+		p+=16;
+	while(*p && *p<=' ') p++;
+	strcpy(tag,p);
+	FREE(buf);
 }
 
 
@@ -154,7 +151,7 @@ FREE(buf);
 #define NODES  (1<<2)
 #define USERS  (1<<3)
 
-char *usage="\nusage: qwknodes [/opts] cmds"
+char *usage="\nusage: qwknodes [-opts] cmds"
 			"\n"
 			"\n cmds: r  =  create route.dat"
 			"\n       u  =  create users.dat"
@@ -169,263 +166,263 @@ char *usage="\nusage: qwknodes [/opts] cmds"
 
 int main(int argc, char **argv)
 {
-	char			str[256],tmp[128],tag[256],addr[256],*p;
-	int 			i,j,mode=0,cmd=0,o_mode,max_age=0;
-	ushort			smm,sbl;
-	ulong			*crc=NULL,curcrc,total_crcs=0,l;
-	FILE			*route,*users,*nodes;
-	time_t			now;
-	smbmsg_t		msg;
-	char			*ctrl_dir;
-
-fprintf(stderr,"\nSynchronet QWKnet Node/Route/User List  v1.20  "
-	"Copyright 2000 Rob Swindell\n");
-
-
-for(i=1;i<argc;i++)
-	for(j=0;argv[i][j];j++)
-		switch(toupper(argv[i][j])) {
-			case '/':
-			case '-':
-				while(argv[i][++j])
-					switch(toupper(argv[i][j])) {
-						case 'F':
-							mode|=FEED;
-							break;
-						case 'L':
-							mode|=LOCAL;
-							break;
-						case 'A':
-							mode|=APPEND;
-							break;
-						case 'T':
-							mode|=TAGS;
-							break;
-						case 'M':
-							j++;
-							max_age=atoi(argv[i]+j);
-							while(isdigit(argv[i][j+1])) j++;
-							break;
-						default:
-							printf(usage);
-							return(1); }
-				j--;
-				break;
-			case 'R':
-				cmd|=ROUTE;
-				break;
-			case 'U':
-				cmd|=USERS;
-				break;
-			case 'N':
-				cmd|=NODES;
-				break;
-			default:
-				printf(usage);
-				return(1); }
-
-if(!cmd) {
-	printf(usage);
-	return(1); }
-
-if(mode&APPEND)
-	o_mode=O_WRONLY|O_CREAT|O_APPEND;
-else
-	o_mode=O_WRONLY|O_CREAT|O_TRUNC;
-
-if(cmd&NODES)
-	if((nodes=fnopen(&i,"nodes.dat",o_mode))==NULL) {
-		printf("\7\nError opening nodes.dat\n");
-		return(1); }
-
-if(cmd&USERS)
-	if((users=fnopen(&i,"users.dat",o_mode))==NULL) {
-		printf("\7\nError opening users.dat\n");
-        return(1); }
-
-if(cmd&ROUTE)
-	if((route=fnopen(&i,"route.dat",o_mode))==NULL) {
-		printf("\7\nError opening route.dat\n");
-        return(1); }
-
-cfg.size=sizeof(cfg);
-ctrl_dir=getenv("SBBSCTRL");
-if(ctrl_dir==NULL || ctrl_dir[0]==0) {
-	ctrl_dir="/sbbs/ctrl";          /* Not set? Use default */
-	printf("!SBBSCTRL environment variable not set, using default value: %s\n\n"
-			,ctrl_dir);
-}
-SAFECOPY(cfg.ctrl_dir, ctrl_dir);
-
-if(!load_cfg(&cfg, NULL, TRUE, str)) {
-	printf("\7\n%s\n",str);
-}
-
-#if 0
-if(!cfg.node_dir[0]) {
-	p=getenv("SBBSNODE");
-	if(p==NULL) {
-		printf("\7\nSBBSNODE environment variable not set.\n");
-		return(1); }
-	strcpy(cfg.node_dir,p); }
-
-if(cfg.node_dir[strlen(cfg.node_dir)-1]!='\\')
-	strcat(cfg.node_dir,"\\");
-
-read_node_cfg(&cfg,txt);
-if(ctrl_dir[0]=='.') {   /* Relative path */
-	strcpy(str,ctrl_dir);
-	sprintf(ctrl_dir,"%s%s",cfg.node_dir,str);
-	if(FULLPATH(str,ctrl_dir,40))
-		strcpy(ctrl_dir,str); }
-backslash(ctrl_dir);
-
-read_main_cfg(&cfg,txt);
-if(data_dir[0]=='.') {   /* Relative path */
-	strcpy(str,data_dir);
-	sprintf(data_dir,"%s%s",cfg.node_dir,str);
-	if(FULLPATH(str,data_dir,40))
-		strcpy(data_dir,str); }
-backslash(data_dir);
-read_msgs_cfg(txt);
-#endif
-
-now=time(NULL);
-smm=crc16("smm",0);
-sbl=crc16("sbl",0);
-fprintf(stderr,"\n\n");
-for(i=0;i<cfg.total_subs;i++) {
-	if(!(cfg.sub[i]->misc&SUB_QNET))
-		continue;
-	fprintf(stderr,"%-*s  %s\n"
-		,LEN_GSNAME,cfg.grp[cfg.sub[i]->grp]->sname,cfg.sub[i]->lname);
-	sprintf(smb.file,"%s%s",cfg.sub[i]->data_dir,cfg.sub[i]->code);
-	smb.retry_time=30;
-	smb.subnum=i;
-	if((j=smb_open(&smb))!=0) {
-		printf("smb_open returned %d\n",j);
-		continue; }
-	if((j=smb_locksmbhdr(&smb))!=0) {
-		printf("smb_locksmbhdr returned %d\n",j);
-		smb_close(&smb);
-		continue; }
-	if((j=smb_getstatus(&smb))!=0) {
-		printf("smb_getstatus returned %d\n",j);
-		smb_close(&smb);
-		continue; }
-	smb_unlocksmbhdr(&smb);
-	msg.offset=smb.status.total_msgs;
-	if(!msg.offset) {
-		smb_close(&smb);
-		printf("Empty.\n");
-		continue; }
-	while(!kbhit() && !ferror(smb.sid_fp) && msg.offset) {
-		msg.offset--;
-		fseek(smb.sid_fp,msg.offset*sizeof(idxrec_t),SEEK_SET);
-		if(!fread(&msg.idx,1,sizeof(idxrec_t),smb.sid_fp))
-			break;
-		fprintf(stderr,"%-5lu\r",msg.offset+1);
-		if(msg.idx.to==smm || msg.idx.to==sbl)
-			continue;
-		if(max_age && now-msg.idx.time>((ulong)max_age*24UL*60UL*60UL))
-			continue;
-		if((j=smb_lockmsghdr(&smb,&msg))!=0) {
-			printf("smb_lockmsghdr returned %d\n",j);
-			break; }
-		if((j=smb_getmsghdr(&smb,&msg))!=0) {
-			printf("smb_getmsghdr returned %d\n",j);
-            break; }
-		smb_unlockmsghdr(&smb,&msg);
-		if((mode&LOCAL && msg.from_net.type==NET_NONE)
-			|| msg.from_net.type==NET_QWK) {
-			if(msg.from_net.type!=NET_QWK)
-				msg.from_net.addr="";
-			if(cmd&USERS) {
-				sprintf(str,"%s%s",msg.from_net.addr,msg.from);
-				curcrc=crc32(str,0); }
-			else
-				curcrc=crc32(msg.from_net.addr,0);
-			for(l=0;l<total_crcs;l++)
-				if(curcrc==crc[l])
+	char		str[256],tmp[128],tag[256],addr[256],*p;
+	int 		i,j,mode=0,cmd=0,o_mode,max_age=0;
+	ushort		smm,sbl;
+	ulong		*crc=NULL,curcrc,total_crcs=0,l;
+	FILE		*route,*users,*nodes;
+	time_t		now;
+	smbmsg_t	msg;
+	char		*ctrl_dir;
+	char		revision[16];
+
+	sscanf("$Revision$", "%*s %s", revision);
+
+	fprintf(stderr,"\nSynchronet QWKnet Node/Route/User List Generator v%s-%s\n"
+		,revision, PLATFORM_DESC);
+
+	for(i=1;i<argc;i++)
+		for(j=0;argv[i][j];j++)
+			switch(toupper(argv[i][j])) {
+				case '/':
+				case '-':
+					while(argv[i][++j])
+						switch(toupper(argv[i][j])) {
+							case 'F':
+								mode|=FEED;
+								break;
+							case 'L':
+								mode|=LOCAL;
+								break;
+							case 'A':
+								mode|=APPEND;
+								break;
+							case 'T':
+								mode|=TAGS;
+								break;
+							case 'M':
+								j++;
+								max_age=atoi(argv[i]+j);
+								while(isdigit(argv[i][j+1])) j++;
+								break;
+							default:
+								printf(usage);
+								return(1); 
+					}
+					j--;
 					break;
-			if(l==total_crcs) {
-				total_crcs++;
-				if((crc=(ulong *)REALLOC(crc
-					,sizeof(ulong)*total_crcs))==NULL) {
-					printf("Error allocating %lu bytes\n"
-						,sizeof(ulong)*total_crcs);
-					break; }
-				crc[l]=curcrc;
-				if(cmd&ROUTE && msg.from_net.type==NET_QWK) {
-					strcpy(addr,msg.from_net.addr);
-					if(mode&FEED) {
-						p=strrchr(addr,'/');
-						if(!p)
-							p=addr;
-						else
-							*(p++)=0;
-						sprintf(str,"%s %s:%s%c%s"
-							,unixtodstr(&cfg,msg.hdr.when_written.time,tmp)
-							,p,cfg.sys_id,p==addr ? 0 : '/'
-							,addr);
-						fprintf(route,"%s\r\n",str); }
-					else {
-						p=strrchr(addr,'/');
-						if(p) {
-							*(p++)=0;
-						fprintf(route,"%s %s:%.*s\r\n"
-							,unixtodstr(&cfg,msg.hdr.when_written.time,str)
-							,p
-							,(uint)(p-addr)
-							,addr); } } }
+				case 'R':
+					cmd|=ROUTE;
+					break;
+				case 'U':
+					cmd|=USERS;
+					break;
+				case 'N':
+					cmd|=NODES;
+					break;
+				default:
+					printf(usage);
+					return(1); 
+		}
+
+	if(!cmd) {
+		printf(usage);
+		return(1); 
+	}
+
+	if(mode&APPEND)
+		o_mode=O_WRONLY|O_CREAT|O_APPEND;
+	else
+		o_mode=O_WRONLY|O_CREAT|O_TRUNC;
+
+	if(cmd&NODES)
+		if((nodes=fnopen(&i,"nodes.dat",o_mode))==NULL) {
+			printf("\7\nError opening nodes.dat\n");
+			return(1); 
+		}
+
+	if(cmd&USERS)
+		if((users=fnopen(&i,"users.dat",o_mode))==NULL) {
+			printf("\7\nError opening users.dat\n");
+			return(1); 
+		}
+
+	if(cmd&ROUTE)
+		if((route=fnopen(&i,"route.dat",o_mode))==NULL) {
+			printf("\7\nError opening route.dat\n");
+			return(1); 
+		}
+
+	cfg.size=sizeof(cfg);
+	ctrl_dir=getenv("SBBSCTRL");
+	if(ctrl_dir==NULL || ctrl_dir[0]==0) {
+		ctrl_dir="/sbbs/ctrl";          /* Not set? Use default */
+		printf("!SBBSCTRL environment variable not set, using default value: %s\n\n"
+				,ctrl_dir);
+	}
+	SAFECOPY(cfg.ctrl_dir, ctrl_dir);
+
+	if(!load_cfg(&cfg, NULL, TRUE, str)) {
+		printf("\7\n%s\n",str);
+	}
+
+	now=time(NULL);
+	smm=crc16("smm",0);
+	sbl=crc16("sbl",0);
+	fprintf(stderr,"\n\n");
+	for(i=0;i<cfg.total_subs;i++) {
+		if(!(cfg.sub[i]->misc&SUB_QNET))
+			continue;
+		fprintf(stderr,"%-*s  %s\n"
+			,LEN_GSNAME,cfg.grp[cfg.sub[i]->grp]->sname,cfg.sub[i]->lname);
+		sprintf(smb.file,"%s%s",cfg.sub[i]->data_dir,cfg.sub[i]->code);
+		smb.retry_time=30;
+		smb.subnum=i;
+		if((j=smb_open(&smb))!=0) {
+			printf("smb_open returned %d\n",j);
+			continue; 
+		}
+		if((j=smb_locksmbhdr(&smb))!=0) {
+			printf("smb_locksmbhdr returned %d\n",j);
+			smb_close(&smb);
+			continue; 
+		}
+		if((j=smb_getstatus(&smb))!=0) {
+			printf("smb_getstatus returned %d\n",j);
+			smb_close(&smb);
+			continue; 
+		}
+		smb_unlocksmbhdr(&smb);
+		msg.offset=smb.status.total_msgs;
+		if(!msg.offset) {
+			smb_close(&smb);
+			printf("Empty.\n");
+			continue; 
+		}
+		while(!kbhit() && !ferror(smb.sid_fp) && msg.offset) {
+			msg.offset--;
+			fseek(smb.sid_fp,msg.offset*sizeof(idxrec_t),SEEK_SET);
+			if(!fread(&msg.idx,1,sizeof(idxrec_t),smb.sid_fp))
+				break;
+			fprintf(stderr,"%-5lu\r",msg.offset+1);
+			if(msg.idx.to==smm || msg.idx.to==sbl)
+				continue;
+			if(max_age && now-msg.idx.time>((ulong)max_age*24UL*60UL*60UL))
+				continue;
+			if((j=smb_lockmsghdr(&smb,&msg))!=0) {
+				printf("smb_lockmsghdr returned %d\n",j);
+				break; 
+			}
+			if((j=smb_getmsghdr(&smb,&msg))!=0) {
+				printf("smb_getmsghdr returned %d\n",j);
+				break; 
+			}
+			smb_unlockmsghdr(&smb,&msg);
+			if((mode&LOCAL && msg.from_net.type==NET_NONE)
+				|| msg.from_net.type==NET_QWK) {
+				if(msg.from_net.type!=NET_QWK)
+					msg.from_net.addr="";
 				if(cmd&USERS) {
-					if(msg.from_net.type!=NET_QWK)
-						strcpy(str,cfg.sys_id);
-					else if(mode&FEED)
-						sprintf(str,"%s/%s",cfg.sys_id,msg.from_net.addr);
-					else
-						strcpy(str,msg.from_net.addr);
-					p=strrchr(str,'/');
-                    if(p)
-						fprintf(users,"%-25.25s  %-8.8s  %s  (%s)\r\n"
-							,msg.from,p+1
-							,unixtodstr(&cfg,msg.hdr.when_written.time,tmp)
-							,str);
-					else
-						fprintf(users,"%-25.25s  %-8.8s  %s\r\n"
-							,msg.from,str
-							,unixtodstr(&cfg,msg.hdr.when_written.time,tmp)); }
-				if(cmd&NODES && msg.from_net.type==NET_QWK) {
-					if(mode&TAGS)
-						gettag(msg,tag);
-					if(mode&FEED)
-						sprintf(str,"%s/%s",cfg.sys_id,msg.from_net.addr);
-					else
-						strcpy(str,msg.from_net.addr);
-					p=strrchr(str,'/');
-					if(p) {
-						if(mode&TAGS)
-							fprintf(nodes,"%-8.8s  %s\r\n"
-								,p+1
-								,tag);
+					sprintf(str,"%s%s",msg.from_net.addr,msg.from);
+					curcrc=crc32(str,0); 
+				}
+				else
+					curcrc=crc32(msg.from_net.addr,0);
+				for(l=0;l<total_crcs;l++)
+					if(curcrc==crc[l])
+						break;
+				if(l==total_crcs) {
+					total_crcs++;
+					if((crc=(ulong *)REALLOC(crc
+						,sizeof(ulong)*total_crcs))==NULL) {
+						printf("Error allocating %lu bytes\n"
+							,sizeof(ulong)*total_crcs);
+						break; 
+					}
+					crc[l]=curcrc;
+					if(cmd&ROUTE && msg.from_net.type==NET_QWK) {
+						strcpy(addr,msg.from_net.addr);
+						if(mode&FEED) {
+							p=strrchr(addr,'/');
+							if(!p)
+								p=addr;
+							else
+								*(p++)=0;
+							sprintf(str,"%s %s:%s%c%s"
+								,unixtodstr(&cfg,msg.hdr.when_written.time,tmp)
+								,p,cfg.sys_id,p==addr ? 0 : '/'
+								,addr);
+							fprintf(route,"%s\r\n",str); 
+						}
+						else {
+							p=strrchr(addr,'/');
+							if(p) {
+								*(p++)=0;
+							fprintf(route,"%s %s:%.*s\r\n"
+								,unixtodstr(&cfg,msg.hdr.when_written.time,str)
+								,p
+								,(uint)(p-addr)
+								,addr); 
+							} 
+						} 
+					}
+					if(cmd&USERS) {
+						if(msg.from_net.type!=NET_QWK)
+							strcpy(str,cfg.sys_id);
+						else if(mode&FEED)
+							sprintf(str,"%s/%s",cfg.sys_id,msg.from_net.addr);
 						else
-							fprintf(nodes,"%-8.8s  %s  (%s)\r\n"
-								,p+1
+							strcpy(str,msg.from_net.addr);
+						p=strrchr(str,'/');
+						if(p)
+							fprintf(users,"%-25.25s  %-8.8s  %s  (%s)\r\n"
+								,msg.from,p+1
 								,unixtodstr(&cfg,msg.hdr.when_written.time,tmp)
-								,str); }
-					else
-						fprintf(nodes,"%-8.8s  %s\r\n"
-							,str
-							,mode&TAGS
-							? tag
-							: unixtodstr(&cfg,msg.hdr.when_written.time,tmp)); }
-				} }
-		smb_freemsgmem(&msg); }
-
-	smb_close(&smb);
-	if(kbhit()) {
-		getch();
-		fprintf(stderr,"Key pressed.\n");
-		break; } }
-fprintf(stderr,"Done.\n");
+								,str);
+						else
+							fprintf(users,"%-25.25s  %-8.8s  %s\r\n"
+								,msg.from,str
+								,unixtodstr(&cfg,msg.hdr.when_written.time,tmp)); 
+					}
+					if(cmd&NODES && msg.from_net.type==NET_QWK) {
+						if(mode&TAGS)
+							gettag(msg,tag);
+						if(mode&FEED)
+							sprintf(str,"%s/%s",cfg.sys_id,msg.from_net.addr);
+						else
+							strcpy(str,msg.from_net.addr);
+						p=strrchr(str,'/');
+						if(p) {
+							if(mode&TAGS)
+								fprintf(nodes,"%-8.8s  %s\r\n"
+									,p+1
+									,tag);
+							else
+								fprintf(nodes,"%-8.8s  %s  (%s)\r\n"
+									,p+1
+									,unixtodstr(&cfg,msg.hdr.when_written.time,tmp)
+									,str); 
+						}
+						else
+							fprintf(nodes,"%-8.8s  %s\r\n"
+								,str
+								,mode&TAGS
+								? tag
+								: unixtodstr(&cfg,msg.hdr.when_written.time,tmp)); 
+					}
+				} 
+			}
+			smb_freemsgmem(&msg); 
+		}
+
+		smb_close(&smb);
+		if(kbhit()) {
+			getch();
+			fprintf(stderr,"Key pressed.\n");
+			break; 
+		} 
+	}
+	fprintf(stderr,"Done.\n");
+
+	return(0);
 }