Annotation of researchv10no/local/fix-n.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #include <sys/types.h>
                      3: #include <a.out.h>
                      4: char *malloc();
                      5: main(argc, argv)
                      6: char **argv;
                      7: {
                      8:        char *memt, *memd;
                      9:        struct exec a;
                     10: 
                     11:        argc--, argv++;
                     12:        while (argc > 0) {
                     13:                close(0);
                     14:                if (open(argv[0], 0) < 0)
                     15:                        perror(argv[0]);
                     16:                else {
                     17:                        read(0, &a, sizeof(a));
                     18:                        if (a.a_magic != 0410)
                     19:                                fprintf(stderr, "%s: %o file\n",
                     20:                                    argv[0], a.a_magic);
                     21:                        else {
                     22:                                int i = (a.a_text+1023)&~1023;
                     23:                                int j = (a.a_text+511)&~511;
                     24:                                printf("old way bnd %d, new way %d\n", j, i);
                     25:                                if (j == i) {
                     26:                                        printf("ok as is\n");
                     27:                                        goto easy;
                     28:                                }
                     29:                                memt = malloc(a.a_text+1024);
                     30:                                memd = malloc(a.a_data);
                     31:                                read(0, memt, a.a_text);
                     32:                                read(0, memd, a.a_data);
                     33:                                close(1);
                     34:                                if (creat(argv[0], 0777) < 0)
                     35:                                        perror(argv[0]);
                     36:                                else {
                     37:                                        a.a_syms = 0;
                     38:                                        a.a_text = i;
                     39:                                        write(1, &a, sizeof (a));
                     40:                                        write(1, memt, i);
                     41:                                        write(1, memd, a.a_data);
                     42:                                        free(memt);
                     43:                                        free(memd);
                     44:                                }
                     45:                                fprintf(stderr, "%s: fixed\n", argv[0]);
                     46:                        }
                     47:                }
                     48: easy:
                     49:                argc--, argv++;
                     50:        }
                     51: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.