コード例 #1
0
ファイル: func.c プロジェクト: AlfredArouna/illumos-gate
void
prbgnlst(void)
{
	if (nonl)
		prc_buff(SPACE);
	else
		prc_buff(NL);
}
コード例 #2
0
ファイル: name.c プロジェクト: Sunshine-OS/heirloom-sh
void
printexp(register struct namnod *n)
{
	if (n->namflg & N_EXPORT)
	{
		prs_buff(export);
		prc_buff(SPACE);
		prs_buff(n->namid);
		prc_buff(NL);
	}
コード例 #3
0
ファイル: func.c プロジェクト: AlfredArouna/illumos-gate
void
prendlst(void)
{
	if (nonl) {
		prc_buff(';');
		prc_buff(SPACE);
	}
	else
		prc_buff(NL);
}
コード例 #4
0
ファイル: name.c プロジェクト: Sunshine-OS/heirloom-sh
void
printro(register struct namnod *n)
{
	if (n->namflg & N_RDONLY)
	{
		prs_buff(readonly);
		prc_buff(SPACE);
		prs_buff(n->namid);
		prc_buff(NL);
	}
}
コード例 #5
0
ファイル: func.c プロジェクト: AlfredArouna/illumos-gate
static void
prarg(struct argnod *argp)
{
	while (argp)
	{
		prs_buff(argp->argval);
		argp=argp->argnxt;
		if (argp)
			prc_buff(SPACE);
	}
}
コード例 #6
0
ファイル: name.c プロジェクト: Sunshine-OS/heirloom-sh
void
printnam(struct namnod *n)
{
	register unsigned char	*s;

	sigchk();

	if (n->namflg & N_FUNCTN)
	{
		prs_buff(n->namid);
		prs_buff("(){\n");
		prf((struct trenod *)n->namenv);
		prs_buff("\n}\n");
	}
	else if (s = n->namval)
	{
		prs_buff(n->namid);
		prc_buff('=');
		prs_buff(s);
		prc_buff(NL);
	}
}
コード例 #7
0
ファイル: func.c プロジェクト: AlfredArouna/illumos-gate
static void
prio(struct ionod *iop)
{
	int	iof;
	unsigned char	*ion;

	while (iop)
	{
		iof = iop->iofile;
		ion = (unsigned char *) iop->ioname;

		if (*ion)
		{
			prc_buff(SPACE);

			prn_buff(iof & IOUFD);

			if (iof & IODOC)
				prs_buff("<<");
			else if (iof & IOMOV)
			{
				if (iof & IOPUT)
					prs_buff(">&");
				else
					prs_buff("<&");

			}
			else if ((iof & IOPUT) == 0)
				prc_buff('<');
			else if (iof & IOAPP)
				prs_buff(">>");
			else
				prc_buff('>');

			prs_buff(ion);
		}
		iop = iop->ionxt;
	}
}
コード例 #8
0
ファイル: pwd.c プロジェクト: AlfredArouna/illumos-gate
void
cwdprint(void)
{
	unsigned char *cp;

	cwd2();
	if (didpwd == FALSE) {
		if (getcwd((char *)cwdname, PATH_MAX+1) == NULL) {
			if (errno && errno != ERANGE)
				error(badpwd);
			else
				error(longpwd);
		}
		didpwd = TRUE;
	}

	for (cp = cwdname; *cp; cp++) {
	  prc_buff(*cp);
	}

	prc_buff(NL);
	return;
}
コード例 #9
0
ファイル: echo.c プロジェクト: AlfredArouna/illumos-gate
int
echo(int argc, unsigned char **argv)
{
	unsigned char	*cp;
	int	i, wd;
	int	nflg = 0;
	int	j;
	int	len;
	wchar_t	wc;

	if (ucb_builtins) {

		nflg = 0;
		if (argc > 1 && argv[1][0] == '-' &&
		    argv[1][1] == 'n' && !argv[1][2]) {
			nflg++;
			argc--;
			argv++;
		}

		for (i = 1; i < argc; i++) {
			sigchk();

			for (cp = argv[i]; *cp; cp++) {
				prc_buff(*cp);
			}

			if (i < argc-1)
				prc_buff(' ');
		}

		if (nflg == 0)
			prc_buff('\n');
		exit(0);
	} else {
		if (--argc == 0) {
			prc_buff('\n');
			exit(0);
		}

		for (i = 1; i <= argc; i++) {
			sigchk();
			for (cp = argv[i]; *cp; cp++) {
				if ((len = mbtowc(&wc, (char *)cp,
				    MB_LEN_MAX)) <= 0) {
					prc_buff(*cp);
					continue;
				}

				if (wc == '\\') {
					switch (*++cp) {
					case 'b':
						prc_buff('\b');
						continue;
					case 'c':
						exit(0);

					case 'f':
						prc_buff('\f');
						continue;

					case 'n':
						prc_buff('\n');
						continue;

					case 'r':
						prc_buff('\r');
						continue;

					case 't':
						prc_buff('\t');
						continue;

					case 'v':
						prc_buff('\v');
						continue;

					case '\\':
						prc_buff('\\');
						continue;
					case '0':
						j = wd = 0;
						while ((*++cp >= '0' &&
						    *cp <= '7') && j++ < 3) {
							wd <<= 3;
							wd |= (*cp - '0');
						}
						prc_buff(wd);
						--cp;
						continue;

					default:
						cp--;
					}
					prc_buff(*cp);
					continue;
				} else {
					for (; len > 0; len--)
						prc_buff(*cp++);
					cp--;
					continue;
				}
			}
			prc_buff(i == argc? '\n': ' ');
		}
		exit(0);
	}
}
コード例 #10
0
ファイル: func.c プロジェクト: AlfredArouna/illumos-gate
void
prf(struct trenod *t)
{
	sigchk();

	if (t)
	{
		int	type;

		type = t->tretyp & COMMSK;

		switch(type)
		{
			case TFND:
			{
				struct fndnod *f = (struct fndnod *)t;

				prs_buff(f->fndnam);
				prs_buff("(){");
				prbgnlst();
				prf(f->fndval);
				prbgnlst();
				prs_buff("}");
				break;
			}

			case TCOM:
				if (comptr(t)->comset) {
					prarg(comptr(t)->comset);
					prc_buff(SPACE);
				}
				prarg(comptr(t)->comarg);
				prio(comptr(t)->comio);
				break;

			case TFORK:
				prf(forkptr(t)->forktre);
				prio(forkptr(t)->forkio);
				if (forkptr(t)->forktyp & FAMP)
					prs_buff(" &");
				break;

			case TPAR:
				prs_buff("(");
				prf(parptr(t)->partre);
				prs_buff(")");
				break;

			case TFIL:
				prf(lstptr(t)->lstlef);
				prs_buff(" | ");
				prf(lstptr(t)->lstrit);
				break;

			case TLST:
				prf(lstptr(t)->lstlef);
				prendlst();
				prf(lstptr(t)->lstrit);
				break;

			case TAND:
				prf(lstptr(t)->lstlef);
				prs_buff(" && ");
				prf(lstptr(t)->lstrit);
				break;

			case TORF:
				prf(lstptr(t)->lstlef);
				prs_buff(" || ");
				prf(lstptr(t)->lstrit);
				break;

			case TFOR:
				{
					struct argnod	*arg;
					struct fornod 	*f = (struct fornod *)t;

					prs_buff("for ");
					prs_buff(f->fornam);

					if (f->forlst)
					{
						arg = f->forlst->comarg;
						prs_buff(" in");

						while(arg != ENDARGS)
						{
							prc_buff(SPACE);
							prs_buff(arg->argval);
							arg = arg->argnxt;
						}
					}

					prendlst();
					prs_buff("do");
					prbgnlst();
					prf(f->fortre);
					prendlst();
					prs_buff("done");
				}
				break;

			case TWH:
			case TUN:
				if (type == TWH)
					prs_buff("while ");
				else
					prs_buff("until ");
				prf(whptr(t)->whtre);
				prendlst();
				prs_buff("do");
				prbgnlst();
				prf(whptr(t)->dotre);
				prendlst();
				prs_buff("done");
				break;

			case TIF:
			{
				struct ifnod *f = (struct ifnod *)t;

				prs_buff("if ");
				prf(f->iftre);
				prendlst();
				prs_buff("then");
				prendlst();
				prf(f->thtre);

				if (f->eltre)
				{
					prendlst();
					prs_buff("else");
					prendlst();
					prf(f->eltre);
				}

				prendlst();
				prs_buff("fi");
				break;
			}

			case TSW:
				{
					struct regnod 	*swl;

					prs_buff("case ");
					prs_buff(swptr(t)->swarg);

					swl = swptr(t)->swlst;
					while(swl)
					{
						struct argnod	*arg = swl->regptr;

						if (arg)
						{
							prs_buff(arg->argval);
							arg = arg->argnxt;
						}

						while(arg)
						{
							prs_buff(" | ");
							prs_buff(arg->argval);
							arg = arg->argnxt;
						}

						prs_buff(")");
						prf(swl->regcom);
						prs_buff(";;");
						swl = swl->regnxt;
					}
				}
				break;
			} 
		} 

	sigchk();
}
コード例 #11
0
ファイル: umask.c プロジェクト: Sunshine-OS/heirloom-sh
void
sysumask(int argc, char **argv)
{
	BOOL	symbolic = 0;
	mode_t	mode;
	register int	i;
	register char	*cp;

	if (argc > 1 && eq(argv[1], "-S")) {
		umask(um = mode = umask(0));
		prs_buff("u=");
		if ((mode & 0400) == 0)
			prc_buff('r');
		if ((mode & 0200) == 0)
			prc_buff('w');
		if ((mode & 0100) == 0)
			prc_buff('x');
		prs_buff(",g=");
		if ((mode & 040) == 0)
			prc_buff('r');
		if ((mode & 020) == 0)
			prc_buff('w');
		if ((mode & 010) == 0)
			prc_buff('x');
		prs_buff(",o=");
		if ((mode & 04) == 0)
			prc_buff('r');
		if ((mode & 02) == 0)
			prc_buff('w');
		if ((mode & 01) == 0)
			prc_buff('x');
		prc_buff(NL);
	} else if (argc == 1) {
		umask(um = mode = umask(0));
		prc_buff('0');
		for (i = 6; i >= 0; i -= 3)
			prc_buff(((mode >> i) & 07) +'0');
		prc_buff(NL);
	} else {