shithub: mapfs

Download patch

ref: 020e1b4876c3740befcacd48d47873453a3de663
parent: adb6ddf2966e78f5a04135decfcd8058992b8aae
author: sirjofri <sirjofri@sirjofri.de>
date: Sat Mar 29 10:48:11 EDT 2025

adds copyright notice

--- a/mapfs.c
+++ b/mapfs.c
@@ -14,6 +14,8 @@
 	exits("usage");
 }
 
+char *copyright = "© OpenStreetMap Contributors (ODbL)";
+
 char Ebadzoom[] = "bad zoom";
 char Enofile[] = "file not found";
 char Enotile[] = "invalid tile";
@@ -100,6 +102,7 @@
 enum {
 	Qroot,
 		Qctl,
+		Qcopy,
 		Qz,
 			Qx,
 				Qy,
@@ -166,6 +169,10 @@
 			fid->qid = *qid = mkqid(Qctl, QTFILE);
 			return nil;
 		}
+		if (strcmp(name, "copyright") == 0) {
+			fid->qid = *qid = mkqid(Qcopy, QTFILE);
+			return nil;
+		}
 		i = atoi(name);
 		if (i < 0)
 			return Ebadzoom;
@@ -220,6 +227,11 @@
 		dir->mode = 0444;
 		dir->name = estrdup9p("ctl");
 		goto fulldefs;
+	case Qcopy:
+		dir->qid = mkqid(Qcopy, QTFILE);
+		dir->mode = 0444;
+		dir->name = estrdup9p("copyright");
+		goto fulldefs;
 	case Qz:
 		dir->qid = mkzqid(p->z);
 		snprint(buf, sizeof buf, "%d", p->z);
@@ -256,13 +268,17 @@
 rootgen(int n, Dir *dir, void*)
 {
 	Qpath path;
-	if (n > maxzoom + 1) {
+	if (n > maxzoom + 2) {
 		return -1;
 	}
-	if (n > maxzoom) {
+	if (n == maxzoom + 1) {
 		fillstat(Qctl, dir, nil);
 		return 0;
 	}
+	if (n == maxzoom + 2) {
+		fillstat(Qcopy, dir, nil);
+		return 0;
+	}
 	path.z = n;
 	fillstat(Qz, dir, &path);
 	return 0;
@@ -285,6 +301,12 @@
 	if (QID(r->fid->qid.path) == Qctl) {
 		snprint(buf, sizeof buf, "%d\n", maxzoom);
 		readstr(r, buf);
+		respond(r, nil);
+		return;
+	}
+	
+	if (QID(r->fid->qid.path) == Qcopy) {
+		readstr(r, copyright);
 		respond(r, nil);
 		return;
 	}
--- a/mkfile
+++ b/mkfile
@@ -1,5 +1,6 @@
 </$objtype/mkfile
 
+BIN=/$objtype/bin
 TARG=mapfs
 OFILES=\
 	mapfs.$O\
--