diff options
author | Jakob Kaivo <jkk@ung.org> | 2020-08-14 16:27:35 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2020-08-14 16:27:35 -0400 |
commit | 22f4c7005e9ca07a493f84eac2f529ec369649f3 (patch) | |
tree | 93f4ece4d9abe128705ad42c7842605b04e0869e | |
parent | a4a288cb5dedb82def5e2c2193bd6e9f4a399194 (diff) |
add __pwd.c for <pwd.h> internal state
-rw-r--r-- | .deps.mk | 12 | ||||
-rw-r--r-- | .deps/all.c | 1 | ||||
-rw-r--r-- | .deps/libc.POSIX_1 | 1 | ||||
-rw-r--r-- | .deps/libc.POSIX_199506 | 4 | ||||
-rw-r--r-- | src/pwd/__pwd.c | 18 | ||||
-rw-r--r-- | src/pwd/_pwd.h | 29 |
6 files changed, 64 insertions, 1 deletions
@@ -721,6 +721,10 @@ libc.a(perror.o): $(OBJDIR)/perror.o $(OBJDIR)/perror.o: ./src/stdio/perror.c $(CC) $(BASE_CFLAGS) $(CFLAGS) -c ./src/stdio/perror.c -o $@ echo [CC] $@ +libc.a(putc_unlocked.o): $(OBJDIR)/putc_unlocked.o +$(OBJDIR)/putc_unlocked.o: ./src/stdio/putc_unlocked.c + $(CC) $(BASE_CFLAGS) $(CFLAGS) -c ./src/stdio/putc_unlocked.c -o $@ + echo [CC] $@ libc.a(fscanf.o): $(OBJDIR)/fscanf.o $(OBJDIR)/fscanf.o: ./src/stdio/fscanf.c $(CC) $(BASE_CFLAGS) $(CFLAGS) -c ./src/stdio/fscanf.c -o $@ @@ -753,6 +757,10 @@ libc.a(ungetc.o): $(OBJDIR)/ungetc.o $(OBJDIR)/ungetc.o: ./src/stdio/ungetc.c $(CC) $(BASE_CFLAGS) $(CFLAGS) -c ./src/stdio/ungetc.c -o $@ echo [CC] $@ +libc.a(getc_unlocked.o): $(OBJDIR)/getc_unlocked.o +$(OBJDIR)/getc_unlocked.o: ./src/stdio/getc_unlocked.c + $(CC) $(BASE_CFLAGS) $(CFLAGS) -c ./src/stdio/getc_unlocked.c -o $@ + echo [CC] $@ libc.a(putw.o): $(OBJDIR)/putw.o $(OBJDIR)/putw.o: ./src/stdio/putw.c $(CC) $(BASE_CFLAGS) $(CFLAGS) -c ./src/stdio/putw.c -o $@ @@ -1489,6 +1497,10 @@ libm.a(clog.o): $(OBJDIR)/clog.o $(OBJDIR)/clog.o: ./src/complex/clog.c $(CC) $(BASE_CFLAGS) $(CFLAGS) -c ./src/complex/clog.c -o $@ echo [CC] $@ +libc.a(__pwd.o): $(OBJDIR)/__pwd.o +$(OBJDIR)/__pwd.o: ./src/pwd/__pwd.c + $(CC) $(BASE_CFLAGS) $(CFLAGS) -c ./src/pwd/__pwd.c -o $@ + echo [CC] $@ libc.a(getpwent.o): $(OBJDIR)/getpwent.o $(OBJDIR)/getpwent.o: ./src/pwd/getpwent.c $(CC) $(BASE_CFLAGS) $(CFLAGS) -c ./src/pwd/getpwent.c -o $@ diff --git a/.deps/all.c b/.deps/all.c index cb5baf4e..bc3c2820 100644 --- a/.deps/all.c +++ b/.deps/all.c @@ -1113,6 +1113,7 @@ ./src/complex/csinh.c ./src/complex/cabs.c ./src/complex/clog.c +./src/pwd/__pwd.c ./src/pwd/getpwent.c ./src/pwd/setpwent.c ./src/pwd/getpwnam.c diff --git a/.deps/libc.POSIX_1 b/.deps/libc.POSIX_1 index e26c9303..7868d0b8 100644 --- a/.deps/libc.POSIX_1 +++ b/.deps/libc.POSIX_1 @@ -74,6 +74,7 @@ libc_POSIX_1_OBJS= \ libc.a($(OBJDIR)/opendir.o) \ libc.a($(OBJDIR)/rewinddir.o) \ libc.a($(OBJDIR)/readdir.o) \ + libc.a($(OBJDIR)/__pwd.o) \ libc.a($(OBJDIR)/getpwnam.o) \ libc.a($(OBJDIR)/getpwuid.o) \ libc.a($(OBJDIR)/cfsetospeed.o) \ diff --git a/.deps/libc.POSIX_199506 b/.deps/libc.POSIX_199506 index 5e7f2b11..8ab81154 100644 --- a/.deps/libc.POSIX_199506 +++ b/.deps/libc.POSIX_199506 @@ -3,4 +3,6 @@ libc_POSIX_199506_OBJS= \ libc.a($(OBJDIR)/funlockfile.o) \ libc.a($(OBJDIR)/getchar_unlocked.o) \ libc.a($(OBJDIR)/flockfile.o) \ - libc.a($(OBJDIR)/putchar_unlocked.o)
\ No newline at end of file + libc.a($(OBJDIR)/putchar_unlocked.o) \ + libc.a($(OBJDIR)/putc_unlocked.o) \ + libc.a($(OBJDIR)/getc_unlocked.o)
\ No newline at end of file diff --git a/src/pwd/__pwd.c b/src/pwd/__pwd.c new file mode 100644 index 00000000..c6fb7787 --- /dev/null +++ b/src/pwd/__pwd.c @@ -0,0 +1,18 @@ +#include "_pwd.h" + +#ifndef _XOPEN_SOURCE +#undef getpwent +#define getpwent __getpwent +#include "getpwent.c" +#endif + +struct __pwd __pwd = +{ + NULL, + { 0 }, + getpwent, +}; + +/* +POSIX(1) +*/ diff --git a/src/pwd/_pwd.h b/src/pwd/_pwd.h new file mode 100644 index 00000000..b5d666bf --- /dev/null +++ b/src/pwd/_pwd.h @@ -0,0 +1,29 @@ +#ifndef ___PWD_H__ +#define ___PWD_H__ + +#include <sys/types.h> +#include <pwd.h> +#include <stdio.h> + +struct __pwd { + FILE *db; + struct passwd pwd; + struct passwd * (*getpwent)(void); +}; + +extern struct __pwd __pwd; + +#ifndef _XOPEN_SOURCE +#define setpwent() (__pwd.db == NULL ? (void)0 : (void)rewind(__pwd.db)) + +#define endpwent() do { \ + if (__pwd.db) { \ + fclose(__pwd.db); \ + __pwd.db = NULL; \ + } \ +} while (0) + +#define getpwent __pwd.getpwent +#endif + +#endif |