|
|
researchv10 Norman
#include <stdio.h>
#include <sys/types.h>
#include <a.out.h>
char *malloc();
main(argc, argv)
char **argv;
{
char *memt, *memd;
struct exec a;
argc--, argv++;
while (argc > 0) {
close(0);
if (open(argv[0], 0) < 0)
perror(argv[0]);
else {
read(0, &a, sizeof(a));
if (a.a_magic != 0413)
fprintf(stderr, "%s: %o file\n", argv[0], a.a_magic);
else {
memt = malloc(a.a_text);
memd = malloc(a.a_data);
lseek(0, (long)1024, 0);
read(0, memt, a.a_text);
read(0, memd, a.a_data);
close(1);
if (creat(argv[0], 0777) < 0)
perror(argv[0]);
else {
a.a_magic = 0410;
a.a_syms = 0;
write(1, &a, sizeof (a));
write(1, memt, a.a_text);
write(1, memd, a.a_data);
free(memt);
free(memd);
}
fprintf(stderr, "%s: fixed\n", argv[0]);
}
}
argc--, argv++;
}
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.