1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * (C) Copyright 2001
4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
5 */
6
7#ifndef _CLI_HUSH_H_
8#define _CLI_HUSH_H_
9
10#define FLAG_EXIT_FROM_LOOP 1
11#define FLAG_PARSE_SEMICOLON (1 << 1)	  /* symbol ';' is special for parser */
12#define FLAG_REPARSING       (1 << 2)	  /* >=2nd pass */
13#define FLAG_CONT_ON_NEWLINE (1 << 3)	  /* continue when we see \n */
14
15#if CONFIG_IS_ENABLED(HUSH_OLD_PARSER)
16extern int u_boot_hush_start(void);
17extern int parse_string_outer(const char *str, int flag);
18extern int parse_file_outer(void);
19int set_local_var(const char *s, int flg_export);
20#else
21static inline int u_boot_hush_start(void)
22{
23	return 0;
24}
25
26static inline int parse_string_outer(const char *str, int flag)
27{
28	return 1;
29}
30
31static inline int parse_file_outer(void)
32{
33	return 0;
34}
35
36static inline int set_local_var(const char *s, int flg_export)
37{
38	return 0;
39}
40#endif
41#if CONFIG_IS_ENABLED(HUSH_MODERN_PARSER)
42extern int u_boot_hush_start_modern(void);
43extern int parse_string_outer_modern(const char *str, int flag);
44extern void parse_and_run_file(void);
45int set_local_var_modern(char *s, int flg_export);
46#else
47static inline int u_boot_hush_start_modern(void)
48{
49	return 0;
50}
51
52static inline int parse_string_outer_modern(const char *str, int flag)
53{
54	return 1;
55}
56
57static inline void parse_and_run_file(void)
58{
59}
60
61static inline int set_local_var_modern(char *s, int flg_export)
62{
63	return 0;
64}
65#endif
66
67void unset_local_var(const char *name);
68char *get_local_var(const char *s);
69
70#if defined(CONFIG_HUSH_INIT_VAR)
71extern int hush_init_var (void);
72#endif
73#endif
74