1d30ea906Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause
2d30ea906Sjfb8856606 * Copyright(c) 2010-2014 Intel Corporation.
3a9643ea8Slogwang * Copyright (c) 2009, Olivier MATZ <[email protected]>
4a9643ea8Slogwang * All rights reserved.
5a9643ea8Slogwang */
6a9643ea8Slogwang
7a9643ea8Slogwang #include <stdio.h>
8a9643ea8Slogwang #include <string.h>
9a9643ea8Slogwang #include <unistd.h>
10a9643ea8Slogwang #include <stdlib.h>
11a9643ea8Slogwang #include <stdarg.h>
12a9643ea8Slogwang #include <inttypes.h>
13a9643ea8Slogwang #include <fcntl.h>
14a9643ea8Slogwang
15a9643ea8Slogwang #include "cmdline.h"
16*2d9fd380Sjfb8856606 #include "cmdline_private.h"
17*2d9fd380Sjfb8856606 #include "cmdline_socket.h"
18*2d9fd380Sjfb8856606
19*2d9fd380Sjfb8856606 #ifdef RTE_EXEC_ENV_WINDOWS
20*2d9fd380Sjfb8856606 #define open _open
21*2d9fd380Sjfb8856606 #endif
22a9643ea8Slogwang
23a9643ea8Slogwang struct cmdline *
cmdline_file_new(cmdline_parse_ctx_t * ctx,const char * prompt,const char * path)24a9643ea8Slogwang cmdline_file_new(cmdline_parse_ctx_t *ctx, const char *prompt, const char *path)
25a9643ea8Slogwang {
26a9643ea8Slogwang int fd;
27a9643ea8Slogwang
28a9643ea8Slogwang /* everything else is checked in cmdline_new() */
29a9643ea8Slogwang if (!path)
30a9643ea8Slogwang return NULL;
31a9643ea8Slogwang
32a9643ea8Slogwang fd = open(path, O_RDONLY, 0);
33a9643ea8Slogwang if (fd < 0) {
34a9643ea8Slogwang dprintf("open() failed\n");
35a9643ea8Slogwang return NULL;
36a9643ea8Slogwang }
37a9643ea8Slogwang return cmdline_new(ctx, prompt, fd, -1);
38a9643ea8Slogwang }
39a9643ea8Slogwang
40a9643ea8Slogwang struct cmdline *
cmdline_stdin_new(cmdline_parse_ctx_t * ctx,const char * prompt)41a9643ea8Slogwang cmdline_stdin_new(cmdline_parse_ctx_t *ctx, const char *prompt)
42a9643ea8Slogwang {
43a9643ea8Slogwang struct cmdline *cl;
44a9643ea8Slogwang
45a9643ea8Slogwang cl = cmdline_new(ctx, prompt, 0, 1);
46a9643ea8Slogwang
47*2d9fd380Sjfb8856606 if (cl != NULL)
48*2d9fd380Sjfb8856606 terminal_adjust(cl);
49a9643ea8Slogwang
50a9643ea8Slogwang return cl;
51a9643ea8Slogwang }
52a9643ea8Slogwang
53a9643ea8Slogwang void
cmdline_stdin_exit(struct cmdline * cl)54a9643ea8Slogwang cmdline_stdin_exit(struct cmdline *cl)
55a9643ea8Slogwang {
56*2d9fd380Sjfb8856606 if (cl == NULL)
57a9643ea8Slogwang return;
58a9643ea8Slogwang
59*2d9fd380Sjfb8856606 terminal_restore(cl);
60a9643ea8Slogwang }
61