Line data Source code
1 : /* Copyright 2001-2004 Roger Dingledine. 2 : * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. 3 : * Copyright (c) 2007-2021, The Tor Project, Inc. */ 4 : /* See LICENSE for licensing information */ 5 : 6 : #include "orconfig.h" 7 : #ifdef ENABLE_RESTART_DEBUGGING 8 : #include <stdlib.h> 9 : #endif 10 : 11 : /** 12 : * \file tor_main.c 13 : * \brief Stub module containing a main() function. 14 : * 15 : * We keep the main function in a separate module so that the unit 16 : * tests, which have their own main()s, can link against main.c. 17 : **/ 18 : 19 : int tor_main(int argc, char *argv[]); 20 : 21 : /** We keep main() in a separate file so that our unit tests can use 22 : * functions from main.c. 23 : */ 24 : int 25 235 : main(int argc, char *argv[]) 26 : { 27 235 : int r; 28 : #ifdef ENABLE_RESTART_DEBUGGING 29 : int restart_count = getenv("TOR_DEBUG_RESTART") ? 1 : 0; 30 : again: 31 : #endif 32 235 : r = tor_main(argc, argv); 33 235 : if (r < 0 || r > 255) 34 : return 1; 35 : #ifdef ENABLE_RESTART_DEBUGGING 36 : else if (r == 0 && restart_count--) 37 : goto again; 38 : #endif 39 : else 40 193 : return r; 41 : } 42 :