diff --git a/net/freerdp/Makefile b/net/freerdp/Makefile index f33ad9a3b578..3700f7448b58 100644 --- a/net/freerdp/Makefile +++ b/net/freerdp/Makefile @@ -1,152 +1,154 @@ PORTNAME= freerdp DISTVERSION= 2.11.4 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= net comms MASTER_SITES= https://pub.freerdp.com/releases/ \ https://github.com/FreeRDP/FreeRDP/releases/download/${DISTVERSION}/ PATCH_SITES= https://github.com/FreeRDP/FreeRDP/commit/ PATCHFILES+= 61983cd6dcb86097d91b7ef405abc1266444a368.patch:-p1 # ffmpeg6 support: AVPicture # https://github.com/FreeRDP/FreeRDP/pull/8941 MAINTAINER= vvd@FreeBSD.org COMMENT= Free implementation of Remote Desktop Protocol WWW= https://www.freerdp.com/ LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE BROKEN_SSL= libressl-devel BROKEN_SSL_REASON_libressl-devel= fails to compile: no member named 'alert_dispatch' in 'struct ssl3_state_st' LIB_DEPENDS= libepoll-shim.so:devel/libepoll-shim USES= alias cmake compiler:c++11-lib cpe localbase pathfix pkgconfig ssl USE_LDCONFIG= yes PATCHVERSION= ${PORTVERSION} MAJORVERSION= ${PORTVERSION:R:R} CMAKE_ARGS+= ${CMAKE_ARGS_${ARCH}} CMAKE_ON= WITH_CHANNELS WITH_OPENSSL WITH_OSS WITH_ZLIB CHANNEL_URBDRC_CLIENT CMAKE_OFF= WITH_DSP_EXPERIMENTAL WITH_GPROF WITH_GSSAPI WITH_GSTREAMER_0_10 WITH_IPP \ WITH_LIBSYSTEMD WITH_MBEDTLS WITH_OPENCL WITH_OPENSLES WITH_PROFILER \ WITH_SAMPLE WITH_SANITIZE_ADDRESS WITH_SANITIZE_MEMORY \ WITH_SANITIZE_THREAD WITH_SERVER WITH_SERVER_INTERFACE \ WITH_SMARTCARD_INSPECT WITH_THIRD_PARTY WITH_VALGRIND_MEMCHECK PLIST_SUB+= PATCHVERSION="${PATCHVERSION}" PLIST_SUB+= MAJORVERSION="${MAJORVERSION}" OPTIONS_DEFINE= ALSA BROKENFOCUS CUPS FAAC FAAD FFMPEG GSM GSTREAMER \ ICU JPEG LAME MANPAGES OPENH264 PCSC \ PULSEAUDIO SOXR WAYLAND X11 OPTIONS_DEFAULT= CUPS GSTREAMER ICU MANPAGES SWSCALE WAYLAND X11 OPTIONS_RADIO= SCALE OPTIONS_RADIO_SCALE= CAIRO SWSCALE OPTIONS_SUB= yes OPTIONS_DEFINE_aarch64= NEON +OPTIONS_DEFINE_amd64= SSE OPTIONS_DEFINE_armv6= NEON OPTIONS_DEFINE_armv7= NEON -OPTIONS_DEFINE_amd64= SSE OPTIONS_DEFINE_i386= SSE OPTIONS_DEFAULT_aarch64= NEON OPTIONS_DEFAULT_amd64= SSE +OPTIONS_DEFAULT_armv7= NEON ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_CMAKE_BOOL= WITH_ALSA BROKENFOCUS_DESC= Work around focus bug in some WMs (PR \#254908) BROKENFOCUS_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-focusbug.diff CAIRO_DESC= Use CAIRO image library for screen resizing -CAIRO_LIB_DEPENDS= libcairo.so:graphics/cairo CAIRO_CMAKE_BOOL= WITH_CAIRO +CAIRO_USES= gnome +CAIRO_USE= gnome=cairo CUPS_LIB_DEPENDS= libcups.so:print/cups CUPS_CMAKE_BOOL= WITH_CUPS FAAC_LIB_DEPENDS= libfaac.so:audio/faac FAAC_CMAKE_BOOL= WITH_FAAC FAAD_LIB_DEPENDS= libfaad.so:audio/faad FAAD_CMAKE_BOOL= WITH_FAAD2 FFMPEG_LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg \ libavutil.so:multimedia/ffmpeg FFMPEG_CMAKE_BOOL= WITH_FFMPEG WITH_DSP_FFMPEG GSM_LIB_DEPENDS= libgsm.so:audio/gsm GSM_CMAKE_BOOL= WITH_GSM GSTREAMER_CMAKE_BOOL= WITH_GSTREAMER_1_0 CHANNEL_TSMF GSTREAMER_USES= gettext gnome gstreamer xorg GSTREAMER_USE= gnome=glib20 xorg=x11,xext,xorgproto,xrandr GSTREAMER_LIB_DEPENDS= libgstbase-1.0.so:multimedia/gstreamer1 ICU_LIB_DEPENDS= libicuuc.so:devel/icu ICU_CMAKE_BOOL= WITH_ICU JPEG_USES= jpeg JPEG_CMAKE_BOOL= WITH_JPEG LAME_LIB_DEPENDS= libmp3lame.so:audio/lame LAME_CMAKE_BOOL= WITH_LAME MANPAGES_BUILD_DEPENDS= xmlto:textproc/xmlto MANPAGES_CMAKE_BOOL= WITH_MANPAGES NEON_DESC= Enable Media Processing Engine instructions NEON_CMAKE_BOOL= WITH_NEON OPENH264_DESC= H.264 video codec support via OpenH264 OPENH264_LIB_DEPENDS= libopenh264.so:multimedia/openh264 OPENH264_CMAKE_BOOL= WITH_OPENH264 PCSC_DESC= Smart card support (smart card device redirection) # LoadLibraryA("libpcsclite.so") PCSC_LIB_DEPENDS= libpcsclite.so:devel/pcsc-lite PCSC_CMAKE_BOOL= WITH_PCSC PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio PULSEAUDIO_CMAKE_BOOL= WITH_PULSE SOXR_LIB_DEPENDS= libsoxr.so:audio/libsoxr SOXR_CMAKE_BOOL= WITH_SOXR SSE_CMAKE_BOOL= WITH_SSE2 SWSCALE_DESC= Use SWScale image library for screen resizing (recommended) SWSCALE_LIB_DEPENDS= libswscale.so:multimedia/ffmpeg SWSCALE_CMAKE_BOOL= WITH_SWSCALE WAYLAND_DESC= Build FreeRDP Wayland client WAYLAND_CATEGORIES= wayland WAYLAND_BUILD_DEPENDS= ${LOCALBASE}/include/linux/input.h:devel/evdev-proto WAYLAND_LIB_DEPENDS= libwayland-client.so:graphics/wayland \ libwayland-cursor.so:graphics/wayland \ libxkbcommon.so:x11/libxkbcommon WAYLAND_CMAKE_BOOL= WITH_WAYLAND X11_DESC= Build FreeRDP X11 client X11_CMAKE_ON= -DWITH_X11:BOOL=ON -DWITH_XCURSOR:BOOL=ON \ -DWITH_XEXT:BOOL=ON -DWITH_XFIXES:BOOL=ON \ -DWITH_XI:BOOL=ON -DWITH_XINERAMA:BOOL=ON \ -DWITH_XKBFILE:BOOL=ON -DWITH_XRANDR:BOOL=ON \ -DWITH_XRENDER:BOOL=ON -DWITH_XSHM:BOOL=ON \ -DWITH_XV:BOOL=ON X11_CMAKE_OFF= -DWITH_X11:BOOL=OFF -DWITH_XKBFILE:BOOL=OFF X11_USES= xorg X11_USE= xorg=x11,xcursor,xext,xorgproto,xfixes,xi,xinerama,xkbfile,xrandr,xrender,xv post-patch: @${REINPLACE_CMD} -e 's|gsm/gsm.h|gsm.h|' \ ${WRKSRC}/cmake/FindGSM.cmake \ ${WRKSRC}/libfreerdp/codec/dsp.c pre-configure: ${CP} ${FILESDIR}/mntent.h ${WRKSRC}/rdtk/include ${CP} ${FILESDIR}/mntent_compat.c ${WRKSRC}/channels/rdpdr/client .include diff --git a/net/freerdp/files/mntent_compat.c b/net/freerdp/files/mntent_compat.c index 6169936f2a46..076f5c4cabeb 100644 --- a/net/freerdp/files/mntent_compat.c +++ b/net/freerdp/files/mntent_compat.c @@ -1,174 +1,174 @@ /* * Copyright (c) 1980, 1989, 1993, 1994 * The Regents of the University of California. All rights reserved. * Copyright (c) 2001 * David Rufino * Copyright (c) 2006 * Stanislav Sedov * * 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. */ /* most of this was ripped from the mount(3) source */ #include "config.h" #include "mntent.h" #include #include #include #include #include static int pos = -1; static int mntsize = -1; static struct mntent _mntent; struct { int m_flag; const char *m_option; } mntoptions[] = { { MNT_ASYNC, "async" }, { MNT_NOATIME, "noatime"}, { MNT_NOEXEC, "noexec"}, { MNT_NOSUID, "nosuid"}, { MNT_NOSYMFOLLOW, "nosymfollow"}, { MNT_SYNCHRONOUS, "sync"}, { MNT_UNION, "union"}, { MNT_NOCLUSTERR, "noclusterr"}, { MNT_NOCLUSTERW, "noclusterw"}, { MNT_SUIDDIR, "suiddir"}, #ifdef MNT_SNAPSHOT { MNT_SNAPSHOT, "snapshot"}, #endif #ifdef MNT_MULTILABEL { MNT_MULTILABEL, "multilabel"}, #endif #ifdef MNT_ACLS { MNT_ACLS, "acls"}, #endif #ifdef MNT_NODEV { MNT_NODEV, "nodev"}, #endif }; #define N_OPTS (sizeof(mntoptions) / sizeof(*mntoptions)) char * hasmntopt (const struct mntent *mnt, const char *option) { int found; char *opt, *optbuf; optbuf = strdup(mnt->mnt_opts); found = 0; for (opt = optbuf; (opt = strtok(opt, " ")) != NULL; opt = NULL) { if (!strcasecmp(opt, option)) { opt = opt - optbuf + mnt->mnt_opts; free (optbuf); return (opt); } } free (optbuf); return (NULL); } static char * catopt (char *s0, const char *s1) { size_t newlen; char *cp; if (s1 == NULL || *s1 == '\0') return s0; if (s0 != NULL) { newlen = strlen(s0) + strlen(s1) + 1 + 1; if ((cp = (char *)realloc(s0, newlen)) == NULL) return (NULL); (void)strcat(cp, " "); (void)strcat(cp, s1); } else cp = strdup(s1); return (cp); } static char * flags2opts (int flags) { char *res = NULL; int i; res = catopt(res, (flags & MNT_RDONLY) ? "ro" : "rw"); for (i = 0; i < N_OPTS; i++) if (flags & mntoptions[i].m_flag) res = catopt(res, mntoptions[i].m_option); return res; } static struct mntent * statfs_to_mntent (struct statfs *mntbuf) { static char opts_buf[40], *tmp; - + _mntent.mnt_fsname = mntbuf->f_mntfromname; _mntent.mnt_dir = mntbuf->f_mntonname; _mntent.mnt_type = mntbuf->f_fstypename; tmp = flags2opts (mntbuf->f_flags); if (tmp) { opts_buf[sizeof(opts_buf) - 1] = '\0'; strncpy (opts_buf, tmp, sizeof(opts_buf)-1); free (tmp); } else { *opts_buf = '\0'; } - _mntent.mnt_opts = opts_buf; + _mntent.mnt_opts = opts_buf; _mntent.mnt_freq = _mntent.mnt_passno = 0; return (&_mntent); } struct mntent * getmntent (FILE *fp) { struct statfs *mntbuf; if (pos == -1 || mntsize == -1) mntsize = getmntinfo (&mntbuf, MNT_NOWAIT); ++pos; if (pos == mntsize) { pos = mntsize = -1; return (NULL); } return (statfs_to_mntent (&mntbuf[pos])); }