diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2015-06-25 23:56:37 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2015-06-26 00:30:16 -0600 |
commit | acc687b3a74e3c8d750630c323d223f1c63599db (patch) | |
tree | da55f9a30ffebc005d3a0157d70ca8d997afa959 /wrapper/plugin-run.c | |
parent | bddd6fb07906e660260ef0fced05440ecac8d9e9 (diff) |
mkdir rvs; mv * rvs
Diffstat (limited to 'wrapper/plugin-run.c')
-rw-r--r-- | wrapper/plugin-run.c | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/wrapper/plugin-run.c b/wrapper/plugin-run.c deleted file mode 100644 index 26d4480..0000000 --- a/wrapper/plugin-run.c +++ /dev/null @@ -1,89 +0,0 @@ -/* wrapper/plugin-run.c -- run a heiarchy of commands - system depens: <stdio.h> <stdlib.h> - Copyright (C) 2009 Luke Shumaker - - This file is part of rvs. - - rvs is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your - option) any later version. - - rvs is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with rvs; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include <stdio.h> -#include <stdlib.h> - -#include "rvs.h" -#include "plugins.h" -#include "plugin-find.h" - -#include "plugin-run.h" - -/* this function is an ugly hack */ -char * -_plugin_sh_mktemp() -{ - size_t nbytes = 10; - char *string = (char *)malloc(nbytes); - string[0]='\0'; - - FILE *out=popen("mktemp -t rvs-XXXXXXXXXX","r"); - char c[2]=" \0"; - while ( (c[0]=getc(out)) != '\n' ) { - stradds(&nbytes,&string,(char *)&c); - } - pclose(out); - return string; -} - -void -plugin_run_command(struct plugin_command *command, char *args, char *depfile) -{ - if (command!=NULL) { - char *outfile=_plugin_sh_mktemp(); - /* make command string: - `libexecdir/plugin_name/command < depfile > outfile' - */ - int nbytes=20; - char *coms=(char *)xmalloc(nbytes); - coms[0]='\0'; - stradds(&nbytes,&coms,libexecdir); - stradds(&nbytes,&coms,"/"); - stradds(&nbytes,&coms,command->plugin->name); - stradds(&nbytes,&coms,"/"); - stradds(&nbytes,&coms,command->name); - stradds(&nbytes,&coms," "); - stradds(&nbytes,&coms,args); - stradds(&nbytes,&coms," < "); - stradds(&nbytes,&coms,depfile); - stradds(&nbytes,&coms," > "); - stradds(&nbytes,&coms,outfile); - - xsystem(coms); - xfree(coms); - plugin_run_command(command->d_child,args,outfile); - xfree(outfile); - plugin_run_command(command->d_next ,args,depfile); - } -} - -/* needs to take the root command */ -void -plugin_run(struct plugin_command *command,char *args) -{ - /*plugin_run_command(command->d_child,"/dev/null");*/ - char *outfile=_plugin_sh_mktemp(); - plugin_run_command(command->d_child,args,outfile); - xfree(outfile); -} - |