Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libcoshell/procrun.c
1808 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1990-2011 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* Glenn Fowler <[email protected]> *
18
* *
19
***********************************************************************/
20
#pragma prototyped
21
/*
22
* Glenn Fowler
23
* AT&T Research
24
*
25
* coshell procrun(3)
26
*/
27
28
#include "colib.h"
29
30
#include <proc.h>
31
32
int
33
coprocrun(const char* path, char** argv, int flags)
34
{
35
register char* s;
36
register char** a;
37
register Sfio_t* tmp;
38
int n;
39
40
if (!(a = argv))
41
return procclose(procopen(path, a, NiL, NiL, PROC_FOREGROUND|PROC_GID|PROC_UID|flags));
42
if (!(tmp = sfstropen()))
43
return -1;
44
sfputr(tmp, path ? path : "sh", -1);
45
while (s = *++a)
46
{
47
sfputr(tmp, " '", -1);
48
coquote(tmp, s, 0);
49
sfputc(tmp, '\'');
50
}
51
if (!(s = costash(tmp)))
52
return -1;
53
n = cosystem(s);
54
sfstrclose(tmp);
55
return n;
56
}
57
58