|
|
1.1 root 1: #include <stdio.h>
2: #include <string.h>
3: #include <dirent.h>
4:
5: char *skips[] = {
6: "__main",
7: "_ctors",
8: "_exit",
9: "_ctor_list",
10: "_dtor_list",
11: 0
12: };
13:
14: int
15: do_clean()
16: {
17: DIR *dir;
18: struct dirent *de;
19: remove("mklibnow.bat");
20:
21: dir = opendir("lgcctmp");
22: if (!dir)
23: return 0;
24: while ((de=readdir(dir)))
25: {
26: char buf[30];
27: if (de->d_name[0] == '.')
28: continue;
29: sprintf(buf, "lgcctmp/%s", de->d_name);
30: unlink(buf);
31: }
32: closedir(dir);
33: return 0;
34: }
35:
36: int
37: main(int argc, char **argv)
38: {
39: char *cc = argv[1];
40: char *csrc=argv[2];
41: int i;
42: FILE *batfile;
43: FILE *cfile;
44:
45: if (argc > 1 && strcmp(argv[1], "-c")==0)
46: return do_clean();
47:
48: mkdir("lgcctmp", 0755);
49:
50: batfile = fopen("mklibnow.bat", "a");
51: if (!batfile)
52: {
53: perror("mklibnow.bat");
54: return 1;
55: }
56: fprintf(batfile, "@echo off\n");
57:
58: for (i=3; i<argc; i++)
59: {
60: char basename[30], *bp;
61: int s;
62: for (s=0; skips[s]; s++)
63: if (strcmp(skips[s], argv[i]) == 0)
64: break;
65: if (skips[s])
66: continue;
67: strcpy(basename, "lgcctmp/");
68: if (strncmp(argv[i], "_fix", 4)==0)
69: {
70: strcat(basename, "fx");
71: strcat(basename, argv[i]+4);
72: }
73: else if (strncmp(argv[i], "_float", 4)==0)
74: {
75: strcat(basename, "flt");
76: strcat(basename, argv[i]+6);
77: }
78: else
79: {
80: strcat(basename, argv[i]);
81: }
82: bp = basename + strlen(basename);
83: fprintf(batfile, "%s -c %s.c -o %s.o\n", cc, basename, basename);
84: strcpy(bp, ".c");
85: cfile = fopen(basename, "w");
86: if (cfile)
87: {
88: *bp = 0;
89: fprintf(cfile, "#define L%s\n#include \"%s\"\n", argv[i], csrc);
90: fclose(cfile);
91: }
92: else
93: perror(basename);
94: }
95:
96: fclose(batfile);
97: return 0;
98: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.