Implement the new interactive command "source".
authorAndre Noll <maan@systemlinux.org>
Sun, 9 Nov 2008 12:15:42 +0000 (13:15 +0100)
committerAndre Noll <maan@systemlinux.org>
Sun, 9 Nov 2008 12:15:42 +0000 (13:15 +0100)
interactive.c

index 7b5ca7606e07bd7bef18a4c5ce26ede623cda632..3cfb3a2f5ee284c0f757d21e71f4058c21601daa 100644 (file)
@@ -30,7 +30,8 @@ static struct format_info *fi;
        INTERACTIVE_COMMAND(set, "change the current configuration") \
        INTERACTIVE_COMMAND(reset, "reset configuration to defaults") \
        INTERACTIVE_COMMAND(help, "show list of commands and one-line descriptions") \
-       INTERACTIVE_COMMAND(run, "start the query according to the current configuration")
+       INTERACTIVE_COMMAND(run, "start the query according to the current configuration") \
+       INTERACTIVE_COMMAND(source, "read and execute interactive commands from a file")
 
 
 #define INTERACTIVE_COMMAND(name, desc) \
@@ -164,6 +165,25 @@ static int exec_interactive_command(char *line)
        return ret;
 }
 
+static int icom_source(char *args)
+{
+       char line[255];
+       FILE *src = fopen(args, "r");
+       int ret;
+
+       if (!src)
+               return -ERRNO_TO_ERROR(errno);
+       while (fgets(line, sizeof(line), src)) {
+               ret = exec_interactive_command(line);
+               if (ret < 0)
+                       goto out;
+       }
+       ret = 1;
+out:
+       fclose(src);
+       return ret;
+}
+
 int com_interactive(void)
 {
        char line[255];