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