
D front-end changes: - Import dmd v2.101.0-beta.1. - Add predefined version `D_Optimized' when compiling with `-O'. - Shortened method syntax (DIP1043) is now enabled by default. - Array literals assigned to `scope' array variables are now allocated on the stack. - Implement `@system' variables (DIP1035), available behind the preview feature flag `-fpreview=systemvariables'. D runtime changes: - Import druntime v2.101.0-beta.1. Phobos changes: - Import phobos v2.101.0-beta.1. - Added `std.typecons.SafeRefCounted', that can be used in `@safe' code with `-fpreview=dip1000'. gcc/d/ChangeLog: * d-attribs.cc (apply_user_attributes): Update for new front-end interface. * d-builtins.cc (d_init_versions): Predefine `D_Optimized' with compiling with optimizations enabled. * d-lang.cc (d_handle_option): Update for new front-end interface. Handle new option `-fpreview=systemvariables'. * dmd/MERGE: Merge upstream dmd e4f8919591. * dmd/VERSION: Bump version to v2.101.0-beta.1. * expr.cc (ExprVisitor::visit (AssignExp *)): Treat construction of static arrays from a call expression as a simple assignment. (ExprVisitor::visit (ArrayLiteralExp *)): Handle array literals with `scope' storage. * gdc.texi: Update documentation of `-fpreview=' options. * lang.opt (fpreview=shortenedmethods): Remove. (fpreview=systemvariables): New option. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime e4f8919591. * src/MERGE: Merge upstream phobos 3ad507b51. gcc/testsuite/ChangeLog: * gdc.dg/simd19630.d: Move tests with errors to ... * gdc.dg/simd19630b.d: ... here. New test. * gdc.dg/simd19630c.d: New test. * gdc.dg/simd_ctfe.d: Removed. * gdc.dg/simd18867.d: New test. * gdc.dg/simd19788.d: New test. * gdc.dg/simd21469.d: New test. * gdc.dg/simd21672.d: New test. * gdc.dg/simd23077.d: New test. * gdc.dg/simd23084.d: New test. * gdc.dg/simd23085.d: New test. * gdc.dg/torture/simd19632.d: New test. * gdc.dg/torture/simd20041.d: New test. * gdc.dg/torture/simd21673.d: New test. * gdc.dg/torture/simd21676.d: New test. * gdc.dg/torture/simd22438.d: New test. * gdc.dg/torture/simd23009.d: New test. * gdc.dg/torture/simd23077.d: New test. * gdc.dg/torture/simd8.d: New test. * gdc.dg/torture/simd9.d: New test. * gdc.dg/torture/simd_prefetch.d: New test.
288 lines
5.5 KiB
D
288 lines
5.5 KiB
D
/**
|
|
* D header file for POSIX.
|
|
*
|
|
* Copyright: Copyright Sean Kelly 2005 - 2009, Sönke Ludwig 2013.
|
|
* License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
|
* Authors: Sean Kelly, Alex Rønne Petersen, Sönke Ludwig
|
|
* Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
|
|
*/
|
|
|
|
/* Copyright Sean Kelly 2005 - 2009.
|
|
* Distributed under the Boost Software License, Version 1.0.
|
|
* (See accompanying file LICENSE or copy at
|
|
* http://www.boost.org/LICENSE_1_0.txt)
|
|
*/
|
|
module core.sys.posix.grp;
|
|
|
|
import core.sys.posix.config;
|
|
public import core.sys.posix.sys.types; // for gid_t, uid_t
|
|
|
|
version (OSX)
|
|
version = Darwin;
|
|
else version (iOS)
|
|
version = Darwin;
|
|
else version (TVOS)
|
|
version = Darwin;
|
|
else version (WatchOS)
|
|
version = Darwin;
|
|
|
|
version (Posix):
|
|
extern (C):
|
|
nothrow:
|
|
@nogc:
|
|
|
|
//
|
|
// Required
|
|
//
|
|
/*
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
|
|
group* getgrnam(const scope char*);
|
|
group* getgrgid(gid_t);
|
|
*/
|
|
|
|
version (CRuntime_Glibc)
|
|
{
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
}
|
|
else version (Darwin)
|
|
{
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
}
|
|
else version (FreeBSD)
|
|
{
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
}
|
|
else version (NetBSD)
|
|
{
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
}
|
|
else version (OpenBSD)
|
|
{
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
}
|
|
else version (DragonFlyBSD)
|
|
{
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
}
|
|
else version (Solaris)
|
|
{
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
}
|
|
else version (CRuntime_Bionic)
|
|
{
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
struct group
|
|
{
|
|
char* gr_name;
|
|
char* gr_passwd;
|
|
gid_t gr_gid;
|
|
char** gr_mem;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
static assert(false, "Unsupported platform");
|
|
}
|
|
|
|
group* getgrnam(const scope char*);
|
|
group* getgrgid(gid_t);
|
|
|
|
//
|
|
// Thread-Safe Functions (TSF)
|
|
//
|
|
/*
|
|
int getgrnam_r(const scope char*, group*, char*, size_t, group**);
|
|
int getgrgid_r(gid_t, group*, char*, size_t, group**);
|
|
*/
|
|
|
|
version (CRuntime_Glibc)
|
|
{
|
|
int getgrnam_r(const scope char*, group*, char*, size_t, group**);
|
|
int getgrgid_r(gid_t, group*, char*, size_t, group**);
|
|
}
|
|
else version (Darwin)
|
|
{
|
|
int getgrnam_r(const scope char*, group*, char*, size_t, group**);
|
|
int getgrgid_r(gid_t, group*, char*, size_t, group**);
|
|
}
|
|
else version (FreeBSD)
|
|
{
|
|
int getgrnam_r(const scope char*, group*, char*, size_t, group**);
|
|
int getgrgid_r(gid_t, group*, char*, size_t, group**);
|
|
}
|
|
else version (NetBSD)
|
|
{
|
|
int getgrnam_r(const scope char*, group*, char*, size_t, group**);
|
|
int getgrgid_r(gid_t, group*, char*, size_t, group**);
|
|
}
|
|
else version (OpenBSD)
|
|
{
|
|
int getgrnam_r(const scope char*, group*, char*, size_t, group**);
|
|
int getgrgid_r(gid_t, group*, char*, size_t, group**);
|
|
}
|
|
else version (DragonFlyBSD)
|
|
{
|
|
int getgrnam_r(const scope char*, group*, char*, size_t, group**);
|
|
int getgrgid_r(gid_t, group*, char*, size_t, group**);
|
|
}
|
|
else version (Solaris)
|
|
{
|
|
int getgrnam_r(const scope char*, group*, char*, int, group**);
|
|
int getgrgid_r(gid_t, group*, char*, int, group**);
|
|
}
|
|
else version (CRuntime_Bionic)
|
|
{
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
int getgrnam_r(const scope char*, group*, char*, size_t, group**);
|
|
int getgrgid_r(gid_t, group*, char*, size_t, group**);
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
int getgrnam_r(const scope char*, group*, char*, size_t, group**);
|
|
int getgrgid_r(gid_t, group*, char*, size_t, group**);
|
|
}
|
|
else
|
|
{
|
|
static assert(false, "Unsupported platform");
|
|
}
|
|
|
|
//
|
|
// XOpen (XSI)
|
|
//
|
|
/*
|
|
struct group *getgrent(void);
|
|
void endgrent(void);
|
|
void setgrent(void);
|
|
*/
|
|
|
|
version (CRuntime_Glibc)
|
|
{
|
|
group* getgrent();
|
|
@trusted void endgrent();
|
|
@trusted void setgrent();
|
|
}
|
|
else version (Darwin)
|
|
{
|
|
group* getgrent();
|
|
@trusted void endgrent();
|
|
@trusted void setgrent();
|
|
}
|
|
else version (FreeBSD)
|
|
{
|
|
group* getgrent();
|
|
@trusted void endgrent();
|
|
@trusted void setgrent();
|
|
}
|
|
else version (NetBSD)
|
|
{
|
|
group* getgrent();
|
|
@trusted void endgrent();
|
|
@trusted void setgrent();
|
|
}
|
|
else version (OpenBSD)
|
|
{
|
|
group* getgrent();
|
|
@trusted void endgrent();
|
|
@trusted void setgrent();
|
|
}
|
|
else version (DragonFlyBSD)
|
|
{
|
|
group* getgrent();
|
|
@trusted void endgrent();
|
|
@trusted void setgrent();
|
|
}
|
|
else version (Solaris)
|
|
{
|
|
group* getgrent();
|
|
@trusted void endgrent();
|
|
@trusted void setgrent();
|
|
}
|
|
else version (CRuntime_Bionic)
|
|
{
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
group* getgrent();
|
|
@trusted void endgrent();
|
|
@trusted void setgrent();
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
group* getgrent();
|
|
@trusted void endgrent();
|
|
@trusted void setgrent();
|
|
}
|
|
else
|
|
{
|
|
static assert(false, "Unsupported platform");
|
|
}
|