Skip to content

Commit b3431b7

Browse files
committed
int128 is not available on 32-bit platforms => added 32-bit architecture case for printing the number of hosts if prefix < 64.
1 parent cb19320 commit b3431b7

File tree

3 files changed

+85
-64
lines changed

3 files changed

+85
-64
lines changed

po/de/subnetcalc.po

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgid ""
88
msgstr ""
99
"Project-Id-Version: \"subnetcalc\" \"2.5.2~rc0\"\n"
1010
"Report-Msgid-Bugs-To: \"https://github.com/dreibh/system-tools/issues\"\n"
11-
"POT-Creation-Date: 2024-11-13 09:50+0100\n"
11+
"POT-Creation-Date: 2024-11-13 18:55+0000\n"
1212
"PO-Revision-Date: 2024-10-19 18:40+0200\n"
1313
"Last-Translator: Thomas Dreibholz <[email protected]>\n"
1414
"Language-Team:\n"
@@ -68,10 +68,10 @@ msgstr "MAC-Adresse"
6868
msgid "Solicited Node Multicast Address"
6969
msgstr "Solicited Node Multicastadresse"
7070

71-
#: src/subnetcalc.cc:509 src/subnetcalc.cc:913 src/subnetcalc.cc:916
72-
#: src/subnetcalc.cc:917 src/subnetcalc.cc:919 src/subnetcalc.cc:922
73-
#: src/subnetcalc.cc:931 src/subnetcalc.cc:936 src/subnetcalc.cc:939
74-
#: src/subnetcalc.cc:951 src/subnetcalc.cc:953
71+
#: src/subnetcalc.cc:509 src/subnetcalc.cc:929 src/subnetcalc.cc:932
72+
#: src/subnetcalc.cc:933 src/subnetcalc.cc:935 src/subnetcalc.cc:938
73+
#: src/subnetcalc.cc:947 src/subnetcalc.cc:952 src/subnetcalc.cc:955
74+
#: src/subnetcalc.cc:972 src/subnetcalc.cc:974
7575
#, c-format
7676
msgid "%-14s"
7777
msgstr "%-14s"
@@ -233,86 +233,86 @@ msgstr "Globale Unicast-Eigenschaften:"
233233
msgid "6-to-4 Address"
234234
msgstr "6-to-4-Adresse"
235235

236-
#: src/subnetcalc.cc:778
236+
#: src/subnetcalc.cc:785
237237
msgid "Usage:"
238238
msgstr "Aufruf:"
239239

240-
#: src/subnetcalc.cc:794 src/subnetcalc.cc:809
240+
#: src/subnetcalc.cc:801 src/subnetcalc.cc:816
241241
#, c-format
242242
msgid "ERROR: Invalid address %s!"
243243
msgstr "FEHLER: Ungültige Adresse %s!"
244244

245-
#: src/subnetcalc.cc:799 src/subnetcalc.cc:818 src/subnetcalc.cc:844
245+
#: src/subnetcalc.cc:806 src/subnetcalc.cc:825 src/subnetcalc.cc:851
246246
#, c-format
247247
msgid "ERROR: Invalid netmask %s!"
248248
msgstr "FEHLER: Ungültige Netzmaske %s!"
249249

250-
#: src/subnetcalc.cc:850
250+
#: src/subnetcalc.cc:857
251251
#, c-format
252252
msgid "ERROR: Incompatible netmask %s!"
253253
msgstr "FEHLER: Inkompatible Netzmaske %s!"
254254

255-
#: src/subnetcalc.cc:875
255+
#: src/subnetcalc.cc:882
256256
#, c-format
257257
msgid "ERROR: Invalid argument %s!"
258258
msgstr "FEHLER: Ungültiges Argument %s!"
259259

260-
#: src/subnetcalc.cc:913
260+
#: src/subnetcalc.cc:929
261261
msgid "Address"
262262
msgstr "Adresse"
263263

264-
#: src/subnetcalc.cc:917
264+
#: src/subnetcalc.cc:933
265265
msgid "Network"
266266
msgstr "Netzwerk"
267267

