From e81e48c701b8a96f54bc3bc81f50cae5451cce31 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Sat, 5 Jan 2019 11:23:54 +0100 Subject: [PATCH] mescc: Mes C Library: Support GNU Tar: Add getgrgid, getgrnam, setgrent stub. * include/grp.h: New file. * lib/stub/getgrgid.c: New file. * lib/stub/getgrnam.c: New file. * lib/stub/setgrent.c: New file. * lib/libc+gnu.c: Include them. --- include/grp.h | 43 +++++++++++++++++++++++++++++++++++++++++++ lib/libc+gnu.c | 3 +++ lib/stub/getgrgid.c | 35 +++++++++++++++++++++++++++++++++++ lib/stub/getgrnam.c | 35 +++++++++++++++++++++++++++++++++++ lib/stub/setgrent.c | 31 +++++++++++++++++++++++++++++++ 5 files changed, 147 insertions(+) create mode 100644 include/grp.h create mode 100644 lib/stub/getgrgid.c create mode 100644 lib/stub/getgrnam.c create mode 100644 lib/stub/setgrent.c diff --git a/include/grp.h b/include/grp.h new file mode 100644 index 00000000..7b45ad22 --- /dev/null +++ b/include/grp.h @@ -0,0 +1,43 @@ +/* -*-comment-start: "//";comment-end:""-*- + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2019 Jan (janneke) Nieuwenhuizen + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ +#ifndef __MES_GRP_H +#define __MES_GRP_H 1 + +#if WITH_GLIBC +#undef __MES_GRP_H +#include_next +#else // ! WITH_GLIBC + +struct group +{ + char *gr_name; + gid_t gr_gid; + char **gr_mem; +}; + +struct group *getgrent (void); +void endgrent (void); +void setgrent (void); +struct group *getgrgid (gid_t gid); +struct group *getgrnam (char const *name); + +#endif // ! WITH_GLIBC + +#endif // __MES_GRP_H diff --git a/lib/libc+gnu.c b/lib/libc+gnu.c index b824dc72..6d0bcf5f 100644 --- a/lib/libc+gnu.c +++ b/lib/libc+gnu.c @@ -127,4 +127,7 @@ // tar #include +#include +#include #include +#include diff --git a/lib/stub/getgrgid.c b/lib/stub/getgrgid.c new file mode 100644 index 00000000..135509bc --- /dev/null +++ b/lib/stub/getgrgid.c @@ -0,0 +1,35 @@ +/* -*-comment-start: "//";comment-end:""-*- + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ + +#include +#include + +struct group * +getgrgid (gid_t gid) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("getgrid stub\n"); + static char *groups[2] = {"root", 0 }; + static struct group root = {"root", 0, groups}; + stub = 1; + errno = 0; + return &root; +} diff --git a/lib/stub/getgrnam.c b/lib/stub/getgrnam.c new file mode 100644 index 00000000..93b87d06 --- /dev/null +++ b/lib/stub/getgrnam.c @@ -0,0 +1,35 @@ +/* -*-comment-start: "//";comment-end:""-*- + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ + +#include +#include + +struct group * +getgrnam (char const* name) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("getgrid stub\n"); + static char *groups[2] = {"root", 0 }; + static struct group root = {"root", 0, groups}; + stub = 1; + errno = 0; + return &root; +} diff --git a/lib/stub/setgrent.c b/lib/stub/setgrent.c new file mode 100644 index 00000000..70be298b --- /dev/null +++ b/lib/stub/setgrent.c @@ -0,0 +1,31 @@ +/* -*-comment-start: "//";comment-end:""-*- + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ + +#include + +void +setgrent (void) +{ + static int stub = 0; + if (__mes_debug () && !stub) + eputs ("setgrent stub\n"); + stub = 1; + errno = 0; +}