| #include<stdio.h> |
| #include<assert.h> |
| #include<string.h> |
| |
| #define ARRSIZE 80 |
| |
| int main(int argc, char **argv) { |
| char arr[ARRSIZE]; |
| char *ofilename; |
| char *ifilename; |
| char *dfilename; |
| FILE *ifile; |
| FILE *ofile; |
| FILE *depfile; |
| size_t bytes; |
| int i; |
| |
| if(argc != 4) { |
| fprintf(stderr, "%s <input file> <output file> <dependency file>\n", argv[0]); |
| return 1; |
| } |
| ifilename = argv[1]; |
| ofilename = argv[2]; |
| dfilename = argv[3]; |
| ifile = fopen(argv[1], "r"); |
| if(!ifile) { |
| fprintf(stderr, "Could not open source file %s.\n", argv[1]); |
| return 1; |
| } |
| ofile = fopen(ofilename, "w"); |
| if(!ofile) { |
| fprintf(stderr, "Could not open target file %s\n", ofilename); |
| fclose(ifile); |
| return 1; |
| } |
| bytes = fread(arr, 1, ARRSIZE, ifile); |
| assert(bytes < 80); |
| assert(bytes > 0); |
| fwrite(arr, 1, bytes, ofile); |
| |
| depfile = fopen(dfilename, "w"); |
| if(!depfile) { |
| fprintf(stderr, "Could not open depfile %s\n", ofilename); |
| fclose(ifile); |
| fclose(ofile); |
| return 1; |
| } |
| for(i=0; i<strlen(ofilename); i++) { |
| if(ofilename[i] == ' ') { |
| fwrite("\\ ", 1, 2, depfile); |
| } else { |
| fwrite(&ofilename[i], 1, 1, depfile); |
| } |
| } |
| fwrite(": ", 1, 2, depfile); |
| for(i=0; i<strlen(ifilename); i++) { |
| if(ifilename[i] == ' ') { |
| fwrite("\\ ", 1, 2, depfile); |
| } else { |
| fwrite(&ifilename[i], 1, 1, depfile); |
| } |
| } |
| fwrite("\n", 1, 1, depfile); |
| |
| fclose(ifile); |
| fclose(ofile); |
| fclose(depfile); |
| return 0; |
| } |