Chris, Christian, Sebastian:

I think it would be best if one of you may have insight on this touching libbsd.

On Wed, Aug 12, 2020 at 11:13 AM Joel Sherrill <j...@rtems.org> wrote:
>
>
> It appears that confstr is already added (with no ifdefs on RTEMS) to libbsd. 
> We discussed that some of these cases make no sense for RTEMS and should just 
> return the UPE (unsupported programming environment" string. We also do not 
> have a "standard path" so shouldn't return one.
>
> But the second patch with a test is not merged.  And is not in sync with what 
> is in confstr.c right now. There is also a spelling error.
>
> Can someone please comment on whether the unmodified BSD version of this is 
> what we want or whether Eshan should update his patch against 6-freebsd-12 to 
> disable the cases that don't make sense.
>
> Either way, we will need a new round of tests.
>
> --joel
>
>
> On Mon, Jul 13, 2020 at 1:10 PM Eshan dhawan <eshandhawa...@gmail.com> wrote:
>>
>> File added to LIBBSD
>>
>> Closes #3373
>> Signed-off-by: Eshan dhawan <eshandhawa...@gmail.com>
>> ---
>>  freebsd/lib/libc/gen/confstr.c | 127 +++++++++++++++++++++++++++++++++
>>  libbsd.py                      |   1 +
>>  2 files changed, 128 insertions(+)
>>  create mode 100644 freebsd/lib/libc/gen/confstr.c
>>
>> diff --git a/freebsd/lib/libc/gen/confstr.c b/freebsd/lib/libc/gen/confstr.c
>> new file mode 100644
>> index 00000000..653f581b
>> --- /dev/null
>> +++ b/freebsd/lib/libc/gen/confstr.c
>> @@ -0,0 +1,127 @@
>> +/*-
>> + * SPDX-License-Identifier: BSD-3-Clause
>> + *
>> + * Copyright (c) 1993
>> + *     The Regents of the University of California.  All rights reserved.
>> + *
>> + * Redistribution and use in source and binary forms, with or without
>> + * modification, are permitted provided that the following conditions
>> + * are met:
>> + * 1. Redistributions of source code must retain the above copyright
>> + *    notice, this list of conditions and the following disclaimer.
>> + * 2. Redistributions in binary form must reproduce the above copyright
>> + *    notice, this list of conditions and the following disclaimer in the
>> + *    documentation and/or other materials provided with the distribution.
>> + * 3. Neither the name of the University nor the names of its contributors
>> + *    may be used to endorse or promote products derived from this software
>> + *    without specific prior written permission.
>> + *
>> + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
>> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
>> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
>> PURPOSE
>> + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
>> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
>> CONSEQUENTIAL
>> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
>> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
>> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
>> STRICT
>> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
>> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>> + * SUCH DAMAGE.
>> + */
>> +
>> +#include <sys/cdefs.h>
>> +__SCCSID("@(#)confstr.c        8.1 (Berkeley) 6/4/93");
>> +__FBSDID("$FreeBSD$");
>> +
>> +#include <sys/param.h>
>> +
>> +#include <errno.h>
>> +#include <limits.h>
>> +#include <paths.h>
>> +#include <string.h>
>> +#include <unistd.h>
>> +
>> +
>> +size_t
>> +confstr(int name, char *buf, size_t len)
>> +{
>> +       const char *p;
>> +       const char UPE[] = "unsupported programming environment";
>> +
>> +       switch (name) {
>> +#ifndef __rtems__
>> +       case _CS_PATH:
>> +               p = _PATH_STDPATH;
>> +               goto docopy;
>> +#endif
>> +               /*
>> +                * POSIX/SUS ``Programming Environments'' stuff
>> +                *
>> +                * We don't support more than one programming environment
>> +                * on any platform (yet), so we just return the empty
>> +                * string for the environment we are compiled for,
>> +                * and the string "unsupported programming environment"
>> +                * for anything else.  (The Standard says that if these
>> +                * values are used on a system which does not support
>> +                * this environment -- determined via sysconf() -- then
>> +                * the value we return is unspecified.  So, we return
>> +                * something which will cause obvious breakage.)
>> +                */
>> +       case _CS_POSIX_V6_ILP32_OFF32_CFLAGS:
>> +       case _CS_POSIX_V6_ILP32_OFF32_LDFLAGS:
>> +       case _CS_POSIX_V6_ILP32_OFF32_LIBS:
>> +       case _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS:
>> +       case _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS:
>> +       case _CS_POSIX_V6_LPBIG_OFFBIG_LIBS:
>> +               /*
>> +                * These two environments are never supported.
>> +                */
>> +               p = UPE;
>> +               goto docopy;
>> +
>> +       case _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS:
>> +       case _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS:
>> +       case _CS_POSIX_V6_ILP32_OFFBIG_LIBS:
>> +#ifndef __rtems__
>> +       if (sizeof(long) * CHAR_BIT == 32 &&
>> +                   sizeof(off_t) > sizeof(long))
>> +                       p = "";
>> +               else
>> +#endif
>> +                       p = UPE;
>> +               goto docopy;
>> +
>> +       case _CS_POSIX_V6_LP64_OFF64_CFLAGS:
>> +       case _CS_POSIX_V6_LP64_OFF64_LDFLAGS:
>> +       case _CS_POSIX_V6_LP64_OFF64_LIBS:
>> +#ifndef __rtems__
>> +               if (sizeof(long) * CHAR_BIT >= 64 &&
>> +                   sizeof(void *) * CHAR_BIT >= 64 &&
>> +                   sizeof(int) * CHAR_BIT >= 32 &&
>> +                   sizeof(off_t) >= sizeof(long))
>> +                       p = "";
>> +               else
>> +#endif
>> +                       p = UPE;
>> +               goto docopy;
>> +#ifndef __rtems__
>> +       case _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS:
>> +               /* XXX - should have more complete coverage */
>> +               if (sizeof(long) * CHAR_BIT >= 64)
>> +                       p = "_POSIX_V6_LP64_OFF64";
>> +               else
>> +                       p = "_POSIX_V6_ILP32_OFFBIG";
>> +               goto docopy;
>> +#endif
>> +
>> +docopy:
>> +               if (len != 0 && buf != NULL)
>> +                       strlcpy(buf, p, len);
>> +               return (strlen(p) + 1);
>> +
>> +       default:
>> +               errno = EINVAL;
>> +               return (0);
>> +       }
>> +       /* NOTREACHED */
>> +}
>> diff --git a/libbsd.py b/libbsd.py
>> index 812674a6..9beba660 100644
>> --- a/libbsd.py
>> +++ b/libbsd.py
>> @@ -2952,6 +2952,7 @@ class user_space(builder.Module):
>>                  'lib/libc/gen/getdomainname.c',
>>                  'lib/libc/gen/gethostname.c',
>>                  'lib/libc/gen/sethostname.c',
>> +                'lib/libc/gen/confstr.c',
>>                  'lib/libc/inet/inet_addr.c',
>>                  'lib/libc/inet/inet_cidr_ntop.c',
>>                  'lib/libc/inet/inet_cidr_pton.c',
>> --
>> 2.17.1
>>
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to