tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

tor_main.c (971B)


      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 main(int argc, char *argv[])
     26 {
     27  int r;
     28 #ifdef ENABLE_RESTART_DEBUGGING
     29  int restart_count = getenv("TOR_DEBUG_RESTART") ? 1 : 0;
     30 again:
     31 #endif
     32  r = tor_main(argc, argv);
     33  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    return r;
     41 }