<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/23588">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">omldummy: introduce using getopt_long<br><br>Prepare for adding the --features cmdline arg following in a subsequent<br>patch.<br><br>Related: SYS#4895<br>Change-Id: I72ccf65ba894e87ee7b0f6bed879f94728f34ccc<br>---<br>M src/osmo-bts-omldummy/main.c<br>1 file changed, 68 insertions(+), 12 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/88/23588/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bts-omldummy/main.c b/src/osmo-bts-omldummy/main.c</span><br><span>index 22d8758..fe28b05 100644</span><br><span>--- a/src/osmo-bts-omldummy/main.c</span><br><span>+++ b/src/osmo-bts-omldummy/main.c</span><br><span>@@ -1,3 +1,9 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#include <unistd.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <stdlib.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <stdio.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define _GNU_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+#include <getopt.h></span><br><span> </span><br><span> #include <osmocom/core/talloc.h></span><br><span> #include <osmocom/core/application.h></span><br><span>@@ -6,6 +12,64 @@</span><br><span> #include <osmo-bts/bts.h></span><br><span> #include <osmo-bts/oml.h></span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static void print_usage(const char *prog_name)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   printf("Usage: %s [-h] dst_host site_id [trx_num]\n", prog_name);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void print_help(const char *prog_name)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    print_usage(prog_name);</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("  -h --help                        This text.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct {</span><br><span style="color: hsl(120, 100%, 40%);">+   char *dst_host;</span><br><span style="color: hsl(120, 100%, 40%);">+       int site_id;</span><br><span style="color: hsl(120, 100%, 40%);">+  int trx_num;</span><br><span style="color: hsl(120, 100%, 40%);">+} cmdline = {</span><br><span style="color: hsl(120, 100%, 40%);">+   .trx_num = 8,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void parse_cmdline(int argc, char **argv)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     while (1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           int option_index = 0, c;</span><br><span style="color: hsl(120, 100%, 40%);">+              static struct option long_options[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+                       {"help", 0, 0, 'h'},</span><br><span style="color: hsl(120, 100%, 40%);">+                        {0}</span><br><span style="color: hsl(120, 100%, 40%);">+           };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          c = getopt_long(argc, argv, "hd", long_options, &option_index);</span><br><span style="color: hsl(120, 100%, 40%);">+         if (c == -1)</span><br><span style="color: hsl(120, 100%, 40%);">+                  break;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+              switch (c) {</span><br><span style="color: hsl(120, 100%, 40%);">+          case 'h':</span><br><span style="color: hsl(120, 100%, 40%);">+                     print_help(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+                  exit(0);</span><br><span style="color: hsl(120, 100%, 40%);">+              default:</span><br><span style="color: hsl(120, 100%, 40%);">+                      /* catch unknown options *as well as* missing arguments. */</span><br><span style="color: hsl(120, 100%, 40%);">+                   fprintf(stderr, "Error in command line options. Exiting.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                       exit(-1);</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if (optind + 2 > argc) {</span><br><span style="color: hsl(120, 100%, 40%);">+           print_usage(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+         exit(1);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   cmdline.dst_host = argv[optind];</span><br><span style="color: hsl(120, 100%, 40%);">+      cmdline.site_id = atoi(argv[optind + 1]);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (optind + 2 < argc)</span><br><span style="color: hsl(120, 100%, 40%);">+             cmdline.trx_num = atoi(argv[optind + 2]);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if (optind + 3 < argc) {</span><br><span style="color: hsl(120, 100%, 40%);">+           print_usage(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+         exit(1);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> int main(int argc, char **argv)</span><br><span> {</span><br><span>@@ -14,14 +78,7 @@</span><br><span>        struct e1inp_line *line;</span><br><span>     int i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      if (argc < 3) {</span><br><span style="color: hsl(0, 100%, 40%);">-              fprintf(stderr, "Usage: %s dst_host site_id [trx_num]\n", argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-           return 1;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       char *dst_host = argv[1];</span><br><span style="color: hsl(0, 100%, 40%);">-       int site_id = atoi(argv[2]);</span><br><span style="color: hsl(0, 100%, 40%);">-    int trx_num = argc > 3 ? atoi(argv[3]) : 8;</span><br><span style="color: hsl(120, 100%, 40%);">+        parse_cmdline(argc, argv);</span><br><span> </span><br><span>       tall_bts_ctx = talloc_named_const(NULL, 1, "OsmoBTS context");</span><br><span>     msgb_talloc_ctx_init(tall_bts_ctx, 10*1024);</span><br><span>@@ -31,11 +88,11 @@</span><br><span>   bts = gsm_bts_alloc(tall_bts_ctx, 0);</span><br><span>        if (!bts)</span><br><span>            exit(1);</span><br><span style="color: hsl(0, 100%, 40%);">-        bts->ip_access.site_id = site_id;</span><br><span style="color: hsl(120, 100%, 40%);">+  bts->ip_access.site_id = cmdline.site_id;</span><br><span>         bts->ip_access.bts_id = 0;</span><br><span> </span><br><span>    /* Additional TRXs */</span><br><span style="color: hsl(0, 100%, 40%);">-   for (i = 1; i < trx_num; i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+    for (i = 1; i < cmdline.trx_num; i++) {</span><br><span>           trx = gsm_bts_trx_alloc(bts);</span><br><span>                if (!trx)</span><br><span>                    exit(1);</span><br><span>@@ -46,8 +103,7 @@</span><br><span>        //btsb = bts_role_bts(bts);</span><br><span>  abis_init(bts);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     line = abis_open(bts, dst_host, "OMLdummy");</span><br><span style="color: hsl(120, 100%, 40%);">+        line = abis_open(bts, cmdline.dst_host, "OMLdummy");</span><br><span>       if (!line)</span><br><span>           exit(2);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/23588">change 23588</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bts/+/23588"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I72ccf65ba894e87ee7b0f6bed879f94728f34ccc </div>
<div style="display:none"> Gerrit-Change-Number: 23588 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>