<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>