FreeCalypso > hg > freecalypso-sw
diff loadtools/ltscript.c @ 29:dacf45e3d20f
loadtool: scripting functionality implemented
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sat, 04 May 2013 07:15:51 +0000 |
parents | |
children | 358785799844 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/loadtools/ltscript.c Sat May 04 07:15:51 2013 +0000 @@ -0,0 +1,53 @@ +/* + * This module contains the code that implements the loadtool scripting + * functionality: init-script setting and the exec command. + */ + +#include <sys/param.h> +#include <stdio.h> +#include <string.h> +#include <strings.h> +#include <stdlib.h> + +extern char default_helpers_dir[]; + +loadtool_exec_script(script_name) + char *script_name; +{ + char pathbuf[MAXPATHLEN], *openfname; + FILE *f; + char linebuf[512], *cp; + int lineno, retval = 0; + + if (index(script_name, '/')) + openfname = script_name; + else { + sprintf(pathbuf, "%s/%s", default_helpers_dir, script_name); + openfname = pathbuf; + } + f = fopen(openfname, "r"); + if (!f) { + perror(openfname); + return(-1); + } + for (lineno = 1; fgets(linebuf, sizeof linebuf, f); lineno++) { + cp = index(linebuf, '\n'); + if (!cp) { + fprintf(stderr, "%s line %d: missing newline\n", + openfname, lineno); + fclose(f); + return(-1); + } + retval = loadtool_dispatch_cmd(linebuf, 1); + if (retval) + break; + } + fclose(f); + return(retval); +} + +cmd_exec(argc, argv) + char **argv; +{ + return loadtool_exec_script(argv[1]); +}