Home
       tnet-misc/telnet-bsd: Add musl fixes. - parlay - yet another gentoo overlay
  HTML git clone https://git.parazyd.org/parlay
   DIR Log
   DIR Files
   DIR Refs
   DIR README
       ---
   DIR commit 21d07082abb72a7af84a004c97829f1154da41d5
   DIR parent 6fdfbffd912c5887cfe0deca236ab85123a1e59d
  HTML Author: parazyd <parazyd@dyne.org>
       Date:   Tue, 25 Oct 2016 00:05:58 +0200
       
       net-misc/telnet-bsd: Add musl fixes.
       
       Diffstat:
         M net-misc/telnet-bsd/files/fix-musl… |     512 ++++++++++++++++++++++++++++++-
       
       1 file changed, 503 insertions(+), 9 deletions(-)
       ---
   DIR diff --git a/net-misc/telnet-bsd/files/fix-musl-build.patch b/net-misc/telnet-bsd/files/fix-musl-build.patch
       t@@ -1,23 +1,517 @@
       +From 8f9ccf8f891e25a9180a35c1942e4f4f7dec4260 Mon Sep 17 00:00:00 2001
       +From: parazyd <parazyd@dyne.org>
       +Date: Mon, 24 Oct 2016 23:47:29 +0200
       +Subject: [PATCH] fix musl build
       +
       +---
       + telnet/misc-proto.h |   2 +-
       + telnet/ring.h       |   2 +-
       + telnet/sys-cdefs.h  |  26 +++++++++++
       + telnetd/logout.h    |  79 +++++++++++++++++++++++++++++++++
       + telnetd/logwtmp.h   |  61 ++++++++++++++++++++++++++
       + telnetd/sys-cdefs.h |  26 +++++++++++
       + telnetd/sys_term.c  |   3 ++
       + telnetd/time32.h    |  99 +++++++++++++++++++++++++++++++++++++++++
       + telnetd/util.h      | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++
       + 9 files changed, 420 insertions(+), 2 deletions(-)
       + create mode 100644 telnet/sys-cdefs.h
       + create mode 100644 telnetd/logout.h
       + create mode 100644 telnetd/logwtmp.h
       + create mode 100644 telnetd/sys-cdefs.h
       + create mode 100644 telnetd/time32.h
       + create mode 100644 telnetd/util.h
       +
        diff --git a/telnet/misc-proto.h b/telnet/misc-proto.h
       -index 5845751..a4af2e1 100644
       +index 5845751..d7d6652 100644
        --- a/telnet/misc-proto.h
        +++ b/telnet/misc-proto.h
       -@@ -63,7 +63,6 @@
       - #ifndef        __MISC_PROTO__
       - #define        __MISC_PROTO__
       -
       +@@ -63,7 +63,7 @@
       + #ifndef        __MISC_PROTO__
       + #define        __MISC_PROTO__
       + 
        -#include <sys/cdefs.h>
       -
       ++#include "sys-cdefs.h"
       + 
         void auth_encrypt_init __P((char *, char *, char *, int));
         void auth_encrypt_user __P((char *));
        diff --git a/telnet/ring.h b/telnet/ring.h
       -index 9ef8fb8..a53fe39 100644
       +index 9ef8fb8..7f9b23c 100644
        --- a/telnet/ring.h
        +++ b/telnet/ring.h
       -@@ -28,7 +28,6 @@
       +@@ -28,7 +28,7 @@
          *
          */
       -
       + 
        -#include <sys/cdefs.h>
       ++#include "sys-cdefs.h"
         #include <sys/types.h>
         #define P __P
       + 
       +diff --git a/telnet/sys-cdefs.h b/telnet/sys-cdefs.h
       +new file mode 100644
       +index 0000000..209a623
       +--- /dev/null
       ++++ b/telnet/sys-cdefs.h
       +@@ -0,0 +1,26 @@
       ++#warning usage of non-standard #include <sys/cdefs.h> is deprecated
       ++
       ++#undef __P
       ++#undef __PMT
       ++
       ++#define __P(args)        args
       ++#define __PMT(args)        args
       ++
       ++#define __CONCAT(x,y)        x ## y
       ++#define __STRING(x)        #x
       ++
       ++#ifdef  __cplusplus
       ++# define __BEGIN_DECLS        extern "C" {
       ++# define __END_DECLS        }
       ++#else
       ++# define __BEGIN_DECLS
       ++# define __END_DECLS
       ++#endif
       ++
       ++#if defined(__GNUC__) && !defined(__cplusplus)
       ++# define __THROW        __attribute__ ((__nothrow__))
       ++# define __NTH(fct)        __attribute__ ((__nothrow__)) fct
       ++#else
       ++# define __THROW
       ++# define __NTH(fct)     fct
       ++#endif
       +diff --git a/telnetd/logout.h b/telnetd/logout.h
       +new file mode 100644
       +index 0000000..11fa743
       +--- /dev/null
       ++++ b/telnetd/logout.h
       +@@ -0,0 +1,79 @@
       ++/*-
       ++ * Copyright (c) 1988, 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. All advertising materials mentioning features or use of this software
       ++ *    must display the following acknowledgement:
       ++ *        This product includes software developed by the University of
       ++ *        California, Berkeley and its contributors.
       ++ * 4. 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"
       ++
       ++#if defined(LIBC_SCCS) && !defined(lint)
       ++#if 0
       ++static char sccsid[] = "@(#)logout.c        8.1 (Berkeley) 6/4/93";
       ++#endif
       ++#endif /* LIBC_SCCS and not lint */
       ++
       ++#include <sys/types.h>
       ++#include <sys/time.h>
       ++
       ++#include <fcntl.h>
       ++#include <bsd/libutil.h>
       ++#include <stdlib.h>
       ++#include <string.h>
       ++#include <bsd/timeconv.h>
       ++#include <unistd.h>
       ++#include <utmp.h>
       ++
       ++#include "time32.h"
       ++
       ++typedef struct utmp UTMP;
       ++
       ++int
       ++logout(const char *line)
       ++{
       ++        int fd;
       ++        UTMP ut;
       ++        int rval;
       ++
       ++        if ((fd = open(_PATH_UTMP, O_RDWR, 0)) < 0)
       ++                return(0);
       ++        rval = 0;
       ++        while (read(fd, &ut, sizeof(UTMP)) == sizeof(UTMP)) {
       ++                if (!ut.ut_name[0] || strncmp(ut.ut_line, line, UT_LINESIZE))
       ++                        continue;
       ++                bzero(ut.ut_name, UT_NAMESIZE);
       ++                bzero(ut.ut_host, UT_HOSTSIZE);
       ++                ut.ut_time = _time_to_time32(time(NULL));
       ++                (void)lseek(fd, -(off_t)sizeof(UTMP), L_INCR);
       ++                (void)write(fd, &ut, sizeof(UTMP));
       ++                rval = 1;
       ++        }
       ++        (void)close(fd);
       ++        return(rval);
       ++}
       +diff --git a/telnetd/logwtmp.h b/telnetd/logwtmp.h
       +new file mode 100644
       +index 0000000..470194a
       +--- /dev/null
       ++++ b/telnetd/logwtmp.h
       +@@ -0,0 +1,61 @@
       ++/*        $OpenBSD: logwtmp.c,v 1.9 2005/08/02 21:46:23 espie Exp $        */
       ++/*
       ++ * Copyright (c) 1988, 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/types.h>
       ++#include <sys/time.h>
       ++#include <sys/stat.h>
       ++
       ++#include <fcntl.h>
       ++#include <string.h>
       ++#include <unistd.h>
       ++#include <utmp.h>
       ++
       ++#include <bsd/libutil.h>
       ++
       ++void
       ++logwtmp(const char *line, const char *name, const char *host)
       ++{
       ++        struct stat buf;
       ++        struct utmp ut;
       ++        int fd;
       ++
       ++        if ((fd = open(_PATH_WTMP, O_WRONLY|O_APPEND, 0)) < 0)
       ++                return;
       ++        if (fstat(fd, &buf) == 0) {
       ++                (void) strncpy(ut.ut_line, line, sizeof(ut.ut_line));
       ++                (void) strncpy(ut.ut_name, name, sizeof(ut.ut_name));
       ++                (void) strncpy(ut.ut_host, host, sizeof(ut.ut_host));
       ++                (void) time(&ut.ut_time);
       ++                if (write(fd, &ut, sizeof(struct utmp)) !=
       ++                    sizeof(struct utmp))
       ++                        (void) ftruncate(fd, buf.st_size);
       ++        }
       ++        (void) close(fd);
       ++}
       +diff --git a/telnetd/sys-cdefs.h b/telnetd/sys-cdefs.h
       +new file mode 100644
       +index 0000000..209a623
       +--- /dev/null
       ++++ b/telnetd/sys-cdefs.h
       +@@ -0,0 +1,26 @@
       ++#warning usage of non-standard #include <sys/cdefs.h> is deprecated
       ++
       ++#undef __P
       ++#undef __PMT
       ++
       ++#define __P(args)        args
       ++#define __PMT(args)        args
       ++
       ++#define __CONCAT(x,y)        x ## y
       ++#define __STRING(x)        #x
       ++
       ++#ifdef  __cplusplus
       ++# define __BEGIN_DECLS        extern "C" {
       ++# define __END_DECLS        }
       ++#else
       ++# define __BEGIN_DECLS
       ++# define __END_DECLS
       ++#endif
       ++
       ++#if defined(__GNUC__) && !defined(__cplusplus)
       ++# define __THROW        __attribute__ ((__nothrow__))
       ++# define __NTH(fct)        __attribute__ ((__nothrow__)) fct
       ++#else
       ++# define __THROW
       ++# define __NTH(fct)     fct
       ++#endif
       +diff --git a/telnetd/sys_term.c b/telnetd/sys_term.c
       +index 31897d8..381577f 100644
       +--- a/telnetd/sys_term.c
       ++++ b/telnetd/sys_term.c
       +@@ -40,6 +40,9 @@
       + #include "telnetd.h"
       + #include "pathnames.h"
       + 
       ++#include "logout.h"
       ++#include "logwtmp.h"
       ++
       + static struct termios termbuf, termbuf2;        /* pty control structure */
       + 
       + /*
       +diff --git a/telnetd/time32.h b/telnetd/time32.h
       +new file mode 100644
       +index 0000000..5037ef0
       +--- /dev/null
       ++++ b/telnetd/time32.h
       +@@ -0,0 +1,99 @@
       ++/*-
       ++ * Copyright (c) 2001 FreeBSD Inc.
       ++ * All rights reserved.
       ++ *
       ++ * These routines are for converting time_t to fixed-bit representations
       ++ * for use in protocols or storage.  When converting time to a larger
       ++ * representation of time_t these routines are expected to assume temporal
       ++ * locality and use the 50-year rule to properly set the msb bits.  XXX
       ++ *
       ++ * Redistribution and use under the terms of the COPYRIGHT file at the
       ++ * base of the source tree.
       ++ */
       ++
       ++#include "sys-cdefs.h"
       ++
       ++#include <sys/types.h>
       ++#include <bsd/timeconv.h>
       ++
       ++/*
       ++ * Convert a 32 bit representation of time_t into time_t.  XXX needs to
       ++ * implement the 50-year rule to handle post-2038 conversions.
       ++ */
       ++time_t
       ++_time32_to_time(int32_t t32)
       ++{
       ++    return((time_t)t32);
       ++}
       ++
       ++/*
       ++ * Convert time_t to a 32 bit representation.  If time_t is 64 bits we can
       ++ * simply chop it down.   The resulting 32 bit representation can be 
       ++ * converted back to a temporally local 64 bit time_t using time32_to_time.
       ++ */
       ++int32_t
       ++_time_to_time32(time_t t)
       ++{
       ++    return((int32_t)t);
       ++}
       ++
       ++/*
       ++ * Convert a 64 bit representation of time_t into time_t.  If time_t is
       ++ * represented as 32 bits we can simply chop it and not support times
       ++ * past 2038.
       ++ */
       ++time_t
       ++_time64_to_time(int64_t t64)
       ++{
       ++    return((time_t)t64);
       ++}
       ++
       ++/*
       ++ * Convert time_t to a 64 bit representation.  If time_t is represented
       ++ * as 32 bits we simply sign-extend and do not support times past 2038.
       ++ */
       ++int64_t
       ++_time_to_time64(time_t t)
       ++{
       ++    return((int64_t)t);
       ++}
       ++
       ++/*
       ++ * Convert to/from 'long'.  Depending on the sizeof(long) this may or 
       ++ * may not require using the 50-year rule.
       ++ */
       ++long
       ++_time_to_long(time_t t)
       ++{
       ++    if (sizeof(long) == sizeof(int64_t))
       ++        return(_time_to_time64(t));
       ++    return((long)t);
       ++}
       ++
       ++time_t
       ++_long_to_time(long tlong)
       ++{
       ++    if (sizeof(long) == sizeof(int32_t))
       ++        return(_time32_to_time(tlong));
       ++    return((time_t)tlong);
       ++}
       ++
       ++/*
       ++ * Convert to/from 'int'.  Depending on the sizeof(int) this may or 
       ++ * may not require using the 50-year rule.
       ++ */
       ++int
       ++_time_to_int(time_t t)
       ++{
       ++    if (sizeof(int) == sizeof(int64_t))
       ++        return(_time_to_time64(t));
       ++    return((int)t);
       ++}
       ++
       ++time_t
       ++_int_to_time(int tint)
       ++{
       ++    if (sizeof(int) == sizeof(int32_t))
       ++        return(_time32_to_time(tint));
       ++    return((time_t)tint);
       ++}
       +diff --git a/telnetd/util.h b/telnetd/util.h
       +new file mode 100644
       +index 0000000..a50dbd0
       +--- /dev/null
       ++++ b/telnetd/util.h
       +@@ -0,0 +1,124 @@
       ++/*        $OpenBSD: util.h,v 1.27 2006/06/14 02:14:25 krw Exp $        */
       ++/*        $NetBSD: util.h,v 1.2 1996/05/16 07:00:22 thorpej Exp $        */
       ++
       ++/*-
       ++ * Copyright (c) 1995
       ++ *        The Regents of the University of California.  All rights reserved.
       ++ * Portions Copyright (c) 1996, Jason Downs.  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.
       ++ */
       ++
       ++#ifndef _UTIL_H_
       ++#define _UTIL_H_
       ++
       ++// #include "sys-cdefs.h"
       ++#include <sys/types.h>
       ++
       ++/*
       ++ * fparseln() specific operation flags.
       ++ */
       ++#define FPARSELN_UNESCESC        0x01
       ++#define FPARSELN_UNESCCONT        0x02
       ++#define FPARSELN_UNESCCOMM        0x04
       ++#define FPARSELN_UNESCREST        0x08
       ++#define FPARSELN_UNESCALL        0x0f
       ++
       ++/*
       ++ * opendev() specific operation flags.
       ++ */
       ++#define OPENDEV_PART        0x01                /* Try to open the raw partition. */
       ++#define OPENDEV_BLCK        0x04                /* Open block, not character device. */
       ++
       ++/*
       ++ * uucplock(3) specific flags.
       ++ */
       ++#define UU_LOCK_INUSE (1)
       ++#define UU_LOCK_OK (0)
       ++#define UU_LOCK_OPEN_ERR (-1)
       ++#define UU_LOCK_READ_ERR (-2)
       ++#define UU_LOCK_CREAT_ERR (-3)
       ++#define UU_LOCK_WRITE_ERR (-4)
       ++#define UU_LOCK_LINK_ERR (-5)
       ++#define UU_LOCK_TRY_ERR (-6)
       ++#define UU_LOCK_OWNER_ERR (-7)
       ++
       ++/*
       ++ * fmt_scaled(3) specific flags.
       ++ */
       ++#define        FMT_SCALED_STRSIZE        7        /* minus sign, 4 digits, suffix, null byte */
       ++
       ++/*
       ++ * stub struct definitions.
       ++ */
       ++struct __sFILE;
       ++struct login_cap;
       ++struct passwd;
       ++struct termios;
       ++struct utmp;
       ++struct winsize;
       ++
       ++#ifdef __cplusplus
       ++extern "C" {
       ++#endif
       ++
       ++char   *fparseln(struct __sFILE *, size_t *, size_t *, const char[3], int);
       ++void        login(struct utmp *);
       ++int        login_tty(int);
       ++int        logout(const char *);
       ++void        logwtmp(const char *, const char *, const char *);
       ++int        opendev(char *, int, int, char **);
       ++int        pidfile(const char *);
       ++void        pw_setdir(const char *);
       ++char   *pw_file(const char *);
       ++int        pw_lock(int retries);
       ++int        pw_mkdb(char *, int);
       ++int        pw_abort(void);
       ++void        pw_init(void);
       ++void        pw_edit(int, const char *);
       ++void        pw_prompt(void);
       ++void        pw_copy(int, int, const struct passwd *, const struct passwd *);
       ++int        pw_scan(char *, struct passwd *, int *);
       ++void        pw_error(const char *, int, int);
       ++int        openpty(int *, int *, char *, struct termios *, struct winsize *);
       ++int        opendisk(const char *path, int flags, char *buf, size_t buflen,
       ++            int iscooked);
       ++pid_t        forkpty(int *, char *, struct termios *, struct winsize *);
       ++int        getmaxpartitions(void);
       ++int        getrawpartition(void);
       ++void        login_fbtab(const char *, uid_t, gid_t);
       ++int        login_check_expire(struct __sFILE *, struct passwd *, char *, int);
       ++char   *readlabelfs(char *, int);
       ++const char *uu_lockerr(int _uu_lockresult);
       ++int     uu_lock(const char *_ttyname);
       ++int        uu_lock_txfr(const char *_ttyname, pid_t _pid);
       ++int     uu_unlock(const char *_ttyname);
       ++int        fmt_scaled(long long number, char *result);
       ++int        scan_scaled(char *scaled, long long *result);
       ++#ifdef __cplusplus
       ++}
       ++#endif
       ++
       ++#endif /* !_UTIL_H_ */
       +-- 
       +2.10.1
       +