Hello community,

here is the log from the commit of package profanity for openSUSE:Factory 
checked in at 2020-06-14 18:34:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/profanity (Old)
 and      /work/SRC/openSUSE:Factory/.profanity.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "profanity"

Sun Jun 14 18:34:11 2020 rev:20 rq:814317 version:0.9.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/profanity/profanity.changes      2020-06-11 
14:52:52.246943724 +0200
+++ /work/SRC/openSUSE:Factory/.profanity.new.3606/profanity.changes    
2020-06-14 18:35:52.906651415 +0200
@@ -1,0 +2,8 @@
+Sat Jun 13 16:45:17 UTC 2020 - Michael Vetter <[email protected]>
+
+- Update to 0.9.2:
+  * Dont manipulate pointer from getenv (#1357)
+  * Fix reading/writing linked files (#1362)
+  * Use gnu99 C standard (#1357)
+
+-------------------------------------------------------------------

Old:
----
  profanity-0.9.1.tar.gz

New:
----
  profanity-0.9.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ profanity.spec ++++++
--- /var/tmp/diff_new_pack.pVpFzT/_old  2020-06-14 18:35:53.794654244 +0200
+++ /var/tmp/diff_new_pack.pVpFzT/_new  2020-06-14 18:35:53.798654256 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           profanity
-Version:        0.9.1
+Version:        0.9.2
 Release:        0
 Summary:        Console-based XMPP client
 License:        SUSE-GPL-3.0+-with-openssl-exception
@@ -29,6 +29,7 @@
 BuildRequires:  gtk2-devel
 BuildRequires:  libcurl-devel
 BuildRequires:  libexpat-devel
+BuildRequires:  libgcrypt-devel >= 1.7.0
 BuildRequires:  libgpgme-devel
 BuildRequires:  libmesode-devel >= 0.9.3
 BuildRequires:  libnotify-devel

++++++ profanity-0.9.1.tar.gz -> profanity-0.9.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/.git/HEAD 
new/profanity-0.9.2/.git/HEAD
--- old/profanity-0.9.1/.git/HEAD       1970-01-01 01:00:00.000000000 +0100
+++ new/profanity-0.9.2/.git/HEAD       2020-06-13 15:03:45.000000000 +0200
@@ -0,0 +1 @@
+ref: refs/heads/master
Binary files old/profanity-0.9.1/.git/index and new/profanity-0.9.2/.git/index 
differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/CHANGELOG 
new/profanity-0.9.2/CHANGELOG
--- old/profanity-0.9.1/CHANGELOG       2020-06-11 10:04:24.000000000 +0200
+++ new/profanity-0.9.2/CHANGELOG       2020-06-13 18:35:37.000000000 +0200
@@ -1,3 +1,11 @@
+0.9.2 (2020-06-13)
+=====
+
+Changes:
+- Dont manipulate pointer from getenv (#1357)
+- Fix reading/writing linked files (#1362)
+- Use gnu99 C standard (#1357)
+
 0.9.1 (2020-06-11)
 =====
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/configure 
new/profanity-0.9.2/configure
--- old/profanity-0.9.1/configure       2020-06-11 10:07:19.000000000 +0200
+++ new/profanity-0.9.2/configure       2020-06-13 18:38:58.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for profanity 0.9.1.
+# Generated by GNU Autoconf 2.69 for profanity 0.9.2.
 #
 # Report bugs to <[email protected]>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='profanity'
 PACKAGE_TARNAME='profanity'
-PACKAGE_VERSION='0.9.1'
-PACKAGE_STRING='profanity 0.9.1'
+PACKAGE_VERSION='0.9.2'
+PACKAGE_STRING='profanity 0.9.2'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1426,7 +1426,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures profanity 0.9.1 to adapt to many kinds of systems.
+\`configure' configures profanity 0.9.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1496,7 +1496,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of profanity 0.9.1:";;
+     short | recursive ) echo "Configuration of profanity 0.9.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1670,7 +1670,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-profanity configure 0.9.1
+profanity configure 0.9.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2039,7 +2039,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by profanity $as_me 0.9.1, which was
+It was created by profanity $as_me 0.9.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2906,7 +2906,7 @@
 
 # Define the identity of the package.
  PACKAGE='profanity'
- VERSION='0.9.1'
+ VERSION='0.9.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -12330,7 +12330,7 @@
     PLATFORM="nix" ;;
 esac
 
-PACKAGE_STATUS="release"
+PACKAGE_STATUS="development"
 
 ### Get git branch and revision if in development
 if test "x$PACKAGE_STATUS" = xdevelopment; then
@@ -16738,7 +16738,7 @@
 
 
 ### Default parameters
-AM_CFLAGS="-Wall -Wno-deprecated-declarations -std=c99"
+AM_CFLAGS="-Wall -Wno-deprecated-declarations -std=gnu99"
 if test "x$PACKAGE_STATUS" = xdevelopment; then :
   AM_CFLAGS="$AM_CFLAGS -Wunused -Werror"
 fi
@@ -17448,7 +17448,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by profanity $as_me 0.9.1, which was
+This file was extended by profanity $as_me 0.9.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17514,7 +17514,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-profanity config.status 0.9.1
+profanity config.status 0.9.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/configure.ac 
new/profanity-0.9.2/configure.ac
--- old/profanity-0.9.1/configure.ac    2020-06-11 10:06:15.000000000 +0200
+++ new/profanity-0.9.2/configure.ac    2020-06-13 18:38:21.000000000 +0200
@@ -1,7 +1,7 @@
 #                                               -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
 
-AC_INIT([profanity], [0.9.1], [[email protected]])
+AC_INIT([profanity], [0.9.2], [[email protected]])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_SRCDIR([src/main.c])
@@ -27,7 +27,7 @@
     [cygwin], [PLATFORM="cygwin"],
     [PLATFORM="nix"])
 
-PACKAGE_STATUS="release"
+PACKAGE_STATUS="development"
 
 ### Get git branch and revision if in development
 if test "x$PACKAGE_STATUS" = xdevelopment; then
@@ -354,7 +354,7 @@
 AC_CHECK_HEADERS([ncurses.h], [], [])
 
 ### Default parameters
-AM_CFLAGS="-Wall -Wno-deprecated-declarations -std=c99"
+AM_CFLAGS="-Wall -Wno-deprecated-declarations -std=gnu99"
 AS_IF([test "x$PACKAGE_STATUS" = xdevelopment],
     [AM_CFLAGS="$AM_CFLAGS -Wunused -Werror"])
 AS_IF([test "x$PLATFORM" = xosx],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/docs/profanity.1 
new/profanity-0.9.2/docs/profanity.1
--- old/profanity-0.9.1/docs/profanity.1        2020-06-11 10:05:12.000000000 
+0200
+++ new/profanity-0.9.2/docs/profanity.1        2020-06-13 18:36:05.000000000 
+0200
@@ -1,4 +1,4 @@
-.TH man 1 "2020-05-09" "0.9.1" "Profanity XMPP client"
+.TH man 1 "2020-05-09" "0.9.2" "Profanity XMPP client"
 .SH NAME
 Profanity \- a simple console based XMPP chat client.
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/common.c 
new/profanity-0.9.2/src/common.c
--- old/profanity-0.9.1/src/common.c    2020-06-03 14:33:18.000000000 +0200
+++ new/profanity-0.9.2/src/common.c    2020-06-13 15:03:49.000000000 +0200
@@ -307,6 +307,7 @@
         // if relative, add basedir
         if (!g_str_has_prefix(true_loc, "/") && !g_str_has_prefix(true_loc, 
"~")) {
             GString *base_str = g_string_new(basedir);
+            g_string_append(base_str, "/");
             g_string_append(base_str, true_loc);
             free(true_loc);
             true_loc = base_str->str;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/config/accounts.c 
new/profanity-0.9.2/src/config/accounts.c
--- old/profanity-0.9.1/src/config/accounts.c   2020-06-05 14:52:38.000000000 
+0200
+++ new/profanity-0.9.2/src/config/accounts.c   2020-06-13 15:03:49.000000000 
+0200
@@ -969,7 +969,7 @@
     gsize g_data_size;
     gchar *g_accounts_data = g_key_file_to_data(accounts, &g_data_size, NULL);
 
-    gchar *base = g_path_get_basename(accounts_loc);
+    gchar *base = g_path_get_dirname(accounts_loc);
     gchar *true_loc = get_file_or_linked(accounts_loc, base);
     g_file_set_contents(true_loc, g_accounts_data, g_data_size, NULL);
     g_chmod(accounts_loc, S_IRUSR | S_IWUSR);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/config/files.c 
new/profanity-0.9.2/src/config/files.c
--- old/profanity-0.9.1/src/config/files.c      2020-06-11 10:04:43.000000000 
+0200
+++ new/profanity-0.9.2/src/config/files.c      2020-06-12 16:00:16.000000000 
+0200
@@ -91,7 +91,7 @@
     g_free(xdg_data);
 }
 
-char*
+gchar*
 files_get_inputrc_file(void)
 {
     gchar *xdg_config = _files_get_xdg_config_home();
@@ -101,7 +101,7 @@
     g_string_append(inputrc_file, "/profanity/inputrc");
 
     if (g_file_test(inputrc_file->str, G_FILE_TEST_IS_REGULAR)) {
-        char *result = strdup(inputrc_file->str);
+        gchar *result = g_strdup(inputrc_file->str);
         g_string_free(inputrc_file, TRUE);
 
         return result;
@@ -131,7 +131,7 @@
 
     g_string_append(logfile, ".log");
 
-    char *result = strdup(logfile->str);
+    char *result = g_strdup(logfile->str);
 
     free(xdg_data);
     g_string_free(logfile, TRUE);
@@ -139,28 +139,28 @@
     return result;
 }
 
-char*
+gchar*
 files_get_config_path(char *config_base)
 {
     gchar *xdg_config = _files_get_xdg_config_home();
     GString *file_str = g_string_new(xdg_config);
     g_string_append(file_str, "/profanity/");
     g_string_append(file_str, config_base);
-    char *result = strdup(file_str->str);
+    gchar *result = g_strdup(file_str->str);
     g_free(xdg_config);
     g_string_free(file_str, TRUE);
 
     return result;
 }
 
-char*
+gchar*
 files_get_data_path(char *data_base)
 {
     gchar *xdg_data = _files_get_xdg_data_home();
     GString *file_str = g_string_new(xdg_data);
     g_string_append(file_str, "/profanity/");
     g_string_append(file_str, data_base);
-    char *result = strdup(file_str->str);
+    gchar *result = g_strdup(file_str->str);
     g_free(xdg_data);
     g_string_free(file_str, TRUE);
 
@@ -170,12 +170,16 @@
 static char*
 _files_get_xdg_config_home(void)
 {
-    gchar *xdg_config_home = getenv("XDG_CONFIG_HOME");
-    if (xdg_config_home)
+    gchar *xdg_config_home_env = getenv("XDG_CONFIG_HOME");
+    gchar *xdg_config_home = NULL;
+
+    if (xdg_config_home_env) {
+        xdg_config_home = strdup(xdg_config_home_env);
         g_strstrip(xdg_config_home);
+    }
 
     if (xdg_config_home && (strcmp(xdg_config_home, "") != 0)) {
-        return strdup(xdg_config_home);
+        return xdg_config_home;
     } else {
         GString *default_path = g_string_new(getenv("HOME"));
         g_string_append(default_path, "/.config");
@@ -189,12 +193,16 @@
 static char*
 _files_get_xdg_data_home(void)
 {
-    gchar *xdg_data_home = getenv("XDG_DATA_HOME");
-    if (xdg_data_home)
+    gchar *xdg_data_home_env = getenv("XDG_DATA_HOME");
+    gchar *xdg_data_home = NULL;
+
+    if (xdg_data_home_env) {
+        xdg_data_home = strdup(xdg_data_home_env);
         g_strstrip(xdg_data_home);
+    }
 
     if (xdg_data_home && (strcmp(xdg_data_home, "") != 0)) {
-        return strdup(xdg_data_home);
+        return xdg_data_home;
     } else {
         GString *default_path = g_string_new(getenv("HOME"));
         g_string_append(default_path, "/.local/share");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/config/files.h 
new/profanity-0.9.2/src/config/files.h
--- old/profanity-0.9.1/src/config/files.h      2020-06-03 13:01:45.000000000 
+0200
+++ new/profanity-0.9.2/src/config/files.h      2020-06-12 16:00:21.000000000 
+0200
@@ -60,10 +60,10 @@
 
 void files_create_directories(void);
 
-char* files_get_config_path(char *config_base);
-char* files_get_data_path(char *data_base);
+gchar* files_get_config_path(char *config_base);
+gchar* files_get_data_path(char *data_base);
 
-char* files_get_log_file(char *log_file);
-char* files_get_inputrc_file(void);
+gchar* files_get_log_file(char *log_file);
+gchar* files_get_inputrc_file(void);
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/config/preferences.c 
new/profanity-0.9.2/src/config/preferences.c
--- old/profanity-0.9.1/src/config/preferences.c        2020-06-03 
13:01:45.000000000 +0200
+++ new/profanity-0.9.2/src/config/preferences.c        2020-06-13 
15:03:49.000000000 +0200
@@ -67,7 +67,7 @@
 
 #define INPBLOCK_DEFAULT 1000
 
-static char *prefs_loc;
+static gchar *prefs_loc;
 static GKeyFile *prefs;
 gint log_maxsize = 0;
 
@@ -209,7 +209,7 @@
     if (config_file == NULL) {
         prefs_loc = files_get_config_path(FILE_PROFRC);
     } else {
-        prefs_loc = strdup(config_file);
+        prefs_loc = g_strdup(config_file);
     }
 
     if (g_file_test(prefs_loc, G_FILE_TEST_EXISTS)) {
@@ -236,7 +236,7 @@
     g_key_file_free(prefs);
     prefs = NULL;
 
-    free(prefs_loc);
+    g_free(prefs_loc);
     prefs_loc = NULL;
 }
 
@@ -1665,7 +1665,7 @@
 {
     gsize g_data_size;
     gchar *g_prefs_data = g_key_file_to_data(prefs, &g_data_size, NULL);
-    gchar *base = g_path_get_basename(prefs_loc);
+    gchar *base = g_path_get_dirname(prefs_loc);
     gchar *true_loc = get_file_or_linked(prefs_loc, base);
 
     g_file_set_contents(true_loc, g_prefs_data, g_data_size, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/config/theme.c 
new/profanity-0.9.2/src/config/theme.c
--- old/profanity-0.9.1/src/config/theme.c      2020-06-03 13:01:45.000000000 
+0200
+++ new/profanity-0.9.2/src/config/theme.c      2020-06-12 15:58:56.000000000 
+0200
@@ -230,10 +230,11 @@
 theme_list(void)
 {
     GSList *result = NULL;
-    char *themes_dir = files_get_config_path(DIR_THEMES);
+    gchar *themes_dir = files_get_config_path(DIR_THEMES);
 
     _theme_list_dir(themes_dir, &result);
-    free(themes_dir);
+    g_free(themes_dir);
+
 #ifdef THEMES_PATH
     _theme_list_dir(THEMES_PATH, &result);
 #endif
@@ -532,11 +533,11 @@
 _theme_find(const char *const theme_name)
 {
     GString *path = NULL;
-    char *themes_dir = files_get_config_path(DIR_THEMES);
+    gchar *themes_dir = files_get_config_path(DIR_THEMES);
 
     if (themes_dir) {
         path = g_string_new(themes_dir);
-        free(themes_dir);
+        g_free(themes_dir);
         g_string_append(path, "/");
         g_string_append(path, theme_name);
         if (!g_file_test(path->str, G_FILE_TEST_EXISTS)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/log.c 
new/profanity-0.9.2/src/log.c
--- old/profanity-0.9.1/src/log.c       2020-06-03 13:05:41.000000000 +0200
+++ new/profanity-0.9.2/src/log.c       2020-06-12 15:55:49.000000000 +0200
@@ -149,13 +149,13 @@
     level_filter = filter;
     tz = g_time_zone_new_local();
 
-    char *lf;
+    gchar *lf;
     lf = files_get_log_file(log_file);
 
     logp = fopen(lf, "a");
     g_chmod(lf, S_IRUSR | S_IWUSR);
     mainlogfile = g_string_new(lf);
-    free(lf);
+    g_free(lf);
 }
 
 void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/plugins/settings.c 
new/profanity-0.9.2/src/plugins/settings.c
--- old/profanity-0.9.1/src/plugins/settings.c  2020-06-03 13:01:45.000000000 
+0200
+++ new/profanity-0.9.2/src/plugins/settings.c  2020-06-13 15:03:49.000000000 
+0200
@@ -176,7 +176,7 @@
     gchar *g_data = g_key_file_to_data(settings, &g_data_size, NULL);
 
     char *fileloc = files_get_data_path(FILE_PLUGIN_SETTINGS);
-    gchar *base = g_path_get_basename(fileloc);
+    gchar *base = g_path_get_dirname(fileloc);
     gchar *true_loc = get_file_or_linked(fileloc, base);
     g_free(base);
     g_file_set_contents(true_loc, g_data, g_data_size, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/ui/inputwin.c 
new/profanity-0.9.2/src/ui/inputwin.c
--- old/profanity-0.9.1/src/ui/inputwin.c       2020-06-03 13:01:45.000000000 
+0200
+++ new/profanity-0.9.2/src/ui/inputwin.c       2020-06-12 15:54:51.000000000 
+0200
@@ -503,10 +503,10 @@
     rl_variable_bind("disable-completion", "on");
 
     // check for and load ~/.config/profanity/inputrc
-    char *inputrc = files_get_inputrc_file();
+    gchar *inputrc = files_get_inputrc_file();
     if (inputrc) {
         rl_read_init_file(inputrc);
-        free(inputrc);
+        g_free(inputrc);
     }
 
     return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/ui/tray.c 
new/profanity-0.9.2/src/ui/tray.c
--- old/profanity-0.9.1/src/ui/tray.c   2020-06-03 13:01:45.000000000 +0200
+++ new/profanity-0.9.2/src/ui/tray.c   2020-06-12 15:59:29.000000000 +0200
@@ -79,13 +79,15 @@
 
 #endif /* ICONS_PATH */
 
-    char *icons_dir_s = files_get_config_path(DIR_ICONS);
+    gchar *icons_dir_s = files_get_config_path(DIR_ICONS);
     icons_dir = g_string_new(icons_dir_s);
-    free(icons_dir_s);
+    g_free(icons_dir_s);
     GError *err = NULL;
+
     if (!g_file_test(icons_dir->str, G_FILE_TEST_IS_DIR)) {
         return;
     }
+
     GDir *dir = g_dir_open(icons_dir->str, 0, &err);
     if (dir) {
         GString *name = g_string_new(g_dir_read_name(dir));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/profanity-0.9.1/src/xmpp/connection.c 
new/profanity-0.9.2/src/xmpp/connection.c
--- old/profanity-0.9.1/src/xmpp/connection.c   2020-06-11 09:00:20.000000000 
+0200
+++ new/profanity-0.9.2/src/xmpp/connection.c   2020-06-13 15:03:49.000000000 
+0200
@@ -698,7 +698,7 @@
         gsize g_data_size;
         gchar *g_accounts_data = g_key_file_to_data(rndbytes, &g_data_size, 
NULL);
 
-        gchar *base = g_path_get_basename(rndbytes_loc);
+        gchar *base = g_path_get_dirname(rndbytes_loc);
         gchar *true_loc = get_file_or_linked(rndbytes_loc, base);
         g_file_set_contents(true_loc, g_accounts_data, g_data_size, NULL);
 


Reply via email to