home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
200-299
/
ff297.lzh
/
DevKit
/
Sources
/
GetAutoDoc.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-12-29
|
6KB
|
176 lines
/**************************************************************
*
* GetAutoDoc.c - Gets an autodoc given the function name
*
* Copyright (c) 1989, Peter Cherna
*
* Created: March 26, 1989
* Modified: August 23, 1989 Release 1.2: August 29, 1989
*
* Auto: cc -q -o RAM:<file>.o <path><file>
* Auto: ln RAM:<file>.o -lc -o <path><file>
*
**************************************************************/
#include <functions.h>
#include <stdio.h>
#include <ctype.h>
#ifndef EXEC_MEMORY_H
#include <exec/memory.h>
#endif
extern char *index();
#define BUFFERSIZE 200
#define NAMESIZE 60
#define FORMFEED 12
main(argc,argv)
int argc;
char *argv[];
{
FILE *file;
char *buffer, *filename, *ch1, *ch2;
LONG offset;
int error;
int done;
error = 0;
if (argc < 2)
{
/* insufficient parameters */
puts("- GetAutoDoc Copyright (c) 1989, Peter Cherna");
fputs(" Usage: ",stdout);
fputs(argv[0],stdout);
puts(" function");
puts("Displays the AutoDoc for the requested function.");
error = 1;
}
else
{
filename = AllocMem((LONG) NAMESIZE, MEMF_CLEAR);
buffer = AllocMem((LONG) BUFFERSIZE, MEMF_CLEAR);
if ((!filename) || (!buffer))
{
fputs("- ",stdout);
fputs(argv[0],stdout);
puts(": Unable to allocate buffer.");
error = 20;
}
else
{
sprintf(filename,"AutoDocs:Index/Index%c",toupper(*argv[1]));
file = fopen(filename,"r");
if (!file)
{
/* If none of the AutoDocs are on line, this could
be a serious error. However, we have to assume that
there are no autodocs for this particular letter,
(for example, as of 1.2, there is no IndexZ). Thus
the message returned is "<function> not found." */
fputs("- ",stdout);
fputs(argv[1],stdout);
puts(" not found.");
error = 5;
}
else
{
done = 0;
while ((!feof(file)) && (!done))
{
if (!fgets(buffer,BUFFERSIZE,file))
{
if (!feof(file))
{
fputs("- ",stdout);
fputs(argv[0],stdout);
puts(": Error reading index file.");
done = TRUE;
error = 20;
}
}
else
{
ch1 = buffer;
ch2 = argv[1];
while ((*ch1 != ';') && (toupper(*ch1) == toupper(*ch2)))
{
ch1++;
ch2++;
}
if ((*ch1 == ';') && (*ch2 == '\0'))
done = TRUE;
}
}
if (!done)
{
fputs("- ",stdout);
fputs(argv[1],stdout);
puts(" not found.");
error = 5;
}
fclose(file);
if (!error)
{
/* Skip function name: */
ch1 = index(buffer,';');
ch1++;
/* Skip additional info (not used): */
ch1 = index(ch1,';');
ch1++;
ch1++;
ch2 = filename;
while ((*ch2 = *ch1) != ' ')
{
ch1++;
ch2++;
}
/* Terminate the file name: */
*ch2++ = '\0';
ch1++;
file = fopen(filename,"r");
if (!file)
{
fputs("- ",stdout);
fputs(argv[0],stdout);
puts(": AutoDoc file not found.");
error = 20;
}
else
{
offset = 0;
while ((*ch1 >= '0') && (*ch1 <= '9'))
offset = 10 * offset + *ch1++ - '0';
fseek(file,offset,0);
while ((!feof(file)) && (*buffer != FORMFEED) && (!error))
{
if ((!fgets(buffer,BUFFERSIZE,file)) && (!feof(file)))
{
fputs("- ",stdout);
fputs(argv[0],stdout);
puts(": Error reading AutoDoc file.");
error = 20;
}
else if (*buffer != FORMFEED)
fputs(buffer,stdout);
}
fclose(file);
}
}
}
if (buffer)
FreeMem(buffer, (LONG) BUFFERSIZE);
if (filename)
FreeMem(filename, (LONG) NAMESIZE);
}
}
exit(error);
}