Revert part of the last commit, remove {g|s}etflags from the libc

interface, and statically link them to the programs using them.
These functions, upon reflection and discussion, are too generically
named for a library interface with such specific functionality.
Also the api that they use, whilst ok for private use, isn't good
enough for a libc function.

Additionally there were complications with the build/install-world
process.  It depends heavily upon xinstall, which got broken by
the change in api, and caused bootstrap problems and general mayhem.

There is work in progress to address future problems that may be
caused by changes in install-chain tools, and better names for
{g|s}etflags can be derived when some future program requires them.
For now the code has been left in src/lib/libc/gen (it started off
in src/bin/ls).

It's important to provide library functions for manipulating file
flag strings if we ever want this interface to be adopted outside
of the source tree, but now isn't necessarily the right moment
with 4.0-release just around the corner.

Approved:	jkh
This commit is contained in:
Josef Karthauser 2000-02-05 18:42:36 +00:00
parent dfd9528b30
commit 418d67b0d9
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=57003
15 changed files with 28 additions and 12 deletions

View File

@ -5,5 +5,7 @@ NOSHARED?=yes
PROG= chflags
CFLAGS+=-Wall
.PATH: ${.CURDIR}/../../lib/libc/gen
SRCS= chflags.c setflags.c
.include <bsd.prog.mk>

View File

@ -56,6 +56,8 @@ static const char rcsid[] =
#include <string.h>
#include <unistd.h>
extern u_long setflags __P((char **, u_long *, u_long *));
void usage __P((void));
int

View File

@ -3,6 +3,7 @@
PROG= ls
SRCS= cmp.c ls.c print.c util.c
SRCS= cmp.c setflags.c ls.c print.c util.c
.PATH: ${.CURDIR}/../../lib/libc/gen
.include <bsd.prog.mk>

View File

@ -74,6 +74,8 @@ static const char rcsid[] =
*/
#define STRBUF_SIZEOF(t) (1 + CHAR_BIT * sizeof(t) / 3 + 1)
char *getflags __P((u_long, char *));
static void display __P((FTSENT *, FTSENT *));
static u_quad_t makenines __P((u_long));
static int mastercmp __P((const FTSENT **, const FTSENT **));

View File

@ -2,8 +2,10 @@
# $FreeBSD$
PROG= rm
SRCS= rm.c setflags.c
LINKS= ${BINDIR}/rm ${BINDIR}/unlink
MLINKS= rm.1 unlink.1
.PATH: ${.CURDIR}/../../lib/libc/gen
.include <bsd.prog.mk>

View File

@ -61,6 +61,8 @@ static const char rcsid[] =
#include <sysexits.h>
#include <unistd.h>
char *getflags __P((u_long, char *));
int dflag, eval, fflag, iflag, Pflag, vflag, Wflag, stdin_ok;
uid_t uid;

View File

@ -134,7 +134,6 @@ int ftruncate __P((int, off_t));
#endif
int getdomainname __P((char *, int));
int getdtablesize __P((void));
char *getflags __P((u_long, char *));
int getgrouplist __P((const char *, int, int *, int *));
long gethostid __P((void));
int gethostname __P((char *, int));
@ -182,7 +181,6 @@ int select __P((int, fd_set *, fd_set *, fd_set *, struct timeval *));
int setdomainname __P((const char *, int));
int setegid __P((gid_t));
int seteuid __P((uid_t));
int setflags __P((char **, u_long *, u_long *));
int setgroups __P((int, const gid_t *));
void sethostid __P((long));
int sethostname __P((const char *, int));

View File

