| 1 | /* $Id: $ */
|
|---|
| 2 | /** @file
|
|---|
| 3 | *
|
|---|
| 4 | * The shell instance methods.
|
|---|
| 5 | *
|
|---|
| 6 | * Copyright (c) 2007 knut st. osmundsen <bird-src-spam@anduin.net>
|
|---|
| 7 | *
|
|---|
| 8 | *
|
|---|
| 9 | * This file is part of kBuild.
|
|---|
| 10 | *
|
|---|
| 11 | * kBuild is free software; you can redistribute it and/or modify
|
|---|
| 12 | * it under the terms of the GNU General Public License as published by
|
|---|
| 13 | * the Free Software Foundation; either version 2 of the License, or
|
|---|
| 14 | * (at your option) any later version.
|
|---|
| 15 | *
|
|---|
| 16 | * kBuild is distributed in the hope that it will be useful,
|
|---|
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|---|
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|---|
| 19 | * GNU General Public License for more details.
|
|---|
| 20 | *
|
|---|
| 21 | * You should have received a copy of the GNU General Public License
|
|---|
| 22 | * along with kBuild; if not, write to the Free Software
|
|---|
| 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|---|
| 24 | *
|
|---|
| 25 | */
|
|---|
| 26 |
|
|---|
| 27 | #include "shinstance.h"
|
|---|
| 28 |
|
|---|
| 29 |
|
|---|
| 30 | /**
|
|---|
| 31 | * Creates a root shell instance.
|
|---|
| 32 | *
|
|---|
| 33 | * @param inherit The shell to inherit from. If NULL inherit from environment and such.
|
|---|
| 34 | * @param argc The argument count.
|
|---|
| 35 | * @param argv The argument vector.
|
|---|
| 36 | *
|
|---|
| 37 | * @returns pointer to root shell on success, NULL on failure.
|
|---|
| 38 | */
|
|---|
| 39 | shinstance *sh_create_root_shell(shinstance *inherit, int argc, char **argv)
|
|---|
| 40 | {
|
|---|
| 41 | shinstance *psh;
|
|---|
| 42 |
|
|---|
| 43 | psh = malloc(sizeof(*psh));
|
|---|
| 44 | if (psh)
|
|---|
| 45 | {
|
|---|
| 46 | memset(psh, 0, sizeof(*psh));
|
|---|
| 47 |
|
|---|
| 48 | /* memalloc.c */
|
|---|
| 49 | psh->stacknleft = MINSIZE;
|
|---|
| 50 | psh->herefd = -1;
|
|---|
| 51 | psh->stackp = &psh->stackbase;
|
|---|
| 52 | psh->stacknxt = psh->stackbase.space;
|
|---|
| 53 |
|
|---|
| 54 | /* input.c */
|
|---|
| 55 | psh->plinno = 1;
|
|---|
| 56 | psh->init_editline = 0;
|
|---|
| 57 | psh->parsefile = &psh->basepf;
|
|---|
| 58 |
|
|---|
| 59 | /* output.c */
|
|---|
| 60 | psh->output.bufsize = OUTBUFSIZ;
|
|---|
| 61 | psh->output.fd = 1;
|
|---|
| 62 | psh->errout.bufsize = 100;
|
|---|
| 63 | psh->errout.fd = 2;
|
|---|
| 64 | psh->memout.fd = MEM_OUT;
|
|---|
| 65 | psh->out1 = &psh->output;
|
|---|
| 66 | psh->out2 = &psh->errout;
|
|---|
| 67 |
|
|---|
| 68 | /* jobs.c */
|
|---|
| 69 | psh->backgndpid = -1;
|
|---|
| 70 | #if JOBS
|
|---|
| 71 | psh->curjob = -1;
|
|---|
| 72 | #endif
|
|---|
| 73 | psh->ttyfd = -1;
|
|---|
| 74 |
|
|---|
| 75 | }
|
|---|
| 76 | return psh;
|
|---|
| 77 | }
|
|---|
| 78 |
|
|---|
| 79 |
|
|---|