Commit 26d5565d authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work) Committed by Pavel Tvrdik
Browse files

Main: Add local option

Add option that changes default paths for config file and control socket
to the current working directory.
parent f96f68c6
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@

#define SERVER_READ_BUF_LEN 4096

static char *opt_list = "s:vr";
static char *opt_list = "s:vrl";
static int verbose, restricted, once;
static char *init_cmd;

@@ -59,13 +59,14 @@ int term_lns, term_cls;
static void
usage(char *name)
{
  fprintf(stderr, "Usage: %s [-s <control-socket>] [-v] [-r]\n", name);
  fprintf(stderr, "Usage: %s [-s <control-socket>] [-v] [-r] [-l]\n", name);
  exit(1);
}

static void
parse_args(int argc, char **argv)
{
  int server_changed = 0;
  int c;

  while ((c = getopt(argc, argv, opt_list)) >= 0)
@@ -73,6 +74,7 @@ parse_args(int argc, char **argv)
      {
      case 's':
	server_path = optarg;
	server_changed = 1;
	break;
      case 'v':
	verbose++;
@@ -80,6 +82,10 @@ parse_args(int argc, char **argv)
      case 'r':
	restricted = 1;
	break;
      case 'l':
	if (!server_changed)
	  server_path = xbasename(server_path);
	break;
      default:
	usage(argv[0]);
      }
+5 −0
Original line number Diff line number Diff line
@@ -171,6 +171,11 @@ BIRD executable by configuring out routing protocols you don't use, and
	<tag>-f</tag>
	run bird in foreground.

	<tag>-l</tag>
	look for a configuration file and a communication socket in the current
	working directory instead of in default system paths. However, paths
	specified by options <cf/-c/, <cf/-s/ have higher priority.

	<tag>-R</tag>
	apply graceful restart recovery after start.
</descrip>
+6 −0
Original line number Diff line number Diff line
@@ -24,4 +24,10 @@ void buffer_puts(buffer *buf, const char *str);

int patmatch(const byte *pat, const byte *str);

static inline char *xbasename(const char *str)
{
  char *s = strrchr(str, '/');
  return s ? s+1 : (char *) str;
}

#endif
+13 −3
Original line number Diff line number Diff line
@@ -617,7 +617,7 @@ signal_init(void)
 *	Parsing of command-line arguments
 */

static char *opt_list = "c:dD:ps:P:u:g:fR";
static char *opt_list = "c:dD:ps:P:u:g:flR";
static int parse_and_exit;
char *bird_name;
static char *use_user;
@@ -627,7 +627,7 @@ static int run_in_foreground = 0;
static void
usage(void)
{
  fprintf(stderr, "Usage: %s [-c <config-file>] [-d] [-D <debug-file>] [-p] [-s <control-socket>] [-P <pid-file>] [-u <user>] [-g <group>] [-f] [-R]\n", bird_name);
  fprintf(stderr, "Usage: %s [-c <config-file>] [-d] [-D <debug-file>] [-p] [-s <control-socket>] [-P <pid-file>] [-u <user>] [-g <group>] [-f] [-l] [-R]\n", bird_name);
  exit(1);
}

@@ -694,6 +694,8 @@ get_gid(const char *s)
static void
parse_args(int argc, char **argv)
{
  int config_changed = 0;
  int socket_changed = 0;
  int c;

  bird_name = get_bird_name(argv[0], "bird");
@@ -712,6 +714,7 @@ parse_args(int argc, char **argv)
      {
      case 'c':
	config_name = optarg;
	config_changed = 1;
	break;
      case 'd':
	debug_flag |= 1;
@@ -725,6 +728,7 @@ parse_args(int argc, char **argv)
	break;
      case 's':
	path_control_socket = optarg;
	socket_changed = 1;
	break;
      case 'P':
	pid_file = optarg;
@@ -738,6 +742,12 @@ parse_args(int argc, char **argv)
      case 'f':
	run_in_foreground = 1;
	break;
      case 'l':
	if (!config_changed)
	  config_name = xbasename(config_name);
	if (!socket_changed)
	  path_control_socket = xbasename(path_control_socket);
	break;
      case 'R':
	graceful_restart_recovery();
	break;