#include <stdio.h>
#include <string.h>

#ifdef	AMIGA
#define	OBJ_EXT "o"
#else
#define	OBJ_EXT	".obj"
#endif

char *inclist[40];
int maxinc = 0;

char include[] = "#include";
main(argc,argv)
int argc;
char *argv[];
{
	int i, j, linelen;
	FILE *fp;
	static char filename[512], buf[512], incfile[512];
	char *cp,*cp1;

	inclist[maxinc++] = "";

	for(i=1;i<argc;i++){
		if (argv[i][0] == '-') {
			if (argv[i][1] == 'i') {
				char *p = &argv[i][2];
				int len = strlen(p);

				inclist[maxinc] = malloc(len + 5);
				strcpy(inclist[maxinc], p);
				if (p[len-1] != ':' && p[len-1] != '/')
					strcat(inclist[maxinc], "/");
				++maxinc;
			}
			continue;
		}
		strcpy(filename,argv[i]);
		if((cp = strchr(filename,'.')) == NULL)
			continue;

		*cp = '\0';
		printf("%s.%s: %s",filename,OBJ_EXT,argv[i]);
		linelen = strlen(filename) + strlen(OBJ_EXT)
						+ strlen(argv[i]) + 2;
		fp = fopen(argv[i],"r");
		while(fgets(buf,512,fp) != NULL){
			if(strncmp(buf,include,sizeof(include)-1) != 0)
				continue;
			if((cp = strchr(buf,'\"')) == NULL)
				continue;
			cp++;
			if((cp1 = strchr(cp,'\"')) == NULL)
				continue;
			*cp1 = '\0';
			stccpy(incfile, cp, sizeof(incfile));
			for (j = 0; j < maxinc; ) {
				strcpy(incfile, inclist[j]);
				strcat(incfile, cp);
				if (access(incfile, 4) == 0)
					break;
				++j;
			}
			if (j >= maxinc) {
				fprintf(stderr, "Can't find %s for module %s\n",
					cp, argv[i]);
				continue;
			}

			if (linelen > 72) {
				printf("\n%s.%s: ",filename,OBJ_EXT,argv[i]);
				linelen = strlen(filename) + strlen(OBJ_EXT)
						+ 2;
			} else
				putchar(' ');

			linelen += strlen(incfile);
			printf("%s", incfile);
		}
		putchar('\n');
		fclose(fp);
	}
	return 0;
}
