|
|
|
#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;
|
|
|
|
}
|