diff options
Diffstat (limited to 'PC/utils/makesrc.c')
-rwxr-xr-x | PC/utils/makesrc.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/PC/utils/makesrc.c b/PC/utils/makesrc.c new file mode 100755 index 0000000..883b4d8 --- /dev/null +++ b/PC/utils/makesrc.c @@ -0,0 +1,67 @@ +#include <stdio.h> +#include <direct.h> +#include <string.h> + +/* Copy files from source directories to ./src changing +file names and #include names to 8x3 lower case */ + +char *usage = "You must be in the \"pc\" directory.\n"; +char *list[] = {"..\\Include", "..\\Modules", "..\\Objects", "..\\Parser", "..\\Python", ".", 0}; +main() +{ + DIR *dpath; + struct dirent *dir; + int len; + char **plist; + char *pt1, *pt2, *name; + char dest_path[256], src_path[256], buf256[256]; + FILE *fpin, *fpout; + + for (plist = list; *plist; plist++){ + if ((dpath = opendir(*plist)) == NULL){ + printf(usage); + return 1; + } + + while (dir = readdir(dpath)){ + name = dir->d_name; + len = strlen(name); + if (len > 2 && name[len - 2] == '.' && + (name[len - 1] == 'c' || name[len - 1] == 'h')){ + strcpy(buf256, name); + if (len > 10){ + buf256[8] = '.'; + buf256[9] = name[len - 1]; + buf256[10] = 0; + } + strlwr(buf256); + strncpy(src_path, *plist, 256); + strncat(src_path, "\\", 256); + strncat(src_path, name, 256); + strncpy(dest_path, ".\\src\\", 256); + strncat(dest_path, buf256, 256); + printf("Copying %-30s to %s\n", src_path, dest_path); + fpin = fopen(src_path, "r"); + fpout = fopen(dest_path, "w"); + while (fgets(buf256, 256, fpin)){ + if (!strncmp(buf256, "#include", 8)){ + strlwr(buf256); + if ((pt1 = strstr(buf256, "\"")) && + (pt2 = strstr(buf256, ".")) && + (*(pt2 + 1) == 'h') && + (pt2 - pt1 > 9)){ + for (pt1 += 9; *pt2; pt1++, pt2++) + *pt1 = *pt2; + *pt1 = 0; + } + } + fputs(buf256, fpout); + } + fclose(fpin); + fclose(fpout); + } + } + closedir(dpath); + } + return 0; + } |