scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | README | LICENSE

commit c176afa115cb4c2cec647e688c75af1757666953
parent ab0795328ffc1aedf215c20a1bd97d2eba943548
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Fri, 23 Aug 2019 18:50:43 +0100

[libmach] Move armember() into formember()

Armember() is not used out of formember() and it is not going
to happen, so it is better to remove this interface.

Diffstat:
Minclude/scc/scc/mach.h | 3+--
Dsrc/libmach/armember.c | 46----------------------------------------------
Msrc/libmach/formember.c | 42++++++++++++++++++++++++++++++++++++++++++
3 files changed, 43 insertions(+), 48 deletions(-)

diff --git a/include/scc/scc/mach.h b/include/scc/scc/mach.h @@ -69,6 +69,7 @@ struct obj { void *data; }; +extern int archive(FILE *fp); extern int formember(FILE *fp, int (*fn)(FILE *, char *, void *), void *data); @@ -77,8 +78,6 @@ extern int objtype(FILE *fp, char **name); extern Obj *objnew(int type); extern Objsym *objlookup(Obj *obj, char *name, int install); extern int objpos(Obj *obj, FILE *fp, long pos); -extern int archive(FILE *fp); -extern long armember(FILE *fp, char *member); /* TODO */ diff --git a/src/libmach/armember.c b/src/libmach/armember.c @@ -1,46 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <scc/ar.h> -#include <scc/mach.h> - -static char * -getfname(struct ar_hdr *hdr, char *dst) -{ - char *p; - int i; - - memcpy(dst, hdr->ar_name, SARNAM); - dst[SARNAM] = '\0'; - - for (i = SARNAM-1; i > 0; i--) { - if (dst[i] != ' ' && dst[i] != '/') - break; - dst[i] = '\0'; - } - return dst; -} - -long -armember(FILE *fp, char *member) -{ - struct ar_hdr hdr; - long siz; - - if (fread(&hdr, sizeof(hdr), 1, fp) != 1) - return (feof(fp)) ? 0 : -1; - - if (strncmp(hdr.ar_fmag, ARFMAG, sizeof(hdr.ar_fmag))) - return -1; - - siz = strtol(hdr.ar_size, NULL, 0); - if (siz & 1) - siz++; - if (siz == 0) - return -1; - - getfname(&hdr, member); - - return sizeof(hdr) + siz; -} diff --git a/src/libmach/formember.c b/src/libmach/formember.c @@ -1,8 +1,50 @@ #include <stdio.h> +#include <stdlib.h> +#include <string.h> #include <scc/ar.h> #include <scc/mach.h> +static char * +getfname(struct ar_hdr *hdr, char *dst) +{ + char *p; + int i; + + memcpy(dst, hdr->ar_name, SARNAM); + dst[SARNAM] = '\0'; + + for (i = SARNAM-1; i > 0; i--) { + if (dst[i] != ' ' && dst[i] != '/') + break; + dst[i] = '\0'; + } + return dst; +} + +static long +armember(FILE *fp, char *member) +{ + struct ar_hdr hdr; + long siz; + + if (fread(&hdr, sizeof(hdr), 1, fp) != 1) + return (feof(fp)) ? 0 : -1; + + if (strncmp(hdr.ar_fmag, ARFMAG, sizeof(hdr.ar_fmag))) + return -1; + + siz = strtol(hdr.ar_size, NULL, 0); + if (siz & 1) + siz++; + if (siz == 0) + return -1; + + getfname(&hdr, member); + + return sizeof(hdr) + siz; +} + int formember(FILE *fp, int (*fn)(FILE *, char *, void *), void *data) {