From f4981f97bcd1c28fcc64f002ac89e5011870582f Mon Sep 17 00:00:00 2001
From: Orestis Floros <orestisf1993@gmail.com>
Date: Tue, 8 May 2018 17:05:46 +0300
Subject: [PATCH] Replace strncpy call with memcpy when result is not
 NUL-terminated

This fixes a new warning from GCC 8.1, -Wstringop-truncation:
https://gcc.gnu.org/gcc-8/changes.html
https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wstringop-truncation

Replacing with memcpy is what gcc suggests:
> As another example, the following call to strncpy results in copying
> to d just the characters preceding the terminating NUL, without
> appending the NUL to the end. Assuming the result of strncpy is
> necessarily a NUL-terminated string is a common mistake, and so the
> call is diagnosed. To avoid the warning when the result is not
> expected to be NUL-terminated, call memcpy instead.
>    void copy (char *d, const char *s)
>    {
>      strncpy (d, s, strlen (s));
>    }
---
 i3bar/src/ipc.c | 2 +-
 i3bar/src/xcb.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/i3bar/src/ipc.c b/i3bar/src/ipc.c
index 7a657338..56fe2798 100644
--- a/i3bar/src/ipc.c
+++ b/i3bar/src/ipc.c
@@ -309,7 +309,7 @@ int i3_send_msg(uint32_t type, const char *payload) {
     char *buffer = smalloc(to_write);
     char *walk = buffer;
 
-    strncpy(buffer, I3_IPC_MAGIC, strlen(I3_IPC_MAGIC));
+    memcpy(buffer, I3_IPC_MAGIC, strlen(I3_IPC_MAGIC));
     walk += strlen(I3_IPC_MAGIC);
     memcpy(walk, &len, sizeof(uint32_t));
     walk += sizeof(uint32_t);
diff --git a/i3bar/src/xcb.c b/i3bar/src/xcb.c
index 800c05d4..ae6c0abc 100644
--- a/i3bar/src/xcb.c
+++ b/i3bar/src/xcb.c
@@ -604,7 +604,7 @@ void handle_button(xcb_button_press_event_t *event) {
 
     const size_t len = namelen + strlen("workspace \"\"") + 1;
     char *buffer = scalloc(len + num_quotes, 1);
-    strncpy(buffer, "workspace \"", strlen("workspace \""));
+    memcpy(buffer, "workspace \"", strlen("workspace \""));
     size_t inpos, outpos;
     for (inpos = 0, outpos = strlen("workspace \"");
          inpos < namelen;