268-
#: src/subnetcalc.cc:919
268+
#: src/subnetcalc.cc:935
269269
msgid "Netmask"
270270
msgstr "Netzmaske"
271271

272-
#: src/subnetcalc.cc:922
272+
#: src/subnetcalc.cc:938
273273
msgid "Broadcast"
274274
msgstr "Broadcast"
275275

276-
#: src/subnetcalc.cc:927
276+
#: src/subnetcalc.cc:943
277277
msgid "not needed on Point-to-Point links"
278278
msgstr "Bei Punkt-zu-Punkt-Links nicht erforderlich"
279279

280-
#: src/subnetcalc.cc:931
280+
#: src/subnetcalc.cc:947
281281
msgid "Wildcard Mask"
282282
msgstr "Wildcardmaske"
283283

284-
#: src/subnetcalc.cc:936
284+
#: src/subnetcalc.cc:952
285285
msgid "Hex. Address"
286286
msgstr "Hex. Adresse"
287287

288-
#: src/subnetcalc.cc:939
288+
#: src/subnetcalc.cc:955
289289
msgid "Hosts Bits"
290290
msgstr "Hosts-Bits"
291291

292-
#: src/subnetcalc.cc:951
292+
#: src/subnetcalc.cc:972
293293
msgid "Max. Hosts"
294294
msgstr "Hosts maximal"
295295

296-
#: src/subnetcalc.cc:953
296+
#: src/subnetcalc.cc:974
297297
msgid "Host Range"
298298
msgstr "Hostbereich"
299299

300-
#: src/subnetcalc.cc:977 src/subnetcalc.cc:1018
300+
#: src/subnetcalc.cc:998 src/subnetcalc.cc:1039
301301
msgid "GeoIP AS Info"
302302
msgstr "GeoIP AS-Info"
303303

304-
#: src/subnetcalc.cc:985 src/subnetcalc.cc:1026
304+
#: src/subnetcalc.cc:1006 src/subnetcalc.cc:1047
305305
msgid "GeoIP Country"
306306
msgstr "GeoIP-Land"
307307

308-
#: src/subnetcalc.cc:996 src/subnetcalc.cc:1037
308+
#: src/subnetcalc.cc:1017 src/subnetcalc.cc:1058
309309
msgid "GeoIP Region"
310310
msgstr "GeoIP-Region"
311311

312-
#: src/subnetcalc.cc:1062
312+
#: src/subnetcalc.cc:1083
313313
msgid "Performing reverse DNS lookup ..."
314314
msgstr "Reverse-DNS-Suche wird durchgeführt ..."
315315

316-
#: src/subnetcalc.cc:1078
316+
#: src/subnetcalc.cc:1099
317317
msgid "DNS Hostname"
318318
msgstr "DNS-Hostname"

po/nb/subnetcalc.po

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgid ""
88
msgstr ""
99
"Project-Id-Version: \"subnetcalc\" \"2.5.2~rc0\"\n"
1010
"Report-Msgid-Bugs-To: \"https://github.com/dreibh/system-tools/issues\"\n"
11-
"POT-Creation-Date: 2024-11-13 09:50+0100\n"
11+
"POT-Creation-Date: 2024-11-13 18:55+0000\n"
1212
"PO-Revision-Date: 2024-10-19 18:40+0200\n"
1313
"Last-Translator: Thomas Dreibholz <[email protected]>\n"
1414
"Language-Team:\n"
@@ -66,10 +66,10 @@ msgstr "MAC-adresse"
6666
msgid "Solicited Node Multicast Address"
6767
msgstr "Solicited Node Multicast-adresse"
6868

69-
#: src/subnetcalc.cc:509 src/subnetcalc.cc:913 src/subnetcalc.cc:916
70-
#: src/subnetcalc.cc:917 src/subnetcalc.cc:919 src/subnetcalc.cc:922
71-
#: src/subnetcalc.cc:931 src/subnetcalc.cc:936 src/subnetcalc.cc:939
72-
#: src/subnetcalc.cc:951 src/subnetcalc.cc:953
69+
#: src/subnetcalc.cc:509 src/subnetcalc.cc:929 src/subnetcalc.cc:932
70+
#: src/subnetcalc.cc:933 src/subnetcalc.cc:935 src/subnetcalc.cc:938
71+
#: src/subnetcalc.cc:947 src/subnetcalc.cc:952 src/subnetcalc.cc:955
72+
#: src/subnetcalc.cc:972 src/subnetcalc.cc:974
7373
#, c-format
7474
msgid "%-14s"
7575
msgstr "%-14s"
@@ -231,86 +231,86 @@ msgstr "Global Unicast-egenskaper:"
231231
msgid "6-to-4 Address"
232232
msgstr "6-to-4-adresse"
233233

