Rob,

OK, did some debugging (was so long ago I did not remember the right gdb
commands :)...


Found a bug in getexchange.c, which causes tlf to segfault.

Here the new file. Drop it into the tlf-0.9.31/src directory and do a
sudo make install. That does it.

You can now enter crazy stuff like 234A68 LAX
The section still needs a space in front. 23 A 68 NNJ is still your best
bet. Tlf will NOT log sections that are not in your section file.

Try it and find out how intelligent this beast is...

73,

Rein PA0R

PS: This will be in next release, but it will get you going during next
weekend :)
/*
 * Tlf - contest logging program for amateur radio operators
 * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus <[EMAIL PROTECTED]>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Library General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

  	/* ------------------------------------------------------------
 	*        Getexchange handles  the  comment field
 	*
 	*--------------------------------------------------------------*/

#include "getexchange.h"
#include "recall_exchange.h"

int play_file(char *audiofile);

int getexchange(void)
{
extern int contest;
extern int use_rxvt;
extern char comment[];
extern char cqzone[];
extern char ituzone[];
extern char my_rst[];
extern char speedstr[];
extern int change_rst;
extern int cury, curx;
extern char message[15][80];
extern char ph_message[14][80];
extern char hiscall[];
extern char buffer[];
extern char qsonrstr[];
extern int cqww;
extern int wpx;
extern int pacc_pa_flg;
extern int arrldx_usa;
extern int arrl_fd;
extern int exchange_serial;
extern int countrynr;
extern int mycountrynr;
extern int sprint;
extern int trxmode;
extern int recall_mult;
extern int arrlss;
extern int lan_active;
extern char lastqsonr[];
extern char qsonrstr[];
extern char call[];
extern char section[];
extern int serial_section_mult;
extern int serial_grid4_mult;
extern int sectn_mult;
extern int dx_arrlsections;
extern int ctcomp;
extern int wazmult;
extern int itumult;
extern int pfxmult;
extern int exc_cont;
extern char continent[];
extern int keyerport;
extern int commentfield;
//extern int dxped;

int  i;
int x = 0;
char instring[2];
char commentbuf[40]  = "";
int retval;
char * gridmult = "";
int keyspeed = 30;
char speedbuf[3] = "";


instring[1] = '\0';


	if ((lan_active ==1) && (exchange_serial == 1) ){
				strncpy(lastqsonr, qsonrstr, 5);
 				send_lan_message(INCQSONUM, qsonrstr) ;
	}


	if(recall_mult == 1)
		retval = recall_exchange();

	if ((arrldx_usa == 1) && (trxmode != CWMODE)) {
			
		retval = recall_exchange();

	}

	if(arrl_fd == 1)
		retval = recall_exchange();

	if ( ((cqww == 1)||(wazmult == 1)||(itumult == 1) )&& (strlen(comment) == 0) && (strlen(hiscall) != 0)) {
          if (itumult==1)
          strcpy(comment, ituzone);
          else
          strcpy(comment, cqzone);
    	}
 	if ((exc_cont == 1) && (strlen(comment) == 0) && (strlen(hiscall) != 0)) {
 	 	strcpy(comment, continent);
     	}



	if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD  );
	else   attron(COLOR_PAIR(NORMCOLOR)  );

	mvprintw(12, 54, "                          ");
	mvprintw(12, 54, comment);
