+static int repl_cmdline(int argc, char **argv)
+{
+ int opt, rc, ret = 0;
+
+ optind = 1;
+ while ((opt = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) {
+ if (opt != 'e')
+ continue;
+
+ rc = run_command(optarg, false);
+ if (rc < 0)
+ ret = -1;
+ else if (rc > 0)
+ break;
+ }
+
+ return ret;
+}
+
+static int repl_noninteractive(void)
+{
+ int rc, ret = 0, saved_errno;
+ char *line = NULL;
+ size_t n;
+
+ while (getline(&line, &n, stdin) >= 0) {
+ char *c = strchr(line, '\n');
+ if (c)
+ *c = '\0';
+
+ rc = run_command(line, false);
+ if (rc < 0)
+ ret = -1;
+ else if (rc > 0)
+ break;
+ }
+
+ saved_errno = errno;
+ free(line);
+
+ if (ferror(stdin)) {
+ print_error("%s", strerror(saved_errno));
+ return -1;
+ }
+
+ return ret;
+}
+
+/* Initialize gettext */
+static void init_i18n(void)
+{
+ if (!ENABLE_NLS)
+ return;
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+}
+