net/mlx5: fix tunnel offload object allocation
[dpdk.git] / lib / librte_cmdline / cmdline.c
index 591b78b..79ea5f9 100644 (file)
 #include <stdarg.h>
 #include <inttypes.h>
 #include <fcntl.h>
-#include <poll.h>
 #include <errno.h>
-#include <termios.h>
 #include <netinet/in.h>
 
 #include <rte_string_fns.h>
 
-#include "cmdline_parse.h"
-#include "cmdline_rdline.h"
-#include "cmdline.h"
+#include "cmdline_private.h"
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+#define write _write
+#endif
 
 static void
 cmdline_valid_buffer(struct rdline *rdl, const char *buf,
-                    __attribute__((unused)) unsigned int size)
+                    __rte_unused unsigned int size)
 {
        struct cmdline *cl = rdl->opaque;
        int ret;
@@ -69,7 +69,7 @@ cmdline_set_prompt(struct cmdline *cl, const char *prompt)
 {
        if (!cl || !prompt)
                return;
-       snprintf(cl->prompt, sizeof(cl->prompt), "%s", prompt);
+       strlcpy(cl->prompt, prompt, sizeof(cl->prompt));
 }
 
 struct cmdline *
@@ -103,6 +103,12 @@ cmdline_new(cmdline_parse_ctx_t *ctx, const char *prompt, int s_in, int s_out)
        return cl;
 }
 
+struct rdline*
+cmdline_get_rdline(struct cmdline *cl)
+{
+       return &cl->rdl;
+}
+
 void
 cmdline_free(struct cmdline *cl)
 {
@@ -126,35 +132,11 @@ cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
        if (!cl || !fmt)
                return;
 
-#ifdef _GNU_SOURCE
        if (cl->s_out < 0)
                return;
        va_start(ap, fmt);
-       vdprintf(cl->s_out, fmt, ap);
+       cmdline_vdprintf(cl->s_out, fmt, ap);
        va_end(ap);
-#else
-       int ret;
-       char *buf;
-
-       if (cl->s_out < 0)
-               return;
-
-       buf = malloc(BUFSIZ);
-       if (buf == NULL)
-               return;
-       va_start(ap, fmt);
-       ret = vsnprintf(buf, BUFSIZ, fmt, ap);
-       va_end(ap);
-       if (ret < 0) {
-               free(buf);
-               return;
-       }
-       if (ret >= BUFSIZ)
-               ret = BUFSIZ - 1;
-       ret = write(cl->s_out, buf, ret);
-       (void)ret;
-       free(buf);
-#endif
 }
 
 int
@@ -205,7 +187,6 @@ cmdline_quit(struct cmdline *cl)
 int
 cmdline_poll(struct cmdline *cl)
 {
-       struct pollfd pfd;
        int status;
        ssize_t read_status;
        char c;
@@ -215,16 +196,12 @@ cmdline_poll(struct cmdline *cl)
        else if (cl->rdl.status == RDLINE_EXITED)
                return RDLINE_EXITED;
 
-       pfd.fd = cl->s_in;
-       pfd.events = POLLIN;
-       pfd.revents = 0;
-
-       status = poll(&pfd, 1, 0);
+       status = cmdline_poll_char(cl);
        if (status < 0)
                return status;
        else if (status > 0) {
                c = -1;
-               read_status = read(cl->s_in, &c, 1);
+               read_status = cmdline_read_char(cl, &c);
                if (read_status < 0)
                        return read_status;
 
@@ -246,7 +223,7 @@ cmdline_interact(struct cmdline *cl)
 
        c = -1;
        while (1) {
-               if (read(cl->s_in, &c, 1) <= 0)
+               if (cmdline_read_char(cl, &c) <= 0)
                        break;
                if (cmdline_in(cl, &c, 1) < 0)
                        break;