commentfield = 1;
	for  (i=strlen(comment) ; i<=25; i++)
	{
		x  =  onechar();

			if  ( x == 127 && (strlen(comment) >= 1))
				{      /* erase  */


		 			getyx(stdscr, cury,  curx);
			 		mvprintw(12, curx - 1, " ");
			 		mvprintw(12, curx  - 1, "");
					comment[strlen(comment)-1] = '\0';
					i -= 2;
				}


				switch(x){

						case 27:
						{
						 if (comment[0] != '\0')
						 {
						 	comment[0] = '\0';
						 	mvprintw(12,54, "                          ");
						 		mvprintw(12, 54, "");
						 	stoptx();
						 	i=0;
							break;
						 } else
						 {
							hiscall[0] = '\0';
							x = 9;
							break;
						 }
						}
						case 160:                         // for CT compatibility
						{
						if (trxmode == CWMODE) {
							strcat (buffer, message[1]);
							sendbuf();
							mvprintw(12, 29 +  strlen(hiscall), "");
						} else
							play_file(ph_message[1]);


						break;
						}
						case '+' :                                           // for CT compatibility
						{
   							if (strlen(hiscall) > 2) {
								if (trxmode == CWMODE) {
										strcat(buffer, message[2]);        /* F3 */
										sendbuf();
										mvprintw(12, 29 +  strlen(hiscall), "");
								} else
									play_file(ph_message[2]);

								x = 92;
							}
						break;
						}

						case 129:
						{
							if (trxmode == CWMODE) {
								strcat(buffer, call);       /* F1 */
								mvprintw(5,  0, "");
								sendbuf();
							} else
								play_file(ph_message[5]); // call

							mvprintw(12, 54,  comment);
							break;
						}



						case 130 ... 137:
						{
							if (trxmode == CWMODE) {
								strcat(buffer, message[x-129]);       /* F2 */
								mvprintw(5,  0, "");
								sendbuf();
							} else
								play_file(ph_message[x-129]);

							mvprintw(12, 54,  comment);
							break;
						}
						case 176 ... 186 :
						{
							strcat(buffer, message[x - 162]);       /* alt-0 to alt-9 */
							mvprintw(5,  0, "");
							sendbuf();
							mvprintw(12, 54,  comment);

							break;
						}


						 case 156:                          /* change MY RST */
						{
							if (change_rst == 1) {
							 	if (my_rst[1] <= 56){

							 	 	my_rst[1]++;

							 	 	mvprintw(12, 49, my_rst);
							 	 	mvprintw(12, 54, comment);
							 	}
						 	} else {						/* speed up */
		 						keyspeed = speedup();
								strncpy(speedbuf, speedstr +  (2  *  keyspeed), 2);
								speedbuf[2] =  '\0';
//								attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT);

				 				mvprintw(0, 14, "%s", speedbuf);
							 	mvprintw(12, 54, comment);
								refresh();
						 	
						 	}
						 	break;

						}
						case 157:
						{
							if (change_rst == 1) {

							 	if (my_rst[1] >= 49){
							 	 	my_rst[1]--;

							 	 	mvprintw(12, 49, my_rst);
							 	 	mvprintw(12, 54, comment);

							 	}
						 	} else {
								keyspeed = speeddown();
								strncpy(speedbuf, speedstr +  (2  *  keyspeed), 2);
								speedbuf[2] =  '\0';
		//						attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT);
				 				mvprintw(0, 14, "%s", speedbuf);
								mvprintw(12, 54, comment);
								refresh(); 	
						 	}
						 	break;

						}
						case 44 :                                                           // , keyer
						{
							getyx(stdscr, cury, curx);
							mvprintw(5,0,"");
							keyer();
							mvprintw(cury, curx,  "");
							x=0;
						break;
						}
						case '\n' :
						{
							if (ctcomp == 1) x = 92;  // enter logs immediately
							if (trxmode == SSBMODE) x = 92;
							if (contest != 1) x = 92;
//							if (dxped == 1) x = 92;
							break;
						}





		        }  /* end switch */

		if (x >= 97 && x <=  122)
			x = x - 32 ;

		if ( i < 25) {
			if (x >= 32 && x <=  90)
			{
				instring[0] = x;
				addch(x);
				strcat(comment, instring);
				if (keyerport == GMFSK){
					show_rtty();
					mvprintw(12, 54, comment);
				}
				refresh();
			}
		}  else i--;

		if (serial_section_mult == 1)  x =  checkexchange(x);
		if (dx_arrlsections == 1)  x =  checkexchange(x);
		if (sectn_mult == 1) x =  checkexchange(x);
		if (arrlss == 1)  x = checkexchange(x);
		if (cqww == 1)  x = checkexchange(x);

		if (x == '\n' || x == 9 ||  x == 11|| x == 92){

			if  ( (exchange_serial ==1 && comment[0] >= '0' && comment[0] <= '9')){         /* align serial nr. */
			 	if (strlen(comment)  ==  1){
			 	 	strcpy(commentbuf,  comment);
			 	 	comment[0]  = '\0';
			 	 	strcat(comment, "00");
			 	 	strcat(comment, commentbuf);
			 	}

			 	if (strlen(comment)  ==  2){
			 	 	strcpy(commentbuf,  comment);
			 	 	comment[0]  = '\0';
			 	 	strcat(comment, "0");
			 	 	strcat(comment, commentbuf);
			 	}

			}


 			if  (wpx == 1 && pfxmult == 0) {                      /* align serial nr. */

			 	if ((strlen(comment)  ==  1) || (comment[1] == ' ')){
			 	 	strcpy(commentbuf,  comment);
			 	 	comment[0]  = '\0';
			 	 	strcat(comment, "00");
			 	 	strcat(comment, commentbuf);
			 	}

			 	if ((strlen(comment)  ==  2) || (comment[2] == ' ')){
			 	 	strcpy(commentbuf,  comment);
			 	 	comment[0]  = '\0';
			 	 	strcat(comment, "0");
			 	 	strcat(comment, commentbuf);
			 	}

			}

			if (sprint == 1) {

			 	if ((comment[1] == ' ') && (comment[0] != ' ')){

			 	 	strcpy(commentbuf, "00");
			 	 	commentbuf[2] = comment[0];
			 	 	commentbuf[3] = '\0';
			 	 	strcat (commentbuf, comment + 1);
			 	 	strcpy (comment, commentbuf);
			 	}
			 	if ((comment[2] == ' ') && (comment[1] != ' ')) {

			 	 	strcpy(commentbuf, "0");
			 	 	commentbuf[1] = comment[0];
			 	 	commentbuf[2] = comment[1];
			 	 	commentbuf[3] = '\0';
			 	 	strcat (commentbuf, comment + 2);
			 	 	strcpy (comment, commentbuf);
			 	}

			}

			if ((pacc_pa_flg == 1) && (countrynr != mycountrynr)) {
			 	if (strlen(comment)  ==  1){
			 	 	strcpy(commentbuf,  comment);
			 	 	comment[0]  = '\0';
			 	 	strcat(comment, "00");
			 	 	strcat(comment, commentbuf);
			 	}

			 	if (strlen(comment)  ==  2){
			 	 	strcpy(commentbuf,  comment);
			 	 	comment[0]  = '\0';
			 	 	strcat(comment, "0");
			 	 	strcat(comment, commentbuf);
			 	}

			}

			if ((arrlss ==1)  && (x != 9) && (strlen(section) < 2)) {
				mvprintw(13,54, "section?");
				mvprintw(12,54, comment);
				x = 0;
			}
			else if  (((serial_section_mult ==1) || (sectn_mult == 1))  && ((x != 9) && (strlen(section) < 1))) {
				mvprintw(13,54, "section?");
				mvprintw(12,54, comment);
				refresh();

				x = 0; //##debug
			} else if  (serial_grid4_mult == 1) {
			//	mvprintw(13,54, "section?");
				mvprintw(12,54, comment);
				refresh();
				gridmult = getgrid(comment);
				strcpy (section, gridmult);
				section[4] = '\0';

				break;
//				x = 0; //##debug

			} else
				break;


		}

	}