234-
#: src/subnetcalc.cc:778
234+
#: src/subnetcalc.cc:785
235235
msgid "Usage:"
236236
msgstr "Bruk:"
237237

238-
#: src/subnetcalc.cc:794 src/subnetcalc.cc:809
238+
#: src/subnetcalc.cc:801 src/subnetcalc.cc:816
239239
#, c-format
240240
msgid "ERROR: Invalid address %s!"
241241
msgstr "FEIL: Ugyldig adresse %s!"
242242

243-
#: src/subnetcalc.cc:799 src/subnetcalc.cc:818 src/subnetcalc.cc:844
243+
#: src/subnetcalc.cc:806 src/subnetcalc.cc:825 src/subnetcalc.cc:851
244244
#, c-format
245245
msgid "ERROR: Invalid netmask %s!"
246246
msgstr "FEIL: Ugyldig nettmaske %s!"
247247

248-
#: src/subnetcalc.cc:850
248+
#: src/subnetcalc.cc:857
249249
#, c-format
250250
msgid "ERROR: Incompatible netmask %s!"
251251
msgstr "FEIL: Inkompatibel nettmaske %s!"
252252

253-
#: src/subnetcalc.cc:875
253+
#: src/subnetcalc.cc:882
254254
#, c-format
255255
msgid "ERROR: Invalid argument %s!"
256256
msgstr "FEIL: Ugyldig argument %s!"
257257

258-
#: src/subnetcalc.cc:913
258+
#: src/subnetcalc.cc:929
259259
msgid "Address"
260260
msgstr "Adresse"
261261

262-
#: src/subnetcalc.cc:917
262+
#: src/subnetcalc.cc:933
263263
msgid "Network"
264264
msgstr "Nettverk"
265265

266-
#: src/subnetcalc.cc:919
266+
#: src/subnetcalc.cc:935
267267
msgid "Netmask"
268268
msgstr "Nettverksmaske"
269269

270-
#: src/subnetcalc.cc:922
270+
#: src/subnetcalc.cc:938
271271
msgid "Broadcast"
272272
msgstr "Broadcast"
273273

274-
#: src/subnetcalc.cc:927
274+
#: src/subnetcalc.cc:943
275275
msgid "not needed on Point-to-Point links"
276276
msgstr "ikke nødvendig på punkt-til-punkt-lenker"
277277

278-
#: src/subnetcalc.cc:931
278+
#: src/subnetcalc.cc:947
279279
msgid "Wildcard Mask"
280280
msgstr "Wildcardmaske"
281281

282-
#: src/subnetcalc.cc:936
282+
#: src/subnetcalc.cc:952
283283
msgid "Hex. Address"
284284
msgstr "Hex. adresse"
285285

286-
#: src/subnetcalc.cc:939
286+
#: src/subnetcalc.cc:955
287287
msgid "Hosts Bits"
288288
msgstr "Host bits"
289289

290-
#: src/subnetcalc.cc:951
290+
#: src/subnetcalc.cc:972
291291
msgid "Max. Hosts"
292292
msgstr "Maks. hosts "
293293

294-
#: src/subnetcalc.cc:953
294+
#: src/subnetcalc.cc:974
295295
msgid "Host Range"
296296
msgstr "Host range"
297297

298-
#: src/subnetcalc.cc:977 src/subnetcalc.cc:1018
298+
#: src/subnetcalc.cc:998 src/subnetcalc.cc:1039
299299
msgid "GeoIP AS Info"
300300
msgstr "GeoIP AS-info"
301301

