refactor: Remove strncpy/STRNCPY. (#6008)

Closes #731
References #851

Note: This does not remove some intentional legacy usages of strncpy.
      - memcpy isn't equivalent because it doesn't check the string
        length of `src`, and doesn't zero-out the remainder of `dst`.
      - xstrlcpy isn't equivalent because it doesn't zero-out the
        remainder of `dst`. Some Vim logic depends on that (e.g.
        ex_append which calls vim_strnsave).

Helped-by: Douglas Schneider <ds3@ualberta.ca>
Helped-by: oni-link <knil.ino@gmail.com>
Helped-by: James McCoy <jamessan@jamessan.com>
This commit is contained in:
Justin M. Keyes
2017-01-26 14:33:03 +01:00
committed by GitHub
parent f78982620a
commit 59fd0c4132
12 changed files with 53 additions and 51 deletions

View File

@@ -112,11 +112,11 @@ int64_t os_get_pid(void)
#endif
}
/// Get the hostname of the machine running Neovim.
/// Gets the hostname of the current machine.
///
/// @param hostname Buffer to store the hostname.
/// @param len Length of `hostname`.
void os_get_hostname(char *hostname, size_t len)
/// @param hostname Buffer to store the hostname.
/// @param size Size of `hostname`.
void os_get_hostname(char *hostname, size_t size)
{
#ifdef HAVE_SYS_UTSNAME_H
struct utsname vutsname;
@@ -124,8 +124,7 @@ void os_get_hostname(char *hostname, size_t len)
if (uname(&vutsname) < 0) {
*hostname = '\0';
} else {
strncpy(hostname, vutsname.nodename, len - 1);
hostname[len - 1] = '\0';
xstrlcpy(hostname, vutsname.nodename, size);
}
#else
// TODO(unknown): Implement this for windows.