numam-dpdk/lib/librte_cmdline/cmdline_socket.c
Dmitry Kozlyuk 841dfdd06d cmdline: support Windows
Implement terminal handling, input polling, and vdprintf() for Windows.

Because Windows I/O model differs fundamentally from Unix and there is
no concept of character device, polling is simulated depending on the
underlying input device. Supporting non-terminal input is useful for
automated testing.

Windows emulation of VT100 uses "ESC [ E" for newline instead of
standard "ESC E", so add a workaround.

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2020-10-15 00:39:10 +02:00

61 lines
1.1 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2010-2014 Intel Corporation.
* Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org>
* All rights reserved.
*/
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdarg.h>
#include <inttypes.h>
#include <fcntl.h>
#include "cmdline.h"
#include "cmdline_private.h"
#include "cmdline_socket.h"
#ifdef RTE_EXEC_ENV_WINDOWS
#define open _open
#endif
struct cmdline *
cmdline_file_new(cmdline_parse_ctx_t *ctx, const char *prompt, const char *path)
{
int fd;
/* everything else is checked in cmdline_new() */
if (!path)
return NULL;
fd = open(path, O_RDONLY, 0);
if (fd < 0) {
dprintf("open() failed\n");
return NULL;
}
return cmdline_new(ctx, prompt, fd, -1);
}
struct cmdline *
cmdline_stdin_new(cmdline_parse_ctx_t *ctx, const char *prompt)
{
struct cmdline *cl;
cl = cmdline_new(ctx, prompt, 0, 1);
if (cl != NULL)
terminal_adjust(cl);
return cl;
}
void
cmdline_stdin_exit(struct cmdline *cl)
{
if (cl == NULL)
return;
terminal_restore(cl);
}