X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=as%2Fasranlib%2Fasranlib.c;fp=as%2Fasranlib%2Fasranlib.c;h=42ee8eaab77754c0bda1532a3d9828e63e563115;hb=9e8071ee3aa512301c19cd2c07a117e9fa3987c1;hp=ab13c6785b857739342ffda4c68af151f5d16f4d;hpb=22ec133e94d056a395025c302b6c331c8cd04658;p=fw%2Fsdcc diff --git a/as/asranlib/asranlib.c b/as/asranlib/asranlib.c index ab13c678..42ee8eaa 100644 --- a/as/asranlib/asranlib.c +++ b/as/asranlib/asranlib.c @@ -231,7 +231,7 @@ get_member_name_by_offset (FILE * fp, long offset) struct symbol_s { const char *name; - off_t offset; + size_t offset; struct symbol_s *next; }; @@ -481,9 +481,10 @@ int get_symbols (FILE * fp, const char *archive) { struct ar_hdr hdr; + size_t hdr_len; char *name; - if (!is_ar (fp) || !ar_get_header (&hdr, fp, &name)) + if (!is_ar (fp) || !(hdr_len = ar_get_header (&hdr, fp, &name))) { fprintf (stderr, "asranlib: %s: File format not recognized\n", archive); exit (1); @@ -494,7 +495,7 @@ get_symbols (FILE * fp, const char *archive) free (name); process_symbol_table (&hdr, fp); - if (!ar_get_header (&hdr, fp, (verbose || list) ? &name : NULL)) + if (!(hdr_len = ar_get_header (&hdr, fp, (verbose || list) ? &name : NULL))) return 1; } else if (AR_IS_BSD_SYMBOL_TABLE (name)) @@ -502,11 +503,11 @@ get_symbols (FILE * fp, const char *archive) free (name); process_bsd_symbol_table (&hdr, fp); - if (!ar_get_header (&hdr, fp, (verbose || list) ? &name : NULL)) + if (!(hdr_len = ar_get_header (&hdr, fp, (verbose || list) ? &name : NULL))) return 1; } - first_member_offset = ftell (fp) - ARHDR_LEN; + first_member_offset = ftell (fp) - hdr_len; /* walk trough all archive members */ do @@ -523,7 +524,7 @@ get_symbols (FILE * fp, const char *archive) { long mdule_offset = ftell (fp); - offset = mdule_offset - ARHDR_LEN; + offset = mdule_offset - hdr_len; enum_symbols (fp, hdr.ar_size, add_symbol, NULL);