diff options
Diffstat (limited to 'nimisewi.c')
| -rw-r--r-- | nimisewi.c | 41 |
1 files changed, 27 insertions, 14 deletions
@@ -26,14 +26,16 @@ * sona nanpa li ike. taso ona li pali e ilo pona. */ +#include <config.h> #include <err.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> +#ifdef HAVE_BSD_STRING_H +#include <bsd/string.h> +#else #include <string.h> -#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined( _NetBSD__) || defined(__DragonFly__) -#define HAS_STRLCAT #endif #include <sys/types.h> @@ -42,6 +44,15 @@ #include "nimisewi.h" #include "nimitoki.h" /* nimi_toki, suli_pi_nimi_toki */ +/* struct to hold stuff useful for random index generation */ +struct nanpa_nimi { + int nanpa_nimi; /* number of words - 1 */ + int pi_li_lon; /* whether to insert 'pi' or not */ + int nanpa_pi; /* index to insert 'pi', if pi_li_lon is 1 */ + int *nanpa_sewi_nimi; /* random indices of words */ + size_t suli_pi_nimi_sewi; /* length of generated phrase */ +}; + static void open_e_nanpa_sewi(void) { @@ -165,15 +176,6 @@ weka_e_nanpa_nimi(struct nanpa_nimi *nn) } } -static void -string_cat(char *dst, const char *src, size_t size) { -#ifdef HAS_STRLCAT - strlcat(dst, src, size); -#else - strcat(dst, src); -#endif -} - char *nimi_sewi() { @@ -192,14 +194,25 @@ char } for (i = 0; i < nn->nanpa_nimi; i++) { - string_cat(nimi_pana, +#ifdef HAVE_STRLCAT + strlcat(nimi_pana, pana_e_nimi(nn->nanpa_sewi_nimi[i]), nn->suli_pi_nimi_sewi); - string_cat(nimi_pana, " ", nn->suli_pi_nimi_sewi); + strlcat(nimi_pana, " ", nn->suli_pi_nimi_sewi); +#else + strcat(nimi_pana, + pana_e_nimi(nn->nanpa_sewi_nimi[i])); + strcat(nimi_pana, " "); +#endif } - string_cat(nimi_pana, +#ifdef HAVE_STRLCAT + strlcat(nimi_pana, pana_e_nimi(nn->nanpa_sewi_nimi[i]), nn->suli_pi_nimi_sewi); +#else + strcat(nimi_pana, + pana_e_nimi(nn->nanpa_sewi_nimi[i])); +#endif weka_e_nanpa_nimi(nn); |
