#include "include.h"
#include "extern.h"

char *
getline(str,fp)
char *str;
FILE *fp;
{
 /* get a line from a file. */
 /* skip over blank lines   */
 char *tmp;
 char *fgets();

 do {
   tmp = fgets(str,256,fp);
 }
 while((tmp) && (*tmp != EOF) && (*tmp == '\n'));

 if(tmp)
   if(*tmp)
     str[strlen(str)-1] = 0;
 return(tmp);
}

liststr(title, str)
char *title, *str;
{
 printf("%s",title);
 printf("%s\n",str);
}

prspaces(n)
int n;
{
 for(;n;n--)
   printf(" ");
}

searchfor(num)
float num;
{
 int done;
 int entrynum = -1;
 int found = 0;
 register int i;

 curr = head;
 printf("Found matches in Entries:");
 while(curr != NULL) {
   done = 0;
   entrynum++;
   for(i = 0;((i < MAXNUMKEYS) && (!done)); i++) {
     if(curr -> keys[i] == 0.0)
       done = 1;
     else
      if(num == curr -> keys[i]) {
        printf("%d ", entrynum);
        found = 1;
	done = 1;
      }
   }
   curr = curr -> next;
 }
 if(!found)
   printf("None.");
 printf("\n");
}

listkeys()
{
 key_struct *key;
 char str[256], out[256];
 int area1, area2;

 area1 = area2 = 0;
 for(key = keywords;(key -> num != 0.0); key++) {
   pad(str, key -> title, longest);
   sprintf(out,"%2.2f %s   %s\n",key -> num, str, key -> description);
   sscanf(out,"%d",&area2);
   if(area1 == area2)
     printf("   ");
   else
     area1 = area2;
   printf("%s",out);
 }
}


listint(tmp)
entry *tmp;
{
 key_struct *key;
 register int i;
 int done, len = 0;
 char str[80];

 for(key = keywords;(key -> num != 0.0); key++) {
   done = 0;
   for(i = 0;((i < tmp -> numkeys) && (!done)); i++) {
     if(tmp -> keys[i] == 0.0)
       done = 1;
     else
     if(key -> num == tmp -> keys[i]) {
       sprintf(str,"%.2f %-25s  ", key -> num, key -> title);
       len += 25;
       str[25] = 0;
       if(len > 80) {
         printf("\n%s",str);
         len = strlen(str);
       }
       else
         printf("%s",str);
     }
   }
 }
 printf("\n");
}

/* ---------------------------------------------------------------------- */
/* returns true if the entire string passed is a number */
isanumber(str)
char *str;
{
 char *c;

 c = str;
 while(*c) {
   if(!isdigit(*c)) 
     return(0);
   c++;
 }
 return(1);
}

pad(str1, str2, len)
char *str1, *str2;
int len;
{
 register int i;

 for(i = 0; (i < strlen(str2)) && (i < len); i++)
   str1[i] = str2[i];

 for(;i<len;i++)
   str1[i] = ' ';

 str1[i] = 0;
}

