~ubuntu-branches/ubuntu/quantal/ncbi-tools6/quantal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*   ncbimain.c
* ===========================================================================
*
*                            PUBLIC DOMAIN NOTICE                          
*               National Center for Biotechnology Information
*                                                                          
*  This software/database is a "United States Government Work" under the   
*  terms of the United States Copyright Act.  It was written as part of    
*  the author's official duties as a United States Government employee and 
*  thus cannot be copyrighted.  This software/database is freely available 
*  to the public for use. The National Library of Medicine and the U.S.    
*  Government have not placed any restriction on its use or reproduction.  
*                                                                          
*  Although all reasonable efforts have been taken to ensure the accuracy  
*  and reliability of the software and data, the NLM and the U.S.          
*  Government do not and cannot warrant the performance or results that    
*  may be obtained by using this software or data. The NLM and the U.S.    
*  Government disclaim all warranties, express or implied, including       
*  warranties of performance, merchantability or fitness for any particular
*  purpose.                                                                
*                                                                          
*  Please cite the author in any work or product based on this material.   
*
* ===========================================================================
*
* File Name:  ncbimain.c
*
* Author:  Ostell, Schuler, Vakatov
*
* Version Creation Date:   07/15/91
*
* $Revision: 6.2 $
*
* File Description: 
*   	portable main() for console applications
*
* Modifications:  
* --------------------------------------------------------------------------
* $Log: ncbimain.c,v $
* Revision 6.2  2002/07/09 15:20:17  lavr
* Call CONNECT_Init(0) in initialization sequence
*
* Revision 6.1  1998/02/13 15:18:15  vakatov
* Added cleanup for the application context and thread library internals
*
* Revision 6.0  1997/08/25 18:16:30  madden
* Revision changed to 6.0
*
* Revision 5.1  1997/07/22 19:04:17  vakatov
* Initial revision:  merged Main()'s from former "ncbimain.[msw,unx,mac,vms]"
*
*
* ==========================================================================
*/

#include <ncbi.h>
#include <ncbithr.h>
#include <ncbiwin.h>

#include <connect/ncbi_core_c.h>

#ifdef COMP_THINKC
#include <console.h>
#endif

#ifdef COMP_MPW
#pragma segment NlmSegA
#endif

extern Nlm_Int2 Nlm_Main(void) __attribute__((weak));

/*****************************************************************************
*
*   main()
*     this replaces the normal program main() for console applications
*     setups argc and argv
*
*****************************************************************************/
#ifdef OS_MSWIN
int
#endif
main(int argc, char *argv[])
{
  Nlm_Int2 retval;

  Nlm_SetupArguments(argc, argv);

#ifdef MSC_VIRT
  if ( !_vheapinit(0, 1250, _VM_ALLSWAP) )
    {
      ErrPost(CTX_NCBIOBJ, 1, "Can't open virtual memory");
      return 1;
    }
#endif

  /* Initialize connection library's logger, registry and lock */
  CONNECT_Init(0);

  if (Nlm_Main) {
    retval = Nlm_Main();
  } else {
    ErrPost(0, 0, "Neither main nor Nlm_Main defined by program.");
    retval = -1;
  }

  NlmThreadJoinAll();

  Nlm_FreeConfigStruct();
  ErrSetLogfile(NULL, 0);
  Nlm_ReleaseAppContext();

#ifdef MSC_VIRT
  _vheapterm();
#endif

  NlmThreadDestroyAll();

#if   defined(OS_MSWIN)
  return retval;
#elif defined(OS_UNIX) || defined(OS_VMS)
  exit( retval );
#endif
}