aboutsummaryrefslogtreecommitdiffstats
path: root/usr/nslookup.c
diff options
context:
space:
mode:
authoruser <user@clank>2026-07-18 00:38:38 +0200
committeruser <user@clank>2026-07-18 00:38:38 +0200
commitba2d7ae1d7b319645b10aaa31a7f664f9f80c25c (patch)
treee01e6c7c710a661defe2515ff9657f08cddcb283 /usr/nslookup.c
parenttools: gbtype prints hub errors to stderr and exits 1 (diff)
downloadgbos-ba2d7ae1d7b319645b10aaa31a7f664f9f80c25c.tar.gz
gbos-ba2d7ae1d7b319645b10aaa31a7f664f9f80c25c.tar.xz
gbos-ba2d7ae1d7b319645b10aaa31a7f664f9f80c25c.zip
refactor: c/ -> usr/, compiled program blobs out of the source tree
Userland sources live in usr/ (fits the Unix theme better than 'c'). SDCC output .bin blobs land in build/usr/ with the other build artifacts instead of littering the source dir; programs.asm INCBINs them from there. Byte-identical ROM.
Diffstat (limited to 'usr/nslookup.c')
-rw-r--r--usr/nslookup.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/usr/nslookup.c b/usr/nslookup.c
new file mode 100644
index 0000000..6a531b8
--- /dev/null
+++ b/usr/nslookup.c
@@ -0,0 +1,23 @@
+#include "resolve.h"
+/* nslookup HOST - resolve a hostname to an IPv4 address via DNS over UDP.
+ All the DNS logic lives in resolve.h (shared with wget). */
+
+static unsigned char namebuf[64]; /* first so it lands past the arg at 0xA000 */
+static unsigned char ip[4];
+
+void main(void) {
+ char *host;
+ unsigned char i;
+ host = getargs();
+ if (!host || !*host) { puts("usage: nslookup HOST"); nl(); sexit(1); }
+ for (i = 0; host[i] && i < 63; i++) namebuf[i] = (unsigned char)host[i];
+ namebuf[i] = 0;
+
+ if (resolve((char *)namebuf, ip)) {
+ puts((char *)namebuf); puts(" -> ");
+ for (i = 0; i < 4; i++) { putu(ip[i]); if (i < 3) putc('.'); }
+ nl();
+ } else {
+ puts("nslookup: cannot resolve "); puts((char *)namebuf); nl();
+ }
+}