1/* thread.c
2   Initialize for a new thread.
3
4   Copyright (C) 1992 Ian Lance Taylor
5
6   This file is part of the Taylor UUCP uuconf library.
7
8   This library is free software; you can redistribute it and/or
9   modify it under the terms of the GNU Library General Public License
10   as published by the Free Software Foundation; either version 2 of
11   the License, or (at your option) any later version.
12
13   This library is distributed in the hope that it will be useful, but
14   WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16   Library General Public License for more details.
17
18   You should have received a copy of the GNU Library General Public
19   License along with this library; if not, write to the Free Software
20   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
21
22   The author of the program may be contacted at ian@airs.com.
23   */
24
25#include "uucnfi.h"
26
27#if USE_RCS_ID
28const char _uuconf_thread_rcsid[] = "$Id: thread.c,v 1.6 2002/03/05 19:10:43 ian Rel $";
29#endif
30
31#include <errno.h>
32
33/* Initialize for a new thread, by allocating a new sglobal structure
34   which points to the same sprocess structure.  */
35
36int
37uuconf_init_thread (ppglobal)
38     pointer *ppglobal;
39{
40  struct sglobal **pqglob = (struct sglobal **) ppglobal;
41  pointer pblock;
42  struct sglobal *qnew;
43
44  pblock = uuconf_malloc_block ();
45  if (pblock == NULL)
46    {
47      (*pqglob)->ierrno = errno;
48      return UUCONF_MALLOC_FAILED | UUCONF_ERROR_ERRNO;
49    }
50
51  qnew = (struct sglobal *) uuconf_malloc (pblock,
52					   sizeof (struct sglobal));
53  if (qnew == NULL)
54    {
55      (*pqglob)->ierrno = errno;
56      uuconf_free_block (pblock);
57      return UUCONF_MALLOC_FAILED | UUCONF_ERROR_ERRNO;
58    }
59
60  qnew->pblock = pblock;
61  qnew->ierrno = 0;
62  qnew->ilineno = 0;
63  qnew->zfilename = NULL;
64  qnew->qprocess = (*pqglob)->qprocess;
65
66  *pqglob = qnew;
67
68  return UUCONF_SUCCESS;
69}
70