@ -20,7 +20,7 @@ SRCS+= _rand48.c _spinlock_stub.c alarm.c arc4random.c assert.c \
nlist.c nrand48.c ntp_gettime.c opendir.c \
pause.c popen.c psignal.c pwcache.c raise.c readdir.c rewinddir.c \
scandir.c seed48.c seekdir.c semconfig.c semctl.c semget.c semop.c \
setdomainname.c setflags.c sethostname.c setjmperr.c setmode.c shmat.c \
setdomainname.c sethostname.c setjmperr.c setmode.c shmat.c \
shmctl.c shmdt.c shmget.c siginterrupt.c siglist.c signal.c \
sigsetops.c sleep.c srand48.c stringlist.c \
sysconf.c sysctl.c sysctlbyname.c \
@ -45,8 +45,7 @@ MAN3+= alarm.3 arc4random.3 clock.3 \
glob.3 initgroups.3 isinf.3 \
ldexp.3 lockf.3 modf.3 msgctl.3 msgget.3 msgrcv.3 msgsnd.3 \
nice.3 nlist.3 pause.3 popen.3 psignal.3 pwcache.3 \
raise.3 rand48.3 scandir.3 setflags.3 \
setjmp.3 setmode.3 siginterrupt.3 \
raise.3 rand48.3 scandir.3 setjmp.3 setmode.3 siginterrupt.3 \
signal.3 sigsetops.3 sleep.3 stringlist.3 \
sysconf.3 sysctl.3 syslog.3 tcgetpgrp.3 \
tcsendbreak.3 tcsetattr.3 tcsetpgrp.3 time.3 times.3 timezone.3 \
@ -101,7 +100,6 @@ MLINKS+=rand48.3 _rand48.3 rand48.3 drand48.3 rand48.3 erand48.3 \
rand48.3 mrand48.3 rand48.3 nrand48.3 rand48.3 seed48.3 \
rand48.3 srand48.3
MLINKS+=scandir.3 alphasort.3
MLINKS+=setflags.3 getflags.3
MLINKS+=setjmp.3 _longjmp.3 setjmp.3 _setjmp.3 setjmp.3 longjmp.3 \
setjmp.3 longjmperr.3 setjmp.3 longjmperror.3 \
setjmp.3 siglongjmp.3 setjmp.3 sigsetjmp.3

View File

@ -14,8 +14,8 @@ LDADD= -lskey -lmd -lcrypt -lutil
DPADD= ${LIBSKEY} ${LIBMD} ${LIBCRYPT} ${LIBUTIL}
LSDIR= ../../bin/ls
.PATH: ${.CURDIR}/${LSDIR}
SRCS+= ls.c cmp.c print.c util.c
.PATH: ${.CURDIR}/${LSDIR} ${.CURDIR}/../../lib/libc/gen
SRCS+= ls.c cmp.c print.c setflags.c util.c
CFLAGS+=-DINTERNAL_LS -Dmain=ls_main -I${.CURDIR}/${LSDIR}
.if defined(NOPAM)

View File

@ -5,5 +5,7 @@ NOSHARED?=yes
PROG= chflags
CFLAGS+=-Wall
.PATH: ${.CURDIR}/../../lib/libc/gen
SRCS= chflags.c setflags.c
.include <bsd.prog.mk>

View File

@ -56,6 +56,8 @@ static const char rcsid[] =
#include <string.h>
#include <unistd.h>
extern u_long setflags __P((char **, u_long *, u_long *));
void usage __P((void));
int

View File

@ -2,6 +2,7 @@
# $FreeBSD$
PROG= find
SRCS= find.c function.c ls.c main.c misc.c operator.c option.c
SRCS= find.c function.c ls.c main.c misc.c operator.c option.c setflags.c
.PATH: ${.CURDIR}/../../lib/libc/gen
.include <bsd.prog.mk>

View File

@ -71,6 +71,8 @@ static char rcsid[] = "$FreeBSD$";
} \
}
u_long setflags __P((char **, u_long *, u_long *));
static PLAN *palloc __P((enum ntype, int (*) __P((PLAN *, FTSENT *))));
/*

View File

@ -2,6 +2,8 @@
# $FreeBSD$
PROG= xinstall
SRCS= setflags.c xinstall.c
.PATH: ${.CURDIR}/../../lib/libc/gen
MAN1= install.1
install: maninstall

View File

@ -2,9 +2,9 @@
# $FreeBSD$
PROG= mtree
SRCS= compare.c crc.c create.c misc.c mtree.c spec.c verify.c
SRCS= compare.c crc.c create.c misc.c mtree.c spec.c verify.c setflags.c
MAN8= mtree.8
.PATH: ${.CURDIR}/../../usr.bin/cksum
.PATH: ${.CURDIR}/../../usr.bin/cksum ${.CURDIR}/../../lib/libc/gen
.if !defined(WORLD)
DPADD+= ${LIBMD}