Quizzer
view release on metacpan or search on metacpan
exercises/compile-tcsh/tcsh-6.10.00/tc.os.c view on Meta::CPAN
spaths = (char **) xmalloc((size_t) npaths * sizeof *spaths);
setzero((char *) spaths, npaths * sizeof *spaths);
cpaths = (char **) xmalloc((size_t) (npaths + 1) * sizeof *cpaths);
setzero((char *) cpaths, (npaths + 1) * sizeof *cpaths);
cmds = (char **) xmalloc((size_t) (ncmds + 1) * sizeof *cmds);
setzero((char *) cmds, (ncmds + 1) * sizeof *cmds);
for (i = 0; i < npaths; i++) {
char *val = getenv(short2str(pathvars[i]));
if (val == NULL)
val = "";
spaths[i] = (char *) xmalloc((size_t) (Strlen(pathvars[i]) +
strlen(val) + 2) * sizeof **spaths);
(void) strcpy(spaths[i], short2str(pathvars[i]));
(void) strcat(spaths[i], "=");
(void) strcat(spaths[i], val);
cpaths[i] = spaths[i];
}
for (i = 0; i < ncmds; i++) {
Char *val = globone(cmdargs[i], G_ERROR);
if (val == NULL)
goto abortpath;
cmds[i] = (char *) xmalloc((size_t) Strlen(val) + 1);
(void) strcpy(cmds[i], short2str(val));
}
if (setpath(cpaths, cmds, LOCALSYSPATH, sysflag, 1) < 0) {
abortpath:
if (spaths) {
for (i = 0; i < npaths; i++)
if (spaths[i])
xfree((ptr_t) spaths[i]);
xfree((ptr_t) spaths);
}
if (cpaths)
xfree((ptr_t) cpaths);
if (cmds) {
for (i = 0; i < ncmds; i++)
if (cmds[i])
xfree((ptr_t) cmds[i]);
xfree((ptr_t) cmds);
}
(void) sigsetmask(omask);
donefds();
return;
}
for (i = 0; i < npaths; i++) {
Char *val, *name;
name = str2short(cpaths[i]);
for (val = str2short(cpaths[i]); val && *val && *val != '='; val++);
if (val && *val == '=') {
*val++ = '\0';
tsetenv(name, val);
if (Strcmp(name, STRKPATH) == 0) {
importpath(val);
if (havhash)
dohash(NULL, NULL);
}
*--val = '=';
}
}
(void) sigsetmask(omask);
donefds();
}
#endif /* MACH */
/***
*** AIX
***/
#ifdef TCF
/* ARGSUSED */
void
dogetxvers(v, c)
Char **v;
struct command *c;
{
char xvers[MAXPATHLEN];
if (getxvers(xvers, MAXPATHLEN) == -1)
stderror(ERR_SYSTEM, "getxvers", strerror(errno));
xprintf("%s\n", xvers);
flush();
}
/*ARGSUSED*/
void
dosetxvers(v, c)
Char **v;
struct command *c;
{
char *xvers;
++v;
if (!*v || *v[0] == '\0')
xvers = "";
else
xvers = short2str(*v);
if (setxvers(xvers) == -1)
stderror(ERR_SYSTEM, "setxvers", strerror(errno));
}
#include <sf.h>
#ifdef _AIXPS2
# define XC_PDP11 0x01
# define XC_23 0x02
# define XC_Z8K 0x03
# define XC_8086 0x04
# define XC_68K 0x05
# define XC_Z80 0x06
# define XC_VAX 0x07
# define XC_16032 0x08
# define XC_286 0x09
# define XC_386 0x0a
exercises/compile-tcsh/tcsh-6.10.00/tc.os.c view on Meta::CPAN
{
int pgrp;
/* ioctl will handle setting errno correctly. */
if (ioctl(fd, TIOCGPGRP, (ioctl_t) & pgrp) < 0)
return (-1);
return (pgrp);
}
/*
* XXX: tcsetpgrp is not a macro any more cause on some systems,
* pid_t is a short, but the ioctl() takes a pointer to int (pyr)
* Thanks to Simon Day (simon@pharaoh.cyborg.bt.co.uk) for pointing
* this out.
*/
int
xtcsetpgrp(fd, pgrp)
int fd, pgrp;
{
return ioctl(fd, TIOCSPGRP, (ioctl_t) &pgrp);
}
#endif /* tcgetpgrp */
#endif /* WINNT_NATIVE */
#ifdef YPBUGS
void
fix_yp_bugs()
{
char *mydomain;
extern int yp_get_default_domain __P((char **));
/*
* PWP: The previous version assumed that yp domain was the same as the
* internet name domain. This isn't allways true. (Thanks to Mat Landau
* <mlandau@bbn.com> for the original version of this.)
*/
if (yp_get_default_domain(&mydomain) == 0) { /* if we got a name */
extern void yp_unbind __P((const char *));
yp_unbind(mydomain);
}
}
#endif /* YPBUGS */
#ifdef STRCOLLBUG
void
fix_strcoll_bug()
{
#if defined(NLS) && !defined(NOSTRCOLL)
/*
* SunOS4 checks the file descriptor from openlocale() for <= 0
* instead of == -1. Someone should tell sun that file descriptor 0
* is valid! Our portable hack: open one so we call it with 0 used...
* We have to call this routine every time the locale changes...
*
* Of course it also tries to free the constant locale "C" it initially
* had allocated, with the sequence
* > setenv LANG "fr"
* > ls^D
* > unsetenv LANG
* But we are smarter than that and just print a warning message.
*/
int fd = -1;
static char *root = "/";
if (!didfds)
fd = open(root, O_RDONLY);
(void) strcoll(root, root);
if (fd != -1)
(void) close(fd);
#endif
}
#endif /* STRCOLLBUG */
#ifdef OREO
#include <compat.h>
#endif /* OREO */
void
osinit()
{
#ifdef OREO
set42sig();
setcompat(getcompat() & ~COMPAT_EXEC);
sigignore(SIGIO); /* ignore SIGIO */
#endif /* OREO */
#ifdef aiws
{
struct sigstack inst;
inst.ss_sp = (char *) xmalloc((size_t) 4192) + 4192;
inst.ss_onstack = 0;
sigstack(&inst, NULL);
}
#endif /* aiws */
#ifdef apollo
(void) isapad();
#endif
#ifdef _SX
/*
* kill(SIGCONT) problems, don't know what this syscall does
* [schott@rzg.mpg.de]
*/
syscall(151, getpid(), getpid());
#endif /* _SX */
}
#ifdef strerror
char *
xstrerror(i)
int i;
{
static char errbuf[128];
if (i >= 0 && i < sys_nerr) {
exercises/compile-tcsh/tcsh-6.10.00/tc.os.c view on Meta::CPAN
loader_$inlib(t = short2str(s), len, &st);
if (st.all != status_$ok)
stderror(ERR_SYSTEM, t, apperr(&st));
}
/*ARGSUSED*/
void
doinlib(v, c)
Char **v;
struct command *c;
{
setname(short2str(*v++));
gflag = 0, tglob(v);
if (gflag) {
v = globall(v);
if (v == 0)
stderror(ERR_NAME | ERR_NOMATCH);
}
else {
v = gargv = saveblk(v);
trim(v);
}
while (v && *v)
llib(*v++);
if (gargv)
blkfree(gargv), gargv = 0;
}
int
getv(v)
Char *v;
{
if (eq(v, STRbsd43))
return(1);
else if (eq(v, STRsys53))
return(0);
else
stderror(ERR_NAME | ERR_SYSTEM, short2str(v),
CGETS(23, 28, "Invalid system type"));
/*NOTREACHED*/
return(0);
}
/*ARGSUSED*/
void
dover(v, c)
Char **v;
struct command *c;
{
Char *p;
setname(short2str(*v++));
if (!*v) {
if (!(p = tgetenv(STRSYSTYPE)))
stderror(ERR_NAME | ERR_STRING,
CGETS(23, 29, "System type is not set"));
xprintf("%S\n", p);
}
else {
tsetenv(STRSYSTYPE, getv(*v) ? STRbsd43 : STRsys53);
dohash(NULL, NULL);
}
}
/*
* Many thanks to rees@citi.umich.edu (Jim Rees) and
* mathys@ssdt-tempe.sps.mot.com (Yves Mathys)
* For figuring out how to do this... I could have never done
* it without their help.
*/
typedef short enum {
name_$wdir_type,
name_$ndir_type,
name_$node_dir_type,
} name_$dir_type_t;
/*ARGSUSED*/
void
dorootnode(v, c)
Char **v;
struct command *c;
{
name_$dir_type_t dirtype = name_$node_dir_type;
uid_$t uid;
status_$t st;
char *name;
short namelen;
setname(short2str(*v++));
name = short2str(*v);
namelen = strlen(name);
name_$resolve(name, &namelen, &uid, &st);
if (st.all != status_$ok)
stderror(ERR_SYSTEM, name, apperr(&st));
namelen = 0;
name_$set_diru(&uid, "", &namelen, &dirtype, &st);
if (st.all != status_$ok)
stderror(ERR_SYSTEM, name, apperr(&st));
dohash(NULL, NULL);
}
int
isapad()
{
static int res = -1;
static status_$t st;
if (res == -1) {
int strm;
if (isatty(0))
strm = 0;
if (isatty(1))
strm = 1;
if (isatty(2))
strm = 2;
else {
res = 0;
st.all = status_$ok;
( run in 0.489 second using v1.01-cache-2.11-cpan-aadc1410aed )