302-
#: src/subnetcalc.cc:985 src/subnetcalc.cc:1026
302+
#: src/subnetcalc.cc:1006 src/subnetcalc.cc:1047
303303
msgid "GeoIP Country"
304304
msgstr "GeoIP-land"
305305

306-
#: src/subnetcalc.cc:996 src/subnetcalc.cc:1037
306+
#: src/subnetcalc.cc:1017 src/subnetcalc.cc:1058
307307
msgid "GeoIP Region"
308308
msgstr "GeoIP-regionen"
309309

310-
#: src/subnetcalc.cc:1062
310+
#: src/subnetcalc.cc:1083
311311
msgid "Performing reverse DNS lookup ..."
312312
msgstr "Utfører omvendt DNS-oppslag ..."
313313

314-
#: src/subnetcalc.cc:1078
314+
#: src/subnetcalc.cc:1099
315315
msgid "DNS Hostname"
316316
msgstr "DNS-vertsnavn"

src/subnetcalc.cc

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,7 @@ void printAddressProperties(std::ostream& os,
735735
}
736736

737737

738+
#if defined(__SIZEOF_INT128__)
738739
// ###### Convert unsigned 128 bit integer to string ########################
739740
std::string toString(unsigned __int128 num) {
740741
std::string str;
@@ -745,25 +746,31 @@ std::string toString(unsigned __int128 num) {
745746
} while(num != 0);
746747
return str;
747748
}
749+
#endif
748750

749751

750752
// ###### Main program ######################################################
751753
int main(int argc, char** argv)
752754
{
753-
bool colourMode = true;
754-
bool noReverseLookup = false;
755-
int options;
756-
int prefix;
757-
unsigned int hostBits;
758-
unsigned int reservedHosts;
759-
unsigned __int128 maxHosts;
760-
sockaddr_union network;
761-
sockaddr_union address;
762-
sockaddr_union netmask;
763-
sockaddr_union broadcast;
764-
sockaddr_union wildcard;
765-
sockaddr_union host1;
766-
sockaddr_union host2;
755+
bool colourMode = true;
756+
bool noReverseLookup = false;
757+
int options;
758+
int prefix;
759+
unsigned int hostBits;
760+
unsigned int reservedHosts;
761+
#if defined(__SIZEOF_INT128__)
762+
unsigned __int128 maxHosts;
763+
#else
764+
// There is no 128-bit type on 32-bit systems!
765+
unsigned long long maxHosts;
766+
#endif
767+
sockaddr_union network;
768+
sockaddr_union address;
769+
sockaddr_union netmask;
770+
sockaddr_union broadcast;
771+
sockaddr_union wildcard;
772+
sockaddr_union host1;
773+
sockaddr_union host2;
767774

768775

769776
// ====== Initialise i18n support ========================================
@@ -906,7 +913,16 @@ int main(int argc, char** argv)
906913
host2 = broadcast; // There is no broadcast address for IPv6!
907914
}
908915
}
916+
#if defined(__SIZEOF_INT128__)
909917
maxHosts = (unsigned __int128)pow(2.0, (double)hostBits) - reservedHosts;
918+
#else
919+
if(hostBits <= 64) {
920+
maxHosts = (unsigned long long)pow(2.0, (double)hostBits) - reservedHosts;
921+
}
922+
else {
923+
maxHosts = 0; // Not enough accuracy for such a large number!
924+
}
925+
#endif
910926

911927

912928
// ====== Print results ==================================================
@@ -941,8 +957,13 @@ int main(int argc, char** argv)
941957
if(!isMulticast(address)) {
942958
char maxHostsString[128];
943959
if(maxHosts > 0) {
960+
#if defined(__SIZEOF_INT128__)
944961
snprintf((char*)&maxHostsString, sizeof(maxHostsString),
945962
"%s (2^%u - %u)", toString(maxHosts).c_str(), hostBits, reservedHosts);
963+
#else
964+
snprintf((char*)&maxHostsString, sizeof(maxHostsString),
965+
"%llu (2^%u - %u)", maxHosts, hostBits, reservedHosts);
966+
#endif
946967
}
947968
else {
948969
snprintf((char*)&maxHostsString, sizeof(maxHostsString),

0 commit comments

Comments
 (0)