commentfield = 0;

 	return(x);
}

/*  --------------------------------------------------------------------------*/

char cmpattern[]="                               ";            // global
char ssexchange[30] = "";
 char section[8]="";
 char callupdate[7];
 int call_update = 0;
 char zone_export[3] = "  ";
 char zone_fix[3]="";
/*  --------------------------------------------------------------------------*/

int checkexchange (int x) {

	extern char comment[];
	extern char ssexchange[];
	extern char mults_possible[MAX_MULTS][12] ;
	extern int cqww;
	extern int arrlss;
	extern char section[];
	extern char callupdate[];
	extern char hiscall[];
	extern  int call_update;
	extern char zone_export[];
	extern char zone_fix[];
	extern int serial_section_mult;
	extern int sectn_mult;
	extern int dx_arrlsections;
	extern int max_multipliers;

	char precedent[] = " ";
	char serial[5] = "    ";
	char check[3] = "  ";
	char checksection[30];
	char zone[] = "  ";

	char serpats[8][8] =
		{
		"bfb",
		 "afb",
		 "bfa",
		  "bffab",
		  "affab",
		  "bffbffb",
		  "fff",
		  "ffff"
		  };
	char precpats[8][4] =
		{
		"faf",
		 "fab",
		 "bab",
		 "baf",
		 "fau",
		  "bau",
		  "uaf",
		  "uab"
		  };
	char checkpats[6][5] =
		{
		"bffb",
		"bffu",
		"affu",
		"affb",
		"affa",
		"bffa"
		};
	char secpats[10][6] =
		{
		"fab",
		"faab",
		"faaab",
		"bab",
		"baab",
		"baaab",
		"bau",
		"baau",
		"baaau",
		"baafb"
		};
	char  callpats[5][9] =
		{
		"bafaab",
		"baafab",
		"baafaab",
		"bafaaab",
		"baafaaab"
		};
	char zonepats[6][6] =
		{
		"ufb",
		"uffb",
		"bfb",
		"bffb",
		"bffu",
		"bfu"
		};
	char sectionpats[9][6] =
		{
		"uab",
		"uaab",
		"uaaab",
		"uau",
		"uaau",
		"uaaau",
		"bab",
		"baab",
		"baaab"
		};

	int i,  s, hr, ii, pr, jj;

// get the pattern

	if (strlen(comment) < 2) strcpy (cmpattern, "u                    ");

	if (strlen(comment) > 0) {


		for (i=0; i < strlen(comment)-1; i++);

			switch ((int) comment[i]) {

		  		case 'A' ... 'Z' :  {
				cmpattern[i+1] = 'a' ;
				cmpattern[i+2] = 'u' ;
				break;
				}

				case '0' ... '9' :  {
				cmpattern[i+1] = 'f' ;
				cmpattern[i+2] = 'u' ;
				break;
				}

				case ' ' :    {
				cmpattern[i+1] = 'b' ;
				break;
				}

				default:

					cmpattern[i+1] = 'u';
			}


		}


if (cqww == 1) {                            // -----------------------------------cqww------------------

	zone[2] = '\0';

	s = atoi(comment);

	if (s < 10)
		sprintf(zone, "0%d", atoi(comment));
	else
		sprintf(zone, "%2d", atoi(comment));

				hr = 0;

				for ( ii = 0; ii < 6; ii++)  {

					hr = getlastpattern (zonepats[ii]);

					if ((hr > 1) && (atoi(comment + hr -1) != 0))   {
						sprintf (zone, "%2d", atoi (comment + hr -1));

						if (zone[0] == ' ') zone[0] = '0';

						strcpy (zone_fix, zone);
					} else
						strcpy (zone_export, zone);
				}



				if (strlen(hiscall) >= 2) mvprintw(8, 73, "%s", zone_export);

				hr=0;

				for (ii = 0; ii < 5; ii++) {

					hr = getlastpattern(callpats[ii]);                 // call update ?

					if (hr > 0) {

							switch(ii) {

								case 0 ... 1 :
									strncpy(callupdate, comment+hr, 4);
									callupdate[4] = '\0';
									break;
								case 2 ... 3 :
									strncpy(callupdate, comment+hr, 5);
 									callupdate[5] = '\0';
									break;
								case  4:
									strncpy(callupdate, comment+hr, 6);
 									callupdate[6] = '\0';

							}

							if (strlen(callupdate) > 3) {

								if (call_update ==1) strcpy (hiscall, callupdate);

								mvprintw(12,29, "       ");
								mvprintw(12,29, "%s", hiscall);
								mvprintw(12, 54,"%s",  comment);
							}

					}
				}


}

if (arrlss == 1) {                    // ---------------------------arrls---------------------------------

	serial[4] = '\0';


// get serial nr.

				s = atoi(comment);

				if (s != 0)  sprintf(serial, "%4d", atoi(comment));

				for ( ii = 0; ii < 8; ii++)  {

					hr = getlastpattern (serpats[ii]);

					if (hr > 0)   sprintf (serial, "%4d", atoi (comment + hr -1));


					if (ii == 5 && hr > 0) {
							sprintf(serial, "%4d", atoi (comment + hr -1));
							sprintf(check, "%2d", atoi  (comment + hr + 2));
					}


				}
// get precedent

					if(     ((comment[0]=='A')
						|| (comment[0] == 'B')
						|| (comment[0] == 'M')
						|| (comment[0] == 'Q')
						|| (comment[0] == 'S'))
						&& ((comment[1] == ' ') || (cmpattern[2] == 'f')) ) {

								precedent[0] = comment[0];
					}


				hr=0;
				for (ii = 0; ii < 8; ii++) {


					hr = getlastpattern(precpats[ii]);

					if (hr > 0)  {
						pr = comment[hr];
						if ((pr == 'Q') || (pr == 'A') || (pr == 'B') || (pr == 'U') || (pr == 'M') || (pr == 'S')) {
							precedent[0]=pr;
							precedent[1]='\0';
						}
					}
				}




// get call update
				hr=0;

				for (ii = 0; ii < 5; ii++) {

					hr = getlastpattern(callpats[ii]);

					if (hr > 0) {
						if (((comment[hr] == 'A') && (comment [hr+1] > 59))
							|| (comment[hr] == 'K') || (comment[hr] == 'N') || (comment[hr] == 'W')
							|| (comment[hr] == 'V')|| (comment[hr] == 'C'))  {

							switch(ii) {

								case 0 ... 1 :
									strncpy(callupdate, comment+hr, 4);
									callupdate[4] = '\0';
									break;
								case 2 ... 3 :
									strncpy(callupdate, comment+hr, 5);
 									callupdate[5] = '\0';
									break;
								case  4:
									strncpy(callupdate, comment+hr, 6);
 									callupdate[6] = '\0';

							}
							if (strlen(callupdate) > 3) {

								if (call_update ==1) strcpy (hiscall, callupdate);

								mvprintw(12,29, "       ");
								mvprintw(12,29, "%s", hiscall);
								mvprintw(12, 54,"%s",  comment);
							}

						}
					}

				}



// get check
				hr=0;

				for (ii = 0; ii < 6; ii++) {

					hr = getlastpattern(checkpats[ii]);

					if (hr > 0)  {
						if ((atoi(comment+hr) <= 100) || ((atoi(comment+hr) <=9 ) &&( comment[hr] == '0'))){
							check[0]=comment[hr];
							check[1]=comment[hr+1];
							check[2]='\0';
						}

					}

				}
// get section
				hr=0;

				for (ii = 0; ii < 10; ii++) {

					hr = getlastpattern(secpats[ii]);

					if (hr > 0)  {

							strncpy (checksection, comment+(hr), 3);
							checksection[3]='\0';

							for (jj=0 ; jj < max_multipliers-1 ; jj++) {

								if ((strlen(mults_possible[jj] )>=1) &&
									(strstr(checksection, mults_possible[jj]) != NULL) &&
									(strlen(checksection) == strlen(mults_possible[jj]))) {

									strcpy (section, mults_possible[jj]);
									break;
								}
							}
					}
				}
				hr=0;

				callupdate[0]='\0';

	mvprintw(8, 47, "                            ");
	mvprintw(8, 47, "       %s %s %s %s        ", serial, precedent,check,section);
	ssexchange[0]='\0';

	strcat(ssexchange,serial);
	strcat (ssexchange, " ");
	strcat(ssexchange,precedent);
	strcat (ssexchange, " ");
	strcat(ssexchange,check);
	strcat (ssexchange, " ");
	strcat(ssexchange,section);
	
	mvprintw(12, 54, comment);
	refresh();
	
	return(x);   // end arrlss
}

// ---------------------------------serial+section-----------------------------------------

if ((serial_section_mult == 1) || (sectn_mult == 1) || dx_arrlsections == 1) {

			if (serial_section_mult == 1) {

// get serial nr.
				serial[4] = '\0';

				s = atoi(comment);

				if (s != 0)  sprintf(serial, "%4d", atoi(comment));

				for ( ii = 0; ii < 8; ii++)  {

					hr = getlastpattern (serpats[ii]);

					if (hr > 0)   sprintf (serial, "%4d", atoi (comment + hr -1));


					if (ii == 5 && hr > 0) {
							sprintf(serial, "%4d", atoi (comment + hr -1));
							sprintf(check, "%2d", atoi  (comment + hr + 2));
					}


				}


// get section

				hr=0;

				for (ii = 0; ii < 7; ii++) {

					hr = getlastpattern(secpats[ii]);

					if (hr > 0)  {

							memset (checksection, 0, 29);
							strncpy (checksection, comment+(hr), 3);
							if (checksection[strlen(checksection)-1] == ' ')
							{
								checksection[strlen(checksection)-1] = '\0';
							}

							for (jj=0 ; jj < MAX_MULTS ; jj++)
							{

								if ((strlen(mults_possible[jj] )>=1) &&  (strcmp(checksection, mults_possible[jj]) == 0))
								{
									strcpy (section, mults_possible[jj]);
									break; // new
								}
							}
					}
				}
			}                      // end serial_section_mult
			if (sectn_mult == 1) {

				hr=0;

				for (ii = 0; ii < 7; ii++) {

					hr = getlastpattern(sectionpats[ii]);



							strncpy (checksection, comment, 3);
							checksection[3]='\0';
							for (jj=0 ; jj < max_multipliers ; jj++) {

								if ((strlen(mults_possible[jj] )>=1) &&  (strstr(checksection, mults_possible[jj]) != NULL)) {

									strcpy (section, mults_possible[jj]);
								}
							}
				}

			}
			if (dx_arrlsections == 1) {

				hr=0;

				for (ii = 0; ii < 7; ii++) {

					hr = getlastpattern(sectionpats[ii]);


							strncpy (checksection, comment, 3);
							checksection[3]='\0';
							
							for (jj=0 ; jj < max_multipliers ; jj++) {


								if ((strlen(mults_possible[jj]) == strlen(checksection)) &&  (strstr(checksection, mults_possible[jj]) != NULL)) {

									strcpy (section, mults_possible[jj]);
									
				//					if (strlen(section) == strlen(mults_possible[jj])) break;
								}
							}

				}

			}

				hr=0;

				callupdate[0]='\0';


}
// get call update
				hr=0;

				for (ii = 0; ii < 5; ii++) {

					hr = getlastpattern(callpats[ii]);

					if (hr > 0) {
						if (((comment[hr] == 'A') && (comment [hr+1] > 59))
							|| (comment[hr] == 'K') || (comment[hr] == 'N') || (comment[hr] == 'W')
							|| (comment[hr] == 'V')|| (comment[hr] == 'C'))  {

							switch(ii) {

								case 0 ... 1 :
									strncpy(callupdate, comment+hr, 4);
									callupdate[4] = '\0';
									break;
								case 2 ... 3 :
									strncpy(callupdate, comment+hr, 5);
 									callupdate[5] = '\0';
									break;
								case  4:
									strncpy(callupdate, comment+hr, 6);
 									callupdate[6] = '\0';

							}

							if (strlen(callupdate) > 3) {

								if (call_update ==1) strcpy (hiscall, callupdate);

								mvprintw(12,29, "       ");
								mvprintw(12,29, "%s", hiscall);
								mvprintw(12, 54,"%s",  comment);
							}

						}
					}

				}
 	mvprintw(8, 73, "   ");
	mvprintw(8, 73, "%s", section);
	ssexchange[0]='\0';

/*	if (serial_section_mult == 1) {
		strcat(ssexchange,serial);
		strcat (ssexchange, " ");
	}
*/		
	strcat(ssexchange,section);


// -------------------------------------end mults ------------------------------------------
mvprintw(12, 54, comment);
refresh();

return(x);
}

/*  --------------------------------------------------------------------------*/


int getlastpattern (char *checkstring) {

extern char comment[];
char newpat[80] ;
int i, x = 0;

	if ((strlen(cmpattern) - strlen(checkstring)) > 0) {
		for (i=0; i < (strlen(cmpattern)- strlen(checkstring)) - 1; i++) {

			newpat[0]='\0';
			strncat (newpat, cmpattern+i, strlen(comment) );

			if (strncmp(newpat, checkstring, strlen(checkstring)) == 0) {
				x = i;
			}
		}
			 if (x > strlen(comment)) x=0;
	}
return(x);

}
/*  --------------------------------------------------------------------------*/

char * getgrid (char *comment) {

char * gridmult = "";
int multposition = 0;
int i = 0;

for (i=0; i < strlen(comment); i++) {
	if (comment[i] > 64 && comment[i] < 91) {
		multposition = i;
		break;
	}
}
gridmult = comment + multposition;

return (gridmult);
}
_______________________________________________
Tlf-devel mailing list
Tlf-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/tlf-devel

Reply via email to