ash: [VAR] Fix loss of variables when hash collides
[oweals/busybox.git] / shell / shell_common.h
index a9e9a22395757f3f235d8899695b644355f898f9..a82535c8672333e67fc87134db1f297e5a4db32c 100644 (file)
  * Copyright (c) 2010 Denys Vlasenko
  * Split from ash.c
  *
- * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 #ifndef SHELL_COMMON_H
 #define SHELL_COMMON_H 1
 
 PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
 
-#define IFS_BROKEN 1
-
-#if IFS_BROKEN
-extern const char defifsvar[]; /* "IFS= \t\n" */
+extern const char defifsvar[] ALIGN1; /* "IFS= \t\n" */
 #define defifs (defifsvar + 4)
-#else
-extern const char defifs[]; /* " \t\n" */
-#endif
+
+extern const char defoptindvar[] ALIGN1; /* "OPTIND=1" */
+
+int FAST_FUNC is_well_formed_var_name(const char *s, char terminator);
+
+/* Builtins */
+
+enum {
+       BUILTIN_READ_SILENT = 1 << 0,
+       BUILTIN_READ_RAW    = 1 << 1,
+};
+const char* FAST_FUNC
+shell_builtin_read(void FAST_FUNC (*setvar)(const char *name, const char *val),
+       char       **argv,
+       const char *ifs,
+       int        read_flags,
+       const char *opt_n,
+       const char *opt_p,
+       const char *opt_t,
+       const char *opt_u
+);
+
+int FAST_FUNC
+shell_builtin_ulimit(char **argv);
 
 POP_SAVED_FUNCTION_VISIBILITY